aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/build.gradle16
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SettingsActivity.java1
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java19
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentsListingRecyclerViewAdapter.java7
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/PostRecyclerViewAdapter.java1085
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Settings/InterfacePreferenceFragment.java2
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java2
-rw-r--r--app/src/main/res/anim/enter_from_left.xml7
-rw-r--r--app/src/main/res/anim/enter_from_right.xml7
-rw-r--r--app/src/main/res/anim/exit_to_left.xml7
-rw-r--r--app/src/main/res/anim/exit_to_right.xml7
-rw-r--r--app/src/main/res/layout/item_comment.xml30
-rw-r--r--app/src/main/res/layout/item_post_compact_right_thumbnail.xml386
-rw-r--r--app/src/main/res/values/strings.xml2
-rw-r--r--app/src/main/res/xml/interface_preference.xml4
15 files changed, 1070 insertions, 512 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 2999b25e..592a625d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -38,7 +38,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"
@@ -59,15 +59,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'
@@ -77,7 +77,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/Activity/SettingsActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SettingsActivity.java
index 4a1be2c3..4e59c42b 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SettingsActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SettingsActivity.java
@@ -139,6 +139,7 @@ public class SettingsActivity extends BaseActivity implements
fragment.setTargetFragment(caller, 0);
getSupportFragmentManager().beginTransaction()
+ .setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right)
.replace(R.id.frame_layout_settings_activity, fragment)
.addToBackStack(null)
.commit();
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..014f2cbd 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/CommentAndPostRecyclerViewAdapter.java
@@ -802,16 +802,14 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
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 +1580,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 +2770,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..5f2c2605 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,11 +594,9 @@ 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();
- final String id = post.getId();
final String subredditNamePrefixed = post.getSubredditNamePrefixed();
String subredditName = subredditNamePrefixed.substring(2);
String authorPrefixed = "u/" + post.getAuthor();
@@ -606,17 +608,6 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
int nAwards = post.getnAwards();
boolean isArchived = post.isArchived();
- ((PostCompactViewHolder) holder).itemView.setOnClickListener(view -> {
- if (canStartActivity) {
- canStartActivity = false;
-
- Intent intent = new Intent(mActivity, ViewPostDetailActivity.class);
- intent.putExtra(ViewPostDetailActivity.EXTRA_POST_DATA, post);
- intent.putExtra(ViewPostDetailActivity.EXTRA_POST_LIST_POSITION, position);
- mActivity.startActivity(intent);
- }
- });
-
if (mDisplaySubredditName) {
if (authorPrefixed.equals(subredditNamePrefixed)) {
if (post.getAuthorIconUrl() == null) {
@@ -625,13 +616,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 +635,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 +649,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,36 +668,16 @@ 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);
-
- ((PostCompactViewHolder) holder).nameTextView.setOnClickListener(view -> {
- if (canStartActivity) {
- canStartActivity = false;
- if (post.getSubredditNamePrefixed().startsWith("u/")) {
- Intent intent = new Intent(mActivity, ViewUserDetailActivity.class);
- intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY,
- post.getSubredditNamePrefixed().substring(2));
- mActivity.startActivity(intent);
- } else {
- Intent intent = new Intent(mActivity, ViewSubredditDetailActivity.class);
- intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY,
- post.getSubredditNamePrefixed().substring(2));
- mActivity.startActivity(intent);
- }
- }
- });
-
- ((PostCompactViewHolder) holder).iconGifImageView.setOnClickListener(view ->
- ((PostCompactViewHolder) holder).nameTextView.performClick());
+ ((PostCompactBaseViewHolder) holder).nameTextView.setTextColor(mSubredditColor);
+ ((PostCompactBaseViewHolder) holder).nameTextView.setText(subredditNamePrefixed);
} else {
if (post.getAuthorIconUrl() == null) {
String authorName = post.getAuthor().equals("[deleted]") ? post.getSubredditNamePrefixed().substring(2) : post.getAuthor();
@@ -715,13 +686,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,412 +705,139 @@ 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);
-
- ((PostCompactViewHolder) holder).nameTextView.setOnClickListener(view -> {
- if (canStartActivity) {
- canStartActivity = false;
- Intent intent = new Intent(mActivity, ViewUserDetailActivity.class);
- intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, post.getAuthor());
- mActivity.startActivity(intent);
- }
- });
-
- ((PostCompactViewHolder) holder).iconGifImageView.setOnClickListener(view ->
- ((PostCompactViewHolder) holder).nameTextView.performClick());
+ ((PostCompactBaseViewHolder) holder).nameTextView.setTextColor(mUsernameColor);
+ ((PostCompactBaseViewHolder) holder).nameTextView.setText(authorPrefixed);
}
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 -> {
- 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);
- intent.putExtra(FilteredThingActivity.EXTRA_FILTER, Post.NSFW_TYPE);
- 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);
- }
-
- if (!(mActivity instanceof FilteredThingActivity)) {
- ((PostCompactViewHolder) holder).typeTextView.setOnClickListener(view -> mCallback.typeChipClicked(post.getPostType()));
+ ((PostCompactBaseViewHolder) holder).crosspostImageView.setVisibility(View.VISIBLE);
}
switch (post.getPostType()) {
case Post.IMAGE_TYPE:
- ((PostCompactViewHolder) holder).typeTextView.setText(R.string.image);
-
- final String imageUrl = post.getUrl();
- ((PostCompactViewHolder) 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
- + "-" + id + ".jpg");
- mActivity.startActivity(intent);
- });
+ ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.image);
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);
-
- ((PostCompactViewHolder) holder).imageView.setOnClickListener(view -> {
- Intent intent = new Intent(mActivity, LinkResolverActivity.class);
- Uri uri = Uri.parse(post.getUrl());
- if (uri.getScheme() == null && uri.getHost() == null) {
- intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
- } else {
- intent.setData(uri);
- }
- intent.putExtra(LinkResolverActivity.EXTRA_IS_NSFW, post.isNSFW());
- mActivity.startActivity(intent);
- });
+ ((PostCompactBaseViewHolder) holder).linkTextView.setText(domain);
break;
case Post.GIF_TYPE:
- ((PostCompactViewHolder) holder).typeTextView.setText(R.string.gif);
-
- final Uri gifVideoUri = Uri.parse(post.getVideoUrl());
- ((PostCompactViewHolder) holder).imageView.setOnClickListener(view -> {
- Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class);
- intent.setData(gifVideoUri);
- intent.putExtra(ViewImageOrGifActivity.FILE_NAME_KEY, subredditName
- + "-" + id + ".gif");
- intent.putExtra(ViewImageOrGifActivity.GIF_URL_KEY, post.getVideoUrl());
- mActivity.startActivity(intent);
- });
-
- ((PostCompactViewHolder) holder).playButtonImageView.setVisibility(View.VISIBLE);
+ ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.gif);
+ ((PostCompactBaseViewHolder) holder).playButtonImageView.setVisibility(View.VISIBLE);
break;
case Post.VIDEO_TYPE:
- ((PostCompactViewHolder) holder).typeTextView.setText(R.string.video);
-
- final Uri videoUri = Uri.parse(post.getVideoUrl());
- ((PostCompactViewHolder) holder).imageView.setOnClickListener(view -> {
- Intent intent = new Intent(mActivity, ViewVideoActivity.class);
- intent.setData(videoUri);
- intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl());
- intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, subredditName);
- intent.putExtra(ViewVideoActivity.EXTRA_ID, id);
- intent.putExtra(ViewVideoActivity.EXTRA_IS_NSFW, post.isNSFW());
- mActivity.startActivity(intent);
- });
-
- ((PostCompactViewHolder) holder).playButtonImageView.setVisibility(View.VISIBLE);
+ ((PostCompactBaseViewHolder) holder).typeTextView.setText(R.string.video);
+ ((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 -> {
- Intent intent = new Intent(mActivity, LinkResolverActivity.class);
- Uri uri = Uri.parse(post.getUrl());
- if (uri.getScheme() == null && uri.getHost() == null) {
- intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
- } else {
- intent.setData(uri);
- }
- intent.putExtra(LinkResolverActivity.EXTRA_IS_NSFW, post.isNSFW());
- mActivity.startActivity(intent);
- });
+ ((PostCompactBaseViewHolder) holder).linkTextView.setText(noPreviewLinkDomain);
+ ((PostCompactBaseViewHolder) holder).noPreviewLinkImageFrameLayout.setVisibility(View.VISIBLE);
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 -> {
- if (mAccessToken == null) {
- Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show();
- return;
- }
-
- if (isArchived) {
- Toast.makeText(mActivity, R.string.archived_post_vote_unavailable, Toast.LENGTH_SHORT).show();
- return;
- }
-
- ColorFilter previousUpvoteButtonColorFilter = ((PostCompactViewHolder) holder).upvoteButton.getColorFilter();
- ColorFilter previousDownvoteButtonColorFilter = ((PostCompactViewHolder) holder).downvoteButton.getColorFilter();
- int previousScoreTextViewColor = ((PostCompactViewHolder) holder).scoreTextView.getCurrentTextColor();
-
- int previousVoteType = post.getVoteType();
- String newVoteType;
-
- ((PostCompactViewHolder) 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
- .setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN);
- ((PostCompactViewHolder) 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);
- }
-
- ((PostCompactViewHolder) 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
- .setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN);
- ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mUpvotedColor);
- } else {
- post.setVoteType(0);
- ((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);
- ((PostCompactViewHolder) holder).scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType()));
-
- EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
- }
-
- @Override
- 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);
-
- EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
- }
- }, fullName, newVoteType, holder.getAdapterPosition());
- });
-
- ((PostCompactViewHolder) holder).downvoteButton.setOnClickListener(view -> {
- if (mAccessToken == null) {
- Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show();
- return;
- }
-
- if (isArchived) {
- Toast.makeText(mActivity, R.string.archived_post_vote_unavailable, Toast.LENGTH_SHORT).show();
- return;
- }
-
- ColorFilter previousUpvoteButtonColorFilter = ((PostCompactViewHolder) holder).upvoteButton.getColorFilter();
- ColorFilter previousDownvoteButtonColorFilter = ((PostCompactViewHolder) holder).downvoteButton.getColorFilter();
- int previousScoreTextViewColor = ((PostCompactViewHolder) holder).scoreTextView.getCurrentTextColor();
-
- int previousVoteType = post.getVoteType();
- String newVoteType;
-
- ((PostCompactViewHolder) 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
- .setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN);
- ((PostCompactViewHolder) 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);
- }
-
- ((PostCompactViewHolder) 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
- .setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN);
- ((PostCompactViewHolder) holder).scoreTextView.setTextColor(mDownvotedColor);
- } else {
- post.setVoteType(0);
- ((PostCompactViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
- ((PostCompactViewHolder) 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()));
-
- EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
- }
-
- @Override
- 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);
-
- 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 -> {
- 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);
- 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);
- Toast.makeText(mActivity, R.string.post_unsaved_success, Toast.LENGTH_SHORT).show();
- EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
- }
-
- @Override
- public void failed() {
- post.setSaved(true);
- ((PostCompactViewHolder) 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);
- 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);
- Toast.makeText(mActivity, R.string.post_saved_success, Toast.LENGTH_SHORT).show();
- EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
- }
-
- @Override
- public void failed() {
- post.setSaved(false);
- ((PostCompactViewHolder) 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));
- }
- });
- }
- });
-
- ((PostCompactViewHolder) holder).shareButton.setOnClickListener(view -> shareLink(post));
}
}
}
@@ -1230,27 +928,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 +1107,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 +2293,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 +2397,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);
@@ -2754,6 +2434,481 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
imageView.setClipToOutline(true);
noPreviewLinkImageFrameLayout.setClipToOutline(true);
+ itemView.setOnClickListener(view -> {
+ Post post = getItem(getAdapterPosition());
+ if (post != null && canStartActivity) {
+ canStartActivity = false;
+
+ Intent intent = new Intent(mActivity, ViewPostDetailActivity.class);
+ intent.putExtra(ViewPostDetailActivity.EXTRA_POST_DATA, post);
+ intent.putExtra(ViewPostDetailActivity.EXTRA_POST_LIST_POSITION, getAdapterPosition());
+ mActivity.startActivity(intent);
+ }
+ });
+
+ nameTextView.setOnClickListener(view -> {
+ Post post = getItem(getAdapterPosition());
+ if (post != null && canStartActivity) {
+ canStartActivity = false;
+ if (mDisplaySubredditName) {
+ if (post.getSubredditNamePrefixed().startsWith("u/")) {
+ Intent intent = new Intent(mActivity, ViewUserDetailActivity.class);
+ intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY,
+ post.getSubredditNamePrefixed().substring(2));
+ mActivity.startActivity(intent);
+ } else {
+ Intent intent = new Intent(mActivity, ViewSubredditDetailActivity.class);
+ intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY,
+ post.getSubredditNamePrefixed().substring(2));
+ mActivity.startActivity(intent);
+ }
+ } else {
+ Intent intent = new Intent(mActivity, ViewUserDetailActivity.class);
+ intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, post.getAuthor());
+ mActivity.startActivity(intent);
+ }
+ }
+ });
+
+ iconGifImageView.setOnClickListener(view -> nameTextView.performClick());
+
+ nsfwTextView.setOnClickListener(view -> {
+ Post post = getItem(getAdapterPosition());
+ if (post != null && !(mActivity instanceof FilteredThingActivity)) {
+ 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);
+ intent.putExtra(FilteredThingActivity.EXTRA_FILTER, Post.NSFW_TYPE);
+ mActivity.startActivity(intent);
+ }
+ });
+
+ typeTextView.setOnClickListener(view -> {
+ Post post = getItem(getAdapterPosition());
+ if (post != null && !(mActivity instanceof FilteredThingActivity)) {
+ mCallback.typeChipClicked(post.getPostType());
+ }
+ });
+
+ imageView.setOnClickListener(view -> {
+ Post post = getItem(getAdapterPosition());
+ if (post != null) {
+ switch (post.getPostType()) {
+ case Post.IMAGE_TYPE: {
+ Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class);
+ intent.putExtra(ViewImageOrGifActivity.IMAGE_URL_KEY, post.getUrl());
+ intent.putExtra(ViewImageOrGifActivity.FILE_NAME_KEY, post.getSubredditName()
+ + "-" + post.getId() + ".jpg");
+ mActivity.startActivity(intent);
+ break;
+ }
+ case Post.LINK_TYPE: {
+ Intent intent = new Intent(mActivity, LinkResolverActivity.class);
+ Uri uri = Uri.parse(post.getUrl());
+ if (uri.getScheme() == null && uri.getHost() == null) {
+ intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
+ } else {
+ intent.setData(uri);
+ }
+ intent.putExtra(LinkResolverActivity.EXTRA_IS_NSFW, post.isNSFW());
+ mActivity.startActivity(intent);
+ break;
+ }
+ case Post.GIF_TYPE: {
+ Intent intent = new Intent(mActivity, ViewImageOrGifActivity.class);
+ intent.setData(Uri.parse(post.getVideoUrl()));
+ intent.putExtra(ViewImageOrGifActivity.FILE_NAME_KEY, post.getSubredditName()
+ + "-" + post.getId() + ".gif");
+ intent.putExtra(ViewImageOrGifActivity.GIF_URL_KEY, post.getVideoUrl());
+ mActivity.startActivity(intent);
+ break;
+ }
+ case Post.VIDEO_TYPE: {
+ Intent intent = new Intent(mActivity, ViewVideoActivity.class);
+ intent.setData(Uri.parse(post.getVideoUrl()));
+ intent.putExtra(ViewVideoActivity.EXTRA_VIDEO_DOWNLOAD_URL, post.getVideoDownloadUrl());
+ intent.putExtra(ViewVideoActivity.EXTRA_SUBREDDIT, post.getSubredditName());
+ intent.putExtra(ViewVideoActivity.EXTRA_ID, post.getId());
+ intent.putExtra(ViewVideoActivity.EXTRA_IS_NSFW, post.isNSFW());
+ mActivity.startActivity(intent);
+ }
+ }
+ }
+ });
+
+ noPreviewLinkImageFrameLayout.setOnClickListener(view -> {
+ Post post = getItem(getAdapterPosition());
+ if (post != null) {
+ Intent intent = new Intent(mActivity, LinkResolverActivity.class);
+ Uri uri = Uri.parse(post.getUrl());
+ if (uri.getScheme() == null && uri.getHost() == null) {
+ intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
+ } else {
+ intent.setData(uri);
+ }
+ intent.putExtra(LinkResolverActivity.EXTRA_IS_NSFW, post.isNSFW());
+ mActivity.startActivity(intent);
+ }
+ });
+
+ upvoteButton.setOnClickListener(view -> {
+ if (mAccessToken == null) {
+ Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ Post post = getItem(getAdapterPosition());
+ if (post != null) {
+ if (post.isArchived()) {
+ Toast.makeText(mActivity, R.string.archived_post_vote_unavailable, Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ ColorFilter previousUpvoteButtonColorFilter = upvoteButton.getColorFilter();
+ ColorFilter previousDownvoteButtonColorFilter = downvoteButton.getColorFilter();
+ int previousScoreTextViewColor = scoreTextView.getCurrentTextColor();
+
+ int previousVoteType = post.getVoteType();
+ String newVoteType;
+
+ downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
+
+ if (previousVoteType != 1) {
+ //Not upvoted before
+ post.setVoteType(1);
+ newVoteType = APIUtils.DIR_UPVOTE;
+ upvoteButton
+ .setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setTextColor(mUpvotedColor);
+ } else {
+ //Upvoted before
+ post.setVoteType(0);
+ newVoteType = APIUtils.DIR_UNVOTE;
+ upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setTextColor(mPostIconAndInfoColor);
+ }
+
+ 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);
+ upvoteButton
+ .setColorFilter(mUpvotedColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setTextColor(mUpvotedColor);
+ } else {
+ post.setVoteType(0);
+ upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setTextColor(mPostIconAndInfoColor);
+ }
+
+ downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType()));
+
+ EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
+ }
+
+ @Override
+ public void onVoteThingFail(int position1) {
+ Toast.makeText(mActivity, R.string.vote_failed, Toast.LENGTH_SHORT).show();
+ post.setVoteType(previousVoteType);
+ scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + previousVoteType));
+ upvoteButton.setColorFilter(previousUpvoteButtonColorFilter);
+ downvoteButton.setColorFilter(previousDownvoteButtonColorFilter);
+ scoreTextView.setTextColor(previousScoreTextViewColor);
+
+ EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
+ }
+ }, post.getFullName(), newVoteType, getAdapterPosition());
+ }
+ });
+
+ downvoteButton.setOnClickListener(view -> {
+ if (mAccessToken == null) {
+ Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ Post post = getItem(getAdapterPosition());
+ if (post != null) {
+ if (post.isArchived()) {
+ Toast.makeText(mActivity, R.string.archived_post_vote_unavailable, Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ ColorFilter previousUpvoteButtonColorFilter = upvoteButton.getColorFilter();
+ ColorFilter previousDownvoteButtonColorFilter = downvoteButton.getColorFilter();
+ int previousScoreTextViewColor = scoreTextView.getCurrentTextColor();
+
+ int previousVoteType = post.getVoteType();
+ String newVoteType;
+
+ upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
+
+ if (previousVoteType != -1) {
+ //Not downvoted before
+ post.setVoteType(-1);
+ newVoteType = APIUtils.DIR_DOWNVOTE;
+ downvoteButton
+ .setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setTextColor(mDownvotedColor);
+ } else {
+ //Downvoted before
+ post.setVoteType(0);
+ newVoteType = APIUtils.DIR_UNVOTE;
+ downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setTextColor(mPostIconAndInfoColor);
+ }
+
+ 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);
+ downvoteButton
+ .setColorFilter(mDownvotedColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setTextColor(mDownvotedColor);
+ } else {
+ post.setVoteType(0);
+ downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setTextColor(mPostIconAndInfoColor);
+ }
+
+ upvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + post.getVoteType()));
+
+ EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
+ }
+
+ @Override
+ public void onVoteThingFail(int position1) {
+ Toast.makeText(mActivity, R.string.vote_failed, Toast.LENGTH_SHORT).show();
+ post.setVoteType(previousVoteType);
+ scoreTextView.setText(Utils.getNVotes(mShowAbsoluteNumberOfVotes, post.getScore() + previousVoteType));
+ upvoteButton.setColorFilter(previousUpvoteButtonColorFilter);
+ downvoteButton.setColorFilter(previousDownvoteButtonColorFilter);
+ scoreTextView.setTextColor(previousScoreTextViewColor);
+
+ EventBus.getDefault().post(new PostUpdateEventToDetailActivity(post));
+ }
+ }, post.getFullName(), newVoteType, getAdapterPosition());
+ }
+ });
+
+ saveButton.setOnClickListener(view -> {
+ if (mAccessToken == null) {
+ Toast.makeText(mActivity, R.string.login_first, Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ Post post = getItem(getAdapterPosition());
+ if (post != null) {
+ if (post.isSaved()) {
+ 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);
+ 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));
+ }
+
+ @Override
+ public void failed() {
+ post.setSaved(true);
+ 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 {
+ saveButton.setImageResource(R.drawable.ic_bookmark_grey_24dp);
+ SaveThing.saveThing(mOauthRetrofit, mAccessToken, post.getFullName(),
+ new SaveThing.SaveThingListener() {
+ @Override
+ public void success() {
+ post.setSaved(true);
+ 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));
+ }
+
+ @Override
+ public void failed() {
+ post.setSaved(false);
+ 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));
+ }
+ });
+ }
+ }
+ });
+
+ shareButton.setOnClickListener(view -> {
+ Post post = getItem(getAdapterPosition());
+ if (post != null) {
+ shareLink(post);
+ }
+ });
+ }
+ }
+
+ 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/anim/enter_from_left.xml b/app/src/main/res/anim/enter_from_left.xml
new file mode 100644
index 00000000..63b97c30
--- /dev/null
+++ b/app/src/main/res/anim/enter_from_left.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <translate
+ android:duration="@android:integer/config_shortAnimTime"
+ android:fromXDelta="-100%"
+ android:toXDelta="0%" />
+</set>
diff --git a/app/src/main/res/anim/enter_from_right.xml b/app/src/main/res/anim/enter_from_right.xml
new file mode 100644
index 00000000..81e36503
--- /dev/null
+++ b/app/src/main/res/anim/enter_from_right.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <translate
+ android:duration="@android:integer/config_shortAnimTime"
+ android:fromXDelta="100%"
+ android:toXDelta="0%" />
+</set>
diff --git a/app/src/main/res/anim/exit_to_left.xml b/app/src/main/res/anim/exit_to_left.xml
new file mode 100644
index 00000000..c7860ef8
--- /dev/null
+++ b/app/src/main/res/anim/exit_to_left.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <translate
+ android:duration="@android:integer/config_shortAnimTime"
+ android:fromXDelta="0%"
+ android:toXDelta="-100%" />
+</set>
diff --git a/app/src/main/res/anim/exit_to_right.xml b/app/src/main/res/anim/exit_to_right.xml
new file mode 100644
index 00000000..0bb959fb
--- /dev/null
+++ b/app/src/main/res/anim/exit_to_right.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <translate
+ android:duration="@android:integer/config_shortAnimTime"
+ android:fromXDelta="0%"
+ android:toXDelta="100%" />
+</set>
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"