mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-10 12:47:26 +01:00
Set NSFW, NSFW blurring and spoiler blurring on a per-user basis. Only close the account section in the navigation drawer after dismissing if the account section is open.
This commit is contained in:
parent
d730b719b8
commit
396501e350
@ -176,6 +176,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
||||
@Named("main_activity_tabs")
|
||||
SharedPreferences mMainActivityTabsSharedPreferences;
|
||||
@Inject
|
||||
@Named("nsfw_and_spoiler")
|
||||
SharedPreferences mNsfwAndSpoilerSharedPreferences;
|
||||
@Inject
|
||||
CustomThemeWrapper mCustomThemeWrapper;
|
||||
private FragmentManager fragmentManager;
|
||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||
@ -264,8 +267,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
||||
@Override
|
||||
public void onDrawerClosed(View drawerView) {
|
||||
if (adapter != null) {
|
||||
adapter.closeAccountSectionWithoutChangeIconResource();
|
||||
adapter.notifyItemChanged(0);
|
||||
if (adapter.closeAccountSectionWithoutChangeIconResource(true)) {
|
||||
adapter.notifyItemChanged(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -480,7 +484,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
||||
}
|
||||
|
||||
adapter = new NavigationDrawerRecyclerViewAdapter(this, mSharedPreferences,
|
||||
mCustomThemeWrapper, mAccountName,
|
||||
mNsfwAndSpoilerSharedPreferences, mCustomThemeWrapper, mAccountName,
|
||||
mProfileImageUrl, mBannerImageUrl, mKarma,
|
||||
new NavigationDrawerRecyclerViewAdapter.ItemClickListener() {
|
||||
@Override
|
||||
@ -536,13 +540,13 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
||||
break;
|
||||
case R.string.enable_nsfw:
|
||||
if (sectionsPagerAdapter != null) {
|
||||
mSharedPreferences.edit().putBoolean(SharedPreferencesUtils.NSFW_KEY, true).apply();
|
||||
mNsfwAndSpoilerSharedPreferences.edit().putBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.NSFW_BASE, true).apply();
|
||||
sectionsPagerAdapter.changeNSFW(true);
|
||||
}
|
||||
break;
|
||||
case R.string.disable_nsfw:
|
||||
if (sectionsPagerAdapter != null) {
|
||||
mSharedPreferences.edit().putBoolean(SharedPreferencesUtils.NSFW_KEY, false).apply();
|
||||
mNsfwAndSpoilerSharedPreferences.edit().putBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.NSFW_BASE, false).apply();
|
||||
sectionsPagerAdapter.changeNSFW(false);
|
||||
}
|
||||
break;
|
||||
|
@ -238,7 +238,7 @@ public class SearchResultActivity extends BaseActivity implements SortTypeSelect
|
||||
tab.setText(R.string.posts);
|
||||
break;
|
||||
case 1:
|
||||
tab.setText(R.string.comments);
|
||||
tab.setText(R.string.subreddits);
|
||||
break;
|
||||
case 2:
|
||||
tab.setText(R.string.users);
|
||||
|
@ -33,6 +33,7 @@ import ml.docilealligator.infinityforreddit.Settings.FontPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.GesturesAndButtonsPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.InterfacePreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.NsfwAndBlurringFragment;
|
||||
|
||||
public class SettingsActivity extends BaseActivity implements
|
||||
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {
|
||||
@ -159,6 +160,8 @@ public class SettingsActivity extends BaseActivity implements
|
||||
pref.getFragment());
|
||||
if (fragment instanceof CustomizeMainPageTabsFragment) {
|
||||
args.putString(CustomizeMainPageTabsFragment.EXTRA_ACCOUNT_NAME, mAccountName);
|
||||
} else if (fragment instanceof NsfwAndBlurringFragment) {
|
||||
args.putString(NsfwAndBlurringFragment.EXTRA_ACCOUNT_NAME, mAccountName);
|
||||
}
|
||||
fragment.setArguments(args);
|
||||
fragment.setTargetFragment(caller, 0);
|
||||
|
@ -195,6 +195,9 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
||||
@Named("sort_type")
|
||||
SharedPreferences mSortTypeSharedPreferences;
|
||||
@Inject
|
||||
@Named("nsfw_and_spoiler")
|
||||
SharedPreferences mNsfwAndSpoilerSharedPreferences;
|
||||
@Inject
|
||||
CustomThemeWrapper mCustomThemeWrapper;
|
||||
@Inject
|
||||
ExoCreator mExoCreator;
|
||||
@ -623,7 +626,7 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
||||
mCustomThemeWrapper, mRetrofit, mOauthRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, mGlide,
|
||||
mWindowWidth, mAccessToken, mAccountName, mPost, mLocale, mSingleCommentId,
|
||||
isSingleCommentThreadMode, mSharedPreferences, mExoCreator,
|
||||
isSingleCommentThreadMode, mSharedPreferences, mNsfwAndSpoilerSharedPreferences, mExoCreator,
|
||||
new CommentAndPostRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
|
||||
@Override
|
||||
public void updatePost(Post post) {
|
||||
@ -786,7 +789,8 @@ public class ViewPostDetailActivity extends BaseActivity implements FlairBottomS
|
||||
mCustomThemeWrapper, mRetrofit, mOauthRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, mGlide,
|
||||
mWindowWidth, mAccessToken, mAccountName, mPost, mLocale,
|
||||
mSingleCommentId, isSingleCommentThreadMode, mSharedPreferences, mExoCreator,
|
||||
mSingleCommentId, isSingleCommentThreadMode, mSharedPreferences,
|
||||
mNsfwAndSpoilerSharedPreferences, mExoCreator,
|
||||
new CommentAndPostRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
|
||||
@Override
|
||||
public void updatePost(Post post) {
|
||||
|
@ -240,7 +240,8 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
||||
int imageViewWidth, String accessToken, String accountName,
|
||||
Post post, Locale locale, String singleCommentId,
|
||||
boolean isSingleCommentThreadMode,
|
||||
SharedPreferences sharedPreferences, ExoCreator exoCreator,
|
||||
SharedPreferences sharedPreferences,
|
||||
SharedPreferences nsfwAndSpoilerSharedPreferences, ExoCreator exoCreator,
|
||||
CommentRecyclerViewAdapterCallback commentRecyclerViewAdapterCallback) {
|
||||
mActivity = activity;
|
||||
mRetrofit = retrofit;
|
||||
@ -449,8 +450,8 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
||||
mSingleCommentId = singleCommentId;
|
||||
mIsSingleCommentThreadMode = isSingleCommentThreadMode;
|
||||
|
||||
mNeedBlurNsfw = sharedPreferences.getBoolean(SharedPreferencesUtils.BLUR_NSFW_KEY, true);
|
||||
mNeedBlurSpoiler = sharedPreferences.getBoolean(SharedPreferencesUtils.BLUR_SPOILER_KEY, false);
|
||||
mNeedBlurNsfw = nsfwAndSpoilerSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.BLUR_NSFW_BASE, true);
|
||||
mNeedBlurSpoiler = nsfwAndSpoilerSharedPreferences.getBoolean((mAccountName == null ? "" : mAccountName) + SharedPreferencesUtils.BLUR_SPOILER_BASE, false);
|
||||
mVoteButtonsOnTheRight = sharedPreferences.getBoolean(SharedPreferencesUtils.VOTE_BUTTONS_ON_THE_RIGHT_KEY, false);
|
||||
mShowElapsedTime = sharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_ELAPSED_TIME_KEY, false);
|
||||
mTimeFormatPattern = sharedPreferences.getString(SharedPreferencesUtils.TIME_FORMAT_KEY, SharedPreferencesUtils.TIME_FORMAT_DEFAULT_VALUE);
|
||||
|
@ -74,6 +74,7 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
private int primaryIconColor;
|
||||
|
||||
public NavigationDrawerRecyclerViewAdapter(AppCompatActivity appCompatActivity, SharedPreferences sharedPreferences,
|
||||
SharedPreferences nsfwAndSpoilerSharedPreferences,
|
||||
CustomThemeWrapper customThemeWrapper,
|
||||
String accountName, String userIconUrl,
|
||||
String userBannerUrl, int karma,
|
||||
@ -85,7 +86,7 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
this.userIconUrl = userIconUrl;
|
||||
this.userBannerUrl = userBannerUrl;
|
||||
this.karma = karma;
|
||||
isNSFWEnabled = sharedPreferences.getBoolean(SharedPreferencesUtils.NSFW_KEY, false);
|
||||
isNSFWEnabled = nsfwAndSpoilerSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.NSFW_BASE, false);
|
||||
requireAuthToAccountSection = sharedPreferences.getBoolean(SharedPreferencesUtils.REQUIRE_AUTHENTICATION_TO_GO_TO_ACCOUNT_SECTION_IN_NAVIGATION_DRAWER, false);
|
||||
isLoggedIn = accountName != null;
|
||||
this.itemClickListener = itemClickListener;
|
||||
@ -223,7 +224,7 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
}
|
||||
} else {
|
||||
((NavHeaderViewHolder) holder).dropIconImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_baseline_arrow_drop_down_24px, null));
|
||||
closeAccountSectionWithoutChangeIconResource();
|
||||
closeAccountSectionWithoutChangeIconResource(false);
|
||||
}
|
||||
});
|
||||
} else if (holder instanceof MenuGroupTitleViewHolder) {
|
||||
@ -413,18 +414,24 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
}
|
||||
}
|
||||
|
||||
public void closeAccountSectionWithoutChangeIconResource() {
|
||||
notifyItemRangeRemoved(1, getItemCount() - 1);
|
||||
if (isLoggedIn) {
|
||||
if (subscribedSubreddits != null) {
|
||||
notifyItemRangeInserted(1, subscribedSubreddits.size() + CURRENT_MENU_ITEMS - 1);
|
||||
public boolean closeAccountSectionWithoutChangeIconResource(boolean checkIsInMainPage) {
|
||||
if (!(checkIsInMainPage && isInMainPage)) {
|
||||
notifyItemRangeRemoved(1, getItemCount() - 1);
|
||||
if (isLoggedIn) {
|
||||
if (subscribedSubreddits != null) {
|
||||
notifyItemRangeInserted(1, subscribedSubreddits.size() + CURRENT_MENU_ITEMS - 1);
|
||||
} else {
|
||||
notifyItemRangeInserted(1, CURRENT_MENU_ITEMS - 1);
|
||||
}
|
||||
} else {
|
||||
notifyItemRangeInserted(1, CURRENT_MENU_ITEMS - 1);
|
||||
notifyItemRangeInserted(1, 2);
|
||||
}
|
||||
} else {
|
||||
notifyItemRangeInserted(1, 2);
|
||||
isInMainPage = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
isInMainPage = true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void openAccountSection(ImageView dropIconImageView) {
|
||||
|
@ -194,8 +194,9 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
Retrofit gfycatRetrofit, Retrofit redgifsRetrofit,
|
||||
RedditDataRoomDatabase redditDataRoomDatabase,
|
||||
CustomThemeWrapper customThemeWrapper, Locale locale, int imageViewWidth,
|
||||
String accessToken, int postType, int postLayout, boolean displaySubredditName,
|
||||
SharedPreferences sharedPreferences, ExoCreator exoCreator, Callback callback) {
|
||||
String accessToken, String accountName, int postType, int postLayout, boolean displaySubredditName,
|
||||
SharedPreferences sharedPreferences, SharedPreferences nsfwAndSpoilerSharedPreferences,
|
||||
ExoCreator exoCreator, Callback callback) {
|
||||
super(DIFF_CALLBACK);
|
||||
if (activity != null) {
|
||||
mActivity = activity;
|
||||
@ -207,8 +208,8 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
mAccessToken = accessToken;
|
||||
mPostType = postType;
|
||||
mDisplaySubredditName = displaySubredditName;
|
||||
mNeedBlurNSFW = sharedPreferences.getBoolean(SharedPreferencesUtils.BLUR_NSFW_KEY, true);
|
||||
mNeedBlurSpoiler = sharedPreferences.getBoolean(SharedPreferencesUtils.BLUR_SPOILER_KEY, false);
|
||||
mNeedBlurNSFW = nsfwAndSpoilerSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.BLUR_NSFW_BASE, true);
|
||||
mNeedBlurSpoiler = nsfwAndSpoilerSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.BLUR_SPOILER_BASE, false);
|
||||
mVoteButtonsOnTheRight = sharedPreferences.getBoolean(SharedPreferencesUtils.VOTE_BUTTONS_ON_THE_RIGHT_KEY, false);
|
||||
mShowElapsedTime = sharedPreferences.getBoolean(SharedPreferencesUtils.SHOW_ELAPSED_TIME_KEY, false);
|
||||
mTimeFormatPattern = sharedPreferences.getString(SharedPreferencesUtils.TIME_FORMAT_KEY, SharedPreferencesUtils.TIME_FORMAT_DEFAULT_VALUE);
|
||||
|
@ -66,6 +66,7 @@ import ml.docilealligator.infinityforreddit.Settings.DownloadLocationPreferenceF
|
||||
import ml.docilealligator.infinityforreddit.Settings.GesturesAndButtonsPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.NotificationPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.NsfwAndBlurringFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.SecurityPreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.ThemePreferenceFragment;
|
||||
import ml.docilealligator.infinityforreddit.Settings.VideoPreferenceFragment;
|
||||
@ -206,4 +207,6 @@ public interface AppComponent {
|
||||
void inject(SelectUserFlairActivity selectUserFlairActivity);
|
||||
|
||||
void inject(SecurityPreferenceFragment securityPreferenceFragment);
|
||||
|
||||
void inject(NsfwAndBlurringFragment nsfwAndBlurringFragment);
|
||||
}
|
||||
|
@ -149,7 +149,6 @@ class AppModule {
|
||||
.readTimeout(30, TimeUnit.SECONDS)
|
||||
.writeTimeout(30, TimeUnit.SECONDS)
|
||||
.connectionPool(new ConnectionPool(0, 1, TimeUnit.NANOSECONDS));
|
||||
//.addInterceptor(new Okhttp3DebugInterceptor(mApplication));
|
||||
return okHttpClientBuilder.build();
|
||||
}
|
||||
|
||||
@ -211,6 +210,12 @@ class AppModule {
|
||||
return mApplication.getSharedPreferences(SharedPreferencesUtils.MAIN_PAGE_TABS_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Named("nsfw_and_spoiler")
|
||||
SharedPreferences provideNsfwAndSpoilerSharedPreferences() {
|
||||
return mApplication.getSharedPreferences(SharedPreferencesUtils.NSFW_AND_SPOILER_SHARED_PREFERENCES_FILE, Context.MODE_PRIVATE);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
CustomThemeWrapper provideCustomThemeWrapper(@Named("light_theme") SharedPreferences lightThemeSharedPreferences,
|
||||
|
@ -159,6 +159,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
@Named("post_layout")
|
||||
SharedPreferences mPostLayoutSharedPreferences;
|
||||
@Inject
|
||||
@Named("nsfw_and_spoiler")
|
||||
SharedPreferences mNsfwAndSpoilerSharedPreferences;
|
||||
@Inject
|
||||
CustomThemeWrapper customThemeWrapper;
|
||||
@Inject
|
||||
ExoCreator exoCreator;
|
||||
@ -396,7 +399,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
int filter = getArguments().getInt(EXTRA_FILTER);
|
||||
String accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
|
||||
accountName = getArguments().getString(EXTRA_ACCOUNT_NAME);
|
||||
boolean nsfw = mSharedPreferences.getBoolean(SharedPreferencesUtils.NSFW_KEY, false);
|
||||
boolean nsfw = mNsfwAndSpoilerSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.NSFW_BASE, false);
|
||||
int defaultPostLayout = Integer.parseInt(mSharedPreferences.getString(SharedPreferencesUtils.DEFAULT_POST_LAYOUT_KEY, "0"));
|
||||
savePostFeedScrolledPosition = mSharedPreferences.getBoolean(SharedPreferencesUtils.SAVE_FRONT_PAGE_SCROLLED_POSITION, false);
|
||||
vibrateWhenActionTriggered = mSharedPreferences.getBoolean(SharedPreferencesUtils.VIBRATE_WHEN_ACTION_TRIGGERED, true);
|
||||
@ -414,8 +417,8 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, true,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
windowWidth, accessToken, accountName, postType, postLayout, true,
|
||||
mSharedPreferences, mNsfwAndSpoilerSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
mPostViewModel.retryLoadingMore();
|
||||
@ -462,8 +465,8 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, displaySubredditName,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
windowWidth, accessToken, accountName, postType, postLayout, displaySubredditName,
|
||||
mSharedPreferences, mNsfwAndSpoilerSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
mPostViewModel.retryLoadingMore();
|
||||
@ -511,8 +514,8 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, true,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
windowWidth, accessToken, accountName, postType, postLayout, true,
|
||||
mSharedPreferences, mNsfwAndSpoilerSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
mPostViewModel.retryLoadingMore();
|
||||
@ -558,8 +561,8 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, true,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
windowWidth, accessToken, accountName, postType, postLayout, true,
|
||||
mSharedPreferences, mNsfwAndSpoilerSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
mPostViewModel.retryLoadingMore();
|
||||
@ -598,8 +601,8 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mGfycatRetrofit,
|
||||
mRedgifsRetrofit, mRedditDataRoomDatabase, customThemeWrapper, locale,
|
||||
windowWidth, accessToken, postType, postLayout, true,
|
||||
mSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
windowWidth, accessToken, accountName, postType, postLayout, true,
|
||||
mSharedPreferences, mNsfwAndSpoilerSharedPreferences, exoCreator, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
mPostViewModel.retryLoadingMore();
|
||||
|
@ -58,6 +58,12 @@ public class AdvancedPreferenceFragment extends PreferenceFragmentCompat {
|
||||
@Inject
|
||||
@Named("amoled_theme")
|
||||
SharedPreferences amoledThemeSharedPreferences;
|
||||
@Inject
|
||||
@Named("main_activity_tabs")
|
||||
SharedPreferences mainActivityTabsSharedPreferences;
|
||||
@Inject
|
||||
@Named("nsfw_and_spoiler")
|
||||
SharedPreferences nsfwAndBlurringSharedPreferences;
|
||||
private Activity activity;
|
||||
|
||||
@Override
|
||||
@ -178,6 +184,9 @@ public class AdvancedPreferenceFragment extends PreferenceFragmentCompat {
|
||||
editor.remove(SharedPreferencesUtils.MAIN_PAGE_TAB_1_NAME_LEGACY);
|
||||
editor.remove(SharedPreferencesUtils.MAIN_PAGE_TAB_2_NAME_LEGACY);
|
||||
editor.remove(SharedPreferencesUtils.MAIN_PAGE_TAB_3_NAME_LEGACY);
|
||||
editor.remove(SharedPreferencesUtils.NSFW_KEY_LEGACY);
|
||||
editor.remove(SharedPreferencesUtils.BLUR_NSFW_KEY_LEGACY);
|
||||
editor.remove(SharedPreferencesUtils.BLUR_SPOILER_KEY_LEGACY);
|
||||
|
||||
SharedPreferences.Editor sortTypeEditor = mSortTypeSharedPreferences.edit();
|
||||
sortTypeEditor.remove(SharedPreferencesUtils.SORT_TYPE_ALL_POST_LEGACY);
|
||||
@ -207,6 +216,9 @@ public class AdvancedPreferenceFragment extends PreferenceFragmentCompat {
|
||||
.setPositiveButton(R.string.yes, (dialogInterface, i)
|
||||
-> {
|
||||
mSharedPreferences.edit().clear().apply();
|
||||
mainActivityTabsSharedPreferences.edit().clear().apply();
|
||||
nsfwAndBlurringSharedPreferences.edit().clear().apply();
|
||||
|
||||
Toast.makeText(activity, R.string.reset_all_settings_success, Toast.LENGTH_SHORT).show();
|
||||
EventBus.getDefault().post(new RecreateActivityEvent());
|
||||
})
|
||||
|
@ -17,10 +17,7 @@ import org.greenrobot.eventbus.EventBus;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWBlurEvent;
|
||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
||||
import ml.docilealligator.infinityforreddit.Event.ChangeSavePostFeedScrolledPositionEvent;
|
||||
import ml.docilealligator.infinityforreddit.Event.ChangeSpoilerBlurEvent;
|
||||
import ml.docilealligator.infinityforreddit.Event.RecreateActivityEvent;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
@ -47,9 +44,6 @@ public class MainPreferenceFragment extends PreferenceFragmentCompat {
|
||||
Preference securityPreference = findPreference(SharedPreferencesUtils.SECURITY);
|
||||
SwitchPreference savePostFeedScrolledPositionSwitch = findPreference(SharedPreferencesUtils.SAVE_FRONT_PAGE_SCROLLED_POSITION);
|
||||
SwitchPreference confirmToExitSwitch = findPreference(SharedPreferencesUtils.CONFIRM_TO_EXIT);
|
||||
SwitchPreference nsfwSwitch = findPreference(SharedPreferencesUtils.NSFW_KEY);
|
||||
SwitchPreference blurNSFWSwitch = findPreference(SharedPreferencesUtils.BLUR_NSFW_KEY);
|
||||
SwitchPreference blurSpoilerSwitch = findPreference(SharedPreferencesUtils.BLUR_SPOILER_KEY);
|
||||
|
||||
if (savePostFeedScrolledPositionSwitch != null) {
|
||||
savePostFeedScrolledPositionSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
@ -68,38 +62,6 @@ public class MainPreferenceFragment extends PreferenceFragmentCompat {
|
||||
});
|
||||
}
|
||||
|
||||
if (nsfwSwitch != null) {
|
||||
nsfwSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
EventBus.getDefault().post(new ChangeNSFWEvent((Boolean) newValue));
|
||||
if (blurNSFWSwitch != null) {
|
||||
blurNSFWSwitch.setVisible((Boolean) newValue);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
if (blurNSFWSwitch != null) {
|
||||
boolean nsfwEnabled = sharedPreferences.getBoolean(SharedPreferencesUtils.NSFW_KEY, false);
|
||||
|
||||
if (nsfwEnabled) {
|
||||
blurNSFWSwitch.setVisible(true);
|
||||
} else {
|
||||
blurNSFWSwitch.setVisible(false);
|
||||
}
|
||||
|
||||
blurNSFWSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
EventBus.getDefault().post(new ChangeNSFWBlurEvent((Boolean) newValue));
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
if (blurSpoilerSwitch != null) {
|
||||
blurSpoilerSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
EventBus.getDefault().post(new ChangeSpoilerBlurEvent((Boolean) newValue));
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
BiometricManager biometricManager = BiometricManager.from(activity);
|
||||
if (biometricManager.canAuthenticate(BIOMETRIC_STRONG | DEVICE_CREDENTIAL) != BiometricManager.BIOMETRIC_SUCCESS) {
|
||||
if (securityPreference != null) {
|
||||
|
@ -0,0 +1,112 @@
|
||||
package ml.docilealligator.infinityforreddit.Settings;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.google.android.material.switchmaterial.SwitchMaterial;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWBlurEvent;
|
||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
||||
import ml.docilealligator.infinityforreddit.Event.ChangeSpoilerBlurEvent;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
|
||||
|
||||
public class NsfwAndBlurringFragment extends Fragment {
|
||||
|
||||
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
||||
|
||||
@BindView(R.id.enable_nsfw_linear_layout_nsfw_and_spoiler_fragment)
|
||||
LinearLayout enableNsfwLinearLayout;
|
||||
@BindView(R.id.enable_nsfw_switch_nsfw_and_spoiler_fragment)
|
||||
SwitchMaterial enableNsfwSwitchMaterial;
|
||||
@BindView(R.id.blur_nsfw_linear_layout_nsfw_and_spoiler_fragment)
|
||||
LinearLayout blurNsfwLinearLayout;
|
||||
@BindView(R.id.blur_nsfw_switch_nsfw_and_spoiler_fragment)
|
||||
SwitchMaterial blurNsfwSwitchMaterial;
|
||||
@BindView(R.id.blur_spoiler_linear_layout_nsfw_and_spoiler_fragment)
|
||||
LinearLayout blurSpoilerLinearLayout;
|
||||
@BindView(R.id.blur_spoiler_switch_nsfw_and_spoiler_fragment)
|
||||
SwitchMaterial blurSpoilerSwitchMaterial;
|
||||
@Inject
|
||||
@Named("nsfw_and_spoiler")
|
||||
SharedPreferences nsfwAndBlurringSharedPreferences;
|
||||
|
||||
private Activity activity;
|
||||
|
||||
public NsfwAndBlurringFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
View rootView = inflater.inflate(R.layout.fragment_nsfw_and_spoiler, container, false);
|
||||
|
||||
((Infinity) activity.getApplication()).getAppComponent().inject(this);
|
||||
|
||||
ButterKnife.bind(this, rootView);
|
||||
|
||||
String accountName = getArguments().getString(EXTRA_ACCOUNT_NAME);
|
||||
|
||||
boolean enableNsfw = nsfwAndBlurringSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.NSFW_BASE, false);
|
||||
boolean blurNsfw = nsfwAndBlurringSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.BLUR_NSFW_BASE, true);
|
||||
boolean blurSpoiler = nsfwAndBlurringSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.BLUR_SPOILER_BASE, false);
|
||||
|
||||
if (enableNsfw) {
|
||||
blurNsfwLinearLayout.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
enableNsfwSwitchMaterial.setChecked(enableNsfw);
|
||||
blurNsfwSwitchMaterial.setChecked(blurNsfw);
|
||||
blurSpoilerSwitchMaterial.setChecked(blurSpoiler);
|
||||
|
||||
enableNsfwLinearLayout.setOnClickListener(view -> enableNsfwSwitchMaterial.performClick());
|
||||
enableNsfwSwitchMaterial.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
nsfwAndBlurringSharedPreferences.edit().putBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.NSFW_BASE, b).apply();
|
||||
if (b) {
|
||||
blurNsfwLinearLayout.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
blurNsfwLinearLayout.setVisibility(View.GONE);
|
||||
}
|
||||
EventBus.getDefault().post(new ChangeNSFWEvent(b));
|
||||
});
|
||||
|
||||
blurNsfwLinearLayout.setOnClickListener(view -> blurNsfwSwitchMaterial.performClick());
|
||||
blurNsfwSwitchMaterial.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
nsfwAndBlurringSharedPreferences.edit().putBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.BLUR_NSFW_BASE, b).apply();
|
||||
EventBus.getDefault().post(new ChangeNSFWBlurEvent(b));
|
||||
});
|
||||
|
||||
blurSpoilerLinearLayout.setOnClickListener(view -> blurSpoilerSwitchMaterial.performClick());
|
||||
blurSpoilerSwitchMaterial.setOnCheckedChangeListener((compoundButton, b) -> {
|
||||
nsfwAndBlurringSharedPreferences.edit().putBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.BLUR_SPOILER_BASE, b).apply();
|
||||
EventBus.getDefault().post(new ChangeSpoilerBlurEvent(b));
|
||||
});
|
||||
return rootView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
this.activity = (AppCompatActivity) context;
|
||||
}
|
||||
}
|
@ -8,9 +8,6 @@ public class SharedPreferencesUtils {
|
||||
public static final String ENABLE_NOTIFICATION_KEY = "enable_notification";
|
||||
public static final String NOTIFICATION_INTERVAL_KEY = "notificaiton_interval";
|
||||
public static final String LAZY_MODE_INTERVAL_KEY = "lazy_mode_interval";
|
||||
public static final String NSFW_KEY = "nsfw";
|
||||
public static final String BLUR_NSFW_KEY = "blur_nsfw";
|
||||
public static final String BLUR_SPOILER_KEY = "blur_spoiler";
|
||||
public static final String THEME_KEY = "theme";
|
||||
public static final String ICON_FOREGROUND_KEY = "icon_foreground";
|
||||
public static final String ICON_BACKGROUND_KEY = "icon_background";
|
||||
@ -127,6 +124,11 @@ public class SharedPreferencesUtils {
|
||||
public static final String LONG_PRESS_TO_HIDE_TOOLBAR_IN_COMPACT_LAYOUT = "long_press_to_hide_toolbar_in_compact_layout";
|
||||
public static final String POST_COMPACT_LAYOUT_TOOLBAR_HIDDEN_BY_DEFAULT = "post_compact_layout_toolbar_hidden_by_default";
|
||||
public static final String SECURITY = "security";
|
||||
public static final String START_AUTOPLAY_VISIBLE_AREA_OFFSET_PORTRAIT = "start_autoplay_visible_area_offset_portrait";
|
||||
public static final String START_AUTOPLAY_VISIBLE_AREA_OFFSET_LANDSCAPE = "start_autoplay_visible_area_offset_landscape";
|
||||
public static final String MUTE_NSFW_VIDEO = "mute_nsfw_video";
|
||||
public static final String VIDEO_PLAYER_IGNORE_NAV_BAR = "video_player_ignore_nav_bar";
|
||||
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_1_TITLE = "_main_page_tab_1_title";
|
||||
@ -145,11 +147,10 @@ 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 START_AUTOPLAY_VISIBLE_AREA_OFFSET_PORTRAIT = "start_autoplay_visible_area_offset_portrait";
|
||||
public static final String START_AUTOPLAY_VISIBLE_AREA_OFFSET_LANDSCAPE = "start_autoplay_visible_area_offset_landscape";
|
||||
public static final String MUTE_NSFW_VIDEO = "mute_nsfw_video";
|
||||
public static final String VIDEO_PLAYER_IGNORE_NAV_BAR = "video_player_ignore_nav_bar";
|
||||
public static final String SAVE_FRONT_PAGE_SCROLLED_POSITION = "save_front_page_scrolled_position";
|
||||
public static final String NSFW_AND_SPOILER_SHARED_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit.nsfw_and_spoiler";
|
||||
public static final String NSFW_BASE = "_nsfw";
|
||||
public static final String BLUR_NSFW_BASE = "_blur_nsfw";
|
||||
public static final String BLUR_SPOILER_BASE = "_blur_spoiler";
|
||||
|
||||
//Legacy Settings
|
||||
public static final String MAIN_PAGE_TAB_1_TITLE_LEGACY = "main_page_tab_1_title";
|
||||
@ -169,4 +170,8 @@ public class SharedPreferencesUtils {
|
||||
|
||||
public static final String POST_LAYOUT_POPULAR_POST_LEGACY = "post_layout_popular_post";
|
||||
public static final String POST_LAYOUT_ALL_POST_LEGACY = "post_layout_all_post";
|
||||
|
||||
public static final String NSFW_KEY_LEGACY = "nsfw";
|
||||
public static final String BLUR_NSFW_KEY_LEGACY = "blur_nsfw";
|
||||
public static final String BLUR_SPOILER_KEY_LEGACY = "blur_spoiler";
|
||||
}
|
||||
|
113
app/src/main/res/layout/fragment_nsfw_and_spoiler.xml
Normal file
113
app/src/main/res/layout/fragment_nsfw_and_spoiler.xml
Normal file
@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
tools:context=".Settings.NsfwAndBlurringFragment">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/enable_nsfw_linear_layout_nsfw_and_spoiler_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:paddingStart="16dp"
|
||||
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"
|
||||
app:drawableStartCompat="@drawable/ic_nsfw_on_24dp"
|
||||
android:drawablePadding="32dp"
|
||||
android:text="@string/settings_enable_nsfw_title"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/enable_nsfw_switch_nsfw_and_spoiler_fragment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/blur_nsfw_linear_layout_nsfw_and_spoiler_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="4dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:paddingStart="72dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="gone"
|
||||
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_blur_nsfw_title"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/blur_nsfw_switch_nsfw_and_spoiler_fragment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/blur_spoiler_linear_layout_nsfw_and_spoiler_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_blur_spoiler_title"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
||||
android:id="@+id/blur_spoiler_switch_nsfw_and_spoiler_fragment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
@ -392,6 +392,7 @@
|
||||
<string name="settings_font_size_title">Font Size</string>
|
||||
<string name="settings_title_font_size_title">Title Font Size</string>
|
||||
<string name="settings_content_font_size_title">Content Font Size</string>
|
||||
<string name="settings_nsfw_and_spoiler_title">NSFW & Spoiler</string>
|
||||
<string name="settings_enable_nsfw_title">Enable NSFW</string>
|
||||
<string name="settings_blur_nsfw_title">Blur NSFW Images</string>
|
||||
<string name="settings_blur_spoiler_title">Blur Spoiler Images</string>
|
||||
|
@ -65,22 +65,10 @@
|
||||
app:icon="@drawable/ic_exit_24dp"
|
||||
app:title="@string/settings_confirm_to_exit" />
|
||||
|
||||
<SwitchPreference
|
||||
app:defaultValue="false"
|
||||
app:key="nsfw"
|
||||
<Preference
|
||||
app:icon="@drawable/ic_nsfw_on_24dp"
|
||||
app:title="@string/settings_enable_nsfw_title" />
|
||||
|
||||
<SwitchPreference
|
||||
app:defaultValue="true"
|
||||
app:key="blur_nsfw"
|
||||
app:title="@string/settings_blur_nsfw_title"
|
||||
app:isPreferenceVisible="false" />
|
||||
|
||||
<SwitchPreference
|
||||
app:defaultValue="false"
|
||||
app:key="blur_spoiler"
|
||||
app:title="@string/settings_blur_spoiler_title" />
|
||||
app:title="@string/settings_nsfw_and_spoiler_title"
|
||||
app:fragment="ml.docilealligator.infinityforreddit.Settings.NsfwAndBlurringFragment"/>
|
||||
|
||||
<Preference
|
||||
app:title="@string/settings_advanced_master_title"
|
||||
|
Loading…
Reference in New Issue
Block a user