aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java262
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/PostLayoutBottomSheetFragment.java6
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java1
-rw-r--r--app/src/main/res/layout/fragment_post_layot_bottom_sheet.xml16
-rw-r--r--app/src/main/res/layout/item_post_card_2_with_preview.xml371
-rw-r--r--app/src/main/res/layout/item_post_gallery.xml112
-rw-r--r--app/src/main/res/layout/item_post_with_preview.xml13
-rw-r--r--app/src/main/res/values/strings.xml1
8 files changed, 698 insertions, 84 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java
index c791e2d8..76a561c5 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java
@@ -115,8 +115,9 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
private static final int VIEW_TYPE_POST_CARD_GALLERY_TYPE = 7;
private static final int VIEW_TYPE_POST_COMPACT = 8;
private static final int VIEW_TYPE_POST_GALLERY = 9;
- private static final int VIEW_TYPE_ERROR = 10;
- private static final int VIEW_TYPE_LOADING = 11;
+ private static final int VIEW_TYPE_POST_CARD_2 = 10;
+ private static final int VIEW_TYPE_ERROR = 11;
+ private static final int VIEW_TYPE_LOADING = 12;
private static final DiffUtil.ItemCallback<Post> DIFF_CALLBACK = new DiffUtil.ItemCallback<Post>() {
@Override
@@ -377,8 +378,10 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
return VIEW_TYPE_POST_CARD_TEXT_TYPE;
} else if (mPostLayout == SharedPreferencesUtils.POST_LAYOUT_COMPACT) {
return VIEW_TYPE_POST_COMPACT;
- } else {
+ } else if (mPostLayout == SharedPreferencesUtils.POST_LAYOUT_GALLERY) {
return VIEW_TYPE_POST_GALLERY;
+ } else {
+ return VIEW_TYPE_POST_CARD_2;
}
}
}
@@ -407,6 +410,8 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
}
} else if (viewType == VIEW_TYPE_POST_GALLERY) {
return new PostGalleryViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_gallery, parent, false));
+ } else if (viewType == VIEW_TYPE_POST_CARD_2) {
+ return new PostCard2ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post_card_2_with_preview, parent, false));
} else if (viewType == VIEW_TYPE_ERROR) {
return new ErrorViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false));
} else {
@@ -744,6 +749,81 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
}
((PostTextTypeViewHolder) holder).contentTextView.setText(post.getSelfTextPlainTrimmed());
}
+ } else if (holder instanceof PostCard2ViewHolder) {
+ if (post.getPostType() == Post.VIDEO_TYPE) {
+ ((PostCard2ViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.VISIBLE);
+ ((PostCard2ViewHolder) holder).typeTextView.setText(mActivity.getString(R.string.video));
+ } else if (post.getPostType() == Post.GIF_TYPE) {
+ if (!mAutoplay) {
+ ((PostCard2ViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.VISIBLE);
+ }
+ ((PostCard2ViewHolder) holder).typeTextView.setText(mActivity.getString(R.string.gif));
+ } else if (post.getPostType() == Post.IMAGE_TYPE) {
+ ((PostCard2ViewHolder) holder).typeTextView.setText(mActivity.getString(R.string.image));
+ } else if (post.getPostType() == Post.LINK_TYPE || post.getPostType() == Post.NO_PREVIEW_LINK_TYPE) {
+ ((PostCard2ViewHolder) holder).typeTextView.setText(mActivity.getString(R.string.link));
+ ((PostCard2ViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
+ String domain = Uri.parse(post.getUrl()).getHost();
+ ((PostCard2ViewHolder) holder).linkTextView.setText(domain);
+ if (post.getPostType() == Post.NO_PREVIEW_LINK_TYPE) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setVisibility(View.VISIBLE);
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_link);
+ }
+ } else if (post.getPostType() == Post.GALLERY_TYPE) {
+ ((PostCard2ViewHolder) holder).typeTextView.setText(mActivity.getString(R.string.gallery));
+ }
+
+ if (post.getPostType() != Post.NO_PREVIEW_LINK_TYPE) {
+ ((PostCard2ViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
+ }
+
+ if (mDataSavingMode && mDisableImagePreview) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setVisibility(View.VISIBLE);
+ if (post.getPostType() == Post.VIDEO_TYPE) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_outline_video_24dp);
+ ((PostCard2ViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.GONE);
+ } else if (post.getPostType() == Post.IMAGE_TYPE || post.getPostType() == Post.GIF_TYPE) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_image_24dp);
+ ((PostCard2ViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.GONE);
+ } else if (post.getPostType() == Post.LINK_TYPE) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_link);
+ } else if (post.getPostType() == Post.GALLERY_TYPE) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_gallery_24dp);
+ }
+ } else if (mDataSavingMode && mOnlyDisablePreviewInVideoAndGifPosts && (post.getPostType() == Post.VIDEO_TYPE || post.getPostType() == Post.GIF_TYPE)) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setVisibility(View.VISIBLE);
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_outline_video_24dp);
+ ((PostCard2ViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.GONE);
+ } else {
+ Post.Preview preview = getSuitablePreview(post.getPreviews());
+ if (preview != null) {
+ ((PostCard2ViewHolder) holder).imageWrapperRelativeLayout.setVisibility(View.VISIBLE);
+ if (preview.getPreviewWidth() <= 0 || preview.getPreviewHeight() <= 0) {
+ int height = (int) (400 * mScale);
+ ((PostCard2ViewHolder) holder).imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
+ ((PostCard2ViewHolder) holder).imageView.getLayoutParams().height = height;
+ preview.setPreviewWidth(mImageViewWidth);
+ preview.setPreviewHeight(height);
+ } else {
+ ((PostCard2ViewHolder) holder).imageView
+ .setRatio((float) preview.getPreviewHeight() / preview.getPreviewWidth());
+ }
+ loadImage(holder, post, preview);
+ } else {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setVisibility(View.VISIBLE);
+ if (post.getPostType() == Post.VIDEO_TYPE) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_outline_video_24dp);
+ ((PostCard2ViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.GONE);
+ } else if (post.getPostType() == Post.IMAGE_TYPE || post.getPostType() == Post.GIF_TYPE) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_image_24dp);
+ ((PostCard2ViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.GONE);
+ } else if (post.getPostType() == Post.LINK_TYPE) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_link);
+ } else if (post.getPostType() == Post.GALLERY_TYPE) {
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setImageResource(R.drawable.ic_gallery_24dp);
+ }
+ }
+ }
}
mCallback.currentlyBindItem(holder.getBindingAdapterPosition());
}
@@ -1369,6 +1449,44 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
imageRequestBuilder.into(((PostGalleryViewHolder) holder).imageView);
}
}
+ } else if (holder instanceof PostCard2ViewHolder) {
+ String url;
+ if (post.getPostType() == Post.GIF_TYPE && mAutoplay) {
+ url = post.getUrl();
+ } else {
+ url = preview.getPreviewUrl();
+ }
+ RequestBuilder<Drawable> imageRequestBuilder = mGlide.load(url).listener(new RequestListener<Drawable>() {
+ @Override
+ public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
+ ((PostCard2ViewHolder) holder).progressBar.setVisibility(View.GONE);
+ ((PostCard2ViewHolder) holder).errorRelativeLayout.setVisibility(View.VISIBLE);
+ ((PostCard2ViewHolder) holder).errorRelativeLayout.setOnClickListener(view -> {
+ ((PostCard2ViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
+ ((PostCard2ViewHolder) holder).errorRelativeLayout.setVisibility(View.GONE);
+ loadImage(holder, post, preview);
+ });
+ return false;
+ }
+
+ @Override
+ public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
+ ((PostCard2ViewHolder) holder).errorRelativeLayout.setVisibility(View.GONE);
+ ((PostCard2ViewHolder) holder).progressBar.setVisibility(View.GONE);
+ return false;
+ }
+ });
+
+ if ((post.isNSFW() && mNeedBlurNSFW && !(post.getPostType() == Post.GIF_TYPE && mAutoplayNsfwVideos)) || post.isSpoiler() && mNeedBlurSpoiler) {
+ imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 10)))
+ .into(((PostCard2ViewHolder) holder).imageView);
+ } else {
+ if (mImageViewWidth > preview.getPreviewWidth()) {
+ imageRequestBuilder.override(preview.getPreviewWidth(), preview.getPreviewHeight()).into(((PostCard2ViewHolder) holder).imageView);
+ } else {
+ imageRequestBuilder.into(((PostCard2ViewHolder) holder).imageView);
+ }
+ }
}
}
@@ -1587,6 +1705,14 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
((PostTextTypeViewHolder) holder).contentTextView.setText("");
((PostTextTypeViewHolder) holder).contentTextView.setTextColor(mPostContentColor);
((PostTextTypeViewHolder) holder).contentTextView.setVisibility(View.GONE);
+ } else if (holder instanceof PostCard2ViewHolder) {
+ mGlide.clear(((PostCard2ViewHolder) holder).imageView);
+ ((PostCard2ViewHolder) holder).imageWrapperRelativeLayout.setVisibility(View.GONE);
+ ((PostCard2ViewHolder) holder).errorRelativeLayout.setVisibility(View.GONE);
+ ((PostCard2ViewHolder) holder).noPreviewLinkImageView.setVisibility(View.GONE);
+ ((PostCard2ViewHolder) holder).progressBar.setVisibility(View.GONE);
+ ((PostCard2ViewHolder) holder).videoOrGifIndicatorImageView.setVisibility(View.GONE);
+ ((PostCard2ViewHolder) holder).linkTextView.setVisibility(View.GONE);
}
mGlide.clear(((PostBaseViewHolder) holder).iconGifImageView);
@@ -1786,7 +1912,6 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
}
public class PostBaseViewHolder extends RecyclerView.ViewHolder {
- MaterialCardView cardView;
AspectRatioGifImageView iconGifImageView;
TextView subredditTextView;
TextView userTextView;
@@ -1813,8 +1938,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
super(itemView);
}
- void setBaseView(MaterialCardView cardView,
- AspectRatioGifImageView iconGifImageView,
+ void setBaseView(AspectRatioGifImageView iconGifImageView,
TextView subredditTextView,
TextView userTextView,
ImageView stickiedPostImageView,
@@ -1835,7 +1959,6 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
TextView commentsCountTextView,
ImageView saveButton,
ImageView shareButton) {
- this.cardView = cardView;
this.iconGifImageView = iconGifImageView;
this.subredditTextView = subredditTextView;
this.userTextView = userTextView;
@@ -1911,7 +2034,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
saveButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
shareButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
- cardView.setOnClickListener(view -> {
+ itemView.setOnClickListener(view -> {
int position = getBindingAdapterPosition();
if (position >= 0 && canStartActivity) {
Post post = getItem(position);
@@ -2276,7 +2399,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
if (mAccessToken != null && !post.isRead() && mMarkPostsAsRead) {
post.markAsRead(true);
if (changePostItemColor) {
- cardView.setBackgroundTintList(ColorStateList.valueOf(mReadPostCardViewBackgroundColor));
+ itemView.setBackgroundTintList(ColorStateList.valueOf(mReadPostCardViewBackgroundColor));
titleTextView.setTextColor(mReadPostTitleColor);
if (this instanceof PostTextTypeViewHolder) {
((PostTextTypeViewHolder) this).contentTextView.setTextColor(mReadPostContentColor);
@@ -2356,7 +2479,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
PostVideoAutoplayViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
- setBaseView(cardView,
+ setBaseView(
iconGifImageView,
subredditTextView,
userTextView,
@@ -2611,7 +2734,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
PostWithPreviewTypeViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
- setBaseView(cardView,
+ setBaseView(
iconGifImageView,
subredditTextView,
userTextView,
@@ -2709,7 +2832,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
PostTextTypeViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
- setBaseView(cardView,
+ setBaseView(
iconGifImageView,
subredditTextView,
userTextView,
@@ -3482,6 +3605,121 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
}
}
+ class PostCard2ViewHolder extends PostBaseViewHolder {
+ @BindView(R.id.card_view_item_post_card_2_with_preview)
+ LinearLayout cardView;
+ @BindView(R.id.icon_gif_image_view_item_post_card_2_with_preview)
+ AspectRatioGifImageView iconGifImageView;
+ @BindView(R.id.subreddit_name_text_view_item_post_card_2_with_preview)
+ TextView subredditTextView;
+ @BindView(R.id.user_text_view_item_post_card_2_with_preview)
+ TextView userTextView;
+ @BindView(R.id.stickied_post_image_view_item_post_card_2_with_preview)
+ ImageView stickiedPostImageView;
+ @BindView(R.id.post_time_text_view_item_post_card_2_with_preview)
+ TextView postTimeTextView;
+ @BindView(R.id.title_text_view_item_post_card_2_with_preview)
+ TextView titleTextView;
+ @BindView(R.id.type_text_view_item_post_card_2_with_preview)
+ CustomTextView typeTextView;
+ @BindView(R.id.archived_image_view_item_post_card_2_with_preview)
+ ImageView archivedImageView;
+ @BindView(R.id.locked_image_view_item_post_card_2_with_preview)
+ ImageView lockedImageView;
+ @BindView(R.id.crosspost_image_view_item_post_card_2_with_preview)
+ ImageView crosspostImageView;
+ @BindView(R.id.nsfw_text_view_item_post_card_2_with_preview)
+ CustomTextView nsfwTextView;
+ @BindView(R.id.spoiler_custom_text_view_item_post_card_2_with_preview)
+ CustomTextView spoilerTextView;
+ @BindView(R.id.flair_custom_text_view_item_post_card_2_with_preview)
+ CustomTextView flairTextView;
+ @BindView(R.id.awards_text_view_item_post_card_2_with_preview)
+ CustomTextView awardsTextView;
+ @BindView(R.id.link_text_view_item_post_card_2_with_preview)
+ TextView linkTextView;
+ @BindView(R.id.video_or_gif_indicator_image_view_item_post_card_2_with_preview)
+ ImageView videoOrGifIndicatorImageView;
+ @BindView(R.id.image_wrapper_relative_layout_item_post_card_2_with_preview)
+ MaterialCardView imageWrapperRelativeLayout;
+ @BindView(R.id.progress_bar_item_post_card_2_with_preview)
+ ProgressBar progressBar;
+ @BindView(R.id.image_view_item_post_card_2_with_preview)
+ AspectRatioGifImageView imageView;
+ @BindView(R.id.load_image_error_relative_layout_item_post_card_2_with_preview)
+ RelativeLayout errorRelativeLayout;
+ @BindView(R.id.load_image_error_text_view_item_post_card_2_with_preview)
+ TextView errorTextView;
+ @BindView(R.id.image_view_no_preview_gallery_item_post_card_2_with_preview)
+ ImageView noPreviewLinkImageView;
+ @BindView(R.id.bottom_constraint_layout_item_post_card_2_with_preview)
+ ConstraintLayout bottomConstraintLayout;
+ @BindView(R.id.plus_button_item_post_card_2_with_preview)
+ ImageView upvoteButton;
+ @BindView(R.id.score_text_view_item_post_card_2_with_preview)
+ TextView scoreTextView;
+ @BindView(R.id.minus_button_item_post_card_2_with_preview)
+ ImageView downvoteButton;
+ @BindView(R.id.comments_count_item_post_card_2_with_preview)
+ TextView commentsCountTextView;
+ @BindView(R.id.save_button_item_post_card_2_with_preview)
+ ImageView saveButton;
+ @BindView(R.id.share_button_item_post_card_2_with_preview)
+ ImageView shareButton;
+ @BindView(R.id.divider_item_post_card_2_with_preview)
+ View divider;
+
+ PostCard2ViewHolder(@NonNull View itemView) {
+ super(itemView);
+ ButterKnife.bind(this, itemView);
+ setBaseView(
+ iconGifImageView,
+ subredditTextView,
+ userTextView,
+ stickiedPostImageView,
+ postTimeTextView,
+ titleTextView,
+ typeTextView,
+ archivedImageView,
+ lockedImageView,
+ crosspostImageView,
+ nsfwTextView,
+ spoilerTextView,
+ flairTextView,
+ awardsTextView,
+ bottomConstraintLayout,
+ upvoteButton,
+ scoreTextView,
+ downvoteButton,
+ commentsCountTextView,
+ saveButton,
+ shareButton);
+
+ linkTextView.setTextColor(mSecondaryTextColor);
+ noPreviewLinkImageView.setBackgroundColor(mNoPreviewPostTypeBackgroundColor);
+ noPreviewLinkImageView.setColorFilter(mNoPreviewPostTypeIconTint, android.graphics.PorterDuff.Mode.SRC_IN);
+ progressBar.setIndeterminateTintList(ColorStateList.valueOf(mColorAccent));
+ errorTextView.setTextColor(mPrimaryTextColor);
+ divider.setBackgroundColor(mDividerColor);
+
+ imageView.setOnClickListener(view -> {
+ int position = getBindingAdapterPosition();
+ if (position < 0) {
+ return;
+ }
+ Post post = getItem(position);
+ if (post != null) {
+ markPostRead(post, true);
+ openMedia(post);
+ }
+ });
+
+ noPreviewLinkImageView.setOnClickListener(view -> {
+ imageView.performClick();
+ });
+ }
+ }
+
class ErrorViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.error_text_view_item_footer_error)
TextView errorTextView;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/PostLayoutBottomSheetFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/PostLayoutBottomSheetFragment.java
index fba94be1..b2babae7 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/PostLayoutBottomSheetFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/PostLayoutBottomSheetFragment.java
@@ -30,6 +30,8 @@ public class PostLayoutBottomSheetFragment extends RoundedBottomSheetDialogFragm
TextView compactLayoutTextView;
@BindView(R.id.gallery_layout_text_view_post_layout_bottom_sheet_fragment)
TextView galleryLayoutTextView;
+ @BindView(R.id.card_layout_2_text_view_post_layout_bottom_sheet_fragment)
+ TextView cardLayout2TextView;
private Activity activity;
public PostLayoutBottomSheetFragment() {
// Required empty public constructor
@@ -55,6 +57,10 @@ public class PostLayoutBottomSheetFragment extends RoundedBottomSheetDialogFragm
((PostLayoutSelectionCallback) activity).postLayoutSelected(SharedPreferencesUtils.POST_LAYOUT_GALLERY);
dismiss();
});
+ cardLayout2TextView.setOnClickListener(view -> {
+ ((PostLayoutSelectionCallback) activity).postLayoutSelected(SharedPreferencesUtils.POST_LAYOUT_CARD_2);
+ dismiss();
+ });
return rootView;
}
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 d19f905d..86c562fc 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java
@@ -65,6 +65,7 @@ public class SharedPreferencesUtils {
public static final int POST_LAYOUT_CARD = 0;
public static final int POST_LAYOUT_COMPACT = 1;
public static final int POST_LAYOUT_GALLERY = 2;
+ public static final int POST_LAYOUT_CARD_2 = 3;
public static final String FRONT_PAGE_SCROLLED_POSITION_SHARED_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit.front_page_scrolled_position";
public static final String FRONT_PAGE_SCROLLED_POSITION_FRONT_PAGE_BASE = "_front_page";
diff --git a/app/src/main/res/layout/fragment_post_layot_bottom_sheet.xml b/app/src/main/res/layout/fragment_post_layot_bottom_sheet.xml
index 760a5ea3..3cf40d28 100644
--- a/app/src/main/res/layout/fragment_post_layot_bottom_sheet.xml
+++ b/app/src/main/res/layout/fragment_post_layot_bottom_sheet.xml
@@ -60,6 +60,22 @@
android:textSize="?attr/font_default"
android:fontFamily="?attr/font_family" />
+ <TextView
+ android:id="@+id/card_layout_2_text_view_post_layout_bottom_sheet_fragment"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?attr/selectableItemBackground"
+ android:clickable="true"
+ android:focusable="true"
+ android:paddingStart="32dp"
+ android:paddingTop="16dp"
+ android:paddingEnd="32dp"
+ android:paddingBottom="16dp"
+ android:text="@string/post_layout_card_2"
+ android:textColor="?attr/primaryTextColor"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family" />
+
</LinearLayout>
</androidx.core.widget.NestedScrollView> \ No newline at end of file
diff --git a/app/src/main/res/layout/item_post_card_2_with_preview.xml b/app/src/main/res/layout/item_post_card_2_with_preview.xml
new file mode 100644
index 00000000..8a5fe64e
--- /dev/null
+++ b/app/src/main/res/layout/item_post_card_2_with_preview.xml
@@ -0,0 +1,371 @@
+<?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"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_marginTop="8dp"
+ android:layout_marginBottom="8dp"
+ android:id="@+id/card_view_item_post_card_2_with_preview"
+ android:orientation="vertical">
+
+ <com.google.android.material.card.MaterialCardView
+ android:id="@+id/image_wrapper_relative_layout_item_post_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="16dp"
+ app:cardElevation="2dp"
+ app:cardCornerRadius="8dp"
+ android:visibility="gone">
+
+ <ml.docilealligator.infinityforreddit.customviews.AspectRatioGifImageView
+ android:id="@+id/image_view_item_post_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:adjustViewBounds="true"
+ android:scaleType="fitStart" />
+
+ <ImageView
+ android:id="@+id/video_or_gif_indicator_image_view_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:layout_gravity="start"
+ android:background="@drawable/play_button_round_background"
+ android:src="@drawable/ic_play_circle_36dp"
+ android:visibility="gone" />
+
+ <ProgressBar
+ android:id="@+id/progress_bar_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true" />
+
+ <RelativeLayout
+ android:id="@+id/load_image_error_relative_layout_item_post_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_centerInParent="true"
+ android:visibility="gone">
+
+ <TextView
+ android:id="@+id/load_image_error_text_view_item_post_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:drawableTop="@drawable/ic_error_outline_black_24dp"
+ android:layout_gravity="center"
+ android:gravity="center"
+ android:text="@string/error_loading_image_tap_to_retry"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family" />
+
+ </RelativeLayout>
+
+ </com.google.android.material.card.MaterialCardView>
+
+ <ImageView
+ android:id="@+id/image_view_no_preview_gallery_item_post_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="150dp"
+ android:scaleType="center"
+ android:visibility="gone" />
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="16dp">
+
+ <ml.docilealligator.infinityforreddit.customviews.AspectRatioGifImageView
+ android:id="@+id/icon_gif_image_view_item_post_card_2_with_preview"
+ 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/subreddit_name_text_view_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="8dp"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family"
+ app:layout_constraintBottom_toTopOf="@id/user_text_view_item_post_card_2_with_preview"
+ app:layout_constraintStart_toEndOf="@id/icon_gif_image_view_item_post_card_2_with_preview"
+ app:layout_constraintEnd_toStartOf="@id/stickied_post_image_view_item_post_card_2_with_preview"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constrainedWidth="true"
+ app:layout_constraintHorizontal_bias="0"/>
+
+ <TextView
+ android:id="@+id/user_text_view_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="16dp"
+ android:layout_marginEnd="8dp"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/icon_gif_image_view_item_post_card_2_with_preview"
+ app:layout_constraintEnd_toStartOf="@id/stickied_post_image_view_item_post_card_2_with_preview"
+ app:layout_constraintTop_toBottomOf="@+id/subreddit_name_text_view_item_post_card_2_with_preview"
+ app:layout_constraintHorizontal_bias="0"
+ app:layout_constrainedWidth="true" />
+
+ <ImageView
+ android:id="@+id/stickied_post_image_view_item_post_card_2_with_preview"
+ 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_constraintTop_toTopOf="parent"
+ tools:visibility="visible" />
+
+ <TextView
+ android:id="@+id/post_time_text_view_item_post_card_2_with_preview"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:gravity="end"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family"
+ 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>
+
+ <TextView
+ android:id="@+id/title_text_view_item_post_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:textSize="?attr/title_font_18"
+ android:fontFamily="?attr/title_font_family" />
+
+ <TextView
+ android:id="@+id/content_text_view_item_post_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:maxLines="4"
+ android:visibility="gone"
+ android:textSize="?attr/content_font_default"
+ android:fontFamily="?attr/content_font_family"
+ android:ellipsize="end" />
+
+ <com.nex3z.flowlayout.FlowLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="16dp"
+ app:flChildSpacing="16dp"
+ app:flChildSpacingForLastRow="align"
+ app:flRowSpacing="8dp">
+
+ <com.libRG.CustomTextView
+ android:id="@+id/type_text_view_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="4dp"
+ android:text="@string/gallery"
+ android:textSize="?attr/font_12"
+ android:fontFamily="?attr/font_family"
+ app:lib_setRadius="3dp"
+ app:lib_setRoundedView="true"
+ app:lib_setShape="rectangle" />
+
+ <com.libRG.CustomTextView
+ android:id="@+id/spoiler_custom_text_view_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:text="@string/spoiler"
+ android:textSize="?attr/font_12"
+ android:fontFamily="?attr/font_family"
+ android:padding="4dp"
+ 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_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="4dp"
+ android:text="@string/nsfw"
+ android:textSize="?attr/font_12"
+ android:fontFamily="?attr/font_family"
+ 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_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:textSize="?attr/font_12"
+ android:fontFamily="?attr/font_family"
+ android:padding="4dp"
+ 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_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="4dp"
+ android:textSize="?attr/font_12"
+ android:fontFamily="?attr/font_family"
+ android:visibility="gone"
+ app:lib_setRadius="3dp"
+ app:lib_setRoundedView="true"
+ app:lib_setShape="rectangle" />
+
+ <ImageView
+ android:id="@+id/archived_image_view_item_post_card_2_with_preview"
+ 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_card_2_with_preview"
+ 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_card_2_with_preview"
+ 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_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="16dp"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:textSize="?attr/font_12"
+ android:fontFamily="?attr/font_family"
+ android:visibility="gone" />
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/bottom_constraint_layout_item_post_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <ImageView
+ android:id="@+id/plus_button_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="12dp"
+ android:src="@drawable/ic_arrow_upward_grey_24dp"
+ android:background="?actionBarItemBackground"
+ android:clickable="true"
+ android:focusable="true"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent" />
+
+ <TextView
+ android:id="@+id/score_text_view_item_post_card_2_with_preview"
+ android:layout_width="64dp"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:textSize="?attr/font_12"
+ android:textStyle="bold"
+ android:fontFamily="?attr/font_family"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toEndOf="@id/plus_button_item_post_card_2_with_preview" />
+
+ <ImageView
+ android:id="@+id/minus_button_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="12dp"
+ android:src="@drawable/ic_arrow_downward_grey_24dp"
+ android:background="?actionBarItemBackground"
+ android:clickable="true"
+ android:focusable="true"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toEndOf="@id/score_text_view_item_post_card_2_with_preview" />
+
+ <TextView
+ android:id="@+id/comments_count_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="12dp"
+ android:gravity="center_vertical"
+ android:textSize="?attr/font_12"
+ android:textStyle="bold"
+ android:fontFamily="?attr/font_family"
+ android:drawableStart="@drawable/ic_comment_grey_24dp"
+ android:drawablePadding="12dp"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toEndOf="@id/minus_button_item_post_card_2_with_preview" />
+
+ <ImageView
+ android:id="@+id/save_button_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="12dp"
+ android:background="?actionBarItemBackground"
+ android:clickable="true"
+ android:focusable="true"
+ app:layout_constraintHorizontal_bias="1"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toEndOf="@id/comments_count_item_post_card_2_with_preview"
+ app:layout_constraintEnd_toStartOf="@id/share_button_item_post_card_2_with_preview" />
+
+ <ImageView
+ android:id="@+id/share_button_item_post_card_2_with_preview"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="12dp"
+ android:src="@drawable/ic_share_grey_24dp"
+ android:background="?actionBarItemBackground"
+ android:clickable="true"
+ android:focusable="true"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+ <View
+ android:id="@+id/divider_item_post_card_2_with_preview"
+ android:layout_width="match_parent"
+ android:layout_height="1dp" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/item_post_gallery.xml b/app/src/main/res/layout/item_post_gallery.xml
index 4d40c4d8..3d32cd04 100644
--- a/app/src/main/res/layout/item_post_gallery.xml
+++ b/app/src/main/res/layout/item_post_gallery.xml
@@ -8,73 +8,67 @@
app:cardElevation="2dp"
app:cardCornerRadius="8dp">
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
-
- <ProgressBar
- android:id="@+id/progress_bar_item_post_gallery"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:visibility="gone" />
-
- <ml.docilealligator.infinityforreddit.customviews.AspectRatioGifImageView
- android:id="@+id/image_view_item_post_gallery"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:visibility="gone" />
-
- <ImageView
- android:id="@+id/image_view_no_preview_item_post_gallery"
- android:layout_width="match_parent"
- android:layout_height="150dp"
- android:scaleType="center"
- android:background="@drawable/thumbnail_compact_layout_rounded_edge"
- android:visibility="gone" />
+ <ProgressBar
+ android:id="@+id/progress_bar_item_post_gallery"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:visibility="gone" />
- <ImageView
- android:id="@+id/video_or_gif_indicator_image_view_item_post_gallery"
- android:layout_width="36dp"
- android:layout_height="36dp"
- android:layout_margin="16dp"
- android:layout_gravity="start"
- android:scaleType="center"
- android:background="@drawable/play_button_round_background"
- android:visibility="gone" />
+ <ml.docilealligator.infinityforreddit.customviews.AspectRatioGifImageView
+ android:id="@+id/image_view_item_post_gallery"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:visibility="gone" />
- <RelativeLayout
- android:id="@+id/load_image_error_relative_layout_item_post_gallery"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_gravity="center"
- android:visibility="gone">
+ <ImageView
+ android:id="@+id/image_view_no_preview_item_post_gallery"
+ android:layout_width="match_parent"
+ android:layout_height="150dp"
+ android:scaleType="center"
+ android:background="@drawable/thumbnail_compact_layout_rounded_edge"
+ android:visibility="gone" />
- <TextView
- android:id="@+id/load_image_error_text_view_item_gallery"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- app:drawableTopCompat="@drawable/ic_error_outline_black_24dp"
- android:layout_gravity="center"
- android:gravity="center"
- android:text="@string/error_loading_image_tap_to_retry"
- android:textSize="?attr/font_default"
- android:fontFamily="?attr/font_family" />
+ <ImageView
+ android:id="@+id/video_or_gif_indicator_image_view_item_post_gallery"
+ android:layout_width="36dp"
+ android:layout_height="36dp"
+ android:layout_margin="16dp"
+ android:layout_gravity="start"
+ android:scaleType="center"
+ android:background="@drawable/play_button_round_background"
+ android:visibility="gone" />
- </RelativeLayout>
+ <RelativeLayout
+ android:id="@+id/load_image_error_relative_layout_item_post_gallery"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"
+ android:visibility="gone">
<TextView
- android:id="@+id/title_text_view_item_post_gallery"
+ android:id="@+id/load_image_error_text_view_item_gallery"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingTop="16dp"
- android:paddingBottom="16dp"
- android:paddingStart="16dp"
- android:paddingEnd="16dp"
- android:textSize="?attr/title_font_18"
- android:fontFamily="?attr/title_font_family"
- android:visibility="gone" />
+ app:drawableTopCompat="@drawable/ic_error_outline_black_24dp"
+ android:layout_gravity="center"
+ android:gravity="center"
+ android:text="@string/error_loading_image_tap_to_retry"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family" />
- </FrameLayout>
+ </RelativeLayout>
+
+ <TextView
+ android:id="@+id/title_text_view_item_post_gallery"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="16dp"
+ android:paddingBottom="16dp"
+ android:paddingStart="16dp"
+ android:paddingEnd="16dp"
+ android:textSize="?attr/title_font_18"
+ android:fontFamily="?attr/title_font_family"
+ android:visibility="gone" />
</com.google.android.material.card.MaterialCardView> \ No newline at end of file
diff --git a/app/src/main/res/layout/item_post_with_preview.xml b/app/src/main/res/layout/item_post_with_preview.xml
index 5cec4cfa..5782403c 100644
--- a/app/src/main/res/layout/item_post_with_preview.xml
+++ b/app/src/main/res/layout/item_post_with_preview.xml
@@ -101,19 +101,6 @@
android:textSize="?attr/title_font_18"
android:fontFamily="?attr/title_font_family" />
- <TextView
- android:id="@+id/content_text_view_item_post_with_preview"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:paddingStart="16dp"
- android:paddingEnd="16dp"
- android:maxLines="4"
- android:visibility="gone"
- android:textSize="?attr/content_font_default"
- android:fontFamily="?attr/content_font_family"
- android:ellipsize="end" />
-
<com.nex3z.flowlayout.FlowLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 94a18a9d..e47b5201 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -568,6 +568,7 @@
<string name="post_layout_card">Card Layout</string>
<string name="post_layout_compact">Compact Layout</string>
<string name="post_layout_gallery">Gallery Layout</string>
+ <string name="post_layout_card_2">Card Layout 2</string>
<string name="elapsed_time_just_now">Just Now</string>
<string name="elapsed_time_a_minute_ago">1 Minute</string>