mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-01-01 13:57:10 +01:00
Support hiding tab titles. Support changing tab count.
This commit is contained in:
parent
cf1d14264d
commit
d6051ca932
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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";
|
||||
|
@ -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"
|
||||
|
@ -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>
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user