aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/ml/docilealligator
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/ml/docilealligator')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java3
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java21
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java40
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FABMoreOptionsBottomSheetFragment.java8
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/fragments/PostFragment.java16
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java1
6 files changed, 89 insertions, 0 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java
index 07a18a72..3fb00c2a 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java
@@ -35,4 +35,7 @@ public interface FragmentCommunicator {
}
void applyTheme();
+
+ default void hideReadPosts() {
+ }
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java
index c963cf84..9219de22 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/MainActivity.java
@@ -591,6 +591,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
case SharedPreferencesUtils.MAIN_ACTIVITY_BOTTOM_APP_BAR_FAB_RANDOM:
fab.setImageResource(R.drawable.ic_random_24dp);
break;
+ case SharedPreferencesUtils.MAIN_ACTIVITY_BOTTOM_APP_BAR_FAB_HIDE_READ_POSTS:
+ fab.setImageResource(R.drawable.ic_hide_read_posts_24dp);
+ break;
default:
fab.setImageResource(R.drawable.ic_add_day_night_24dp);
break;
@@ -625,6 +628,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
case SharedPreferencesUtils.MAIN_ACTIVITY_BOTTOM_APP_BAR_FAB_RANDOM:
randomThing();
break;
+ case SharedPreferencesUtils.MAIN_ACTIVITY_BOTTOM_APP_BAR_FAB_HIDE_READ_POSTS:
+ if (sectionsPagerAdapter != null) {
+ sectionsPagerAdapter.hideReadPosts();
+ }
+ break;
default:
postTypeBottomSheetFragment.show(getSupportFragmentManager(), postTypeBottomSheetFragment.getTag());
break;
@@ -1199,6 +1207,12 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
randomThing();
break;
}
+ case FABMoreOptionsBottomSheetFragment.FAB_HIDE_READ_POSTS: {
+ if (sectionsPagerAdapter != null) {
+ sectionsPagerAdapter.hideReadPosts();
+ }
+ break;
+ }
}
}
@@ -1523,5 +1537,12 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
Utils.displaySortTypeInToolbar(sortType, toolbar);
}
}
+
+ void hideReadPosts() {
+ PostFragment currentFragment = getCurrentFragment();
+ if (currentFragment != null) {
+ currentFragment.hideReadPosts();
+ }
+ }
}
}
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 76df281b..9d9e890d 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/PostRecyclerViewAdapter.java
@@ -173,6 +173,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
private int mButtonTextColor;
private int mPostIconAndInfoColor;
private int mDividerColor;
+ private int mHideReadPostsIndex = 0;
private float mScale;
private boolean mDisplaySubredditName;
private boolean mVoteButtonsOnTheRight;
@@ -394,6 +395,15 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
Post post = getItem(position);
if (post != null) {
if (post.isRead()) {
+ if (position < mHideReadPostsIndex) {
+ holder.itemView.setVisibility(View.GONE);
+ RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) holder.itemView.getLayoutParams();
+ params.height = 0;
+ params.topMargin = 0;
+ params.bottomMargin = 0;
+ holder.itemView.setLayoutParams(params);
+ return;
+ }
holder.itemView.setBackgroundTintList(ColorStateList.valueOf(mReadPostCardViewBackgroundColor));
((PostBaseViewHolder) holder).titleTextView.setTextColor(mReadPostTitleColor);
}
@@ -706,6 +716,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
Post post = getItem(position);
if (post != null) {
if (post.isRead()) {
+ if (position < mHideReadPostsIndex) {
+ holder.itemView.setVisibility(View.GONE);
+ ViewGroup.LayoutParams params = holder.itemView.getLayoutParams();
+ params.height = 0;
+ holder.itemView.setLayoutParams(params);
+ return;
+ }
holder.itemView.setBackgroundColor(mReadPostCardViewBackgroundColor);
((PostCompactBaseViewHolder) holder).titleTextView.setTextColor(mReadPostTitleColor);
}
@@ -1189,6 +1206,18 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
mShowAbsoluteNumberOfVotes = showAbsoluteNumberOfVotes;
}
+ public int getHideReadPostsIndex() {
+ return mHideReadPostsIndex;
+ }
+
+ public void setHideReadPostsIndex(int hideReadPostsIndex) {
+ mHideReadPostsIndex = hideReadPostsIndex;
+ }
+
+ public void prepareToHideReadPosts() {
+ mHideReadPostsIndex = getItemCount();
+ }
+
private boolean hasExtraRow() {
return networkState != null && networkState.getStatus() != NetworkState.Status.SUCCESS;
}
@@ -1265,6 +1294,13 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder);
if (holder instanceof PostBaseViewHolder) {
+ ((PostBaseViewHolder) holder).itemView.setVisibility(View.VISIBLE);
+ RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) holder.itemView.getLayoutParams();
+ params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
+ int marginPixel = (int) Utils.convertDpToPixel(8, mActivity);
+ params.topMargin = marginPixel;
+ params.bottomMargin = marginPixel;
+ holder.itemView.setLayoutParams(params);
((PostBaseViewHolder) holder).itemView.setBackgroundTintList(ColorStateList.valueOf(mCardViewBackgroundColor));
((PostBaseViewHolder) holder).titleTextView.setTextColor(mPostTitleColor);
if (holder instanceof PostVideoAutoplayViewHolder) {
@@ -1306,6 +1342,10 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
((PostBaseViewHolder) holder).scoreTextView.setTextColor(mPostIconAndInfoColor);
((PostBaseViewHolder) holder).downvoteButton.setColorFilter(mPostIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN);
} else if (holder instanceof PostCompactBaseViewHolder) {
+ ((PostCompactBaseViewHolder) holder).itemView.setVisibility(View.VISIBLE);
+ ViewGroup.LayoutParams params = holder.itemView.getLayoutParams();
+ params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
+ holder.itemView.setLayoutParams(params);
((PostCompactBaseViewHolder) holder).itemView.setBackgroundColor(mCardViewBackgroundColor);
((PostCompactBaseViewHolder) holder).titleTextView.setTextColor(mPostTitleColor);
mGlide.clear(((PostCompactBaseViewHolder) holder).imageView);
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FABMoreOptionsBottomSheetFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FABMoreOptionsBottomSheetFragment.java
index a0061ff8..a7311736 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FABMoreOptionsBottomSheetFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/bottomsheetfragments/FABMoreOptionsBottomSheetFragment.java
@@ -25,6 +25,7 @@ public class FABMoreOptionsBottomSheetFragment extends RoundedBottomSheetDialogF
public static final int FAB_OPTION_GO_TO_SUBREDDIT = 5;
public static final int FAB_OPTION_GO_TO_USER = 6;
public static final int FAB_RANDOM = 7;
+ public static final int FAB_HIDE_READ_POSTS = 8;
@BindView(R.id.submit_post_text_view_fab_more_options_bottom_sheet_fragment)
TextView submitPostTextView;
@@ -42,6 +43,8 @@ public class FABMoreOptionsBottomSheetFragment extends RoundedBottomSheetDialogF
TextView goToUserTextView;
@BindView(R.id.random_text_view_fab_more_options_bottom_sheet_fragment)
TextView randomTextView;
+ @BindView(R.id.hide_read_posts_text_view_fab_more_options_bottom_sheet_fragment)
+ TextView hideReadPostsTextView;
private FABOptionSelectionCallback activity;
public FABMoreOptionsBottomSheetFragment() {
@@ -96,6 +99,11 @@ public class FABMoreOptionsBottomSheetFragment extends RoundedBottomSheetDialogF
dismiss();
});
+ hideReadPostsTextView.setOnClickListener(view -> {
+ activity.fabOptionSelected(FAB_HIDE_READ_POSTS);
+ dismiss();
+ });
+
return rootView;
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/PostFragment.java
index 6686e3ff..c682e181 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/PostFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/PostFragment.java
@@ -135,6 +135,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
private static final String RECYCLER_VIEW_POSITION_STATE = "RVPS";
private static final String READ_POST_LIST_STATE = "RPLS";
private static final String SUBREDDIT_FILTER_LIST_STATE = "SFLS";
+ private static final String HIDE_READ_POSTS_INDEX_STATE = "HRPIS";
@BindView(R.id.swipe_refresh_layout_post_fragment)
SwipeRefreshLayout mSwipeRefreshLayout;
@@ -370,6 +371,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
mSwipeRefreshLayout.setEnabled(mSharedPreferences.getBoolean(SharedPreferencesUtils.PULL_TO_REFRESH, true));
mSwipeRefreshLayout.setOnRefreshListener(this::refresh);
+ int hideReadPostsIndex = 0;
if (savedInstanceState != null) {
int recyclerViewPosition = savedInstanceState.getInt(RECYCLER_VIEW_POSITION_STATE);
if (recyclerViewPosition > 0) {
@@ -379,6 +381,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
readPosts = savedInstanceState.getParcelableArrayList(READ_POST_LIST_STATE);
subredditFilterList = savedInstanceState.getParcelableArrayList(SUBREDDIT_FILTER_LIST_STATE);
+ hideReadPostsIndex = savedInstanceState.getInt(HIDE_READ_POSTS_INDEX_STATE, 0);
}
mPostRecyclerView.setOnTouchListener((view, motionEvent) -> {
@@ -653,6 +656,8 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
});
}
+ mAdapter.setHideReadPostsIndex(hideReadPostsIndex);
+
if (activity instanceof ActivityToolbarInterface) {
((ActivityToolbarInterface) activity).displaySortType();
}
@@ -976,6 +981,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
outState.putBoolean(IS_IN_LAZY_MODE_STATE, isInLazyMode);
outState.putParcelableArrayList(READ_POST_LIST_STATE, readPosts);
outState.putParcelableArrayList(SUBREDDIT_FILTER_LIST_STATE, subredditFilterList);
+ if (mAdapter != null) {
+ outState.putInt(HIDE_READ_POSTS_INDEX_STATE, mAdapter.getHideReadPostsIndex());
+ }
if (mLinearLayoutManager != null) {
outState.putInt(RECYCLER_VIEW_POSITION_STATE, mLinearLayoutManager.findFirstVisibleItemPosition());
} else if (mStaggeredGridLayoutManager != null) {
@@ -1143,6 +1151,14 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
mFetchPostInfoTextView.setTextColor(customThemeWrapper.getSecondaryTextColor());
}
+ @Override
+ public void hideReadPosts() {
+ if (mAdapter != null) {
+ mAdapter.prepareToHideReadPosts();
+ refreshAdapter();
+ }
+ }
+
@Subscribe
public void onPostUpdateEvent(PostUpdateEventToPostList event) {
PagedList<Post> posts = mAdapter.getCurrentList();
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 a5ba50de..44bf874f 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java
@@ -194,6 +194,7 @@ public class SharedPreferencesUtils {
public static final int MAIN_ACTIVITY_BOTTOM_APP_BAR_FAB_GO_TO_SUBREDDIT = 5;
public static final int MAIN_ACTIVITY_BOTTOM_APP_BAR_FAB_GO_TO_USER = 6;
public static final int MAIN_ACTIVITY_BOTTOM_APP_BAR_FAB_RANDOM = 7;
+ public static final int MAIN_ACTIVITY_BOTTOM_APP_BAR_FAB_HIDE_READ_POSTS = 8;
public static final int OTHER_ACTIVITIES_BOTTOM_APP_BAR_OPTION_HOME = 0;
public static final int OTHER_ACTIVITIES_BOTTOM_APP_BAR_OPTION_SUBSCRIPTIONS = 1;
public static final int OTHER_ACTIVITIES_BOTTOM_APP_BAR_OPTION_INBOX = 2;