Customize tabs in main page for logged-in users.

This commit is contained in:
Alex Ning 2020-05-13 12:51:44 +08:00
parent 8533a2bcca
commit cf4395ed5c
8 changed files with 425 additions and 76 deletions

View File

@ -922,9 +922,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
} }
private class SectionsPagerAdapter extends FragmentPagerAdapter { private class SectionsPagerAdapter extends FragmentPagerAdapter {
private PostFragment frontPagePostFragment; private PostFragment tab1;
private PostFragment popularPostFragment; private PostFragment tab2;
private PostFragment allPostFragment; private PostFragment tab3;
SectionsPagerAdapter(FragmentManager fm) { SectionsPagerAdapter(FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
@ -956,6 +956,22 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
} }
if (position == 0) { if (position == 0) {
String postType = mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_1_POST_TYPE, SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME);
String name = mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_1_NAME, "");
return generatePostFragment(postType, name);
} else if (position == 1) {
String postType = mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_2_POST_TYPE, SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME);
String name = mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_2_NAME, "");
return generatePostFragment(postType, name);
} else {
String postType = mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_3_POST_TYPE, SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME);
String name = mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_3_NAME, "");
return generatePostFragment(postType, name);
}
}
private Fragment generatePostFragment(String postType, String name) {
if (postType.equals(SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME)) {
PostFragment fragment = new PostFragment(); PostFragment fragment = new PostFragment();
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_FRONT_PAGE); bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_FRONT_PAGE);
@ -963,11 +979,39 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken); bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
fragment.setArguments(bundle); fragment.setArguments(bundle);
return fragment; return fragment;
} else if (position == 1) { } else if (postType.equals(SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_ALL)) {
PostFragment fragment = new PostFragment(); PostFragment fragment = new PostFragment();
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT); bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
bundle.putString(PostFragment.EXTRA_NAME, "popular"); bundle.putString(PostFragment.EXTRA_NAME, "all");
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
fragment.setArguments(bundle);
return fragment;
} else if (postType.equals(SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT)) {
PostFragment fragment = new PostFragment();
Bundle bundle = new Bundle();
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
bundle.putString(PostFragment.EXTRA_NAME, name);
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
fragment.setArguments(bundle);
return fragment;
} else if (postType.equals(SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT)) {
PostFragment fragment = new PostFragment();
Bundle bundle = new Bundle();
bundle.putString(PostFragment.EXTRA_NAME, name);
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_MULTI_REDDIT);
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
fragment.setArguments(bundle);
return fragment;
} else if (postType.equals(SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_USER)) {
PostFragment fragment = new PostFragment();
Bundle bundle = new Bundle();
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_USER);
bundle.putString(PostFragment.EXTRA_USER_NAME, name);
bundle.putString(PostFragment.EXTRA_USER_WHERE, PostDataSource.USER_WHERE_SUBMITTED);
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER); bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken); bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
fragment.setArguments(bundle); fragment.setArguments(bundle);
@ -976,7 +1020,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
PostFragment fragment = new PostFragment(); PostFragment fragment = new PostFragment();
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT); bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
bundle.putString(PostFragment.EXTRA_NAME, "all"); bundle.putString(PostFragment.EXTRA_NAME, "popular");
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER); bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken); bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
fragment.setArguments(bundle); fragment.setArguments(bundle);
@ -1004,11 +1048,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
} else { } else {
switch (position) { switch (position) {
case 0: case 0:
return "Home"; return mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_1_TITLE, getString(R.string.home));
case 1: case 1:
return "Popular"; return mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_2_TITLE, getString(R.string.popular));
case 2: case 2:
return "All"; return mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_3_TITLE, getString(R.string.all));
} }
} }
return null; return null;
@ -1021,21 +1065,21 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
if (mAccessToken == null) { if (mAccessToken == null) {
switch (position) { switch (position) {
case 0: case 0:
popularPostFragment = (PostFragment) fragment; tab2 = (PostFragment) fragment;
break; break;
case 1: case 1:
allPostFragment = (PostFragment) fragment; tab3 = (PostFragment) fragment;
} }
} else { } else {
switch (position) { switch (position) {
case 0: case 0:
frontPagePostFragment = (PostFragment) fragment; tab1 = (PostFragment) fragment;
break; break;
case 1: case 1:
popularPostFragment = (PostFragment) fragment; tab2 = (PostFragment) fragment;
break; break;
case 2: case 2:
allPostFragment = (PostFragment) fragment; tab3 = (PostFragment) fragment;
} }
} }
return fragment; return fragment;
@ -1045,18 +1089,18 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
if (mAccessToken == null) { if (mAccessToken == null) {
switch (viewPager.getCurrentItem()) { switch (viewPager.getCurrentItem()) {
case 0: case 0:
return popularPostFragment.handleKeyDown(keyCode); return tab2.handleKeyDown(keyCode);
case 1: case 1:
return allPostFragment.handleKeyDown(keyCode); return tab3.handleKeyDown(keyCode);
} }
} else { } else {
switch (viewPager.getCurrentItem()) { switch (viewPager.getCurrentItem()) {
case 0: case 0:
return frontPagePostFragment.handleKeyDown(keyCode); return tab1.handleKeyDown(keyCode);
case 1: case 1:
return popularPostFragment.handleKeyDown(keyCode); return tab2.handleKeyDown(keyCode);
case 2: case 2:
return allPostFragment.handleKeyDown(keyCode); return tab3.handleKeyDown(keyCode);
} }
} }
return false; return false;
@ -1066,18 +1110,18 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
if (mAccessToken == null) { if (mAccessToken == null) {
switch (viewPager.getCurrentItem()) { switch (viewPager.getCurrentItem()) {
case 0: case 0:
return popularPostFragment.startLazyMode(); return tab2.startLazyMode();
case 1: case 1:
return allPostFragment.startLazyMode(); return tab3.startLazyMode();
} }
} else { } else {
switch (viewPager.getCurrentItem()) { switch (viewPager.getCurrentItem()) {
case 0: case 0:
return frontPagePostFragment.startLazyMode(); return tab1.startLazyMode();
case 1: case 1:
return popularPostFragment.startLazyMode(); return tab2.startLazyMode();
case 2: case 2:
return allPostFragment.startLazyMode(); return tab3.startLazyMode();
} }
} }
@ -1088,22 +1132,22 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
if (mAccessToken == null) { if (mAccessToken == null) {
switch (getCurrentLazyModeFragmentPosition()) { switch (getCurrentLazyModeFragmentPosition()) {
case 0: case 0:
popularPostFragment.stopLazyMode(); tab2.stopLazyMode();
break; break;
case 1: case 1:
allPostFragment.stopLazyMode(); tab3.stopLazyMode();
break; break;
} }
} else { } else {
switch (getCurrentLazyModeFragmentPosition()) { switch (getCurrentLazyModeFragmentPosition()) {
case 0: case 0:
frontPagePostFragment.stopLazyMode(); tab1.stopLazyMode();
break; break;
case 1: case 1:
popularPostFragment.stopLazyMode(); tab2.stopLazyMode();
break; break;
case 2: case 2:
allPostFragment.stopLazyMode(); tab3.stopLazyMode();
break; break;
} }
} }
@ -1113,22 +1157,22 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
if (mAccessToken == null) { if (mAccessToken == null) {
switch (getCurrentLazyModeFragmentPosition()) { switch (getCurrentLazyModeFragmentPosition()) {
case 0: case 0:
popularPostFragment.resumeLazyMode(false); tab2.resumeLazyMode(false);
break; break;
case 1: case 1:
allPostFragment.resumeLazyMode(false); tab3.resumeLazyMode(false);
break; break;
} }
} else { } else {
switch (getCurrentLazyModeFragmentPosition()) { switch (getCurrentLazyModeFragmentPosition()) {
case 0: case 0:
frontPagePostFragment.resumeLazyMode(false); tab1.resumeLazyMode(false);
break; break;
case 1: case 1:
popularPostFragment.resumeLazyMode(false); tab2.resumeLazyMode(false);
break; break;
case 2: case 2:
allPostFragment.resumeLazyMode(false); tab3.resumeLazyMode(false);
break; break;
} }
} }
@ -1138,21 +1182,21 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
if (mAccessToken == null) { if (mAccessToken == null) {
switch (getCurrentLazyModeFragmentPosition()) { switch (getCurrentLazyModeFragmentPosition()) {
case 0: case 0:
popularPostFragment.pauseLazyMode(false); tab2.pauseLazyMode(false);
break; break;
case 1: case 1:
allPostFragment.pauseLazyMode(false); tab3.pauseLazyMode(false);
} }
} else { } else {
switch (getCurrentLazyModeFragmentPosition()) { switch (getCurrentLazyModeFragmentPosition()) {
case 0: case 0:
frontPagePostFragment.pauseLazyMode(false); tab1.pauseLazyMode(false);
break; break;
case 1: case 1:
popularPostFragment.pauseLazyMode(false); tab2.pauseLazyMode(false);
break; break;
case 2: case 2:
allPostFragment.pauseLazyMode(false); tab3.pauseLazyMode(false);
} }
} }
} }
@ -1161,9 +1205,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
if (mAccessToken == null) { if (mAccessToken == null) {
if (!isInLazyMode) { if (!isInLazyMode) {
return -1; return -1;
} else if (popularPostFragment != null && popularPostFragment.isInLazyMode()) { } else if (tab2 != null && tab2.isInLazyMode()) {
return 0; return 0;
} else if (allPostFragment != null && allPostFragment.isInLazyMode()) { } else if (tab3 != null && tab3.isInLazyMode()) {
return 1; return 1;
} else { } else {
return -1; return -1;
@ -1171,11 +1215,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
} else { } else {
if (!isInLazyMode) { if (!isInLazyMode) {
return -1; return -1;
} else if (frontPagePostFragment != null && frontPagePostFragment.isInLazyMode()) { } else if (tab1 != null && tab1.isInLazyMode()) {
return 0; return 0;
} else if (popularPostFragment != null && popularPostFragment.isInLazyMode()) { } else if (tab2 != null && tab2.isInLazyMode()) {
return 1; return 1;
} else if (allPostFragment != null && allPostFragment.isInLazyMode()) { } else if (tab3 != null && tab3.isInLazyMode()) {
return 2; return 2;
} else { } else {
return -1; return -1;
@ -1186,9 +1230,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
void changeSortType(SortType sortType) { void changeSortType(SortType sortType) {
if (mAccessToken == null) { if (mAccessToken == null) {
if (viewPager.getCurrentItem() == 0) { if (viewPager.getCurrentItem() == 0) {
popularPostFragment.changeSortType(sortType); tab2.changeSortType(sortType);
} else { } else {
allPostFragment.changeSortType(sortType); tab3.changeSortType(sortType);
} }
} else { } else {
switch (viewPager.getCurrentItem()) { switch (viewPager.getCurrentItem()) {
@ -1198,7 +1242,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_BEST_POST, sortType.getTime().name()).apply(); mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_BEST_POST, sortType.getTime().name()).apply();
} }
frontPagePostFragment.changeSortType(sortType); tab1.changeSortType(sortType);
break; break;
case 1: case 1:
mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_POPULAR_POST, sortType.getType().name()).apply(); mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_POPULAR_POST, sortType.getType().name()).apply();
@ -1206,7 +1250,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_POPULAR_POST, sortType.getTime().name()).apply(); mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_POPULAR_POST, sortType.getTime().name()).apply();
} }
popularPostFragment.changeSortType(sortType); tab2.changeSortType(sortType);
break; break;
case 2: case 2:
mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_ALL_POST, sortType.getType().name()).apply(); mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_ALL_POST, sortType.getType().name()).apply();
@ -1214,7 +1258,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_ALL_POST, sortType.getTime().name()).apply(); mSortTypeSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_ALL_POST, sortType.getTime().name()).apply();
} }
allPostFragment.changeSortType(sortType); tab3.changeSortType(sortType);
} }
} }
} }
@ -1222,77 +1266,77 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
public void refresh() { public void refresh() {
if (mAccessToken == null) { if (mAccessToken == null) {
if (viewPager.getCurrentItem() == 0) { if (viewPager.getCurrentItem() == 0) {
if (popularPostFragment != null) { if (tab2 != null) {
popularPostFragment.refresh(); tab2.refresh();
} }
} else { } else {
if (allPostFragment != null) { if (tab3 != null) {
allPostFragment.refresh(); tab3.refresh();
} }
} }
} else { } else {
switch (viewPager.getCurrentItem()) { switch (viewPager.getCurrentItem()) {
case 0: case 0:
if (frontPagePostFragment != null) { if (tab1 != null) {
frontPagePostFragment.refresh(); tab1.refresh();
} }
break; break;
case 1: case 1:
if (popularPostFragment != null) { if (tab2 != null) {
popularPostFragment.refresh(); tab2.refresh();
} }
break; break;
case 2: case 2:
if (allPostFragment != null) { if (tab3 != null) {
allPostFragment.refresh(); tab3.refresh();
} }
} }
} }
} }
void changeNSFW(boolean nsfw) { void changeNSFW(boolean nsfw) {
if (frontPagePostFragment != null) { if (tab1 != null) {
frontPagePostFragment.changeNSFW(nsfw); tab1.changeNSFW(nsfw);
} }
if (popularPostFragment != null) { if (tab2 != null) {
popularPostFragment.changeNSFW(nsfw); tab2.changeNSFW(nsfw);
} }
if (allPostFragment != null) { if (tab3 != null) {
allPostFragment.changeNSFW(nsfw); tab3.changeNSFW(nsfw);
} }
} }
void changePostLayout(int postLayout) { void changePostLayout(int postLayout) {
if (mAccessToken == null) { if (mAccessToken == null) {
if (viewPager.getCurrentItem() == 0) { if (viewPager.getCurrentItem() == 0) {
if (popularPostFragment != null) { if (tab2 != null) {
mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_POPULAR_POST, postLayout).apply(); mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_POPULAR_POST, postLayout).apply();
popularPostFragment.changePostLayout(postLayout); tab2.changePostLayout(postLayout);
} }
} else { } else {
if (allPostFragment != null) { if (tab3 != null) {
mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_ALL_POST, postLayout).apply(); mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_ALL_POST, postLayout).apply();
allPostFragment.changePostLayout(postLayout); tab3.changePostLayout(postLayout);
} }
} }
} else { } else {
switch (viewPager.getCurrentItem()) { switch (viewPager.getCurrentItem()) {
case 0: case 0:
if (frontPagePostFragment != null) { if (tab1 != null) {
mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_FRONT_PAGE_POST, postLayout).apply(); mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_FRONT_PAGE_POST, postLayout).apply();
frontPagePostFragment.changePostLayout(postLayout); tab1.changePostLayout(postLayout);
} }
break; break;
case 1: case 1:
if (popularPostFragment != null) { if (tab2 != null) {
mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_POPULAR_POST, postLayout).apply(); mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_POPULAR_POST, postLayout).apply();
popularPostFragment.changePostLayout(postLayout); tab2.changePostLayout(postLayout);
} }
break; break;
case 2: case 2:
if (allPostFragment != null) { if (tab3 != null) {
mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_ALL_POST, postLayout).apply(); mPostLayoutSharedPreferences.edit().putInt(SharedPreferencesUtils.POST_LAYOUT_ALL_POST, postLayout).apply();
allPostFragment.changePostLayout(postLayout); tab3.changePostLayout(postLayout);
} }
} }
} }

View File

@ -51,6 +51,7 @@ import ml.docilealligator.infinityforreddit.Fragment.SubscribedSubredditsListing
import ml.docilealligator.infinityforreddit.Fragment.UserListingFragment; import ml.docilealligator.infinityforreddit.Fragment.UserListingFragment;
import ml.docilealligator.infinityforreddit.Service.SubmitPostService; import ml.docilealligator.infinityforreddit.Service.SubmitPostService;
import ml.docilealligator.infinityforreddit.Settings.AdvancedPreferenceFragment; import ml.docilealligator.infinityforreddit.Settings.AdvancedPreferenceFragment;
import ml.docilealligator.infinityforreddit.Settings.CustomizeMainPageTabsFragment;
import ml.docilealligator.infinityforreddit.Settings.GesturesAndButtonsPreferenceFragment; import ml.docilealligator.infinityforreddit.Settings.GesturesAndButtonsPreferenceFragment;
import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment; import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment;
import ml.docilealligator.infinityforreddit.Settings.NotificationPreferenceFragment; import ml.docilealligator.infinityforreddit.Settings.NotificationPreferenceFragment;
@ -164,4 +165,6 @@ public interface AppComponent {
void inject(SelectedSubredditsActivity selectedSubredditsActivity); void inject(SelectedSubredditsActivity selectedSubredditsActivity);
void inject(ReportActivity reportActivity); void inject(ReportActivity reportActivity);
void inject(CustomizeMainPageTabsFragment customizeMainPageTabsFragment);
} }

View File

@ -0,0 +1,174 @@
package ml.docilealligator.infinityforreddit.Settings;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.preference.EditTextPreference;
import androidx.preference.ListPreference;
import androidx.preference.PreferenceFragmentCompat;
import javax.inject.Inject;
import javax.inject.Named;
import ml.docilealligator.infinityforreddit.Activity.SettingsActivity;
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.Infinity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
/**
* A simple {@link Fragment} subclass.
*/
public class CustomizeMainPageTabsFragment extends PreferenceFragmentCompat {
@Inject
@Named("default")
SharedPreferences mSharedPreferences;
@Inject
CustomThemeWrapper customThemeWrapper;
private SettingsActivity activity;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.customize_main_page_tabs_preferences, rootKey);
((Infinity) activity.getApplication()).getAppComponent().inject(this);
EditTextPreference tab1TitlePreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_TAB_1_TITLE);
EditTextPreference tab2TitlePreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_TAB_2_TITLE);
EditTextPreference tab3TitlePreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_TAB_3_TITLE);
ListPreference tab1PostTypePreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_TAB_1_POST_TYPE);
ListPreference tab2PostTypePreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_TAB_2_POST_TYPE);
ListPreference tab3PostTypePreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_TAB_3_POST_TYPE);
EditTextPreference tab1NamePreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_TAB_1_NAME);
EditTextPreference tab2NamePreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_TAB_2_NAME);
EditTextPreference tab3NamePreference = findPreference(SharedPreferencesUtils.MAIN_PAGE_TAB_3_NAME);
if (tab1TitlePreference != null && tab1PostTypePreference != null && tab1NamePreference != null) {
String string = mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_1_POST_TYPE,
SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME);
if (SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT.equals(string)) {
tab1NamePreference.setVisible(true);
tab1NamePreference.setTitle(R.string.settings_tab_subreddit_name);
} else if (SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT.equals(string)) {
tab1NamePreference.setVisible(true);
tab1NamePreference.setTitle(R.string.settings_tab_multi_reddit_name);
} else if (SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_USER.equals(string)) {
tab1NamePreference.setVisible(true);
tab1NamePreference.setTitle(R.string.settings_tab_username);
}
tab1PostTypePreference.setOnPreferenceChangeListener((preference, newValue) -> {
switch ((String) newValue) {
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME:
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_POPULAR:
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_ALL:
tab1NamePreference.setVisible(false);
break;
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT:
tab1NamePreference.setVisible(true);
tab1NamePreference.setTitle(R.string.settings_tab_subreddit_name);
break;
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT:
tab1NamePreference.setVisible(true);
tab1NamePreference.setTitle(R.string.settings_tab_multi_reddit_name);
break;
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_USER:
tab1NamePreference.setVisible(true);
tab1NamePreference.setTitle(R.string.settings_tab_username);
}
return true;
});
}
if (tab2TitlePreference != null && tab2PostTypePreference != null && tab2NamePreference != null) {
String string = mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_2_POST_TYPE,
SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME);
if (SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT.equals(string)) {
tab2NamePreference.setVisible(true);
tab2NamePreference.setTitle(R.string.settings_tab_subreddit_name);
} else if (SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT.equals(string)) {
tab2NamePreference.setVisible(true);
tab2NamePreference.setTitle(R.string.settings_tab_multi_reddit_name);
} else if (SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_USER.equals(string)) {
tab2NamePreference.setVisible(true);
tab2NamePreference.setTitle(R.string.settings_tab_username);
}
tab2PostTypePreference.setOnPreferenceChangeListener((preference, newValue) -> {
switch ((String) newValue) {
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME:
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_POPULAR:
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_ALL:
tab2NamePreference.setVisible(false);
break;
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT:
tab2NamePreference.setVisible(true);
tab2NamePreference.setTitle(R.string.settings_tab_subreddit_name);
break;
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT:
tab2NamePreference.setVisible(true);
tab2NamePreference.setTitle(R.string.settings_tab_multi_reddit_name);
break;
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_USER:
tab2NamePreference.setVisible(true);
tab2NamePreference.setTitle(R.string.settings_tab_username);
}
return true;
});
}
if (tab3TitlePreference != null && tab3PostTypePreference != null && tab3NamePreference != null) {
String string = mSharedPreferences.getString(SharedPreferencesUtils.MAIN_PAGE_TAB_3_POST_TYPE,
SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME);
if (SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT.equals(string)) {
tab3NamePreference.setVisible(true);
tab3NamePreference.setTitle(R.string.settings_tab_subreddit_name);
} else if (SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT.equals(string)) {
tab3NamePreference.setVisible(true);
tab3NamePreference.setTitle(R.string.settings_tab_multi_reddit_name);
} else if (SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_USER.equals(string)) {
tab3NamePreference.setVisible(true);
tab3NamePreference.setTitle(R.string.settings_tab_username);
}
tab3PostTypePreference.setOnPreferenceChangeListener((preference, newValue) -> {
switch ((String) newValue) {
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_HOME:
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_POPULAR:
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_ALL:
tab3NamePreference.setVisible(false);
break;
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT:
tab3NamePreference.setVisible(true);
tab3NamePreference.setTitle(R.string.settings_tab_subreddit_name);
break;
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT:
tab3NamePreference.setVisible(true);
tab3NamePreference.setTitle(R.string.settings_tab_multi_reddit_name);
break;
case SharedPreferencesUtils.MAIN_PAGE_TAB_POST_TYPE_USER:
tab3NamePreference.setVisible(true);
tab3NamePreference.setTitle(R.string.settings_tab_username);
}
return true;
});
}
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
activity = (SettingsActivity) context;
}
}

View File

@ -100,4 +100,19 @@ public class SharedPreferencesUtils {
public static final String DELETE_ALL_POST_LAYOUT_DATA_IN_DATABASE = "delete_all_post_layout_data_in_database"; public static final String DELETE_ALL_POST_LAYOUT_DATA_IN_DATABASE = "delete_all_post_layout_data_in_database";
public static final String DELETE_ALL_THEMES_IN_DATABASE = "delete_all_themes_in_database"; public static final String DELETE_ALL_THEMES_IN_DATABASE = "delete_all_themes_in_database";
public static final String RESET_ALL_SETTINGS = "reset_all_settings"; public static final String RESET_ALL_SETTINGS = "reset_all_settings";
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";
public static final String MAIN_PAGE_TAB_1_POST_TYPE = "main_page_tab_1_post_type";
public static final String MAIN_PAGE_TAB_2_POST_TYPE = "main_page_tab_2_post_type";
public static final String MAIN_PAGE_TAB_3_POST_TYPE = "main_page_tab_3_post_type";
public static final String MAIN_PAGE_TAB_1_NAME = "main_page_tab_1_name";
public static final String MAIN_PAGE_TAB_2_NAME = "main_page_tab_2_name";
public static final String MAIN_PAGE_TAB_3_NAME = "main_page_tab_3_name";
public static final String MAIN_PAGE_TAB_POST_TYPE_HOME = "0";
public static final String MAIN_PAGE_TAB_POST_TYPE_POPULAR = "1";
public static final String MAIN_PAGE_TAB_POST_TYPE_ALL = "2";
public static final String MAIN_PAGE_TAB_POST_TYPE_SUBREDDIT = "3";
public static final String MAIN_PAGE_TAB_POST_TYPE_MULTIREDDIT = "4";
public static final String MAIN_PAGE_TAB_POST_TYPE_USER = "5";
} }

View File

@ -122,4 +122,22 @@
<item>XLarge</item> <item>XLarge</item>
<item>XXLarge</item> <item>XXLarge</item>
</string-array> </string-array>
<string-array name="settings_tab_post_type">
<item>Home</item>
<item>Popular</item>
<item>All</item>
<item>Subreddit</item>
<item>MultiReddit</item>
<item>User</item>
</string-array>
<string-array name="settings_tab_post_type_values">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
</string-array>
</resources> </resources>

View File

@ -321,6 +321,8 @@
<string name="settings_immersive_interface_title">Immersive Interface</string> <string name="settings_immersive_interface_title">Immersive Interface</string>
<string name="settings_immersive_interface_ignore_nav_bar_title">Ignore Navigation Bar in Immersive Interface</string> <string name="settings_immersive_interface_ignore_nav_bar_title">Ignore Navigation Bar in Immersive Interface</string>
<string name="settings_immersive_interface_ignore_nav_bar_summary">Prevent the Bottom Navigation Bar Having Extra Padding</string> <string name="settings_immersive_interface_ignore_nav_bar_summary">Prevent the Bottom Navigation Bar Having Extra Padding</string>
<string name="settings_customize_tabs_in_main_page_title">Customize Tabs in Main Page</string>
<string name="settings_customize_tabs_in_main_page_summary">Only for Logged-in User</string>
<string name="settings_enable_bottom_app_bar_title">Enable Bottom Navigation</string> <string name="settings_enable_bottom_app_bar_title">Enable Bottom Navigation</string>
<string name="settings_enable_bottom_app_bar_summary">Has No Effect in Anonymous Mode</string> <string name="settings_enable_bottom_app_bar_summary">Has No Effect in Anonymous Mode</string>
<string name="settings_vote_buttons_on_the_right_title">Vote Buttons on the Right</string> <string name="settings_vote_buttons_on_the_right_title">Vote Buttons on the Right</string>
@ -393,6 +395,15 @@
<string name="settings_delete_all_themes_in_database_title">Delete All Themes in Database</string> <string name="settings_delete_all_themes_in_database_title">Delete All Themes in Database</string>
<string name="settings_reset_all_settings_title">Reset All Settings</string> <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_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_1_summary">Tab 1</string>
<string name="settings_tab_2_summary">Tab 2</string>
<string name="settings_tab_3_summary">Tab 3</string>
<string name="settings_tab_title">Title</string>
<string name="settings_tab_post_type">Type</string>
<string name="settings_tab_subreddit_name">Subreddit Name</string>
<string name="settings_tab_multi_reddit_name">MultiReddit Name</string>
<string name="settings_tab_username">Username</string>
<string name="no_link_available">Cannot get the link</string> <string name="no_link_available">Cannot get the link</string>
@ -711,10 +722,13 @@
<string name="report_successful">Reported</string> <string name="report_successful">Reported</string>
<string name="report_failed">Report failed</string> <string name="report_failed">Report failed</string>
<string name="report_reason_not_selected">You haven\'t selected a reason</string> <string name="report_reason_not_selected">You haven\'t selected a reason</string>
<string name="report_reason_general_spam">It Is Spam</string> <string name="report_reason_general_spam">It Is Spam</string>
<string name="report_reason_general_copyright_issue">It Contains Copyright Issue</string> <string name="report_reason_general_copyright_issue">It Contains Copyright Issue</string>
<string name="report_reason_general_child_pornography">It Contains Child Pornography</string> <string name="report_reason_general_child_pornography">It Contains Child Pornography</string>
<string name="report_reason_general_abusive_content">It Contains Abusive Content</string> <string name="report_reason_general_abusive_content">It Contains Abusive Content</string>
<string name="home">Home</string>
<string name="popular">Best</string>
</resources> </resources>

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<Preference
android:icon="@drawable/ic_info_preference_24dp"
app:summary="@string/settings_tab_info"
app:enabled="false" />
<PreferenceCategory
app:title="@string/settings_tab_1_summary" />
<EditTextPreference
app:defaultValue="@string/home"
app:key="main_page_tab_1_title"
app:title="@string/settings_tab_title"
app:useSimpleSummaryProvider="true" />
<ListPreference
app:defaultValue="0"
android:entries="@array/settings_tab_post_type"
app:entryValues="@array/settings_tab_post_type_values"
app:key="main_page_tab_1_post_type"
app:title="@string/settings_tab_post_type"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
app:key="main_page_tab_1_name"
app:isPreferenceVisible="false"
app:useSimpleSummaryProvider="true" />
<PreferenceCategory
app:title="@string/settings_tab_2_summary" />
<EditTextPreference
app:defaultValue="@string/popular"
app:key="main_page_tab_2_title"
app:title="@string/settings_tab_title"
app:useSimpleSummaryProvider="true" />
<ListPreference
app:defaultValue="1"
android:entries="@array/settings_tab_post_type"
app:entryValues="@array/settings_tab_post_type_values"
app:key="main_page_tab_2_post_type"
app:title="@string/settings_tab_post_type"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
app:key="main_page_tab_2_name"
app:isPreferenceVisible="false"
app:useSimpleSummaryProvider="true" />
<PreferenceCategory
app:title="@string/settings_tab_3_summary" />
<EditTextPreference
app:defaultValue="@string/all"
app:key="main_page_tab_3_title"
app:title="@string/settings_tab_title"
app:useSimpleSummaryProvider="true" />
<ListPreference
app:defaultValue="2"
android:entries="@array/settings_tab_post_type"
app:entryValues="@array/settings_tab_post_type_values"
app:key="main_page_tab_3_post_type"
app:title="@string/settings_tab_post_type"
app:useSimpleSummaryProvider="true" />
<EditTextPreference
app:key="main_page_tab_3_name"
app:isPreferenceVisible="false"
app:useSimpleSummaryProvider="true" />
</PreferenceScreen>

View File

@ -20,6 +20,11 @@
app:summary="@string/settings_immersive_interface_ignore_nav_bar_summary" app:summary="@string/settings_immersive_interface_ignore_nav_bar_summary"
app:isPreferenceVisible="false" /> app:isPreferenceVisible="false" />
<Preference
app:title="@string/settings_customize_tabs_in_main_page_title"
app:summary="@string/settings_customize_tabs_in_main_page_summary"
app:fragment="ml.docilealligator.infinityforreddit.Settings.CustomizeMainPageTabsFragment" />
<SwitchPreference <SwitchPreference
app:defaultValue="false" app:defaultValue="false"
app:key="bottom_app_bar" app:key="bottom_app_bar"