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))
.build();
markwon.setMarkdown(commentParentMarkwonView, intent.getExtras().getString(EXTRA_COMMENT_PARENT_TEXT_KEY));
parentFullname = intent.getExtras().getString(EXTRA_PARENT_FULLNAME_KEY);
markwon.setMarkdown(commentParentMarkwonView, intent.getStringExtra(EXTRA_COMMENT_PARENT_TEXT_KEY));
parentFullname = intent.getStringExtra(EXTRA_PARENT_FULLNAME_KEY);
parentDepth = intent.getExtras().getInt(EXTRA_PARENT_DEPTH_KEY);
parentPosition = intent.getExtras().getInt(EXTRA_PARENT_POSITION_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.RequestOptions;
import com.bumptech.glide.request.target.Target;
import com.google.android.material.chip.Chip;
import com.libRG.CustomTextView;
import com.santalu.aspectratioimageview.AspectRatioImageView;
@ -366,7 +365,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
}
if(mPost.isNSFW()) {
((PostDetailViewHolder) holder).mNSFWChip.setOnClickListener(view -> {
((PostDetailViewHolder) holder).mNSFWTextView.setOnClickListener(view -> {
Intent intent = new Intent(mActivity, FilteredThingActivity.class);
intent.putExtra(FilteredThingActivity.EXTRA_NAME, mSubredditNamePrefixed.substring(2));
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);
mActivity.startActivity(intent);
});
((PostDetailViewHolder) holder).mNSFWChip.setVisibility(View.VISIBLE);
((PostDetailViewHolder) holder).mNSFWTextView.setVisibility(View.VISIBLE);
} else {
((PostDetailViewHolder) holder).mNSFWChip.setVisibility(View.GONE);
((PostDetailViewHolder) holder).mNSFWTextView.setVisibility(View.GONE);
}
String scoreWithVote = Integer.toString(mPost.getScore() + mPost.getVoteType());
((PostDetailViewHolder) holder).mScoreTextView.setText(scoreWithVote);
((PostDetailViewHolder) holder).mTypeChip.setOnClickListener(view -> {
((PostDetailViewHolder) holder).mTypeTextView.setOnClickListener(view -> {
Intent intent = new Intent(mActivity, FilteredThingActivity.class);
intent.putExtra(FilteredThingActivity.EXTRA_NAME, mSubredditNamePrefixed.substring(2));
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
@ -394,7 +393,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
switch (mPost.getPostType()) {
case Post.IMAGE_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("IMAGE");
((PostDetailViewHolder) holder).mTypeTextView.setText("IMAGE");
((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> {
Intent intent = new Intent(mActivity, ViewImageActivity.class);
@ -406,7 +405,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
});
break;
case Post.LINK_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("LINK");
((PostDetailViewHolder) holder).mTypeTextView.setText("LINK");
((PostDetailViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
String domain = Uri.parse(mPost.getUrl()).getHost();
@ -424,7 +423,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
});
break;
case Post.GIF_VIDEO_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("GIF");
((PostDetailViewHolder) holder).mTypeTextView.setText("GIF");
final Uri gifVideoUri = Uri.parse(mPost.getVideoUrl());
((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> {
@ -437,7 +436,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
});
break;
case Post.VIDEO_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("VIDEO");
((PostDetailViewHolder) holder).mTypeTextView.setText("VIDEO");
final Uri videoUri = Uri.parse(mPost.getVideoUrl());
((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> {
@ -450,7 +449,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
});
break;
case Post.NO_PREVIEW_LINK_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("LINK");
((PostDetailViewHolder) holder).mTypeTextView.setText("LINK");
((PostDetailViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
String noPreviewLinkDomain = Uri.parse(mPost.getUrl()).getHost();
@ -474,7 +473,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
});
break;
case Post.TEXT_TYPE:
((PostDetailViewHolder) holder).mTypeChip.setText("TEXT");
((PostDetailViewHolder) holder).mTypeTextView.setText("TEXT");
if(!mPost.getSelfText().equals("")) {
((PostDetailViewHolder) holder).mContentMarkdownView.setVisibility(View.VISIBLE);
@ -482,6 +481,77 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
}
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) {
CommentData comment;
if(mIsSingleCommentThreadMode) {
@ -1100,7 +1170,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
((PostDetailViewHolder) holder).spoilerFlairlinearLayout.setVisibility(View.GONE);
((PostDetailViewHolder) holder).flairTextView.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) {
((LoadMoreChildCommentsViewHolder) holder).itemView.setPadding(0, 0, 0, 0);
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.title_text_view_item_post_detail) TextView mTitleTextView;
@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_number_text_view_item_post_detail) TextView mGildedNumberTextView;
@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.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_custom_text_view_item_post_detail) CustomTextView spoilerTextView;
@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.score_text_view_item_post_detail) TextView mScoreTextView;
@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;
PostDetailViewHolder(@NonNull View itemView) {

View File

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

View File

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

View File

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

View File

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

View File

@ -34,7 +34,6 @@ import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target;
import com.google.android.material.card.MaterialCardView;
import com.google.android.material.chip.Chip;
import com.libRG.CustomTextView;
import org.greenrobot.eventbus.EventBus;
@ -309,7 +308,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
if(nsfw) {
if(!(mContext instanceof FilteredThingActivity)) {
((DataViewHolder) holder).nsfwChip.setOnClickListener(view -> {
((DataViewHolder) holder).nsfwTextView.setOnClickListener(view -> {
Intent intent = new Intent(mContext, FilteredThingActivity.class);
intent.putExtra(FilteredThingActivity.EXTRA_NAME, post.getSubredditNamePrefixed().substring(2));
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
@ -318,7 +317,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
mContext.startActivity(intent);
});
}
((DataViewHolder) holder).nsfwChip.setVisibility(View.VISIBLE);
((DataViewHolder) holder).nsfwTextView.setVisibility(View.VISIBLE);
}
if(spoiler || flair != null) {
@ -327,13 +326,11 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
if(spoiler) {
((DataViewHolder) holder).spoilerTextView.setVisibility(View.VISIBLE);
((DataViewHolder) holder).spoilerTextView.setBackgroundColor(mContext.getResources().getColor(R.color.backgroundColorPrimaryDark));
}
if(flair != null) {
((DataViewHolder) holder).flairTextView.setVisibility(View.VISIBLE);
((DataViewHolder) holder).flairTextView.setText(flair);
((DataViewHolder) holder).flairTextView.setBackgroundColor(mContext.getResources().getColor(R.color.backgroundColorPrimaryDark));
}
switch (voteType) {
@ -377,12 +374,12 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
}
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()) {
case Post.IMAGE_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.image);
((DataViewHolder) holder).typeTextView.setText(R.string.image);
final String imageUrl = post.getUrl();
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
@ -395,7 +392,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
});
break;
case Post.LINK_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.link);
((DataViewHolder) holder).typeTextView.setText(R.string.link);
((DataViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
String domain = Uri.parse(post.getUrl()).getHost();
@ -413,7 +410,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
});
break;
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());
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
@ -426,7 +423,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
});
break;
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());
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
@ -439,7 +436,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
});
break;
case Post.NO_PREVIEW_LINK_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.link);
((DataViewHolder) holder).typeTextView.setText(R.string.link);
String noPreviewLinkUrl = post.getUrl();
((DataViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
@ -458,7 +455,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
});
break;
case Post.TEXT_TYPE:
((DataViewHolder) holder).typeChip.setText(R.string.text);
((DataViewHolder) holder).typeTextView.setText(R.string.text);
break;
}
@ -516,7 +513,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).downvoteButton.clearColorFilter();
((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
@ -528,7 +525,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter);
((DataViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor);
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post.getId(), post.getVoteType()));
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
}
}, id, newVoteType, holder.getAdapterPosition());
});
@ -587,7 +584,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).upvoteButton.clearColorFilter();
((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
@ -599,11 +596,82 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter);
((DataViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor);
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post.getId(), post.getVoteType()));
EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
}
}, 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 -> {
try {
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.post_time_text_view_best_item_post) TextView postTimeTextView;
@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_number_text_view_item_post) TextView gildedNumberTextView;
@BindView(R.id.archived_image_view_item_post) ImageView archivedImageView;
@BindView(R.id.locked_image_view_item_post) ImageView lockedImageView;
@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_custom_text_view_item_post) CustomTextView spoilerTextView;
@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.score_text_view_item_post) TextView scoreTextView;
@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;
DataViewHolder(View itemView) {
@ -764,7 +835,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
((DataViewHolder) holder).crosspostImageView.setVisibility(View.GONE);
((DataViewHolder) holder).archivedImageView.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).spoilerTextView.setVisibility(View.GONE);
((DataViewHolder) holder).flairTextView.setVisibility(View.GONE);

View File

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

View File

@ -169,11 +169,7 @@ public class SubredditSelectionActivity extends AppCompatActivity {
getCurrentAccountAndBindView();
} else {
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
if(mFragment == null) {
bindView();
} else {
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_subreddit_selection_activity, mFragment).commit();
}
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
public void onPostUpdateEvent(PostUpdateEventToDetailActivity event) {
if(mPost.getId().equals(event.postId)) {
mPost.setVoteType(event.voteType);
if(mPost.getId().equals(event.post.getId())) {
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);
}
}

View File

@ -1,5 +1,5 @@
<vector android:height="24dp" android:viewportHeight="512"
android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<vector android:height="16dp" android:viewportHeight="512"
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="#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"/>

View File

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

View File

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

View File

@ -13,7 +13,7 @@
<RelativeLayout
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:padding="16dp"
app:layout_constrainedWidth="true"
@ -53,10 +53,11 @@
<TextView
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_gravity="center"
android:layout_marginEnd="16dp"
android:gravity="end"
android:textSize="?attr/font_default"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/subreddit_icon_name_relative_layout_item_post_detail"
@ -89,15 +90,22 @@
android:layout_height="wrap_content"
android:padding="16dp">
<com.google.android.material.chip.Chip
<com.libRG.CustomTextView
android:id="@+id/type_text_view_item_post_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:textSize="?attr/font_12"
android:textColor="@android:color/white"
app:chipBackgroundColor="@color/backgroundColorPrimaryDark"
app:layout_constraintBottom_toBottomOf="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
android:id="@+id/gilded_image_view_item_post_detail"
@ -116,7 +124,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:textColor="@color/gold"
android:textSize="?attr/font_20"
android:textSize="?attr/font_default"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/gilded_image_view_item_post_detail"
@ -124,10 +132,10 @@
<ImageView
android:id="@+id/archived_image_view_item_post_detail"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="16dp"
android:src="@drawable/ic_archive_outline_24dp"
android:src="@drawable/ic_archive_outline"
android:tint="@color/archivedTint"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
@ -136,10 +144,10 @@
<ImageView
android:id="@+id/locked_image_view_item_post_detail"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="16dp"
android:src="@drawable/ic_outline_lock_24px"
android:src="@drawable/ic_outline_lock"
android:tint="@color/lockedIconTint"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
@ -150,8 +158,8 @@
<ImageView
android:id="@+id/crosspost_image_view_item_post_detail"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="16dp"
android:src="@drawable/crosspost"
android:tint="@color/colorAccent"
@ -160,17 +168,25 @@
app:layout_constraintStart_toEndOf="@+id/gilded_number_text_view_item_post_detail"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.chip.Chip
<com.libRG.CustomTextView
android:id="@+id/nsfw_text_view_item_post_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:text="@string/nsfw"
android:textSize="?attr/font_12"
android:textColor="@android:color/white"
android:visibility="gone"
app:chipBackgroundColor="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="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>
@ -203,9 +219,9 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="16dp"
android:padding="4dp"
android:textSize="?attr/font_12"
android:textColor="@android:color/white"
android:padding="4dp"
android:visibility="gone"
app:lib_setRadius="3dp"
app:lib_setRoundedBorderColor="@color/colorPrimaryDarkDayNightTheme"
@ -274,7 +290,7 @@
android:tint="@android:color/tab_indicator_text"
android:visibility="gone" />
<RelativeLayout
<!--<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -326,6 +342,107 @@
android:src="@drawable/ic_outline_share_24px"
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>