diff options
10 files changed, 784 insertions, 271 deletions
diff --git a/app/build.gradle b/app/build.gradle index edf08528..f91b8aad 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,7 +31,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.browser:browser:1.2.0' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta8' // Lifecycle components def lifecycleVersion = '2.2.0' implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleVersion" @@ -52,15 +52,15 @@ dependencies { implementation 'com.google.android.exoplayer:exoplayer-dash:2.10.4' implementation 'com.google.android.exoplayer:exoplayer-ui:2.10.4' implementation 'com.alexvasilkov:gesture-views:2.6.0' - implementation 'com.github.bumptech.glide:glide:4.10.0' - annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0' + implementation 'com.github.bumptech.glide:glide:4.11.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' implementation 'io.reactivex.rxjava2:rxjava:2.2.19' - implementation 'com.squareup.retrofit2:retrofit:2.7.2' - implementation 'com.squareup.retrofit2:converter-scalars:2.7.2' + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.squareup.retrofit2:converter-scalars:2.9.0' implementation 'jp.wasabeef:glide-transformations:4.1.0' - implementation 'com.google.dagger:dagger:2.27' - annotationProcessor 'com.google.dagger:dagger-compiler:2.27' + implementation 'com.google.dagger:dagger:2.28.1' + annotationProcessor 'com.google.dagger:dagger-compiler:2.28.1' implementation 'com.jakewharton:butterknife:10.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' implementation 'com.github.santalu:aspect-ratio-imageview:1.0.9' @@ -70,7 +70,7 @@ dependencies { implementation 'io.noties.markwon:ext-strikethrough:4.3.1' implementation 'io.noties.markwon:simple-ext:4.3.1' implementation 'io.noties.markwon:recycler-table:4.3.1' - implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19' + implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.20' implementation 'com.github.Ferfalk:SimpleSearchView:0.1.4' def eventbusVersion = '3.2.0' diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java index 96901e29..18e3dff7 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java @@ -789,29 +789,29 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy ((CommentViewHolder) holder).itemView.setBackgroundColor(mAwardedCommentBackgroundColor); } - String authorPrefixed = "u/" + comment.getAuthor(); + String authorPrefixed = "u/" + "asdasdfasfadfafasfasfsafasdfasdfasfjk as df adsf asf a sfas f"; ((CommentViewHolder) holder).authorTextView.setText(authorPrefixed); + ((CommentViewHolder) holder).authorFlairTextView.setVisibility(View.VISIBLE); + ((CommentViewHolder) holder).authorFlairTextView.setText("asfafaf"); - if (comment.getAuthorFlairHTML() != null && !comment.getAuthorFlairHTML().equals("")) { + /*if (comment.getAuthorFlairHTML() != null && !comment.getAuthorFlairHTML().equals("")) { ((CommentViewHolder) holder).authorFlairTextView.setVisibility(View.VISIBLE); Utils.setHTMLWithImageToTextView(((CommentViewHolder) holder).authorFlairTextView, comment.getAuthorFlairHTML()); } else if (comment.getAuthorFlair() != null && !comment.getAuthorFlair().equals("")) { ((CommentViewHolder) holder).authorFlairTextView.setVisibility(View.VISIBLE); ((CommentViewHolder) holder).authorFlairTextView.setText(comment.getAuthorFlair()); - } + }*/ if (comment.isSubmitter()) { ((CommentViewHolder) holder).authorTextView.setTextColor(mSubmitterColor); - ((CommentViewHolder) holder).authorTypeImageView.setVisibility(View.VISIBLE); - ((CommentViewHolder) holder).authorTypeImageView. - setColorFilter(mSubmitterColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((CommentViewHolder) holder).authorTypeImageView.setImageResource(R.drawable.ic_mic_14dp); + Drawable submitterDrawable = Utils.getTintedDrawable(mActivity, R.drawable.ic_mic_14dp, mSubmitterColor); + ((CommentViewHolder) holder).authorTextView.setCompoundDrawablesWithIntrinsicBounds( + submitterDrawable, null, null, null); } else if (comment.isModerator()) { ((CommentViewHolder) holder).authorTextView.setTextColor(mModeratorColor); - ((CommentViewHolder) holder).authorTypeImageView.setVisibility(View.VISIBLE); - ((CommentViewHolder) holder).authorTypeImageView. - setColorFilter(mModeratorColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((CommentViewHolder) holder).authorTypeImageView.setImageResource(R.drawable.ic_verified_user_14dp); + Drawable moderatorDrawable = Utils.getTintedDrawable(mActivity, R.drawable.ic_verified_user_14dp, mModeratorColor); + ((CommentViewHolder) holder).authorTextView.setCompoundDrawablesWithIntrinsicBounds( + moderatorDrawable, null, null, null); } if (mShowElapsedTime) { @@ -1582,9 +1582,8 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) { if (holder instanceof CommentViewHolder) { ((CommentViewHolder) holder).authorTextView.setTextColor(mUsernameColor); - mGlide.clear(((CommentViewHolder) holder).authorTypeImageView); ((CommentViewHolder) holder).authorFlairTextView.setVisibility(View.GONE); - ((CommentViewHolder) holder).authorTypeImageView.setVisibility(View.GONE); + ((CommentViewHolder) holder).authorTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); ((CommentViewHolder) holder).awardsTextView.setText(""); ((CommentViewHolder) holder).awardsTextView.setVisibility(View.GONE); ((CommentViewHolder) holder).expandButton.setVisibility(View.GONE); @@ -2773,8 +2772,6 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy TextView authorTextView; @BindView(R.id.author_flair_text_view_item_post_comment) TextView authorFlairTextView; - @BindView(R.id.author_type_image_view_item_comment) - ImageView authorTypeImageView; @BindView(R.id.comment_time_text_view_item_post_comment) TextView commentTimeTextView; @BindView(R.id.top_score_text_view_item_post_comment) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentsListingRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentsListingRecyclerViewAdapter.java index eb3ef3f2..349fb1b7 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentsListingRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentsListingRecyclerViewAdapter.java @@ -253,8 +253,6 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment ((CommentViewHolder) holder).commentMarkdownView.setOnClickListener(view -> ((CommentViewHolder) holder).linearLayout.callOnClick()); - ((CommentViewHolder) holder).replyButton.setVisibility(View.GONE); - ((CommentViewHolder) holder).upvoteButton.setOnClickListener(view -> { if (mAccessToken == null) { Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show(); @@ -504,6 +502,8 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment super(itemView); ButterKnife.bind(this, itemView); + replyButton.setVisibility(View.GONE); + if (mVoteButtonsOnTheRight) { ConstraintSet constraintSet = new ConstraintSet(); constraintSet.clone(bottomConstraintLayout); @@ -515,7 +515,8 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment constraintSet.connect(upvoteButton.getId(), ConstraintSet.END, scoreTextView.getId(), ConstraintSet.START); constraintSet.connect(scoreTextView.getId(), ConstraintSet.END, downvoteButton.getId(), ConstraintSet.START); constraintSet.connect(downvoteButton.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END); - constraintSet.connect(moreButton.getId(), ConstraintSet.START, expandButton.getId(), ConstraintSet.END); + constraintSet.connect(saveButton.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START); + constraintSet.connect(moreButton.getId(), ConstraintSet.START, saveButton.getId(), ConstraintSet.END); constraintSet.connect(moreButton.getId(), ConstraintSet.END, upvoteButton.getId(), ConstraintSet.END); constraintSet.connect(expandButton.getId(), ConstraintSet.START, replyButton.getId(), ConstraintSet.END); constraintSet.connect(replyButton.getId(), ConstraintSet.START, replyButton.getId(), ConstraintSet.END); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java index 30136ff6..ab5825cc 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java @@ -210,7 +210,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView mAutoplayNsfwVideos = sharedPreferences.getBoolean(SharedPreferencesUtils.AUTOPLAY_NSFW_VIDEOS, true); mMuteAutoplayingVideos = sharedPreferences.getBoolean(SharedPreferencesUtils.MUTE_AUTOPLAYING_VIDEOS, true); mShowThumbnailOnTheRightInCompactLayout = sharedPreferences.getBoolean( - SharedPreferencesUtils.SHOW_THUMBNAIL_ON_THE_RIGHT_IN_COMPACT_LAYOUT, false); + SharedPreferencesUtils.SHOW_THUMBNAIL_ON_THE_LEFT_IN_COMPACT_LAYOUT, false); Resources resources = activity.getResources(); mStartAutoplayVisibleAreaOffset = resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT ? @@ -335,7 +335,11 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView } else if (viewType == VIEW_TYPE_POST_CARD_TEXT_TYPE) { return new PostTextTypeViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_text, parent, false)); } else if (viewType == VIEW_TYPE_POST_COMPACT) { - return new PostCompactViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_compact, parent, false)); + if (mShowThumbnailOnTheRightInCompactLayout) { + return new PostCompactRightThumbnailViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_compact_right_thumbnail, parent, false)); + } else { + return new PostCompactLeftThumbnailViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_compact, parent, false)); + } } else if (viewType == VIEW_TYPE_ERROR) { return new ErrorViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false)); } else { @@ -590,7 +594,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView } } } - } else if (holder instanceof PostCompactViewHolder) { + } else if (holder instanceof PostCompactBaseViewHolder) { Post post = getItem(position); if (post != null) { final String fullName = post.getFullName(); @@ -606,7 +610,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView int nAwards = post.getnAwards(); boolean isArchived = post.isArchived(); - ((PostCompactViewHolder) holder).itemView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).itemView.setOnClickListener(view -> { if (canStartActivity) { canStartActivity = false; @@ -625,13 +629,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView if (iconImageUrl == null || iconImageUrl.equals("")) { mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } else { mGlide.load(iconImageUrl) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) .error(mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } if (holder.getAdapterPosition() >= 0) { @@ -644,11 +648,11 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) .error(mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } else { mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } } else { if (post.getSubredditIconUrl() == null) { @@ -658,13 +662,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView if (iconImageUrl == null || iconImageUrl.equals("")) { mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } else { mGlide.load(iconImageUrl) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) .error(mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } if (holder.getAdapterPosition() >= 0) { @@ -677,18 +681,18 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) .error(mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } else { mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } } - ((PostCompactViewHolder) holder).nameTextView.setTextColor(mSubredditColor); - ((PostCompactViewHolder) holder).nameTextView.setText(subredditNamePrefixed); + ((PostCompactBaseViewHolder) holder).nameTextView.setTextColor(mSubredditColor); + ((PostCompactBaseViewHolder) holder).nameTextView.setText(subredditNamePrefixed); - ((PostCompactViewHolder) holder).nameTextView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).nameTextView.setOnClickListener(view -> { if (canStartActivity) { canStartActivity = false; if (post.getSubredditNamePrefixed().startsWith("u/")) { @@ -705,8 +709,8 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView } }); - ((PostCompactViewHolder) holder).iconGifImageView.setOnClickListener(view -> - ((PostCompactViewHolder) holder).nameTextView.performClick()); + ((PostCompactBaseViewHolder) holder).iconGifImageView.setOnClickListener(view -> + ((PostCompactBaseViewHolder) holder).nameTextView.performClick()); } else { if (post.getAuthorIconUrl() == null) { String authorName = post.getAuthor().equals("[deleted]") ? post.getSubredditNamePrefixed().substring(2) : post.getAuthor(); @@ -715,13 +719,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView if (iconImageUrl == null || iconImageUrl.equals("")) { mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } else { mGlide.load(iconImageUrl) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) .error(mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } if (holder.getAdapterPosition() >= 0) { @@ -734,17 +738,17 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) .error(mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } else { mGlide.load(R.drawable.subreddit_default_icon) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) - .into(((PostCompactViewHolder) holder).iconGifImageView); + .into(((PostCompactBaseViewHolder) holder).iconGifImageView); } - ((PostCompactViewHolder) holder).nameTextView.setTextColor(mUsernameColor); - ((PostCompactViewHolder) holder).nameTextView.setText(authorPrefixed); + ((PostCompactBaseViewHolder) holder).nameTextView.setTextColor(mUsernameColor); + ((PostCompactBaseViewHolder) holder).nameTextView.setText(authorPrefixed); - ((PostCompactViewHolder) holder).nameTextView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).nameTextView.setOnClickListener(view -> { if (canStartActivity) { canStartActivity = false; Intent intent = new Intent(mActivity, ViewUserDetailActivity.class); @@ -753,33 +757,33 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView } }); - ((PostCompactViewHolder) holder).iconGifImageView.setOnClickListener(view -> - ((PostCompactViewHolder) holder).nameTextView.performClick()); + ((PostCompactBaseViewHolder) holder).iconGifImageView.setOnClickListener(view -> + ((PostCompactBaseViewHolder) holder).nameTextView.performClick()); } if (mShowElapsedTime) { - ((PostCompactViewHolder) holder).postTimeTextView.setText( + ((PostCompactBaseViewHolder) holder).postTimeTextView.setText( Utils.getElapsedTime(mActivity, post.getPostTimeMillis())); } else { - ((PostCompactViewHolder) holder).postTimeTextView.setText(Utils.getFormattedTime(mLocale, post.getPostTimeMillis(), mTimeFormatPattern)); + ((PostCompactBaseViewHolder) holder).postTimeTextView.setText(Utils.getFormattedTime(mLocale, post.getPostTimeMillis(), mTimeFormatPattern)); } if (mShowDividerInCompactLayout) { - ((PostCompactViewHolder) holder).divider.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).divider.setVisibility(View.VISIBLE); } else { - ((PostCompactViewHolder) holder).divider.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).divider.setVisibility(View.GONE); } - ((PostCompactViewHolder) holder).titleTextView.setText(title); - ((PostCompactViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); + ((PostCompactBaseViewHolder) holder).titleTextView.setText(title); + ((PostCompactBaseViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); if (post.isLocked()) { - ((PostCompactViewHolder) holder).lockedImageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).lockedImageView.setVisibility(View.VISIBLE); } if (nsfw) { if (!(mActivity instanceof FilteredThingActivity)) { - ((PostCompactViewHolder) holder).nsfwTextView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).nsfwTextView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, FilteredThingActivity.class); intent.putExtra(FilteredThingActivity.EXTRA_NAME, post.getSubredditNamePrefixed().substring(2)); intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT); @@ -787,77 +791,77 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView mActivity.startActivity(intent); }); } - ((PostCompactViewHolder) holder).nsfwTextView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).nsfwTextView.setVisibility(View.VISIBLE); } if (spoiler) { - ((PostCompactViewHolder) holder).spoilerTextView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).spoilerTextView.setVisibility(View.VISIBLE); } if (flair != null && !flair.equals("")) { - ((PostCompactViewHolder) holder).flairTextView.setVisibility(View.VISIBLE); - Utils.setHTMLWithImageToTextView(((PostCompactViewHolder) holder).flairTextView, flair); + ((PostCompactBaseViewHolder) holder).flairTextView.setVisibility(View.VISIBLE); + Utils.setHTMLWithImageToTextView(((PostCompactBaseViewHolder) holder).flairTextView, flair); } if (nAwards > 0) { - ((PostCompactViewHolder) holder).awardsTextView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).awardsTextView.setVisibility(View.VISIBLE); if (nAwards == 1) { - ((PostCompactViewHolder) holder).awardsTextView.setText(mActivity.getString(R.string.one_award)); + ((PostCompactBaseViewHolder) holder).awardsTextView.setText(mActivity.getString(R.string.one_award)); } else { - ((PostCompactViewHolder) holder).awardsTextView.setText(mActivity.getString(R.string.n_awards, nAwards)); + ((PostCompactBaseViewHolder) holder).awardsTextView.setText(mActivity.getString(R.string.n_awards, nAwards)); } } switch (voteType) { case 1: //Upvoted - ((PostCompactViewHolder) holder).upvoteButton.setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mUpvotedColor); + ((PostCompactBaseViewHolder) holder).upvoteButton.setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mUpvotedColor); break; case -1: //Downvoted - ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mDownvotedColor); + ((PostCompactBaseViewHolder) holder).downvoteButton.setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mDownvotedColor); break; } if (post.getPostType() != Post.TEXT_TYPE && post.getPostType() != Post.NO_PREVIEW_LINK_TYPE) { - ((PostCompactViewHolder) holder).relativeLayout.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).relativeLayout.setVisibility(View.VISIBLE); if (post.getPostType() != Post.GIF_TYPE && post.getPostType() != Post.VIDEO_TYPE) { - ((PostCompactViewHolder) holder).progressBar.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).progressBar.setVisibility(View.VISIBLE); } - ((PostCompactViewHolder) holder).imageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).imageView.setVisibility(View.VISIBLE); loadImage(holder, post); } if (mPostType == PostDataSource.TYPE_SUBREDDIT && !mDisplaySubredditName && post.isStickied()) { - ((PostCompactViewHolder) holder).stickiedPostImageView.setVisibility(View.VISIBLE); - mGlide.load(R.drawable.ic_thumbtack_24dp).into(((PostCompactViewHolder) holder).stickiedPostImageView); + ((PostCompactBaseViewHolder) holder).stickiedPostImageView.setVisibility(View.VISIBLE); + mGlide.load(R.drawable.ic_thumbtack_24dp).into(((PostCompactBaseViewHolder) holder).stickiedPostImageView); } if (isArchived) { - ((PostCompactViewHolder) holder).archivedImageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).archivedImageView.setVisibility(View.VISIBLE); - ((PostCompactViewHolder) holder).upvoteButton + ((PostCompactBaseViewHolder) holder).upvoteButton .setColorFilter(mVoteAndReplyUnavailableVoteButtonColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).downvoteButton + ((PostCompactBaseViewHolder) holder).downvoteButton .setColorFilter(mVoteAndReplyUnavailableVoteButtonColor, android.graphics.PorterDuff.Mode.SRC_IN); } if (post.isCrosspost()) { - ((PostCompactViewHolder) holder).crosspostImageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).crosspostImageView.setVisibility(View.VISIBLE); } if (!(mActivity instanceof FilteredThingActivity)) { - ((PostCompactViewHolder) holder).typeTextView.setOnClickListener(view -> mCallback.typeChipClicked(post.getPostType())); + ((PostCompactBaseViewHolder) holder).typeTextView.setOnClickListener(view -> mCallback.typeChipClicked(post.getPostType())); } switch (post.getPostType()) { case Post.IMAGE_TYPE: - ((PostCompactViewHolder) holder).typeTextView.setText(R.string.image); + ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.image); final String imageUrl = post.getUrl(); - ((PostCompactViewHolder) holder).imageView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).imageView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class); intent.putExtra(ViewImageOrGifActivity.IMAGE_URL_KEY, imageUrl); intent.putExtra(ViewImageOrGifActivity.FILE_NAME_KEY, subredditName @@ -866,13 +870,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView }); break; case Post.LINK_TYPE: - ((PostCompactViewHolder) holder).typeTextView.setText(R.string.link); + ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.link); - ((PostCompactViewHolder) holder).linkTextView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).linkTextView.setVisibility(View.VISIBLE); String domain = Uri.parse(post.getUrl()).getHost(); - ((PostCompactViewHolder) holder).linkTextView.setText(domain); + ((PostCompactBaseViewHolder) holder).linkTextView.setText(domain); - ((PostCompactViewHolder) holder).imageView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).imageView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, LinkResolverActivity.class); Uri uri = Uri.parse(post.getUrl()); if (uri.getScheme() == null && uri.getHost() == null) { @@ -885,10 +889,10 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView }); break; case Post.GIF_TYPE: - ((PostCompactViewHolder) holder).typeTextView.setText(R.string.gif); + ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.gif); final Uri gifVideoUri = Uri.parse(post.getVideoUrl()); - ((PostCompactViewHolder) holder).imageView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).imageView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class); intent.setData(gifVideoUri); intent.putExtra(ViewImageOrGifActivity.FILE_NAME_KEY, subredditName @@ -897,13 +901,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView mActivity.startActivity(intent); }); - ((PostCompactViewHolder) holder).playButtonImageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).playButtonImageView.setVisibility(View.VISIBLE); break; case Post.VIDEO_TYPE: - ((PostCompactViewHolder) holder).typeTextView.setText(R.string.video); + ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.video); final Uri videoUri = Uri.parse(post.getVideoUrl()); - ((PostCompactViewHolder) holder).imageView.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).imageView.setOnClickListener(view -> { Intent intent = new Intent(mActivity, ViewVideoActivity.class); intent.setData(videoUri); intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl()); @@ -913,17 +917,17 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView mActivity.startActivity(intent); }); - ((PostCompactViewHolder) holder).playButtonImageView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).playButtonImageView.setVisibility(View.VISIBLE); break; case Post.NO_PREVIEW_LINK_TYPE: - ((PostCompactViewHolder) holder).typeTextView.setText(R.string.link); + ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.link); String noPreviewLinkUrl = post.getUrl(); - ((PostCompactViewHolder) holder).linkTextView.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).linkTextView.setVisibility(View.VISIBLE); String noPreviewLinkDomain = Uri.parse(noPreviewLinkUrl).getHost(); - ((PostCompactViewHolder) holder).linkTextView.setText(noPreviewLinkDomain); - ((PostCompactViewHolder) holder).noPreviewLinkImageFrameLayout.setVisibility(View.VISIBLE); - ((PostCompactViewHolder) holder).noPreviewLinkImageFrameLayout.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).linkTextView.setText(noPreviewLinkDomain); + ((PostCompactBaseViewHolder) holder).noPreviewLinkImageFrameLayout.setVisibility(View.VISIBLE); + ((PostCompactBaseViewHolder) holder).noPreviewLinkImageFrameLayout.setOnClickListener(view -> { Intent intent = new Intent(mActivity, LinkResolverActivity.class); Uri uri = Uri.parse(post.getUrl()); if (uri.getScheme() == null && uri.getHost() == null) { @@ -936,11 +940,11 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView }); break; case Post.TEXT_TYPE: - ((PostCompactViewHolder) holder).typeTextView.setText(R.string.text); + ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.text); break; } - ((PostCompactViewHolder) holder).upvoteButton.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).upvoteButton.setOnClickListener(view -> { if (mAccessToken == null) { Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show(); return; @@ -951,48 +955,48 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView return; } - ColorFilter previousUpvoteButtonColorFilter = ((PostCompactViewHolder) holder).upvoteButton.getColorFilter(); - ColorFilter previousDownvoteButtonColorFilter = ((PostCompactViewHolder) holder).downvoteButton.getColorFilter(); - int previousScoreTextViewColor = ((PostCompactViewHolder) holder).scoreTextView.getCurrentTextColor(); + ColorFilter previousUpvoteButtonColorFilter = ((PostCompactBaseViewHolder) holder).upvoteButton.getColorFilter(); + ColorFilter previousDownvoteButtonColorFilter = ((PostCompactBaseViewHolder) holder).downvoteButton.getColorFilter(); + int previousScoreTextViewColor = ((PostCompactBaseViewHolder) holder).scoreTextView.getCurrentTextColor(); int previousVoteType = post.getVoteType(); String newVoteType; - ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); if (previousVoteType != 1) { //Not upvoted before post.setVoteType(1); newVoteType = APIUtils.DIR_UPVOTE; - ((PostCompactViewHolder) holder).upvoteButton + ((PostCompactBaseViewHolder) holder).upvoteButton .setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mUpvotedColor); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mUpvotedColor); } else { //Upvoted before post.setVoteType(0); newVoteType = APIUtils.DIR_UNVOTE; - ((PostCompactViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); + ((PostCompactBaseViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); } - ((PostCompactViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); + ((PostCompactBaseViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); VoteThing.voteThing(mActivity, mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() { @Override public void onVoteThingSuccess(int position1) { if (newVoteType.equals(APIUtils.DIR_UPVOTE)) { post.setVoteType(1); - ((PostCompactViewHolder) holder).upvoteButton + ((PostCompactBaseViewHolder) holder).upvoteButton .setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mUpvotedColor); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mUpvotedColor); } else { post.setVoteType(0); - ((PostCompactViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); + ((PostCompactBaseViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); } - ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); + ((PostCompactBaseViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post)); } @@ -1001,17 +1005,17 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView public void onVoteThingFail(int position1) { Toast.makeText(mActivity, R.string.vote_failed, Toast.LENGTH_SHORT).show(); post.setVoteType(previousVoteType); - ((PostCompactViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + previousVoteType)); - ((PostCompactViewHolder) holder).upvoteButton.setColorFilter(previousUpvoteButtonColorFilter); - ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor); + ((PostCompactBaseViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + previousVoteType)); + ((PostCompactBaseViewHolder) holder).upvoteButton.setColorFilter(previousUpvoteButtonColorFilter); + ((PostCompactBaseViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post)); } }, fullName, newVoteType, holder.getAdapterPosition()); }); - ((PostCompactViewHolder) holder).downvoteButton.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).downvoteButton.setOnClickListener(view -> { if (mAccessToken == null) { Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show(); return; @@ -1022,48 +1026,48 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView return; } - ColorFilter previousUpvoteButtonColorFilter = ((PostCompactViewHolder) holder).upvoteButton.getColorFilter(); - ColorFilter previousDownvoteButtonColorFilter = ((PostCompactViewHolder) holder).downvoteButton.getColorFilter(); - int previousScoreTextViewColor = ((PostCompactViewHolder) holder).scoreTextView.getCurrentTextColor(); + ColorFilter previousUpvoteButtonColorFilter = ((PostCompactBaseViewHolder) holder).upvoteButton.getColorFilter(); + ColorFilter previousDownvoteButtonColorFilter = ((PostCompactBaseViewHolder) holder).downvoteButton.getColorFilter(); + int previousScoreTextViewColor = ((PostCompactBaseViewHolder) holder).scoreTextView.getCurrentTextColor(); int previousVoteType = post.getVoteType(); String newVoteType; - ((PostCompactViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); if (previousVoteType != -1) { //Not downvoted before post.setVoteType(-1); newVoteType = APIUtils.DIR_DOWNVOTE; - ((PostCompactViewHolder) holder).downvoteButton + ((PostCompactBaseViewHolder) holder).downvoteButton .setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mDownvotedColor); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mDownvotedColor); } else { //Downvoted before post.setVoteType(0); newVoteType = APIUtils.DIR_UNVOTE; - ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); + ((PostCompactBaseViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); } - ((PostCompactViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); + ((PostCompactBaseViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); VoteThing.voteThing(mActivity, mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() { @Override public void onVoteThingSuccess(int position1) { if (newVoteType.equals(APIUtils.DIR_DOWNVOTE)) { post.setVoteType(-1); - ((PostCompactViewHolder) holder).downvoteButton + ((PostCompactBaseViewHolder) holder).downvoteButton .setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mDownvotedColor); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mDownvotedColor); } else { post.setVoteType(0); - ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); + ((PostCompactBaseViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); } - ((PostCompactViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); + ((PostCompactBaseViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType())); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post)); } @@ -1072,38 +1076,38 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView public void onVoteThingFail(int position1) { Toast.makeText(mActivity, R.string.vote_failed, Toast.LENGTH_SHORT).show(); post.setVoteType(previousVoteType); - ((PostCompactViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + previousVoteType)); - ((PostCompactViewHolder) holder).upvoteButton.setColorFilter(previousUpvoteButtonColorFilter); - ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor); + ((PostCompactBaseViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + previousVoteType)); + ((PostCompactBaseViewHolder) holder).upvoteButton.setColorFilter(previousUpvoteButtonColorFilter); + ((PostCompactBaseViewHolder) holder).downvoteButton.setColorFilter(previousDownvoteButtonColorFilter); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(previousScoreTextViewColor); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post)); } }, fullName, newVoteType, holder.getAdapterPosition()); }); - ((PostCompactViewHolder) holder).commentsCountTextView.setText(Integer.toString(post.getNComments())); + ((PostCompactBaseViewHolder) holder).commentsCountTextView.setText(Integer.toString(post.getNComments())); if (post.isSaved()) { - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp); } else { - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); } - ((PostCompactViewHolder) holder).saveButton.setOnClickListener(view -> { + ((PostCompactBaseViewHolder) holder).saveButton.setOnClickListener(view -> { if (mAccessToken == null) { Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show(); return; } if (post.isSaved()) { - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, post.getFullName(), new SaveThing.SaveThingListener() { @Override public void success() { post.setSaved(false); - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); Toast.makeText(mActivity, R.string.post_unsaved_success, Toast.LENGTH_SHORT).show(); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post)); } @@ -1111,19 +1115,19 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView @Override public void failed() { post.setSaved(true); - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp); Toast.makeText(mActivity, R.string.post_unsaved_failed, Toast.LENGTH_SHORT).show(); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post)); } }); } else { - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp); SaveThing.saveThing(mOauthRetrofit, mAccessToken, post.getFullName(), new SaveThing.SaveThingListener() { @Override public void success() { post.setSaved(true); - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp); Toast.makeText(mActivity, R.string.post_saved_success, Toast.LENGTH_SHORT).show(); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post)); } @@ -1131,7 +1135,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView @Override public void failed() { post.setSaved(false); - ((PostCompactViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); + ((PostCompactBaseViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_grey_24dp); Toast.makeText(mActivity, R.string.post_saved_failed, Toast.LENGTH_SHORT).show(); EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post)); } @@ -1139,7 +1143,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView } }); - ((PostCompactViewHolder) holder).shareButton.setOnClickListener(view -> shareLink(post)); + ((PostCompactBaseViewHolder) holder).shareButton.setOnClickListener(view -> shareLink(post)); } } } @@ -1230,27 +1234,27 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView } else { imageRequestBuilder.apply(RequestOptions.noTransformation()).into(((PostLinkTypeViewHolder) holder).imageView); } - } else if (holder instanceof PostCompactViewHolder) { + } else if (holder instanceof PostCompactBaseViewHolder) { String previewUrl = post.getThumbnailPreviewUrl().equals("") ? post.getPreviewUrl() : post.getThumbnailPreviewUrl(); RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(previewUrl) .error(R.drawable.ic_error_outline_black_24dp).listener(new RequestListener<Drawable>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { - ((PostCompactViewHolder) holder).progressBar.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).progressBar.setVisibility(View.GONE); return false; } @Override public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) { - ((PostCompactViewHolder) holder).progressBar.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).progressBar.setVisibility(View.GONE); return false; } }); if ((post.isNSFW() && mNeedBlurNSFW) || post.isSpoiler() && mNeedBlurSpoiler) { imageRequestBuilder - .transform(new BlurTransformation(50, 2)).into(((PostCompactViewHolder) holder).imageView); + .transform(new BlurTransformation(50, 2)).into(((PostCompactBaseViewHolder) holder).imageView); } else { - imageRequestBuilder.into(((PostCompactViewHolder) holder).imageView); + imageRequestBuilder.into(((PostCompactBaseViewHolder) holder).imageView); } } } @@ -1409,28 +1413,28 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView ((PostBaseViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); ((PostBaseViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); ((PostBaseViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - } else if (holder instanceof PostCompactViewHolder) { - mGlide.clear(((PostCompactViewHolder) holder).imageView); - mGlide.clear(((PostCompactViewHolder) holder).iconGifImageView); - ((PostCompactViewHolder) holder).stickiedPostImageView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).relativeLayout.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).crosspostImageView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).archivedImageView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).lockedImageView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).nsfwTextView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).spoilerTextView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).flairTextView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).flairTextView.setText(""); - ((PostCompactViewHolder) holder).awardsTextView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).awardsTextView.setText(""); - ((PostCompactViewHolder) holder).linkTextView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).progressBar.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).imageView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).playButtonImageView.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).noPreviewLinkImageFrameLayout.setVisibility(View.GONE); - ((PostCompactViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); - ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + } else if (holder instanceof PostCompactBaseViewHolder) { + mGlide.clear(((PostCompactBaseViewHolder) holder).imageView); + mGlide.clear(((PostCompactBaseViewHolder) holder).iconGifImageView); + ((PostCompactBaseViewHolder) holder).stickiedPostImageView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).relativeLayout.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).crosspostImageView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).archivedImageView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).lockedImageView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).nsfwTextView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).spoilerTextView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).flairTextView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).flairTextView.setText(""); + ((PostCompactBaseViewHolder) holder).awardsTextView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).awardsTextView.setText(""); + ((PostCompactBaseViewHolder) holder).linkTextView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).progressBar.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).imageView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).playButtonImageView.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).noPreviewLinkImageFrameLayout.setVisibility(View.GONE); + ((PostCompactBaseViewHolder) holder).upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); + ((PostCompactBaseViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor); + ((PostCompactBaseViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); } } @@ -2595,74 +2599,90 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView } } - class PostCompactViewHolder extends RecyclerView.ViewHolder { - @BindView(R.id.icon_gif_image_view_item_post_compact) + class PostCompactBaseViewHolder extends RecyclerView.ViewHolder { AspectRatioGifImageView iconGifImageView; - @BindView(R.id.name_text_view_item_post_compact) TextView nameTextView; - @BindView(R.id.stickied_post_image_view_item_post_compact) ImageView stickiedPostImageView; - @BindView(R.id.post_time_text_view_item_post_compact) TextView postTimeTextView; - @BindView(R.id.title_and_image_constraint_layout) ConstraintLayout titleAndImageConstraintLayout; - @BindView(R.id.title_text_view_item_post_compact) TextView titleTextView; - @BindView(R.id.type_text_view_item_post_compact) CustomTextView typeTextView; - @BindView(R.id.archived_image_view_item_post_compact) ImageView archivedImageView; - @BindView(R.id.locked_image_view_item_post_compact) ImageView lockedImageView; - @BindView(R.id.crosspost_image_view_item_post_compact) ImageView crosspostImageView; - @BindView(R.id.nsfw_text_view_item_post_compact) CustomTextView nsfwTextView; - @BindView(R.id.spoiler_custom_text_view_item_post_compact) CustomTextView spoilerTextView; - @BindView(R.id.flair_custom_text_view_item_post_compact) CustomTextView flairTextView; - @BindView(R.id.awards_text_view_item_post_compact) CustomTextView awardsTextView; - @BindView(R.id.link_text_view_item_post_compact) TextView linkTextView; - @BindView(R.id.image_view_wrapper_item_post_compact) RelativeLayout relativeLayout; - @BindView(R.id.progress_bar_item_post_compact) ProgressBar progressBar; - @BindView(R.id.image_view_item_post_compact) ImageView imageView; - @BindView(R.id.play_button_image_view_item_post_compact) ImageView playButtonImageView; - @BindView(R.id.frame_layout_image_view_no_preview_link_item_post_compact) FrameLayout noPreviewLinkImageFrameLayout; - @BindView(R.id.image_view_no_preview_link_item_post_compact) ImageView noPreviewLinkImageView; - @BindView(R.id.barrier2) Barrier imageBarrier; - @BindView(R.id.bottom_constraint_layout_item_post_compact) ConstraintLayout bottomConstraintLayout; - @BindView(R.id.plus_button_item_post_compact) ImageView upvoteButton; - @BindView(R.id.score_text_view_item_post_compact) TextView scoreTextView; - @BindView(R.id.minus_button_item_post_compact) ImageView downvoteButton; - @BindView(R.id.comments_count_item_post_compact) TextView commentsCountTextView; - @BindView(R.id.save_button_item_post_compact) ImageView saveButton; - @BindView(R.id.share_button_item_post_compact) ImageView shareButton; - @BindView(R.id.divider_item_post_compact) View divider; - PostCompactViewHolder(View itemView) { + PostCompactBaseViewHolder(View itemView) { super(itemView); - ButterKnife.bind(this, itemView); - scoreTextView.setOnClickListener(view -> { - //Do nothing in order to prevent clicking this to start ViewPostDetailActivity - }); + } + + void setBaseView(AspectRatioGifImageView iconGifImageView, + TextView nameTextView, ImageView stickiedPostImageView, + TextView postTimeTextView, ConstraintLayout titleAndImageConstraintLayout, + TextView titleTextView, CustomTextView typeTextView, + ImageView archivedImageView, ImageView lockedImageView, + ImageView crosspostImageView, CustomTextView nsfwTextView, + CustomTextView spoilerTextView, CustomTextView flairTextView, + CustomTextView awardsTextView, TextView linkTextView, + RelativeLayout relativeLayout, ProgressBar progressBar, + ImageView imageView, ImageView playButtonImageView, + FrameLayout noPreviewLinkImageFrameLayout, + ImageView noPreviewLinkImageView, Barrier imageBarrier, + ConstraintLayout bottomConstraintLayout, ImageView upvoteButton, + TextView scoreTextView, ImageView downvoteButton, + TextView commentsCountTextView, ImageView saveButton, + ImageView shareButton, View divider) { + this.iconGifImageView = iconGifImageView; + this.nameTextView = nameTextView; + this.stickiedPostImageView = stickiedPostImageView; + this.postTimeTextView = postTimeTextView; + this.titleAndImageConstraintLayout = titleAndImageConstraintLayout; + this.titleTextView = titleTextView; + this.typeTextView = typeTextView; + this.archivedImageView = archivedImageView; + this.lockedImageView = lockedImageView; + this.crosspostImageView = crosspostImageView; + this.nsfwTextView = nsfwTextView; + this.spoilerTextView = spoilerTextView; + this.flairTextView = flairTextView; + this.awardsTextView = awardsTextView; + this.linkTextView = linkTextView; + this.relativeLayout = relativeLayout; + this.progressBar = progressBar; + this.imageView = imageView; + this.playButtonImageView = playButtonImageView; + this.noPreviewLinkImageFrameLayout = noPreviewLinkImageFrameLayout; + this.noPreviewLinkImageView = noPreviewLinkImageView; + this.imageBarrier = imageBarrier; + this.bottomConstraintLayout = bottomConstraintLayout; + this.upvoteButton = upvoteButton; + this.scoreTextView = scoreTextView; + this.downvoteButton = downvoteButton; + this.commentsCountTextView = commentsCountTextView; + this.saveButton = saveButton; + this.shareButton = shareButton; + this.divider = divider; + + scoreTextView.setOnClickListener(null); if (mVoteButtonsOnTheRight) { ConstraintSet constraintSet = new ConstraintSet(); @@ -2683,40 +2703,6 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView constraintSet.applyTo(bottomConstraintLayout); } - if (mShowThumbnailOnTheRightInCompactLayout) { - ConstraintSet constraintSet = new ConstraintSet(); - constraintSet.clone(titleAndImageConstraintLayout); - constraintSet.clear(titleTextView.getId(), ConstraintSet.START); - constraintSet.clear(titleTextView.getId(), ConstraintSet.END); - constraintSet.clear(R.id.flow_layout_item_post_compact, ConstraintSet.START); - constraintSet.clear(R.id.flow_layout_item_post_compact, ConstraintSet.END); - constraintSet.clear(linkTextView.getId(), ConstraintSet.START); - constraintSet.clear(linkTextView.getId(), ConstraintSet.END); - constraintSet.clear(relativeLayout.getId(), ConstraintSet.START); - constraintSet.clear(relativeLayout.getId(), ConstraintSet.END); - constraintSet.clear(noPreviewLinkImageFrameLayout.getId(), ConstraintSet.START); - constraintSet.clear(noPreviewLinkImageFrameLayout.getId(), ConstraintSet.END); - int barrierId = 1234; - constraintSet.createBarrier(barrierId, Barrier.END, R.id.image_view_wrapper_item_post_compact, - R.id.frame_layout_image_view_no_preview_link_item_post_compact); - constraintSet.connect(titleTextView.getId(), ConstraintSet.START, barrierId, ConstraintSet.END); - constraintSet.connect(titleTextView.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END); - constraintSet.connect(R.id.flow_layout_item_post_compact, ConstraintSet.START, barrierId, ConstraintSet.END); - constraintSet.connect(R.id.flow_layout_item_post_compact, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END); - constraintSet.connect(R.id.flow_layout_item_post_compact, ConstraintSet.BOTTOM, linkTextView.getId(), ConstraintSet.TOP); - constraintSet.connect(linkTextView.getId(), ConstraintSet.START, barrierId, ConstraintSet.END); - constraintSet.connect(linkTextView.getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END); - constraintSet.connect(relativeLayout.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START); - constraintSet.connect(relativeLayout.getId(), ConstraintSet.END, barrierId, ConstraintSet.START); - constraintSet.connect(noPreviewLinkImageFrameLayout.getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START); - constraintSet.connect(noPreviewLinkImageFrameLayout.getId(), ConstraintSet.END, barrierId, ConstraintSet.START); - constraintSet.applyTo(titleAndImageConstraintLayout); - - int leftMargin = (int) Utils.convertDpToPixel(16, mActivity); - ((ConstraintLayout.LayoutParams) relativeLayout.getLayoutParams()).leftMargin = leftMargin; - ((ConstraintLayout.LayoutParams) noPreviewLinkImageFrameLayout.getLayoutParams()).leftMargin = leftMargin; - } - itemView.setBackgroundTintList(ColorStateList.valueOf(mCardViewBackgroundColor)); postTimeTextView.setTextColor(mSecondaryTextColor); titleTextView.setTextColor(mPostTitleColor); @@ -2753,7 +2739,158 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView imageView.setClipToOutline(true); noPreviewLinkImageFrameLayout.setClipToOutline(true); + } + } + + class PostCompactLeftThumbnailViewHolder extends PostCompactBaseViewHolder { + @BindView(R.id.icon_gif_image_view_item_post_compact) + AspectRatioGifImageView iconGifImageView; + @BindView(R.id.name_text_view_item_post_compact) + TextView nameTextView; + @BindView(R.id.stickied_post_image_view_item_post_compact) + ImageView stickiedPostImageView; + @BindView(R.id.post_time_text_view_item_post_compact) + TextView postTimeTextView; + @BindView(R.id.title_and_image_constraint_layout) + ConstraintLayout titleAndImageConstraintLayout; + @BindView(R.id.title_text_view_item_post_compact) + TextView titleTextView; + @BindView(R.id.type_text_view_item_post_compact) + CustomTextView typeTextView; + @BindView(R.id.archived_image_view_item_post_compact) + ImageView archivedImageView; + @BindView(R.id.locked_image_view_item_post_compact) + ImageView lockedImageView; + @BindView(R.id.crosspost_image_view_item_post_compact) + ImageView crosspostImageView; + @BindView(R.id.nsfw_text_view_item_post_compact) + CustomTextView nsfwTextView; + @BindView(R.id.spoiler_custom_text_view_item_post_compact) + CustomTextView spoilerTextView; + @BindView(R.id.flair_custom_text_view_item_post_compact) + CustomTextView flairTextView; + @BindView(R.id.awards_text_view_item_post_compact) + CustomTextView awardsTextView; + @BindView(R.id.link_text_view_item_post_compact) + TextView linkTextView; + @BindView(R.id.image_view_wrapper_item_post_compact) + RelativeLayout relativeLayout; + @BindView(R.id.progress_bar_item_post_compact) + ProgressBar progressBar; + @BindView(R.id.image_view_item_post_compact) + ImageView imageView; + @BindView(R.id.play_button_image_view_item_post_compact) + ImageView playButtonImageView; + @BindView(R.id.frame_layout_image_view_no_preview_link_item_post_compact) + FrameLayout noPreviewLinkImageFrameLayout; + @BindView(R.id.image_view_no_preview_link_item_post_compact) + ImageView noPreviewLinkImageView; + @BindView(R.id.barrier2) + Barrier imageBarrier; + @BindView(R.id.bottom_constraint_layout_item_post_compact) + ConstraintLayout bottomConstraintLayout; + @BindView(R.id.plus_button_item_post_compact) + ImageView upvoteButton; + @BindView(R.id.score_text_view_item_post_compact) + TextView scoreTextView; + @BindView(R.id.minus_button_item_post_compact) + ImageView downvoteButton; + @BindView(R.id.comments_count_item_post_compact) + TextView commentsCountTextView; + @BindView(R.id.save_button_item_post_compact) + ImageView saveButton; + @BindView(R.id.share_button_item_post_compact) + ImageView shareButton; + @BindView(R.id.divider_item_post_compact) + View divider; + + PostCompactLeftThumbnailViewHolder(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + + setBaseView(iconGifImageView, nameTextView, stickiedPostImageView, postTimeTextView, + titleAndImageConstraintLayout, titleTextView, typeTextView, archivedImageView, + lockedImageView, crosspostImageView, nsfwTextView, spoilerTextView, + flairTextView, awardsTextView, linkTextView, relativeLayout, progressBar, imageView, + playButtonImageView, noPreviewLinkImageFrameLayout, noPreviewLinkImageView, + imageBarrier, bottomConstraintLayout, upvoteButton, scoreTextView, downvoteButton, + commentsCountTextView, saveButton, shareButton, divider); + } + } + + class PostCompactRightThumbnailViewHolder extends PostCompactBaseViewHolder { + @BindView(R.id.icon_gif_image_view_item_post_compact_right_thumbnail) + AspectRatioGifImageView iconGifImageView; + @BindView(R.id.name_text_view_item_post_compact_right_thumbnail) + TextView nameTextView; + @BindView(R.id.stickied_post_image_view_item_post_compact_right_thumbnail) + ImageView stickiedPostImageView; + @BindView(R.id.post_time_text_view_item_post_compact_right_thumbnail) + TextView postTimeTextView; + @BindView(R.id.title_and_image_constraint_layout) + ConstraintLayout titleAndImageConstraintLayout; + @BindView(R.id.title_text_view_item_post_compact_right_thumbnail) + TextView titleTextView; + @BindView(R.id.type_text_view_item_post_compact_right_thumbnail) + CustomTextView typeTextView; + @BindView(R.id.archived_image_view_item_post_compact_right_thumbnail) + ImageView archivedImageView; + @BindView(R.id.locked_image_view_item_post_compact_right_thumbnail) + ImageView lockedImageView; + @BindView(R.id.crosspost_image_view_item_post_compact_right_thumbnail) + ImageView crosspostImageView; + @BindView(R.id.nsfw_text_view_item_post_compact_right_thumbnail) + CustomTextView nsfwTextView; + @BindView(R.id.spoiler_custom_text_view_item_post_compact_right_thumbnail) + CustomTextView spoilerTextView; + @BindView(R.id.flair_custom_text_view_item_post_compact_right_thumbnail) + CustomTextView flairTextView; + @BindView(R.id.awards_text_view_item_post_compact_right_thumbnail) + CustomTextView awardsTextView; + @BindView(R.id.link_text_view_item_post_compact_right_thumbnail) + TextView linkTextView; + @BindView(R.id.image_view_wrapper_item_post_compact_right_thumbnail) + RelativeLayout relativeLayout; + @BindView(R.id.progress_bar_item_post_compact_right_thumbnail) + ProgressBar progressBar; + @BindView(R.id.image_view_item_post_compact_right_thumbnail) + ImageView imageView; + @BindView(R.id.play_button_image_view_item_post_compact_right_thumbnail) + ImageView playButtonImageView; + @BindView(R.id.frame_layout_image_view_no_preview_link_item_post_compact_right_thumbnail) + FrameLayout noPreviewLinkImageFrameLayout; + @BindView(R.id.image_view_no_preview_link_item_post_compact_right_thumbnail) + ImageView noPreviewLinkImageView; + @BindView(R.id.barrier2) + Barrier imageBarrier; + @BindView(R.id.bottom_constraint_layout_item_post_compact_right_thumbnail) + ConstraintLayout bottomConstraintLayout; + @BindView(R.id.plus_button_item_post_compact_right_thumbnail) + ImageView upvoteButton; + @BindView(R.id.score_text_view_item_post_compact_right_thumbnail) + TextView scoreTextView; + @BindView(R.id.minus_button_item_post_compact_right_thumbnail) + ImageView downvoteButton; + @BindView(R.id.comments_count_item_post_compact_right_thumbnail) + TextView commentsCountTextView; + @BindView(R.id.save_button_item_post_compact_right_thumbnail) + ImageView saveButton; + @BindView(R.id.share_button_item_post_compact_right_thumbnail) + ImageView shareButton; + @BindView(R.id.divider_item_post_compact_right_thumbnail) + View divider; + + PostCompactRightThumbnailViewHolder(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + setBaseView(iconGifImageView, nameTextView, stickiedPostImageView, postTimeTextView, + titleAndImageConstraintLayout, titleTextView, typeTextView, archivedImageView, + lockedImageView, crosspostImageView, nsfwTextView, spoilerTextView, + flairTextView, awardsTextView, linkTextView, relativeLayout, progressBar, imageView, + playButtonImageView, noPreviewLinkImageFrameLayout, noPreviewLinkImageView, + imageBarrier, bottomConstraintLayout, upvoteButton, scoreTextView, downvoteButton, + commentsCountTextView, saveButton, shareButton, divider); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java index 856a3579..c665478a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java @@ -28,7 +28,7 @@ public class InterfacePreferenceFragment extends PreferenceFragmentCompat { SwitchPreference voteButtonsOnTheRightSwitch = findPreference(SharedPreferencesUtils.VOTE_BUTTONS_ON_THE_RIGHT_KEY); ListPreference defaultPostLayoutSwitch = findPreference(SharedPreferencesUtils.DEFAULT_POST_LAYOUT_KEY); SwitchPreference showDividerInCompactLayout = findPreference(SharedPreferencesUtils.SHOW_DIVIDER_IN_COMPACT_LAYOUT); - SwitchPreference showThumbnailOnTheRightInCompactLayout = findPreference(SharedPreferencesUtils.SHOW_THUMBNAIL_ON_THE_RIGHT_IN_COMPACT_LAYOUT); + SwitchPreference showThumbnailOnTheRightInCompactLayout = findPreference(SharedPreferencesUtils.SHOW_THUMBNAIL_ON_THE_LEFT_IN_COMPACT_LAYOUT); SwitchPreference showAbsoluteNumberOfVotes = findPreference(SharedPreferencesUtils.SHOW_ABSOLUTE_NUMBER_OF_VOTES); if (bottomAppBarSwitch != null) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java index eb6402c2..245f2e1d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java @@ -78,7 +78,7 @@ public class SharedPreferencesUtils { public static final String TIME_FORMAT_DEFAULT_VALUE = "MMM d, yyyy, HH:mm"; public static final String DEFAULT_POST_LAYOUT_KEY = "default_post_layout"; public static final String SHOW_DIVIDER_IN_COMPACT_LAYOUT = "show_divider_in_compact_layout"; - public static final String SHOW_THUMBNAIL_ON_THE_RIGHT_IN_COMPACT_LAYOUT = "show_thumbnail_on_the_right_in_compact_layout"; + public static final String SHOW_THUMBNAIL_ON_THE_LEFT_IN_COMPACT_LAYOUT = "show_thumbnail_on_the_left_in_compact_layout"; public static final String SWIPE_RIGHT_TO_GO_BACK_FROM_POST_DETAIL = "swipe_to_go_back_from_post_detail"; public static final String VOLUME_KEYS_NAVIGATE_COMMENTS = "volume_keys_navigate_comments"; public static final String VOLUME_KEYS_NAVIGATE_POSTS = "volume_keys_navigate_posts"; diff --git a/app/src/main/res/layout/item_comment.xml b/app/src/main/res/layout/item_comment.xml index 6129a269..dee6d50c 100644 --- a/app/src/main/res/layout/item_comment.xml +++ b/app/src/main/res/layout/item_comment.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:id="@+id/linear_layout_item_comment" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -29,45 +30,36 @@ android:paddingStart="16dp" android:paddingEnd="16dp"> - <ImageView - android:id="@+id/author_type_image_view_item_comment" - android:layout_width="?attr/font_default" - android:layout_height="?attr/font_default" - android:layout_marginEnd="4dp" - android:visibility="gone" - app:layout_constraintBottom_toTopOf="@id/author_flair_text_view_item_post_comment" - app:layout_constraintEnd_toStartOf="@id/author_text_view_item_post_comment" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - <TextView android:id="@+id/author_text_view_item_post_comment" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="8dp" - android:ellipsize="end" - android:maxLines="2" + android:drawablePadding="4dp" android:textSize="?attr/font_default" android:fontFamily="?attr/font_family" app:layout_constraintBottom_toTopOf="@id/author_flair_text_view_item_post_comment" app:layout_constraintEnd_toStartOf="@+id/barrier" - app:layout_constraintStart_toEndOf="@id/author_type_image_view_item_comment" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintWidth_default="wrap" + app:layout_constraintHorizontal_bias="0" /> <TextView android:id="@+id/author_flair_text_view_item_post_comment" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="8dp" - android:ellipsize="end" - android:maxLines="2" - android:textSize="?attr/font_12" android:fontFamily="?attr/font_family" + android:textSize="?attr/font_12" android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/barrier" + app:layout_constraintHorizontal_bias="0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/author_text_view_item_post_comment" /> + app:layout_constraintTop_toBottomOf="@id/author_text_view_item_post_comment" + app:layout_constraintWidth_default="wrap" + tools:visibility="visible" /> <TextView android:id="@+id/top_score_text_view_item_post_comment" diff --git a/app/src/main/res/layout/item_post_compact_right_thumbnail.xml b/app/src/main/res/layout/item_post_compact_right_thumbnail.xml new file mode 100644 index 00000000..bd5a5e5d --- /dev/null +++ b/app/src/main/res/layout/item_post_compact_right_thumbnail.xml @@ -0,0 +1,386 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="16dp" + android:paddingBottom="8dp"> + + <ml.docilealligator.infinityforreddit.CustomView.AspectRatioGifImageView + android:id="@+id/icon_gif_image_view_item_post_compact_right_thumbnail" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/name_text_view_item_post_compact_right_thumbnail" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginStart="16dp" + android:layout_marginEnd="8dp" + android:fontFamily="?attr/font_family" + android:textColor="#E91E63" + android:textSize="?attr/font_default" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/stickied_post_image_view_item_post_compact_right_thumbnail" + app:layout_constraintStart_toEndOf="@id/icon_gif_image_view_item_post_compact_right_thumbnail" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/stickied_post_image_view_item_post_compact_right_thumbnail" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginEnd="8dp" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/guideline2" + app:layout_constraintStart_toEndOf="@id/name_text_view_item_post_compact_right_thumbnail" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/post_time_text_view_item_post_compact_right_thumbnail" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:fontFamily="?attr/font_family" + android:gravity="end" + android:textSize="?attr/font_default" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/guideline2" + app:layout_constraintTop_toTopOf="parent" /> + + <androidx.constraintlayout.widget.Guideline + android:id="@+id/guideline2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintGuide_percent="0.6" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/title_and_image_constraint_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <RelativeLayout + android:id="@+id/image_view_wrapper_item_post_compact_right_thumbnail" + android:layout_width="72dp" + android:layout_height="72dp" + android:layout_marginStart="16dp" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <ImageView + android:id="@+id/image_view_item_post_compact_right_thumbnail" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@drawable/thumbnail_compact_layout_rounded_edge" + android:scaleType="center" /> + + <ImageView + android:id="@+id/play_button_image_view_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_margin="0dp" + android:background="@drawable/play_button_round_background" + android:src="@drawable/ic_play_circle_36dp" + android:visibility="gone" /> + + </FrameLayout> + + <ProgressBar + android:id="@+id/progress_bar_item_post_compact_right_thumbnail" + android:layout_width="36dp" + android:layout_height="36dp" + android:layout_centerInParent="true" + android:visibility="gone" /> + + </RelativeLayout> + + <FrameLayout + android:id="@+id/frame_layout_image_view_no_preview_link_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:visibility="gone" + android:background="@drawable/thumbnail_compact_layout_rounded_edge" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <ImageView + android:id="@+id/image_view_no_preview_link_item_post_compact_right_thumbnail" + android:layout_width="72dp" + android:layout_height="72dp" + android:scaleType="center" + android:src="@drawable/ic_link" + android:tint="@android:color/tab_indicator_text" /> + + </FrameLayout> + + <TextView + android:id="@+id/title_text_view_item_post_compact_right_thumbnail" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:fontFamily="?attr/title_font_family" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:textColor="?attr/primaryTextColor" + android:textSize="?attr/title_font_18" + app:layout_constraintBottom_toTopOf="@id/flow_layout_item_post_compact_right_thumbnail" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/barrier2" + app:layout_constraintTop_toTopOf="parent" /> + + <com.nex3z.flowlayout.FlowLayout + android:id="@+id/flow_layout_item_post_compact_right_thumbnail" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingTop="8dp" + android:paddingEnd="16dp" + android:paddingBottom="8dp" + app:flChildSpacing="8dp" + app:flChildSpacingForLastRow="align" + app:flRowSpacing="8dp" + app:layout_constraintBottom_toTopOf="@id/link_text_view_item_post_compact_right_thumbnail" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/barrier2" + app:layout_constraintTop_toBottomOf="@id/title_text_view_item_post_compact_right_thumbnail"> + + <com.libRG.CustomTextView + android:id="@+id/type_text_view_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="?attr/font_family" + android:padding="4dp" + android:textSize="?attr/font_10" + app:lib_setRadius="3dp" + app:lib_setRoundedView="true" + app:lib_setShape="rectangle" /> + + <com.libRG.CustomTextView + android:id="@+id/spoiler_custom_text_view_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:fontFamily="?attr/font_family" + android:padding="4dp" + android:text="@string/spoiler" + android:textSize="?attr/font_10" + android:visibility="gone" + app:lib_setRadius="3dp" + app:lib_setRoundedView="true" + app:lib_setShape="rectangle" /> + + <com.libRG.CustomTextView + android:id="@+id/nsfw_text_view_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="?attr/font_family" + android:padding="4dp" + android:text="@string/nsfw" + android:textSize="?attr/font_10" + android:visibility="gone" + app:lib_setRadius="3dp" + app:lib_setRoundedView="true" + app:lib_setShape="rectangle" /> + + <com.libRG.CustomTextView + android:id="@+id/flair_custom_text_view_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:fontFamily="?attr/font_family" + android:padding="4dp" + android:textSize="?attr/font_10" + android:visibility="gone" + app:lib_setRadius="3dp" + app:lib_setRoundedView="true" + app:lib_setShape="rectangle" /> + + <com.libRG.CustomTextView + android:id="@+id/awards_text_view_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="?attr/font_family" + android:padding="4dp" + android:textSize="?attr/font_10" + android:visibility="gone" + app:lib_setRadius="3dp" + app:lib_setRoundedView="true" + app:lib_setShape="rectangle" /> + + <ImageView + android:id="@+id/archived_image_view_item_post_compact_right_thumbnail" + android:layout_width="24dp" + android:layout_height="24dp" + android:src="@drawable/ic_archive_outline" + android:visibility="gone" /> + + <ImageView + android:id="@+id/locked_image_view_item_post_compact_right_thumbnail" + android:layout_width="24dp" + android:layout_height="24dp" + android:src="@drawable/ic_outline_lock_24dp" + android:visibility="gone" /> + + <ImageView + android:id="@+id/crosspost_image_view_item_post_compact_right_thumbnail" + android:layout_width="24dp" + android:layout_height="24dp" + android:src="@drawable/crosspost" + android:visibility="gone" /> + + </com.nex3z.flowlayout.FlowLayout> + + <TextView + android:id="@+id/link_text_view_item_post_compact_right_thumbnail" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:fontFamily="?attr/font_family" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:textSize="?attr/font_12" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/barrier2" + app:layout_constraintTop_toBottomOf="@id/flow_layout_item_post_compact_right_thumbnail" /> + + <androidx.constraintlayout.widget.Barrier + android:id="@+id/barrier2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:barrierDirection="end" + app:constraint_referenced_ids="image_view_wrapper_item_post_compact_right_thumbnail,frame_layout_image_view_no_preview_link_item_post_compact_right_thumbnail" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/bottom_constraint_layout_item_post_compact_right_thumbnail" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <ImageView + android:id="@+id/plus_button_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:paddingStart="12dp" + android:paddingTop="8dp" + android:paddingEnd="12dp" + android:paddingBottom="8dp" + android:src="@drawable/ic_arrow_upward_grey_24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/score_text_view_item_post_compact_right_thumbnail" + android:layout_width="64dp" + android:layout_height="wrap_content" + android:fontFamily="?attr/font_family" + android:gravity="center" + android:textSize="?attr/font_12" + android:textStyle="bold" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/plus_button_item_post_compact_right_thumbnail" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/minus_button_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:paddingStart="12dp" + android:paddingTop="8dp" + android:paddingEnd="12dp" + android:paddingBottom="8dp" + android:src="@drawable/ic_arrow_downward_grey_24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/score_text_view_item_post_compact_right_thumbnail" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/comments_count_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:drawableStart="@drawable/ic_comment_grey_24dp" + android:drawablePadding="12dp" + android:fontFamily="?attr/font_family" + android:gravity="center_vertical" + android:paddingStart="12dp" + android:paddingTop="8dp" + android:paddingEnd="12dp" + android:paddingBottom="8dp" + android:textSize="?attr/font_12" + android:textStyle="bold" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/minus_button_item_post_compact_right_thumbnail" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/save_button_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:paddingStart="12dp" + android:paddingTop="8dp" + android:paddingEnd="12dp" + android:paddingBottom="8dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@id/share_button_item_post_compact_right_thumbnail" + app:layout_constraintHorizontal_bias="1" + app:layout_constraintStart_toEndOf="@id/comments_count_item_post_compact_right_thumbnail" + app:layout_constraintTop_toTopOf="parent" /> + + <ImageView + android:id="@+id/share_button_item_post_compact_right_thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?actionBarItemBackground" + android:clickable="true" + android:focusable="true" + android:paddingStart="12dp" + android:paddingTop="8dp" + android:paddingEnd="12dp" + android:paddingBottom="8dp" + android:src="@drawable/ic_share_grey_24dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <View + android:id="@+id/divider_item_post_compact_right_thumbnail" + android:layout_width="match_parent" + android:layout_height="1dp" /> + +</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eed910f4..c0cee539 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -375,7 +375,7 @@ <string name="settings_time_format_title">Time Format</string> <string name="settings_default_post_layout">Default Post Layout</string> <string name="settings_show_divider_in_compact_layout">Show Divider in Compact Layout</string> - <string name="settings_show_thumbnail_on_the_right_in_compact_layout">Show Thumbnail on the Right in Compact Layout</string> + <string name="settings_show_thumbnail_on_the_left_in_compact_layout">Show Thumbnail on the Left in Compact Layout</string> <string name="settings_swap_tap_and_long_title">Swap Tap and Long Press in Comments</string> <string name="settings_swipe_to_go_back_from_post_detail_title">Swipe Right to Go Back From Comments</string> <string name="settings_lock_jump_to_next_top_level_comment_button_title">Lock Jump to Next Top-level Comment Button</string> diff --git a/app/src/main/res/xml/interface_preference.xml b/app/src/main/res/xml/interface_preference.xml index 84d60853..e391a21c 100644 --- a/app/src/main/res/xml/interface_preference.xml +++ b/app/src/main/res/xml/interface_preference.xml @@ -46,8 +46,8 @@ <SwitchPreference app:defaultValue="false" - app:key="show_thumbnail_on_the_right_in_compact_layout" - app:title="@string/settings_show_thumbnail_on_the_right_in_compact_layout" /> + app:key="show_thumbnail_on_the_left_in_compact_layout" + app:title="@string/settings_show_thumbnail_on_the_left_in_compact_layout" /> <SwitchPreference app:defaultValue="false" |