Display comments count in the post. Display a comment and a save button in a post. Minor bugs fixed.

This commit is contained in:
Alex Ning 2019-09-22 21:28:28 +08:00
parent 9ca494d4b5
commit 52b27971ff
16 changed files with 498 additions and 156 deletions

View File

@ -150,8 +150,8 @@ public class CommentActivity extends AppCompatActivity {
}) })
.usePlugin(LinkifyPlugin.create(Linkify.WEB_URLS)) .usePlugin(LinkifyPlugin.create(Linkify.WEB_URLS))
.build(); .build();
markwon.setMarkdown(commentParentMarkwonView, intent.getExtras().getString(EXTRA_COMMENT_PARENT_TEXT_KEY)); markwon.setMarkdown(commentParentMarkwonView, intent.getStringExtra(EXTRA_COMMENT_PARENT_TEXT_KEY));
parentFullname = intent.getExtras().getString(EXTRA_PARENT_FULLNAME_KEY); parentFullname = intent.getStringExtra(EXTRA_PARENT_FULLNAME_KEY);
parentDepth = intent.getExtras().getInt(EXTRA_PARENT_DEPTH_KEY); parentDepth = intent.getExtras().getInt(EXTRA_PARENT_DEPTH_KEY);
parentPosition = intent.getExtras().getInt(EXTRA_PARENT_POSITION_KEY); parentPosition = intent.getExtras().getInt(EXTRA_PARENT_POSITION_KEY);
isReplying = intent.getExtras().getBoolean(EXTRA_IS_REPLYING_KEY); isReplying = intent.getExtras().getBoolean(EXTRA_IS_REPLYING_KEY);

View File

@ -33,7 +33,6 @@ import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.google.android.material.chip.Chip;
import com.libRG.CustomTextView; import com.libRG.CustomTextView;
import com.santalu.aspectratioimageview.AspectRatioImageView; import com.santalu.aspectratioimageview.AspectRatioImageView;
@ -366,7 +365,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
} }
if(mPost.isNSFW()) { if(mPost.isNSFW()) {
((PostDetailViewHolder) holder).mNSFWChip.setOnClickListener(view -> { ((PostDetailViewHolder) holder).mNSFWTextView.setOnClickListener(view -> {
Intent intent = new Intent(mActivity, FilteredThingActivity.class); Intent intent = new Intent(mActivity, FilteredThingActivity.class);
intent.putExtra(FilteredThingActivity.EXTRA_NAME, mSubredditNamePrefixed.substring(2)); intent.putExtra(FilteredThingActivity.EXTRA_NAME, mSubredditNamePrefixed.substring(2));
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT); intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
@ -374,15 +373,15 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
intent.putExtra(FilteredThingActivity.EXTRA_FILTER, Post.NSFW_TYPE); intent.putExtra(FilteredThingActivity.EXTRA_FILTER, Post.NSFW_TYPE);
mActivity.startActivity(intent); mActivity.startActivity(intent);
}); });
((PostDetailViewHolder) holder).mNSFWChip.setVisibility(View.VISIBLE); ((PostDetailViewHolder) holder).mNSFWTextView.setVisibility(View.VISIBLE);
} else { } else {
((PostDetailViewHolder) holder).mNSFWChip.setVisibility(View.GONE); ((PostDetailViewHolder) holder).mNSFWTextView.setVisibility(View.GONE);
} }
String scoreWithVote = Integer.toString(mPost.getScore() + mPost.getVoteType()); String scoreWithVote = Integer.toString(mPost.getScore() + mPost.getVoteType());
((PostDetailViewHolder) holder).mScoreTextView.setText(scoreWithVote); ((PostDetailViewHolder) holder).mScoreTextView.setText(scoreWithVote);
((PostDetailViewHolder) holder).mTypeChip.setOnClickListener(view -> { ((PostDetailViewHolder) holder).mTypeTextView.setOnClickListener(view -> {
Intent intent = new Intent(mActivity, FilteredThingActivity.class); Intent intent = new Intent(mActivity, FilteredThingActivity.class);
intent.putExtra(FilteredThingActivity.EXTRA_NAME, mSubredditNamePrefixed.substring(2)); intent.putExtra(FilteredThingActivity.EXTRA_NAME, mSubredditNamePrefixed.substring(2));
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT); intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
@ -394,7 +393,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
switch (mPost.getPostType()) { switch (mPost.getPostType()) {
case Post.IMAGE_TYPE: case Post.IMAGE_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("IMAGE"); ((PostDetailViewHolder) holder).mTypeTextView.setText("IMAGE");
((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> { ((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> {
Intent intent = new Intent(mActivity, ViewImageActivity.class); Intent intent = new Intent(mActivity, ViewImageActivity.class);
@ -406,7 +405,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
}); });
break; break;
case Post.LINK_TYPE: case Post.LINK_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("LINK"); ((PostDetailViewHolder) holder).mTypeTextView.setText("LINK");
((PostDetailViewHolder) holder).linkTextView.setVisibility(View.VISIBLE); ((PostDetailViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
String domain = Uri.parse(mPost.getUrl()).getHost(); String domain = Uri.parse(mPost.getUrl()).getHost();
@ -424,7 +423,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
}); });
break; break;
case Post.GIF_VIDEO_TYPE: case Post.GIF_VIDEO_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("GIF"); ((PostDetailViewHolder) holder).mTypeTextView.setText("GIF");
final Uri gifVideoUri = Uri.parse(mPost.getVideoUrl()); final Uri gifVideoUri = Uri.parse(mPost.getVideoUrl());
((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> { ((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> {
@ -437,7 +436,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
}); });
break; break;
case Post.VIDEO_TYPE: case Post.VIDEO_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("VIDEO"); ((PostDetailViewHolder) holder).mTypeTextView.setText("VIDEO");
final Uri videoUri = Uri.parse(mPost.getVideoUrl()); final Uri videoUri = Uri.parse(mPost.getVideoUrl());
((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> { ((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> {
@ -450,7 +449,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
}); });
break; break;
case Post.NO_PREVIEW_LINK_TYPE: case Post.NO_PREVIEW_LINK_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("LINK"); ((PostDetailViewHolder) holder).mTypeTextView.setText("LINK");
((PostDetailViewHolder) holder).linkTextView.setVisibility(View.VISIBLE); ((PostDetailViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
String noPreviewLinkDomain = Uri.parse(mPost.getUrl()).getHost(); String noPreviewLinkDomain = Uri.parse(mPost.getUrl()).getHost();
@ -474,7 +473,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
}); });
break; break;
case Post.TEXT_TYPE: case Post.TEXT_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("TEXT"); ((PostDetailViewHolder) holder).mTypeTextView.setText("TEXT");
if(!mPost.getSelfText().equals("")) { if(!mPost.getSelfText().equals("")) {
((PostDetailViewHolder) holder).mContentMarkdownView.setVisibility(View.VISIBLE); ((PostDetailViewHolder) holder).mContentMarkdownView.setVisibility(View.VISIBLE);
@ -482,6 +481,77 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
} }
break; break;
} }
((PostDetailViewHolder) holder).commentButton.setOnClickListener(view -> {
if(mAccessToken == null) {
Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(mActivity, CommentActivity.class);
intent.putExtra(CommentActivity.EXTRA_PARENT_FULLNAME_KEY, mPost.getFullName());
intent.putExtra(CommentActivity.EXTRA_COMMENT_PARENT_TEXT_KEY, mPost.getTitle());
intent.putExtra(CommentActivity.EXTRA_IS_REPLYING_KEY, false);
intent.putExtra(CommentActivity.EXTRA_PARENT_DEPTH_KEY, 0);
mActivity.startActivity(intent);
});
((PostDetailViewHolder) holder).commentsCountTextView.setText(Integer.toString(mPost.getnComments()));
if(mPost.isSaved()) {
((PostDetailViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
} else {
((PostDetailViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
}
((PostDetailViewHolder) holder).saveButton.setOnClickListener(view -> {
if(mAccessToken == null) {
Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show();
return;
}
if(mPost.isSaved()) {
((PostDetailViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(),
new SaveThing.SaveThingListener() {
@Override
public void success() {
mPost.setSaved(false);
((PostDetailViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
Toast.makeText(mActivity, R.string.post_unsaved_success, Toast.LENGTH_SHORT).show();
mCommentRecyclerViewAdapterCallback.updatePost(mPost);
}
@Override
public void failed() {
mPost.setSaved(true);
((PostDetailViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
Toast.makeText(mActivity, R.string.post_unsaved_failed, Toast.LENGTH_SHORT).show();
mCommentRecyclerViewAdapterCallback.updatePost(mPost);
}
});
} else {
((PostDetailViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
SaveThing.saveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(),
new SaveThing.SaveThingListener() {
@Override
public void success() {
mPost.setSaved(true);
((PostDetailViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
Toast.makeText(mActivity, R.string.post_saved_success, Toast.LENGTH_SHORT).show();
mCommentRecyclerViewAdapterCallback.updatePost(mPost);
}
@Override
public void failed() {
mPost.setSaved(false);
((PostDetailViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
Toast.makeText(mActivity, R.string.post_saved_failed, Toast.LENGTH_SHORT).show();
mCommentRecyclerViewAdapterCallback.updatePost(mPost);
}
});
}
});
} else if(holder.getItemViewType() == VIEW_TYPE_COMMENT) { } else if(holder.getItemViewType() == VIEW_TYPE_COMMENT) {
CommentData comment; CommentData comment;
if(mIsSingleCommentThreadMode) { if(mIsSingleCommentThreadMode) {
@ -1100,7 +1170,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
((PostDetailViewHolder) holder).spoilerFlairlinearLayout.setVisibility(View.GONE); ((PostDetailViewHolder) holder).spoilerFlairlinearLayout.setVisibility(View.GONE);
((PostDetailViewHolder) holder).flairTextView.setVisibility(View.GONE); ((PostDetailViewHolder) holder).flairTextView.setVisibility(View.GONE);
((PostDetailViewHolder) holder).spoilerTextView.setVisibility(View.GONE); ((PostDetailViewHolder) holder).spoilerTextView.setVisibility(View.GONE);
((PostDetailViewHolder) holder).mNSFWChip.setVisibility(View.GONE); ((PostDetailViewHolder) holder).mNSFWTextView.setVisibility(View.GONE);
} else if(holder instanceof LoadMoreChildCommentsViewHolder) { } else if(holder instanceof LoadMoreChildCommentsViewHolder) {
((LoadMoreChildCommentsViewHolder) holder).itemView.setPadding(0, 0, 0, 0); ((LoadMoreChildCommentsViewHolder) holder).itemView.setPadding(0, 0, 0, 0);
ViewGroup.LayoutParams params = ((LoadMoreChildCommentsViewHolder) holder).verticalBlock.getLayoutParams(); ViewGroup.LayoutParams params = ((LoadMoreChildCommentsViewHolder) holder).verticalBlock.getLayoutParams();
@ -1137,13 +1207,13 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
@BindView(R.id.post_time_text_view_item_post_detail) TextView mPostTimeTextView; @BindView(R.id.post_time_text_view_item_post_detail) TextView mPostTimeTextView;
@BindView(R.id.title_text_view_item_post_detail) TextView mTitleTextView; @BindView(R.id.title_text_view_item_post_detail) TextView mTitleTextView;
@BindView(R.id.content_markdown_view_item_post_detail) TextView mContentMarkdownView; @BindView(R.id.content_markdown_view_item_post_detail) TextView mContentMarkdownView;
@BindView(R.id.type_text_view_item_post_detail) Chip mTypeChip; @BindView(R.id.type_text_view_item_post_detail) CustomTextView mTypeTextView;
@BindView(R.id.gilded_image_view_item_post_detail) ImageView mGildedImageView; @BindView(R.id.gilded_image_view_item_post_detail) ImageView mGildedImageView;
@BindView(R.id.gilded_number_text_view_item_post_detail) TextView mGildedNumberTextView; @BindView(R.id.gilded_number_text_view_item_post_detail) TextView mGildedNumberTextView;
@BindView(R.id.crosspost_image_view_item_post_detail) ImageView mCrosspostImageView; @BindView(R.id.crosspost_image_view_item_post_detail) ImageView mCrosspostImageView;
@BindView(R.id.archived_image_view_item_post_detail) ImageView mArchivedImageView; @BindView(R.id.archived_image_view_item_post_detail) ImageView mArchivedImageView;
@BindView(R.id.locked_image_view_item_post_detail) ImageView mLockedImageView; @BindView(R.id.locked_image_view_item_post_detail) ImageView mLockedImageView;
@BindView(R.id.nsfw_text_view_item_post_detail) Chip mNSFWChip; @BindView(R.id.nsfw_text_view_item_post_detail) CustomTextView mNSFWTextView;
@BindView(R.id.spoiler_flair_linear_layout_item_post_detail) LinearLayout spoilerFlairlinearLayout; @BindView(R.id.spoiler_flair_linear_layout_item_post_detail) LinearLayout spoilerFlairlinearLayout;
@BindView(R.id.spoiler_custom_text_view_item_post_detail) CustomTextView spoilerTextView; @BindView(R.id.spoiler_custom_text_view_item_post_detail) CustomTextView spoilerTextView;
@BindView(R.id.flair_custom_text_view_item_post_detail) CustomTextView flairTextView; @BindView(R.id.flair_custom_text_view_item_post_detail) CustomTextView flairTextView;
@ -1157,6 +1227,9 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
@BindView(R.id.plus_button_item_post_detail) ImageView mUpvoteButton; @BindView(R.id.plus_button_item_post_detail) ImageView mUpvoteButton;
@BindView(R.id.score_text_view_item_post_detail) TextView mScoreTextView; @BindView(R.id.score_text_view_item_post_detail) TextView mScoreTextView;
@BindView(R.id.minus_button_item_post_detail) ImageView mDownvoteButton; @BindView(R.id.minus_button_item_post_detail) ImageView mDownvoteButton;
@BindView(R.id.comment_button_item_post_detail) ImageView commentButton;
@BindView(R.id.comments_count_item_post_detail) TextView commentsCountTextView;
@BindView(R.id.save_button_item_post_detail) ImageView saveButton;
@BindView(R.id.share_button_item_post_detail) ImageView mShareButton; @BindView(R.id.share_button_item_post_detail) ImageView mShareButton;
PostDetailViewHolder(@NonNull View itemView) { PostDetailViewHolder(@NonNull View itemView) {

View File

@ -165,6 +165,7 @@ class ParsePost {
int score = data.getInt(JSONUtils.SCORE_KEY); int score = data.getInt(JSONUtils.SCORE_KEY);
int voteType; int voteType;
int gilded = data.getInt(JSONUtils.GILDED_KEY); int gilded = data.getInt(JSONUtils.GILDED_KEY);
int nComments = data.getInt(JSONUtils.NUM_COMMENTS_KEY);
boolean hidden = data.getBoolean(JSONUtils.HIDDEN_KEY); boolean hidden = data.getBoolean(JSONUtils.HIDDEN_KEY);
boolean spoiler = data.getBoolean(JSONUtils.SPOILER_KEY); boolean spoiler = data.getBoolean(JSONUtils.SPOILER_KEY);
boolean nsfw = data.getBoolean(JSONUtils.NSFW_KEY); boolean nsfw = data.getBoolean(JSONUtils.NSFW_KEY);
@ -207,23 +208,23 @@ class ParsePost {
Post crosspostParent = parseBasicData(data, locale); Post crosspostParent = parseBasicData(data, locale);
Post post = parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed, Post post = parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed,
author, formattedPostTime, title, previewUrl, previewWidth, previewHeight, author, formattedPostTime, title, previewUrl, previewWidth, previewHeight,
score, voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, score, voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
saved, true); archived, locked, saved, true);
post.setCrosspostParentId(crosspostParent.getId()); post.setCrosspostParentId(crosspostParent.getId());
return post; return post;
} else { } else {
return parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed, return parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed,
author, formattedPostTime, title, previewUrl, previewWidth, previewHeight, author, formattedPostTime, title, previewUrl, previewWidth, previewHeight,
score, voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, score, voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
saved, false); archived, locked, saved, false);
} }
} }
private static Post parseData(JSONObject data, String permalink, String id, String fullName, private static Post parseData(JSONObject data, String permalink, String id, String fullName,
String subredditName, String subredditNamePrefixed, String author, String subredditName, String subredditNamePrefixed, String author,
String formattedPostTime, String title, String previewUrl, int previewWidth, String formattedPostTime, String title, String previewUrl, int previewWidth,
int previewHeight, int score, int voteType, int gilded, String flair, int previewHeight, int score, int voteType, int gilded, int nComments,
boolean hidden, boolean spoiler, boolean nsfw, boolean stickied, String flair, boolean hidden, boolean spoiler, boolean nsfw, boolean stickied,
boolean archived, boolean locked, boolean saved, boolean isCrosspost) throws JSONException { boolean archived, boolean locked, boolean saved, boolean isCrosspost) throws JSONException {
Post post; Post post;
@ -235,8 +236,8 @@ class ParsePost {
//Text post //Text post
int postType = Post.TEXT_TYPE; int postType = Post.TEXT_TYPE;
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
title, permalink, score, postType, voteType, gilded, flair, hidden, spoiler, nsfw, title, permalink, score, postType, voteType, gilded, nComments, flair, hidden,
stickied, archived, locked, saved, isCrosspost); spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
if(data.isNull(JSONUtils.SELFTEXT_KEY)) { if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
post.setSelfText(""); post.setSelfText("");
} else { } else {
@ -246,8 +247,8 @@ class ParsePost {
//No preview link post //No preview link post
int postType = Post.NO_PREVIEW_LINK_TYPE; int postType = Post.NO_PREVIEW_LINK_TYPE;
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
title, previewUrl, url, permalink, score, postType, voteType, gilded, flair, title, previewUrl, url, permalink, score, postType, voteType, gilded, nComments,
hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
if(data.isNull(JSONUtils.SELFTEXT_KEY)) { if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
post.setSelfText(""); post.setSelfText("");
} else { } else {
@ -267,8 +268,8 @@ class ParsePost {
String videoUrl = Html.fromHtml(redditVideoObject.getString(JSONUtils.HLS_URL_KEY)).toString(); String videoUrl = Html.fromHtml(redditVideoObject.getString(JSONUtils.HLS_URL_KEY)).toString();
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
title, previewUrl, permalink, score, postType, voteType, gilded, flair, hidden, title, previewUrl, permalink, score, postType, voteType, gilded, nComments,
spoiler, nsfw, stickied, archived, locked, saved, isCrosspost); flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
post.setPreviewWidth(previewWidth); post.setPreviewWidth(previewWidth);
post.setPreviewHeight(previewHeight); post.setPreviewHeight(previewHeight);
@ -282,8 +283,8 @@ class ParsePost {
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
formattedPostTime, title, previewUrl, permalink, score, postType, voteType, formattedPostTime, title, previewUrl, permalink, score, postType, voteType,
gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, gilded, nComments, flair, hidden, spoiler, nsfw, stickied, archived,
isCrosspost); locked, saved, isCrosspost);
post.setPreviewWidth(previewWidth); post.setPreviewWidth(previewWidth);
post.setPreviewHeight(previewHeight); post.setPreviewHeight(previewHeight);
post.setVideoUrl(videoUrl); post.setVideoUrl(videoUrl);
@ -294,8 +295,8 @@ class ParsePost {
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
formattedPostTime, title, url, url, permalink, score, postType, formattedPostTime, title, url, url, permalink, score, postType,
voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
locked, saved, isCrosspost); archived, locked, saved, isCrosspost);
post.setPreviewWidth(previewWidth); post.setPreviewWidth(previewWidth);
post.setPreviewHeight(previewHeight); post.setPreviewHeight(previewHeight);
@ -306,8 +307,8 @@ class ParsePost {
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
formattedPostTime, title, permalink, score, postType, voteType, formattedPostTime, title, permalink, score, postType, voteType,
gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, gilded, nComments, flair, hidden, spoiler, nsfw, stickied, archived,
saved, isCrosspost); locked, saved, isCrosspost);
post.setPreviewWidth(previewWidth); post.setPreviewWidth(previewWidth);
post.setPreviewHeight(previewHeight); post.setPreviewHeight(previewHeight);
@ -323,8 +324,8 @@ class ParsePost {
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
formattedPostTime, title, previewUrl, url, permalink, score, postType, formattedPostTime, title, previewUrl, url, permalink, score, postType,
voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
locked, saved, isCrosspost); archived, locked, saved, isCrosspost);
if(data.isNull(JSONUtils.SELFTEXT_KEY)) { if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
post.setSelfText(""); post.setSelfText("");
} else { } else {
@ -343,8 +344,8 @@ class ParsePost {
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
formattedPostTime, title, previewUrl, url, permalink, score, postType, formattedPostTime, title, previewUrl, url, permalink, score, postType,
voteType, gilded, flair, hidden, spoiler, nsfw, stickied, archived, voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
locked, saved, isCrosspost); archived, locked, saved, isCrosspost);
post.setPreviewWidth(previewWidth); post.setPreviewWidth(previewWidth);
post.setPreviewHeight(previewHeight); post.setPreviewHeight(previewHeight);
} else { } else {
@ -353,8 +354,8 @@ class ParsePost {
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
formattedPostTime, title, url, url, permalink, score, postType, voteType, formattedPostTime, title, url, url, permalink, score, postType, voteType,
gilded, flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, gilded, nComments, flair, hidden, spoiler, nsfw, stickied, archived, locked,
isCrosspost); saved, isCrosspost);
} }
} }
} }

View File

@ -38,6 +38,7 @@ class Post implements Parcelable {
private int gilded; private int gilded;
private int previewWidth; private int previewWidth;
private int previewHeight; private int previewHeight;
private int nComments;
private boolean hidden; private boolean hidden;
private boolean spoiler; private boolean spoiler;
private boolean nsfw; private boolean nsfw;
@ -50,8 +51,8 @@ class Post implements Parcelable {
Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author, Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author,
String postTime, String title, String previewUrl, String permalink, int score, int postType, String postTime, String title, String previewUrl, String permalink, int score, int postType,
int voteType, int gilded, String flair, boolean hidden, boolean spoiler, boolean nsfw, int voteType, int gilded, int nComments, String flair, boolean hidden, boolean spoiler,
boolean stickied, boolean archived, boolean locked, boolean saved, boolean isCrosspost) { boolean nsfw, boolean stickied, boolean archived, boolean locked, boolean saved, boolean isCrosspost) {
this.id = id; this.id = id;
this.fullName = fullName; this.fullName = fullName;
this.subredditName = subredditName; this.subredditName = subredditName;
@ -66,6 +67,7 @@ class Post implements Parcelable {
this.postType = postType; this.postType = postType;
this.voteType = voteType; this.voteType = voteType;
this.gilded = gilded; this.gilded = gilded;
this.nComments = nComments;
this.flair = flair; this.flair = flair;
this.hidden = hidden; this.hidden = hidden;
this.spoiler = spoiler; this.spoiler = spoiler;
@ -79,8 +81,9 @@ class Post implements Parcelable {
Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author, Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author,
String postTime, String title, String previewUrl, String url, String permalink, int score, String postTime, String title, String previewUrl, String url, String permalink, int score,
int postType, int voteType, int gilded, String flair, boolean hidden, boolean spoiler, int postType, int voteType, int gilded, int nComments, String flair, boolean hidden,
boolean nsfw, boolean stickied, boolean archived, boolean locked, boolean saved, boolean isCrosspost) { boolean spoiler, boolean nsfw, boolean stickied, boolean archived, boolean locked,
boolean saved, boolean isCrosspost) {
this.id = id; this.id = id;
this.fullName = fullName; this.fullName = fullName;
this.subredditName = subredditName; this.subredditName = subredditName;
@ -96,6 +99,7 @@ class Post implements Parcelable {
this.postType = postType; this.postType = postType;
this.voteType = voteType; this.voteType = voteType;
this.gilded = gilded; this.gilded = gilded;
this.nComments = nComments;
this.flair = flair; this.flair = flair;
this.hidden = hidden; this.hidden = hidden;
this.spoiler = spoiler; this.spoiler = spoiler;
@ -109,8 +113,8 @@ class Post implements Parcelable {
Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author, Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author,
String postTime, String title, String permalink, int score, int postType, int voteType, int gilded, String postTime, String title, String permalink, int score, int postType, int voteType, int gilded,
String flair, boolean hidden, boolean spoiler, boolean nsfw, boolean stickied, boolean archived, int nComments, String flair, boolean hidden, boolean spoiler, boolean nsfw, boolean stickied,
boolean locked, boolean saved, boolean isCrosspost) { boolean archived, boolean locked, boolean saved, boolean isCrosspost) {
this.id = id; this.id = id;
this.fullName = fullName; this.fullName = fullName;
this.subredditName = subredditName; this.subredditName = subredditName;
@ -124,6 +128,7 @@ class Post implements Parcelable {
this.postType = postType; this.postType = postType;
this.voteType = voteType; this.voteType = voteType;
this.gilded = gilded; this.gilded = gilded;
this.nComments = nComments;
this.flair = flair; this.flair = flair;
this.hidden = hidden; this.hidden = hidden;
this.spoiler = spoiler; this.spoiler = spoiler;
@ -158,6 +163,7 @@ class Post implements Parcelable {
gilded = in.readInt(); gilded = in.readInt();
previewWidth = in.readInt(); previewWidth = in.readInt();
previewHeight = in.readInt(); previewHeight = in.readInt();
nComments = in.readInt();
hidden = in.readByte() != 0; hidden = in.readByte() != 0;
spoiler = in.readByte() != 0; spoiler = in.readByte() != 0;
nsfw = in.readByte() != 0; nsfw = in.readByte() != 0;
@ -309,6 +315,14 @@ class Post implements Parcelable {
return previewHeight; return previewHeight;
} }
public int getnComments() {
return nComments;
}
public void setnComments(int nComments) {
this.nComments = nComments;
}
boolean isHidden() { boolean isHidden() {
return hidden; return hidden;
} }
@ -394,6 +408,7 @@ class Post implements Parcelable {
parcel.writeInt(gilded); parcel.writeInt(gilded);
parcel.writeInt(previewWidth); parcel.writeInt(previewWidth);
parcel.writeInt(previewHeight); parcel.writeInt(previewHeight);
parcel.writeInt(nComments);
parcel.writeByte((byte) (hidden ? 1 : 0)); parcel.writeByte((byte) (hidden ? 1 : 0));
parcel.writeByte((byte) (spoiler ? 1 : 0)); parcel.writeByte((byte) (spoiler ? 1 : 0));
parcel.writeByte((byte) (nsfw ? 1 : 0)); parcel.writeByte((byte) (nsfw ? 1 : 0));

View File

@ -1,7 +1,5 @@
package ml.docilealligator.infinityforreddit; package ml.docilealligator.infinityforreddit;
import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import androidx.paging.PageKeyedDataSource; import androidx.paging.PageKeyedDataSource;
@ -64,14 +62,13 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
initialLoadStateLiveData = new MutableLiveData<>(); initialLoadStateLiveData = new MutableLiveData<>();
hasPostLiveData = new MutableLiveData<>(); hasPostLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType == null ? PostDataSource.SORT_TYPE_BEST : sortType;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw; this.nsfw = nsfw;
} }
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, int postType, PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, int postType,
String sortType, int filter, boolean nsfw) { String sortType, int filter, boolean nsfw) {
Log.i("asfdasdf", "datasource: " + sortType);
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.locale = locale; this.locale = locale;
@ -80,7 +77,15 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
initialLoadStateLiveData = new MutableLiveData<>(); initialLoadStateLiveData = new MutableLiveData<>();
hasPostLiveData = new MutableLiveData<>(); hasPostLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType; if(sortType == null) {
if(subredditOrUserName.equals("popular") || subredditOrUserName.equals("all")) {
this.sortType = PostDataSource.SORT_TYPE_HOT;
} else {
this.sortType = PostDataSource.SORT_TYPE_BEST;
}
} else {
this.sortType = sortType;
}
this.filter = filter; this.filter = filter;
this.nsfw = nsfw; this.nsfw = nsfw;
} }
@ -95,7 +100,7 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
initialLoadStateLiveData = new MutableLiveData<>(); initialLoadStateLiveData = new MutableLiveData<>();
hasPostLiveData = new MutableLiveData<>(); hasPostLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType == null ? PostDataSource.SORT_TYPE_NEW : sortType;
userWhere = where; userWhere = where;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw; this.nsfw = nsfw;
@ -112,7 +117,7 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
initialLoadStateLiveData = new MutableLiveData<>(); initialLoadStateLiveData = new MutableLiveData<>();
hasPostLiveData = new MutableLiveData<>(); hasPostLiveData = new MutableLiveData<>();
this.postType = postType; this.postType = postType;
this.sortType = sortType; this.sortType = sortType == null ? PostDataSource.SORT_TYPE_RELEVANCE : sortType;
this.filter = filter; this.filter = filter;
this.nsfw = nsfw; this.nsfw = nsfw;
} }

View File

@ -1,7 +1,5 @@
package ml.docilealligator.infinityforreddit; package ml.docilealligator.infinityforreddit;
import android.util.Log;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import androidx.paging.DataSource; import androidx.paging.DataSource;
@ -39,7 +37,6 @@ class PostDataSourceFactory extends DataSource.Factory {
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, String subredditName, PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, String subredditName,
int postType, String sortType, int filter, boolean nsfw) { int postType, String sortType, int filter, boolean nsfw) {
Log.i("asfdasdf", "datasource factory: " + sortType);
this.retrofit = retrofit; this.retrofit = retrofit;
this.accessToken = accessToken; this.accessToken = accessToken;
this.locale = locale; this.locale = locale;
@ -89,7 +86,6 @@ class PostDataSourceFactory extends DataSource.Factory {
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, query, postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, query,
postType, sortType, filter, nsfw); postType, sortType, filter, nsfw);
} else if(postType == PostDataSource.TYPE_SUBREDDIT) { } else if(postType == PostDataSource.TYPE_SUBREDDIT) {
Log.i("asfdasdf", "datasource create: " + sortType);
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, postType, postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, postType,
sortType, filter, nsfw); sortType, filter, nsfw);
} else { } else {

View File

@ -34,7 +34,6 @@ import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.google.android.material.card.MaterialCardView; import com.google.android.material.card.MaterialCardView;
import com.google.android.material.chip.Chip;
import com.libRG.CustomTextView; import com.libRG.CustomTextView;
import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.EventBus;
@ -309,7 +308,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
if(nsfw) { if(nsfw) {
if(!(mContext instanceof FilteredThingActivity)) { if(!(mContext instanceof FilteredThingActivity)) {
((DataViewHolder) holder).nsfwChip.setOnClickListener(view -> { ((DataViewHolder) holder).nsfwTextView.setOnClickListener(view -> {
Intent intent = new Intent(mContext, FilteredThingActivity.class); Intent intent = new Intent(mContext, FilteredThingActivity.class);
intent.putExtra(FilteredThingActivity.EXTRA_NAME, post.getSubredditNamePrefixed().substring(2)); intent.putExtra(FilteredThingActivity.EXTRA_NAME, post.getSubredditNamePrefixed().substring(2));
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT); intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
@ -318,7 +317,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
mContext.startActivity(intent); mContext.startActivity(intent);
}); });
} }
((DataViewHolder) holder).nsfwChip.setVisibility(View.VISIBLE); ((DataViewHolder) holder).nsfwTextView.setVisibility(View.VISIBLE);
} }
if(spoiler || flair != null) { if(spoiler || flair != null) {
@ -327,13 +326,11 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
if(spoiler) { if(spoiler) {
((DataViewHolder) holder).spoilerTextView.setVisibility(View.VISIBLE); ((DataViewHolder) holder).spoilerTextView.setVisibility(View.VISIBLE);
((DataViewHolder) holder).spoilerTextView.setBackgroundColor(mContext.getResources().getColor(R.color.backgroundColorPrimaryDark));
} }
if(flair != null) { if(flair != null) {
((DataViewHolder) holder).flairTextView.setVisibility(View.VISIBLE); ((DataViewHolder) holder).flairTextView.setVisibility(View.VISIBLE);
((DataViewHolder) holder).flairTextView.setText(flair); ((DataViewHolder) holder).flairTextView.setText(flair);
((DataViewHolder) holder).flairTextView.setBackgroundColor(mContext.getResources().getColor(R.color.backgroundColorPrimaryDark));
} }
switch (voteType) { switch (voteType) {
@ -377,12 +374,12 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
} }
if(!(mContext instanceof FilteredThingActivity)) { if(!(mContext instanceof FilteredThingActivity)) {
((DataViewHolder) holder).typeChip.setOnClickListener(view -> mCallback.typeChipClicked(post.getPostType())); ((DataViewHolder) holder).typeTextView.setOnClickListener(view -> mCallback.typeChipClicked(post.getPostType()));
} }
switch (post.getPostType()) { switch (post.getPostType()) {
case Post.IMAGE_TYPE: case Post.IMAGE_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.image); ((DataViewHolder) holder).typeTextView.setText(R.string.image);
final String imageUrl = post.getUrl(); final String imageUrl = post.getUrl();
((DataViewHolder) holder).imageView.setOnClickListener(view -> { ((DataViewHolder) holder).imageView.setOnClickListener(view -> {
@ -395,7 +392,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
}); });
break; break;
case Post.LINK_TYPE: case Post.LINK_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.link); ((DataViewHolder) holder).typeTextView.setText(R.string.link);
((DataViewHolder) holder).linkTextView.setVisibility(View.VISIBLE); ((DataViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
String domain = Uri.parse(post.getUrl()).getHost(); String domain = Uri.parse(post.getUrl()).getHost();
@ -413,7 +410,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
}); });
break; break;
case Post.GIF_VIDEO_TYPE: case Post.GIF_VIDEO_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.gif); ((DataViewHolder) holder).typeTextView.setText(R.string.gif);
final Uri gifVideoUri = Uri.parse(post.getVideoUrl()); final Uri gifVideoUri = Uri.parse(post.getVideoUrl());
((DataViewHolder) holder).imageView.setOnClickListener(view -> { ((DataViewHolder) holder).imageView.setOnClickListener(view -> {
@ -426,7 +423,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
}); });
break; break;
case Post.VIDEO_TYPE: case Post.VIDEO_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.video); ((DataViewHolder) holder).typeTextView.setText(R.string.video);
final Uri videoUri = Uri.parse(post.getVideoUrl()); final Uri videoUri = Uri.parse(post.getVideoUrl());
((DataViewHolder) holder).imageView.setOnClickListener(view -> { ((DataViewHolder) holder).imageView.setOnClickListener(view -> {
@ -439,7 +436,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
}); });
break; break;
case Post.NO_PREVIEW_LINK_TYPE: case Post.NO_PREVIEW_LINK_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.link); ((DataViewHolder) holder).typeTextView.setText(R.string.link);
String noPreviewLinkUrl = post.getUrl(); String noPreviewLinkUrl = post.getUrl();
((DataViewHolder) holder).linkTextView.setVisibility(View.VISIBLE); ((DataViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
@ -458,7 +455,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
}); });
break; break;
case Post.TEXT_TYPE: case Post.TEXT_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.text); ((DataViewHolder) holder).typeTextView.setText(R.string.text);
break; break;
} }
@ -516,7 +513,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).downvoteButton.clearColorFilter(); ((DataViewHolder) holder).downvoteButton.clearColorFilter();
((DataViewHolder) holder).scoreTextView.setText(Integer.toString(post.getScore() + post.getVoteType())); ((DataViewHolder) holder).scoreTextView.setText(Integer.toString(post.getScore() + post.getVoteType()));
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post.getId(), post.getVoteType())); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
} }
@Override @Override
@ -528,7 +525,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter); ((DataViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter);
((DataViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor); ((DataViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor);
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post.getId(), post.getVoteType())); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
} }
}, id, newVoteType, holder.getAdapterPosition()); }, id, newVoteType, holder.getAdapterPosition());
}); });
@ -587,7 +584,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).upvoteButton.clearColorFilter(); ((DataViewHolder) holder).upvoteButton.clearColorFilter();
((DataViewHolder) holder).scoreTextView.setText(Integer.toString(post.getScore() + post.getVoteType())); ((DataViewHolder) holder).scoreTextView.setText(Integer.toString(post.getScore() + post.getVoteType()));
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post.getId(), post.getVoteType())); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
} }
@Override @Override
@ -599,11 +596,82 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter); ((DataViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter);
((DataViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor); ((DataViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor);
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post.getId(), post.getVoteType())); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
} }
}, id, newVoteType, holder.getAdapterPosition()); }, id, newVoteType, holder.getAdapterPosition());
}); });
((DataViewHolder) holder).commentButton.setOnClickListener(view -> {
if(mAccessToken == null) {
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent(mContext, CommentActivity.class);
intent.putExtra(CommentActivity.EXTRA_PARENT_FULLNAME_KEY, post.getFullName());
intent.putExtra(CommentActivity.EXTRA_COMMENT_PARENT_TEXT_KEY, post.getTitle());
intent.putExtra(CommentActivity.EXTRA_IS_REPLYING_KEY, false);
intent.putExtra(CommentActivity.EXTRA_PARENT_DEPTH_KEY, 0);
mContext.startActivity(intent);
});
((DataViewHolder) holder).commentsCountTextView.setText(Integer.toString(post.getnComments()));
if(post.isSaved()) {
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
} else {
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
}
((DataViewHolder) holder).saveButton.setOnClickListener(view -> {
if(mAccessToken == null) {
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
return;
}
if(post.isSaved()) {
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, post.getFullName(),
new SaveThing.SaveThingListener() {
@Override
public void success() {
post.setSaved(false);
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
Toast.makeText(mContext, R.string.post_unsaved_success, Toast.LENGTH_SHORT).show();
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
}
@Override
public void failed() {
post.setSaved(true);
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
Toast.makeText(mContext, R.string.post_unsaved_failed, Toast.LENGTH_SHORT).show();
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
}
});
} else {
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
SaveThing.saveThing(mOauthRetrofit, mAccessToken, post.getFullName(),
new SaveThing.SaveThingListener() {
@Override
public void success() {
post.setSaved(true);
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
Toast.makeText(mContext, R.string.post_saved_success, Toast.LENGTH_SHORT).show();
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
}
@Override
public void failed() {
post.setSaved(false);
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
Toast.makeText(mContext, R.string.post_saved_failed, Toast.LENGTH_SHORT).show();
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
}
});
}
});
((DataViewHolder) holder).shareButton.setOnClickListener(view -> { ((DataViewHolder) holder).shareButton.setOnClickListener(view -> {
try { try {
Intent intent = new Intent(Intent.ACTION_SEND); Intent intent = new Intent(Intent.ACTION_SEND);
@ -703,13 +771,13 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
@BindView(R.id.stickied_post_image_view_item_post) ImageView stickiedPostImageView; @BindView(R.id.stickied_post_image_view_item_post) ImageView stickiedPostImageView;
@BindView(R.id.post_time_text_view_best_item_post) TextView postTimeTextView; @BindView(R.id.post_time_text_view_best_item_post) TextView postTimeTextView;
@BindView(R.id.title_text_view_best_item_post) TextView titleTextView; @BindView(R.id.title_text_view_best_item_post) TextView titleTextView;
@BindView(R.id.type_text_view_item_post) Chip typeChip; @BindView(R.id.type_text_view_item_post) CustomTextView typeTextView;
@BindView(R.id.gilded_image_view_item_post) ImageView gildedImageView; @BindView(R.id.gilded_image_view_item_post) ImageView gildedImageView;
@BindView(R.id.gilded_number_text_view_item_post) TextView gildedNumberTextView; @BindView(R.id.gilded_number_text_view_item_post) TextView gildedNumberTextView;
@BindView(R.id.archived_image_view_item_post) ImageView archivedImageView; @BindView(R.id.archived_image_view_item_post) ImageView archivedImageView;
@BindView(R.id.locked_image_view_item_post) ImageView lockedImageView; @BindView(R.id.locked_image_view_item_post) ImageView lockedImageView;
@BindView(R.id.crosspost_image_view_item_post) ImageView crosspostImageView; @BindView(R.id.crosspost_image_view_item_post) ImageView crosspostImageView;
@BindView(R.id.nsfw_text_view_item_post) Chip nsfwChip; @BindView(R.id.nsfw_text_view_item_post) CustomTextView nsfwTextView;
@BindView(R.id.spoiler_flair_linear_layout_item_post) LinearLayout spoilerFlairLinearLayout; @BindView(R.id.spoiler_flair_linear_layout_item_post) LinearLayout spoilerFlairLinearLayout;
@BindView(R.id.spoiler_custom_text_view_item_post) CustomTextView spoilerTextView; @BindView(R.id.spoiler_custom_text_view_item_post) CustomTextView spoilerTextView;
@BindView(R.id.flair_custom_text_view_item_post) CustomTextView flairTextView; @BindView(R.id.flair_custom_text_view_item_post) CustomTextView flairTextView;
@ -722,6 +790,9 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
@BindView(R.id.plus_button_item_post) ImageView upvoteButton; @BindView(R.id.plus_button_item_post) ImageView upvoteButton;
@BindView(R.id.score_text_view_item_post) TextView scoreTextView; @BindView(R.id.score_text_view_item_post) TextView scoreTextView;
@BindView(R.id.minus_button_item_post) ImageView downvoteButton; @BindView(R.id.minus_button_item_post) ImageView downvoteButton;
@BindView(R.id.comment_button_item_post) ImageView commentButton;
@BindView(R.id.comments_count_item_post) TextView commentsCountTextView;
@BindView(R.id.save_button_item_post) ImageView saveButton;
@BindView(R.id.share_button_item_post) ImageView shareButton; @BindView(R.id.share_button_item_post) ImageView shareButton;
DataViewHolder(View itemView) { DataViewHolder(View itemView) {
@ -764,7 +835,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).crosspostImageView.setVisibility(View.GONE); ((DataViewHolder) holder).crosspostImageView.setVisibility(View.GONE);
((DataViewHolder) holder).archivedImageView.setVisibility(View.GONE); ((DataViewHolder) holder).archivedImageView.setVisibility(View.GONE);
((DataViewHolder) holder).lockedImageView.setVisibility(View.GONE); ((DataViewHolder) holder).lockedImageView.setVisibility(View.GONE);
((DataViewHolder) holder).nsfwChip.setVisibility(View.GONE); ((DataViewHolder) holder).nsfwTextView.setVisibility(View.GONE);
((DataViewHolder) holder).spoilerFlairLinearLayout.setVisibility(View.GONE); ((DataViewHolder) holder).spoilerFlairLinearLayout.setVisibility(View.GONE);
((DataViewHolder) holder).spoilerTextView.setVisibility(View.GONE); ((DataViewHolder) holder).spoilerTextView.setVisibility(View.GONE);
((DataViewHolder) holder).flairTextView.setVisibility(View.GONE); ((DataViewHolder) holder).flairTextView.setVisibility(View.GONE);

View File

@ -1,11 +1,9 @@
package ml.docilealligator.infinityforreddit; package ml.docilealligator.infinityforreddit;
public class PostUpdateEventToDetailActivity { public class PostUpdateEventToDetailActivity {
public final String postId; public final Post post;
public final int voteType;
public PostUpdateEventToDetailActivity(String postId, int voteType) { public PostUpdateEventToDetailActivity(Post post) {
this.postId = postId; this.post = post;
this.voteType = voteType;
} }
} }

View File

@ -169,11 +169,7 @@ public class SubredditSelectionActivity extends AppCompatActivity {
getCurrentAccountAndBindView(); getCurrentAccountAndBindView();
} else { } else {
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE); mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
if(mFragment == null) { getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_subreddit_selection_activity, mFragment).commit();
bindView();
} else {
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_subreddit_selection_activity, mFragment).commit();
}
} }
} }
} }

View File

@ -902,8 +902,18 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
@Subscribe @Subscribe
public void onPostUpdateEvent(PostUpdateEventToDetailActivity event) { public void onPostUpdateEvent(PostUpdateEventToDetailActivity event) {
if(mPost.getId().equals(event.postId)) { if(mPost.getId().equals(event.post.getId())) {
mPost.setVoteType(event.voteType); mPost.setVoteType(event.post.getVoteType());
mPost.setSaved(event.post.isSaved());
if(mMenu != null) {
if(event.post.isSaved()) {
mMenu.findItem(R.id.action_save_view_post_detail_activity).setIcon(getResources()
.getDrawable(R.drawable.ic_baseline_bookmark_24px));
} else {
mMenu.findItem(R.id.action_save_view_post_detail_activity).setIcon(getResources()
.getDrawable(R.drawable.ic_baseline_bookmark_border_24px));
}
}
mAdapter.updatePost(mPost); mAdapter.updatePost(mPost);
} }
} }

View File

@ -1,5 +1,5 @@
<vector android:height="24dp" android:viewportHeight="512" <vector android:height="16dp" android:viewportHeight="512"
android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> android:viewportWidth="512" android:width="16dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF3636" android:pathData="M470.191,46.036L408.754,5.824c-16.42,-10.748 -38.501,-6.19 -49.334,10.141L248.83,175.589c-2.666,3.847 -2.86,8.89 -0.497,12.931l67.332,115.201c2.184,3.737 6.135,6.208 10.463,6.233c0.029,0 0.058,0 0.087,0c4.785,0 9.487,-2.287 12.388,-6.537L480.357,95.734l0.162,-0.242C491.306,79.01 486.673,56.824 470.191,46.036z"/> <path android:fillColor="#FF3636" android:pathData="M470.191,46.036L408.754,5.824c-16.42,-10.748 -38.501,-6.19 -49.334,10.141L248.83,175.589c-2.666,3.847 -2.86,8.89 -0.497,12.931l67.332,115.201c2.184,3.737 6.135,6.208 10.463,6.233c0.029,0 0.058,0 0.087,0c4.785,0 9.487,-2.287 12.388,-6.537L480.357,95.734l0.162,-0.242C491.306,79.01 486.673,56.824 470.191,46.036z"/>
<path android:fillColor="#FF712F" android:pathData="M338.563,286.469L152.591,16.703c-5.229,-7.892 -13.204,-13.301 -22.479,-15.238c-9.342,-1.95 -18.883,-0.147 -26.867,5.079L41.808,46.757C25.326,57.546 20.694,79.732 31.482,96.214l0.112,0.172l141.293,203.513c1.582,2.279 4.139,3.687 6.911,3.805l146.445,6.251c2.932,0 5.894,-0.859 8.49,-2.649C341.544,302.611 343.259,293.281 338.563,286.469z"/> <path android:fillColor="#FF712F" android:pathData="M338.563,286.469L152.591,16.703c-5.229,-7.892 -13.204,-13.301 -22.479,-15.238c-9.342,-1.95 -18.883,-0.147 -26.867,5.079L41.808,46.757C25.326,57.546 20.694,79.732 31.482,96.214l0.112,0.172l141.293,203.513c1.582,2.279 4.139,3.687 6.911,3.805l146.445,6.251c2.932,0 5.894,-0.859 8.49,-2.649C341.544,302.611 343.259,293.281 338.563,286.469z"/>
<path android:fillColor="#FFD561" android:pathData="M383.798,384.115c0,70.514 -57.37,127.885 -127.885,127.885s-127.885,-57.37 -127.885,-127.885c0,-70.524 57.37,-127.895 127.885,-127.895S383.798,313.59 383.798,384.115z"/> <path android:fillColor="#FFD561" android:pathData="M383.798,384.115c0,70.514 -57.37,127.885 -127.885,127.885s-127.885,-57.37 -127.885,-127.885c0,-70.524 57.37,-127.895 127.885,-127.895S383.798,313.59 383.798,384.115z"/>

View File

@ -205,7 +205,7 @@
android:layout_height="24dp" android:layout_height="24dp"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginEnd="32dp" android:layout_marginEnd="32dp"
android:src="@drawable/ic_outline_lock_24px" android:src="@drawable/ic_outline_lock"
android:tint="@color/primaryTextColor"/> android:tint="@color/primaryTextColor"/>
<TextView <TextView

View File

@ -21,9 +21,8 @@
<LinearLayout <LinearLayout
android:id="@+id/icon_name_linear_layout_view_item_post" android:id="@+id/icon_name_linear_layout_view_item_post"
android:layout_width="0dp" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
android:padding="16dp" android:padding="16dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -58,19 +57,19 @@
app:layout_constraintStart_toEndOf="@id/icon_name_linear_layout_view_item_post" app:layout_constraintStart_toEndOf="@id/icon_name_linear_layout_view_item_post"
app:layout_constraintEnd_toStartOf="@+id/post_time_text_view_best_item_post" app:layout_constraintEnd_toStartOf="@+id/post_time_text_view_best_item_post"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/post_time_text_view_best_item_post" android:id="@+id/post_time_text_view_best_item_post"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:gravity="end"
android:textSize="?attr/font_default" android:textSize="?attr/font_default"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/stickied_post_image_view_item_post" app:layout_constraintStart_toEndOf="@id/stickied_post_image_view_item_post"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintHorizontal_bias="1"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
@ -88,20 +87,26 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="16dp"> android:padding="16dp">
<com.google.android.material.chip.Chip <com.libRG.CustomTextView
android:id="@+id/type_text_view_item_post" android:id="@+id/type_text_view_item_post"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="4dp"
android:textSize="?attr/font_12"
android:textColor="@android:color/white" android:textColor="@android:color/white"
app:chipBackgroundColor="@color/backgroundColorPrimaryDark"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
app:lib_setRoundedBGColor="@color/backgroundColorPrimaryDark"
app:lib_setRoundedBorderColor="@color/backgroundColorPrimaryDark"
app:lib_setRadius="3dp"
app:lib_setRoundedView="true"
app:lib_setShape="rectangle" />
<ImageView <ImageView
android:id="@+id/gilded_image_view_item_post" android:id="@+id/gilded_image_view_item_post"
android:layout_width="24dp" android:layout_width="20dp"
android:layout_height="24dp" android:layout_height="20dp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:src="@drawable/gold" android:src="@drawable/gold"
android:visibility="gone" android:visibility="gone"
@ -115,7 +120,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:textColor="@color/gold" android:textColor="@color/gold"
android:textSize="?attr/font_20" android:textSize="?attr/font_default"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/gilded_image_view_item_post" app:layout_constraintStart_toEndOf="@+id/gilded_image_view_item_post"
@ -123,53 +128,60 @@
<ImageView <ImageView
android:id="@+id/archived_image_view_item_post" android:id="@+id/archived_image_view_item_post"
android:layout_width="24dp" android:layout_width="20dp"
android:layout_height="24dp" android:layout_height="20dp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:src="@drawable/ic_archive_outline_24dp" android:src="@drawable/ic_archive_outline"
android:tint="@color/archivedTint" android:tint="@color/archivedTint"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/crosspost_image_view_item_post" app:layout_constraintStart_toEndOf="@+id/gilded_number_text_view_item_post"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ImageView <ImageView
android:id="@+id/locked_image_view_item_post" android:id="@+id/locked_image_view_item_post"
android:layout_width="24dp" android:layout_width="20dp"
android:layout_height="24dp" android:layout_height="20dp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:src="@drawable/ic_outline_lock_24px" android:src="@drawable/ic_outline_lock"
android:tint="@color/lockedIconTint" android:tint="@color/lockedIconTint"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/nsfw_text_view_item_post"
app:layout_constraintStart_toEndOf="@+id/archived_image_view_item_post" app:layout_constraintStart_toEndOf="@+id/archived_image_view_item_post"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="0" /> app:layout_constraintHorizontal_bias="0" />
<ImageView <ImageView
android:id="@+id/crosspost_image_view_item_post" android:id="@+id/crosspost_image_view_item_post"
android:layout_width="24dp" android:layout_width="20dp"
android:layout_height="24dp" android:layout_height="20dp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:src="@drawable/crosspost" android:src="@drawable/crosspost"
android:tint="@color/colorAccent" android:tint="@color/colorAccent"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/gilded_number_text_view_item_post" app:layout_constraintStart_toEndOf="@+id/locked_image_view_item_post"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.chip.Chip <com.libRG.CustomTextView
android:id="@+id/nsfw_text_view_item_post" android:id="@+id/nsfw_text_view_item_post"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="4dp"
android:text="@string/nsfw" android:text="@string/nsfw"
android:textSize="?attr/font_12"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:visibility="gone" android:visibility="gone"
app:chipBackgroundColor="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/crosspost_image_view_item_post"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="1"
app:lib_setRoundedBGColor="@color/colorAccent"
app:lib_setRoundedBorderColor="@color/colorAccent"
app:lib_setRadius="3dp"
app:lib_setRoundedView="true"
app:lib_setShape="rectangle" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
@ -192,7 +204,8 @@
android:padding="4dp" android:padding="4dp"
android:visibility="gone" android:visibility="gone"
app:lib_setRadius="3dp" app:lib_setRadius="3dp"
app:lib_setRoundedBorderColor="@color/colorPrimaryDarkDayNightTheme" app:lib_setRoundedBGColor="@color/backgroundColorPrimaryDark"
app:lib_setRoundedBorderColor="@color/backgroundColorPrimaryDark"
app:lib_setRoundedView="true" app:lib_setRoundedView="true"
app:lib_setShape="rectangle" /> app:lib_setShape="rectangle" />
@ -207,7 +220,8 @@
android:padding="4dp" android:padding="4dp"
android:visibility="gone" android:visibility="gone"
app:lib_setRadius="3dp" app:lib_setRadius="3dp"
app:lib_setRoundedBorderColor="@color/colorPrimaryDarkDayNightTheme" app:lib_setRoundedBGColor="@color/backgroundColorPrimaryDark"
app:lib_setRoundedBorderColor="@color/backgroundColorPrimaryDark"
app:lib_setRoundedView="true" app:lib_setRoundedView="true"
app:lib_setShape="rectangle" /> app:lib_setShape="rectangle" />
@ -221,7 +235,7 @@
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:textSize="?attr/font_12" android:textSize="?attr/font_12"
android:visibility="gone"/> android:visibility="gone" />
<RelativeLayout <RelativeLayout
android:id="@+id/image_view_wrapper_item_post" android:id="@+id/image_view_wrapper_item_post"
@ -272,7 +286,7 @@
android:background="@color/grey" android:background="@color/grey"
android:visibility="gone"/> android:visibility="gone"/>
<RelativeLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -280,52 +294,98 @@
android:id="@+id/plus_button_item_post" android:id="@+id/plus_button_item_post"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentStart="true" android:padding="12dp"
android:padding="16dp"
android:src="@drawable/ic_arrow_upward_black_24dp" android:src="@drawable/ic_arrow_upward_black_24dp"
android:layout_centerVertical="true"
android:tint="@android:color/tab_indicator_text" android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground" android:background="?actionBarItemBackground"
android:clickable="true" android:clickable="true"
android:focusable="true"/> android:focusable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView <TextView
android:id="@+id/score_text_view_item_post" android:id="@+id/score_text_view_item_post"
android:layout_width="64dp" android:layout_width="64dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_toEndOf="@id/plus_button_item_post"
android:layout_alignBottom="@id/plus_button_item_post"
android:layout_alignParentTop="true"
android:gravity="center" android:gravity="center"
android:textSize="?attr/font_default" /> android:textSize="?attr/font_12"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/plus_button_item_post" />
<ImageView <ImageView
android:id="@+id/minus_button_item_post" android:id="@+id/minus_button_item_post"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:padding="12dp"
android:layout_toEndOf="@id/score_text_view_item_post"
android:padding="16dp"
android:src="@drawable/ic_arrow_downward_black_24dp" android:src="@drawable/ic_arrow_downward_black_24dp"
android:tint="@android:color/tab_indicator_text" android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground" android:background="?actionBarItemBackground"
android:clickable="true" android:clickable="true"
android:focusable="true"/> android:focusable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/score_text_view_item_post" />
<ImageView
android:id="@+id/comment_button_item_post"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="12dp"
android:src="@drawable/ic_comment_white_24dp"
android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground"
android:clickable="true"
android:focusable="true"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/minus_button_item_post" />
<TextView
android:id="@+id/comments_count_item_post"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="?attr/font_12"
android:textStyle="bold"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/comment_button_item_post" />
<ImageView
android:id="@+id/save_button_item_post"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="12dp"
android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground"
android:clickable="true"
android:focusable="true"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/comments_count_item_post"
app:layout_constraintEnd_toStartOf="@id/share_button_item_post" />
<ImageView <ImageView
android:id="@+id/share_button_item_post" android:id="@+id/share_button_item_post"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentEnd="true" android:padding="12dp"
android:layout_centerVertical="true"
android:padding="16dp"
android:src="@drawable/ic_outline_share_24px" android:src="@drawable/ic_outline_share_24px"
android:tint="@android:color/tab_indicator_text" android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground" android:background="?actionBarItemBackground"
android:clickable="true" android:clickable="true"
android:focusable="true" /> android:focusable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1" />
</RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout> </LinearLayout>

View File

@ -13,7 +13,7 @@
<RelativeLayout <RelativeLayout
android:id="@+id/subreddit_icon_name_relative_layout_item_post_detail" android:id="@+id/subreddit_icon_name_relative_layout_item_post_detail"
android:layout_width="0dp" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="16dp" android:padding="16dp"
app:layout_constrainedWidth="true" app:layout_constrainedWidth="true"
@ -53,10 +53,11 @@
<TextView <TextView
android:id="@+id/post_time_text_view_item_post_detail" android:id="@+id/post_time_text_view_item_post_detail"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:gravity="end"
android:textSize="?attr/font_default" android:textSize="?attr/font_default"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/subreddit_icon_name_relative_layout_item_post_detail" app:layout_constraintStart_toEndOf="@id/subreddit_icon_name_relative_layout_item_post_detail"
@ -89,15 +90,22 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="16dp"> android:padding="16dp">
<com.google.android.material.chip.Chip <com.libRG.CustomTextView
android:id="@+id/type_text_view_item_post_detail" android:id="@+id/type_text_view_item_post_detail"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="4dp"
android:textSize="?attr/font_12"
android:textColor="@android:color/white" android:textColor="@android:color/white"
app:chipBackgroundColor="@color/backgroundColorPrimaryDark" app:chipBackgroundColor="@color/backgroundColorPrimaryDark"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
app:lib_setRoundedBGColor="@color/backgroundColorPrimaryDark"
app:lib_setRoundedBorderColor="@color/backgroundColorPrimaryDark"
app:lib_setRadius="3dp"
app:lib_setRoundedView="true"
app:lib_setShape="rectangle" />
<ImageView <ImageView
android:id="@+id/gilded_image_view_item_post_detail" android:id="@+id/gilded_image_view_item_post_detail"
@ -116,7 +124,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="4dp"
android:textColor="@color/gold" android:textColor="@color/gold"
android:textSize="?attr/font_20" android:textSize="?attr/font_default"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/gilded_image_view_item_post_detail" app:layout_constraintStart_toEndOf="@+id/gilded_image_view_item_post_detail"
@ -124,10 +132,10 @@
<ImageView <ImageView
android:id="@+id/archived_image_view_item_post_detail" android:id="@+id/archived_image_view_item_post_detail"
android:layout_width="24dp" android:layout_width="20dp"
android:layout_height="24dp" android:layout_height="20dp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:src="@drawable/ic_archive_outline_24dp" android:src="@drawable/ic_archive_outline"
android:tint="@color/archivedTint" android:tint="@color/archivedTint"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -136,10 +144,10 @@
<ImageView <ImageView
android:id="@+id/locked_image_view_item_post_detail" android:id="@+id/locked_image_view_item_post_detail"
android:layout_width="24dp" android:layout_width="20dp"
android:layout_height="24dp" android:layout_height="20dp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:src="@drawable/ic_outline_lock_24px" android:src="@drawable/ic_outline_lock"
android:tint="@color/lockedIconTint" android:tint="@color/lockedIconTint"
android:visibility="gone" android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -150,8 +158,8 @@
<ImageView <ImageView
android:id="@+id/crosspost_image_view_item_post_detail" android:id="@+id/crosspost_image_view_item_post_detail"
android:layout_width="24dp" android:layout_width="20dp"
android:layout_height="24dp" android:layout_height="20dp"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:src="@drawable/crosspost" android:src="@drawable/crosspost"
android:tint="@color/colorAccent" android:tint="@color/colorAccent"
@ -160,17 +168,25 @@
app:layout_constraintStart_toEndOf="@+id/gilded_number_text_view_item_post_detail" app:layout_constraintStart_toEndOf="@+id/gilded_number_text_view_item_post_detail"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.chip.Chip <com.libRG.CustomTextView
android:id="@+id/nsfw_text_view_item_post_detail" android:id="@+id/nsfw_text_view_item_post_detail"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="4dp"
android:text="@string/nsfw" android:text="@string/nsfw"
android:textSize="?attr/font_12"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:visibility="gone" android:visibility="gone"
app:chipBackgroundColor="@color/colorAccent" app:chipBackgroundColor="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="1"
app:lib_setRoundedBGColor="@color/colorAccent"
app:lib_setRoundedBorderColor="@color/colorAccent"
app:lib_setRadius="3dp"
app:lib_setRoundedView="true"
app:lib_setShape="rectangle" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
@ -203,9 +219,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:padding="4dp"
android:textSize="?attr/font_12" android:textSize="?attr/font_12"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:padding="4dp"
android:visibility="gone" android:visibility="gone"
app:lib_setRadius="3dp" app:lib_setRadius="3dp"
app:lib_setRoundedBorderColor="@color/colorPrimaryDarkDayNightTheme" app:lib_setRoundedBorderColor="@color/colorPrimaryDarkDayNightTheme"
@ -274,7 +290,7 @@
android:tint="@android:color/tab_indicator_text" android:tint="@android:color/tab_indicator_text"
android:visibility="gone" /> android:visibility="gone" />
<RelativeLayout <!--<RelativeLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -326,6 +342,107 @@
android:src="@drawable/ic_outline_share_24px" android:src="@drawable/ic_outline_share_24px"
android:tint="@android:color/tab_indicator_text" /> android:tint="@android:color/tab_indicator_text" />
</RelativeLayout> </RelativeLayout>-->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/plus_button_item_post_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="12dp"
android:src="@drawable/ic_arrow_upward_black_24dp"
android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground"
android:clickable="true"
android:focusable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/score_text_view_item_post_detail"
android:layout_width="64dp"
android:layout_height="match_parent"
android:gravity="center"
android:textSize="?attr/font_12"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/plus_button_item_post_detail" />
<ImageView
android:id="@+id/minus_button_item_post_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="12dp"
android:src="@drawable/ic_arrow_downward_black_24dp"
android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground"
android:clickable="true"
android:focusable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/score_text_view_item_post_detail" />
<ImageView
android:id="@+id/comment_button_item_post_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="12dp"
android:src="@drawable/ic_comment_white_24dp"
android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground"
android:clickable="true"
android:focusable="true"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/minus_button_item_post_detail" />
<TextView
android:id="@+id/comments_count_item_post_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="?attr/font_12"
android:textStyle="bold"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/comment_button_item_post_detail" />
<ImageView
android:id="@+id/save_button_item_post_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="12dp"
android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground"
android:clickable="true"
android:focusable="true"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/comments_count_item_post_detail"
app:layout_constraintEnd_toStartOf="@id/share_button_item_post_detail" />
<ImageView
android:id="@+id/share_button_item_post_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="12dp"
android:src="@drawable/ic_outline_share_24px"
android:tint="@android:color/tab_indicator_text"
android:background="?actionBarItemBackground"
android:clickable="true"
android:focusable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout> </LinearLayout>