mirror of
				https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
				synced 2025-10-31 08:58:10 +01:00 
			
		
		
		
	Support showing favorite subscribed subreddits in the main page.
This commit is contained in:
		| @@ -206,6 +206,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb | ||||
|     private boolean mConfirmToExit; | ||||
|     private boolean mLockBottomAppBar; | ||||
|     private boolean mDisableSwipingBetweenTabs; | ||||
|     private boolean mShowFavoriteSubscribedSubreddits; | ||||
|     private boolean mShowSubscribedSubreddits; | ||||
|  | ||||
|     @Override | ||||
| @@ -602,13 +603,15 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb | ||||
|         navDrawerRecyclerView.setAdapter(adapter); | ||||
|  | ||||
|         int tabCount = mMainActivityTabsSharedPreferences.getInt((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_COUNT, 3); | ||||
|         mShowFavoriteSubscribedSubreddits = mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_FAVORITE_SUBSCRIBED_SUBREDDITS, false); | ||||
|         mShowSubscribedSubreddits = mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_SUBSCRIBED_SUBREDDITS, false); | ||||
|         sectionsPagerAdapter = new SectionsPagerAdapter(fragmentManager, getLifecycle(), tabCount, mShowSubscribedSubreddits); | ||||
|         sectionsPagerAdapter = new SectionsPagerAdapter(fragmentManager, getLifecycle(), tabCount, | ||||
|                 mShowFavoriteSubscribedSubreddits, mShowSubscribedSubreddits); | ||||
|         viewPager2.setAdapter(sectionsPagerAdapter); | ||||
|         viewPager2.setOffscreenPageLimit(1); | ||||
|         viewPager2.setUserInputEnabled(!mDisableSwipingBetweenTabs); | ||||
|         if (mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_TAB_NAMES, true)) { | ||||
|             if (mShowSubscribedSubreddits) { | ||||
|             if (mShowFavoriteSubscribedSubreddits || mShowSubscribedSubreddits) { | ||||
|                 tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); | ||||
|             } else { | ||||
|                 tabLayout.setTabMode(TabLayout.MODE_FIXED); | ||||
| @@ -635,10 +638,13 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb | ||||
|                             tab.setText(mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_3_TITLE, getString(R.string.all))); | ||||
|                             break; | ||||
|                     } | ||||
|                     if (position >= tabCount && mShowSubscribedSubreddits && sectionsPagerAdapter != null) { | ||||
|                     if (position >= tabCount && (mShowFavoriteSubscribedSubreddits || mShowSubscribedSubreddits) && sectionsPagerAdapter != null) { | ||||
|                         List<SubscribedSubredditData> favoriteSubscribedSubreddits = sectionsPagerAdapter.favoriteSubscribedSubreddits; | ||||
|                         List<SubscribedSubredditData> subscribedSubreddits = sectionsPagerAdapter.subscribedSubreddits; | ||||
|                         if (position - tabCount < subscribedSubreddits.size()) { | ||||
|                             tab.setText(subscribedSubreddits.get(position - tabCount).getName()); | ||||
|                         if (position - tabCount < favoriteSubscribedSubreddits.size()) { | ||||
|                             tab.setText(favoriteSubscribedSubreddits.get(position - tabCount).getName()); | ||||
|                         } else if (position - tabCount - favoriteSubscribedSubreddits.size() < subscribedSubreddits.size()) { | ||||
|                             tab.setText(subscribedSubreddits.get(position - tabCount - favoriteSubscribedSubreddits.size()).getName()); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
| @@ -672,6 +678,13 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb | ||||
|                         sectionsPagerAdapter.setSubscribedSubreddits(subscribedSubredditData); | ||||
|                     } | ||||
|                 }); | ||||
|         if (mShowFavoriteSubscribedSubreddits) { | ||||
|             subscribedSubredditViewModel.getAllFavoriteSubscribedSubreddits().observe(this, subscribedSubredditData -> { | ||||
|                 if (sectionsPagerAdapter != null) { | ||||
|                     sectionsPagerAdapter.setFavoriteSubscribedSubreddits(subscribedSubredditData); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         accountViewModel = new ViewModelProvider(this, | ||||
|                 new AccountViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName)).get(AccountViewModel.class); | ||||
| @@ -1003,13 +1016,17 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb | ||||
|  | ||||
|     private class SectionsPagerAdapter extends FragmentStateAdapter { | ||||
|         int tabCount; | ||||
|         boolean showFavoriteSubscribedSubreddits; | ||||
|         boolean showSubscribedSubreddits; | ||||
|         List<SubscribedSubredditData> favoriteSubscribedSubreddits; | ||||
|         List<SubscribedSubredditData> subscribedSubreddits; | ||||
|  | ||||
|         SectionsPagerAdapter(FragmentManager fm, Lifecycle lifecycle, int tabCount, boolean showSubscribedSubreddits) { | ||||
|         SectionsPagerAdapter(FragmentManager fm, Lifecycle lifecycle, int tabCount, boolean showFavoriteSubscribedSubreddits, boolean showSubscribedSubreddits) { | ||||
|             super(fm, lifecycle); | ||||
|             this.tabCount = tabCount; | ||||
|             favoriteSubscribedSubreddits = new ArrayList<>(); | ||||
|             subscribedSubreddits = new ArrayList<>(); | ||||
|             this.showFavoriteSubscribedSubreddits = showFavoriteSubscribedSubreddits; | ||||
|             this.showSubscribedSubreddits = showSubscribedSubreddits; | ||||
|         } | ||||
|  | ||||
| @@ -1049,10 +1066,17 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb | ||||
|                 String name = mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_2_NAME, ""); | ||||
|                 return generatePostFragment(postType, name); | ||||
|             } else { | ||||
|                 if (showSubscribedSubreddits) { | ||||
|                     if (position >= tabCount && position - tabCount < subscribedSubreddits.size()) { | ||||
|                 if (showFavoriteSubscribedSubreddits) { | ||||
|                     if (position >= tabCount && position - tabCount < favoriteSubscribedSubreddits.size()) { | ||||
|                         int postType = SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT; | ||||
|                         String name = subscribedSubreddits.get(position - tabCount).getName(); | ||||
|                         String name = favoriteSubscribedSubreddits.get(position - tabCount).getName(); | ||||
|                         return generatePostFragment(postType, name); | ||||
|                     } | ||||
|                 } | ||||
|                 if (showSubscribedSubreddits) { | ||||
|                     if (position >= tabCount && position - tabCount - favoriteSubscribedSubreddits.size() < subscribedSubreddits.size()) { | ||||
|                         int postType = SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT; | ||||
|                         String name = subscribedSubreddits.get(position - tabCount - favoriteSubscribedSubreddits.size()).getName(); | ||||
|                         return generatePostFragment(postType, name); | ||||
|                     } | ||||
|                 } | ||||
| @@ -1062,6 +1086,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public void setFavoriteSubscribedSubreddits(List<SubscribedSubredditData> favoriteSubscribedSubreddits) { | ||||
|             this.favoriteSubscribedSubreddits = favoriteSubscribedSubreddits; | ||||
|             notifyDataSetChanged(); | ||||
|         } | ||||
|  | ||||
|         public void setSubscribedSubreddits(List<SubscribedSubredditData> subscribedSubreddits) { | ||||
|             this.subscribedSubreddits = subscribedSubreddits; | ||||
|             notifyDataSetChanged(); | ||||
| @@ -1136,10 +1165,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb | ||||
|             if (mAccessToken == null) { | ||||
|                 return 2; | ||||
|             } | ||||
|             if (showSubscribedSubreddits) { | ||||
|                 return tabCount + subscribedSubreddits.size(); | ||||
|             } | ||||
|             return tabCount; | ||||
|             return tabCount + favoriteSubscribedSubreddits.size() + subscribedSubreddits.size(); | ||||
|         } | ||||
|  | ||||
|         @Nullable | ||||
|   | ||||
| @@ -103,6 +103,10 @@ public class CustomizeMainPageTabsFragment extends Fragment { | ||||
|     LinearLayout showSubscribedSubredditsLinearLayout; | ||||
|     @BindView(R.id.show_subscribed_subreddits_switch_material_customize_main_page_tabs_fragment) | ||||
|     SwitchMaterial showSubscribedSubredditsSwitchMaterial; | ||||
|     @BindView(R.id.show_favorite_subscribed_subreddits_linear_layout_customize_main_page_tabs_fragment) | ||||
|     LinearLayout showFavoriteSubscribedSubredditsLinearLayout; | ||||
|     @BindView(R.id.show_favorite_subscribed_subreddits_switch_material_customize_main_page_tabs_fragment) | ||||
|     SwitchMaterial showFavoriteSubscribedSubredditsSwitchMaterial; | ||||
|     @Inject | ||||
|     @Named("main_activity_tabs") | ||||
|     SharedPreferences sharedPreferences; | ||||
| @@ -153,7 +157,7 @@ public class CustomizeMainPageTabsFragment extends Fragment { | ||||
|             divider4.setVisibility(View.GONE); | ||||
|             moreTabsGroupSummaryTextView.setVisibility(View.GONE); | ||||
|             showSubscribedSubredditsLinearLayout.setVisibility(View.GONE); | ||||
|             showSubscribedSubredditsSwitchMaterial.setVisibility(View.GONE); | ||||
|             showFavoriteSubscribedSubredditsLinearLayout.setVisibility(View.GONE); | ||||
|  | ||||
|             return rootView; | ||||
|         } | ||||
| @@ -482,6 +486,12 @@ public class CustomizeMainPageTabsFragment extends Fragment { | ||||
|             showSubscribedSubredditsSwitchMaterial.performClick(); | ||||
|         }); | ||||
|  | ||||
|         showFavoriteSubscribedSubredditsSwitchMaterial.setChecked(sharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_FAVORITE_SUBSCRIBED_SUBREDDITS, false)); | ||||
|         showFavoriteSubscribedSubredditsSwitchMaterial.setOnCheckedChangeListener((compoundButton, b) -> sharedPreferences.edit().putBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_FAVORITE_SUBSCRIBED_SUBREDDITS, b).apply()); | ||||
|         showFavoriteSubscribedSubredditsLinearLayout.setOnClickListener(view -> { | ||||
|             showFavoriteSubscribedSubredditsSwitchMaterial.performClick(); | ||||
|         }); | ||||
|  | ||||
|         return rootView; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -149,6 +149,7 @@ public class SharedPreferencesUtils { | ||||
|     public static final int MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT = 4; | ||||
|     public static final int MAIN_PAGE_TAB_POST_TYPE_USER = 5; | ||||
|     public static final String MAIN_PAGE_SHOW_SUBSCRIBED_SUBREDDITS = "_main_page_show_subscribed_subreddits"; | ||||
|     public static final String MAIN_PAGE_SHOW_FAVORITE_SUBSCRIBED_SUBREDDITS = "_main_page_show_favorite_subscribed_subreddits"; | ||||
|  | ||||
|     public static final String NSFW_AND_SPOILER_SHARED_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit.nsfw_and_spoiler"; | ||||
|     public static final String NSFW_BASE = "_nsfw"; | ||||
|   | ||||
| @@ -447,6 +447,37 @@ | ||||
|             android:textSize="?attr/font_default" | ||||
|             android:fontFamily="?attr/font_family" /> | ||||
|  | ||||
|         <LinearLayout | ||||
|             android:id="@+id/show_favorite_subscribed_subreddits_linear_layout_customize_main_page_tabs_fragment" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:paddingTop="4dp" | ||||
|             android:paddingBottom="4dp" | ||||
|             android:paddingStart="72dp" | ||||
|             android:paddingEnd="16dp" | ||||
|             android:clickable="true" | ||||
|             android:focusable="true" | ||||
|             android:background="?attr/selectableItemBackground"> | ||||
|  | ||||
|             <TextView | ||||
|                 android:layout_width="0dp" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_weight="1" | ||||
|                 android:layout_marginEnd="16dp" | ||||
|                 android:layout_gravity="center_vertical" | ||||
|                 android:text="@string/settings_more_tabs_show_favorite_subscribed_subreddits_title" | ||||
|                 android:textColor="?attr/primaryTextColor" | ||||
|                 android:textSize="?attr/font_16" | ||||
|                 android:fontFamily="?attr/font_family" /> | ||||
|  | ||||
|             <com.google.android.material.switchmaterial.SwitchMaterial | ||||
|                 android:id="@+id/show_favorite_subscribed_subreddits_switch_material_customize_main_page_tabs_fragment" | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_gravity="center_vertical" /> | ||||
|  | ||||
|         </LinearLayout> | ||||
|  | ||||
|         <LinearLayout | ||||
|             android:id="@+id/show_subscribed_subreddits_linear_layout_customize_main_page_tabs_fragment" | ||||
|             android:layout_width="match_parent" | ||||
|   | ||||
| @@ -453,6 +453,7 @@ | ||||
|     <string name="settings_tab_2_summary">Tab 2</string> | ||||
|     <string name="settings_tab_3_summary">Tab 3</string> | ||||
|     <string name="settings_more_tabs_summary">More Tabs</string> | ||||
|     <string name="settings_more_tabs_show_favorite_subscribed_subreddits_title">Show Favorite Subscribed Subreddits</string> | ||||
|     <string name="settings_more_tabs_show_subscribed_subreddits_title">Show Subscribed Subreddits</string> | ||||
|     <string name="settings_tab_title">Title</string> | ||||
|     <string name="settings_tab_post_type">Type</string> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user