aboutsummaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2020-09-24 09:28:13 +0000
committerAlex Ning <chineseperson5@gmail.com>2020-09-24 09:28:13 +0000
commitd6051ca932a234da18dcd9eb351be741d085c9d4 (patch)
treedab7d3260895122e7937e5aa3abae1e857f27a4c /app/src
parentcf1d14264d305f079f6d1aaa93dd0d499eb48ade (diff)
downloadinfinity-for-reddit-d6051ca932a234da18dcd9eb351be741d085c9d4.tar
infinity-for-reddit-d6051ca932a234da18dcd9eb351be741d085c9d4.tar.gz
infinity-for-reddit-d6051ca932a234da18dcd9eb351be741d085c9d4.tar.bz2
infinity-for-reddit-d6051ca932a234da18dcd9eb351be741d085c9d4.tar.lz
infinity-for-reddit-d6051ca932a234da18dcd9eb351be741d085c9d4.tar.xz
infinity-for-reddit-d6051ca932a234da18dcd9eb351be741d085c9d4.tar.zst
infinity-for-reddit-d6051ca932a234da18dcd9eb351be741d085c9d4.zip
Support hiding tab titles. Support changing tab count.
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java83
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Settings/CustomizeMainPageTabsFragment.java33
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java2
-rw-r--r--app/src/main/res/layout/fragment_customize_main_page_tabs.xml69
-rw-r--r--app/src/main/res/values/arrays.xml6
-rw-r--r--app/src/main/res/values/strings.xml2
6 files changed, 155 insertions, 40 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java
index 384f7621..be8799c6 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java
@@ -601,46 +601,51 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
navDrawerRecyclerView.setLayoutManager(new LinearLayoutManager(this));
navDrawerRecyclerView.setAdapter(adapter);
+ int tabCount = mMainActivityTabsSharedPreferences.getInt((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_COUNT, 3);
mShowSubscribedSubreddits = mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_SUBSCRIBED_SUBREDDITS, false);
- sectionsPagerAdapter = new SectionsPagerAdapter(fragmentManager, getLifecycle(), mShowSubscribedSubreddits);
+ sectionsPagerAdapter = new SectionsPagerAdapter(fragmentManager, getLifecycle(), tabCount, mShowSubscribedSubreddits);
viewPager2.setAdapter(sectionsPagerAdapter);
viewPager2.setOffscreenPageLimit(1);
viewPager2.setUserInputEnabled(!mDisableSwipingBetweenTabs);
- if (mShowSubscribedSubreddits) {
- tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
- } else {
- tabLayout.setTabMode(TabLayout.MODE_FIXED);
- }
- new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> {
- if (mAccessToken == null) {
- switch (position) {
- case 0:
- tab.setText(R.string.popular);
- break;
- case 1:
- tab.setText(R.string.all);
- break;
- }
+ if (mMainActivityTabsSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_TAB_NAMES, true)) {
+ if (mShowSubscribedSubreddits) {
+ tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
} else {
- switch (position) {
- case 0:
- tab.setText(mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_1_TITLE, getString(R.string.home)));
- break;
- case 1:
- tab.setText(mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_2_TITLE, getString(R.string.popular)));
- break;
- case 2:
- tab.setText(mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_3_TITLE, getString(R.string.all)));
- break;
- }
- if (position >= 3 && mShowSubscribedSubreddits && sectionsPagerAdapter != null) {
- List<SubscribedSubredditData> subscribedSubreddits = sectionsPagerAdapter.subscribedSubreddits;
- if (position - 3 < subscribedSubreddits.size()) {
- tab.setText(subscribedSubreddits.get(position - 3).getName());
+ tabLayout.setTabMode(TabLayout.MODE_FIXED);
+ }
+ new TabLayoutMediator(tabLayout, viewPager2, (tab, position) -> {
+ if (mAccessToken == null) {
+ switch (position) {
+ case 0:
+ tab.setText(R.string.popular);
+ break;
+ case 1:
+ tab.setText(R.string.all);
+ break;
+ }
+ } else {
+ switch (position) {
+ case 0:
+ tab.setText(mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_1_TITLE, getString(R.string.home)));
+ break;
+ case 1:
+ tab.setText(mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_2_TITLE, getString(R.string.popular)));
+ break;
+ case 2:
+ tab.setText(mMainActivityTabsSharedPreferences.getString((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_3_TITLE, getString(R.string.all)));
+ break;
+ }
+ if (position >= tabCount && mShowSubscribedSubreddits && sectionsPagerAdapter != null) {
+ List<SubscribedSubredditData> subscribedSubreddits = sectionsPagerAdapter.subscribedSubreddits;
+ if (position - tabCount < subscribedSubreddits.size()) {
+ tab.setText(subscribedSubreddits.get(position - tabCount).getName());
+ }
}
}
- }
- }).attach();
+ }).attach();
+ } else {
+ tabLayout.setVisibility(View.GONE);
+ }
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
@@ -997,11 +1002,13 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
}
private class SectionsPagerAdapter extends FragmentStateAdapter {
+ int tabCount;
boolean showSubscribedSubreddits;
List<SubscribedSubredditData> subscribedSubreddits;
- SectionsPagerAdapter(FragmentManager fm, Lifecycle lifecycle, boolean showSubscribedSubreddits) {
+ SectionsPagerAdapter(FragmentManager fm, Lifecycle lifecycle, int tabCount, boolean showSubscribedSubreddits) {
super(fm, lifecycle);
+ this.tabCount = tabCount;
subscribedSubreddits = new ArrayList<>();
this.showSubscribedSubreddits = showSubscribedSubreddits;
}
@@ -1043,9 +1050,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
return generatePostFragment(postType, name);
} else {
if (showSubscribedSubreddits) {
- if (position > 2 && position - 3 < subscribedSubreddits.size()) {
+ if (position >= tabCount && position - tabCount < subscribedSubreddits.size()) {
int postType = SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT;
- String name = subscribedSubreddits.get(position - 3).getName();
+ String name = subscribedSubreddits.get(position - tabCount).getName();
return generatePostFragment(postType, name);
}
}
@@ -1130,9 +1137,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
return 2;
}
if (showSubscribedSubreddits) {
- return 3 + subscribedSubreddits.size();
+ return tabCount + subscribedSubreddits.size();
}
- return 3;
+ return tabCount;
}
@Nullable
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/CustomizeMainPageTabsFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/CustomizeMainPageTabsFragment.java
index fe75de74..a07ad3c4 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/CustomizeMainPageTabsFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Settings/CustomizeMainPageTabsFragment.java
@@ -33,6 +33,14 @@ public class CustomizeMainPageTabsFragment extends Fragment {
@BindView(R.id.info_text_view_customize_main_page_tabs_fragment)
TextView infoTextView;
+ @BindView(R.id.tab_count_linear_layout_customize_main_page_tabs_fragment)
+ LinearLayout tabCountLinearLayout;
+ @BindView(R.id.tab_count_text_view_customize_main_page_tabs_fragment)
+ TextView tabCountTextView;
+ @BindView(R.id.show_tab_names_linear_layout_customize_main_page_tabs_fragment)
+ LinearLayout showTabNamesLinearLayout;
+ @BindView(R.id.show_tab_names_switch_material_customize_main_page_tabs_fragment)
+ SwitchMaterial showTabNamesSwitch;
@BindView(R.id.divider_1_customize_main_page_tabs_fragment)
View divider1;
@BindView(R.id.tab_1_group_summary_customize_main_page_tabs_fragment)
@@ -99,6 +107,7 @@ public class CustomizeMainPageTabsFragment extends Fragment {
@Named("main_activity_tabs")
SharedPreferences sharedPreferences;
private Activity activity;
+ private int tabCount;
private String tab1CurrentTitle;
private int tab1CurrentPostType;
private String tab1CurrentName;
@@ -128,6 +137,8 @@ public class CustomizeMainPageTabsFragment extends Fragment {
if (accountName == null) {
infoTextView.setText(R.string.settings_customize_tabs_in_main_page_summary);
divider1.setVisibility(View.GONE);
+ tabCountLinearLayout.setVisibility(View.GONE);
+ showTabNamesLinearLayout.setVisibility(View.GONE);
tab1GroupSummaryTextView.setVisibility(View.GONE);
tab1TitleLinearLayout.setVisibility(View.GONE);
tab1TypeLinearLayout.setVisibility(View.GONE);
@@ -147,6 +158,25 @@ public class CustomizeMainPageTabsFragment extends Fragment {
return rootView;
}
+ tabCount = sharedPreferences.getInt((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_COUNT, 3);
+ tabCountTextView.setText(Integer.toString(tabCount));
+ tabCountLinearLayout.setOnClickListener(view -> {
+ new MaterialAlertDialogBuilder(activity, R.style.MaterialAlertDialogTheme)
+ .setTitle(R.string.settings_tab_count)
+ .setSingleChoiceItems(R.array.settings_main_page_tab_count, tabCount - 1, (dialogInterface, i) -> {
+ tabCount = i + 1;
+ sharedPreferences.edit().putInt((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_COUNT, tabCount).apply();
+ tabCountTextView.setText(Integer.toString(tabCount));
+ dialogInterface.dismiss();
+ })
+ .show();
+ });
+
+ boolean showTabNames = sharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_TAB_NAMES, true);
+ showTabNamesSwitch.setChecked(showTabNames);
+ showTabNamesSwitch.setOnCheckedChangeListener((compoundButton, b) -> sharedPreferences.edit().putBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_TAB_NAMES, b).apply());
+ showTabNamesLinearLayout.setOnClickListener(view -> showTabNamesSwitch.performClick());
+
String[] typeValues = activity.getResources().getStringArray(R.array.settings_tab_post_type);
tab1CurrentTitle = sharedPreferences.getString((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_TAB_1_TITLE, getString(R.string.home));
@@ -447,12 +477,11 @@ public class CustomizeMainPageTabsFragment extends Fragment {
});
showSubscribedSubredditsSwitchMaterial.setChecked(sharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_SUBSCRIBED_SUBREDDITS, false));
+ showSubscribedSubredditsSwitchMaterial.setOnCheckedChangeListener((compoundButton, b) -> sharedPreferences.edit().putBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_SUBSCRIBED_SUBREDDITS, b).apply());
showSubscribedSubredditsLinearLayout.setOnClickListener(view -> {
showSubscribedSubredditsSwitchMaterial.performClick();
});
- showSubscribedSubredditsSwitchMaterial.setOnCheckedChangeListener((compoundButton, b) -> sharedPreferences.edit().putBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.MAIN_PAGE_SHOW_SUBSCRIBED_SUBREDDITS, b).apply());
-
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 20f56eb7..fd5e9a47 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Utils/SharedPreferencesUtils.java
@@ -131,6 +131,8 @@ public class SharedPreferencesUtils {
public static final String SAVE_FRONT_PAGE_SCROLLED_POSITION = "save_front_page_scrolled_position";
public static final String MAIN_PAGE_TABS_SHARED_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit.main_page_tabs";
+ public static final String MAIN_PAGE_TAB_COUNT = "_main_page_tab_count";
+ public static final String MAIN_PAGE_SHOW_TAB_NAMES = "_main_page_show_tab_names";
public static final String MAIN_PAGE_TAB_1_TITLE = "_main_page_tab_1_title";
public static final String MAIN_PAGE_TAB_2_TITLE = "_main_page_tab_2_title";
public static final String MAIN_PAGE_TAB_3_TITLE = "_main_page_tab_3_title";
diff --git a/app/src/main/res/layout/fragment_customize_main_page_tabs.xml b/app/src/main/res/layout/fragment_customize_main_page_tabs.xml
index bd91d961..9a91549a 100644
--- a/app/src/main/res/layout/fragment_customize_main_page_tabs.xml
+++ b/app/src/main/res/layout/fragment_customize_main_page_tabs.xml
@@ -24,6 +24,75 @@
android:fontFamily="?attr/font_family"
app:drawableStartCompat="@drawable/ic_info_preference_24dp" />
+ <LinearLayout
+ android:id="@+id/tab_count_linear_layout_customize_main_page_tabs_fragment"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingTop="16dp"
+ android:paddingBottom="16dp"
+ android:paddingStart="72dp"
+ android:paddingEnd="16dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:background="?attr/selectableItemBackground">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:layout_marginEnd="16dp"
+ android:layout_gravity="center_vertical"
+ android:text="@string/settings_tab_count"
+ android:textColor="?attr/primaryTextColor"
+ android:textSize="?attr/font_16"
+ android:fontFamily="?attr/font_family" />
+
+ <TextView
+ android:id="@+id/tab_count_text_view_customize_main_page_tabs_fragment"
+ android:layout_width="match_parent"
+ 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_subscribed_subreddits_title"
+ android:textColor="?attr/secondaryTextColor"
+ android:textSize="?attr/font_default"
+ android:fontFamily="?attr/font_family" />
+
+ </LinearLayout>
+
+ <LinearLayout
+ android:id="@+id/show_tab_names_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_show_tab_names"
+ android:textColor="?attr/primaryTextColor"
+ android:textSize="?attr/font_16"
+ android:fontFamily="?attr/font_family" />
+
+ <com.google.android.material.switchmaterial.SwitchMaterial
+ android:id="@+id/show_tab_names_switch_material_customize_main_page_tabs_fragment"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical" />
+
+ </LinearLayout>
+
<View
android:id="@+id/divider_1_customize_main_page_tabs_fragment"
android:layout_width="match_parent"
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 9d6e4448..fd1a386c 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -224,4 +224,10 @@
<item>1</item>
<item>2</item>
</string-array>
+
+ <string-array name="settings_main_page_tab_count">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ </string-array>
</resources> \ 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 5cfee780..45212b52 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -447,6 +447,8 @@
<string name="settings_reset_all_settings_title">Reset All Settings</string>
<string name="settings_advanced_settings_summary">Clean the database and shared preferences</string>
<string name="settings_tab_info">Restart the app to see the changes</string>
+ <string name="settings_tab_count">Tab Count</string>
+ <string name="settings_show_tab_names">Show Tab Names</string>
<string name="settings_tab_1_summary">Tab 1</string>
<string name="settings_tab_2_summary">Tab 2</string>
<string name="settings_tab_3_summary">Tab 3</string>