aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2021-04-08 11:17:26 +0000
committerAlex Ning <chineseperson5@gmail.com>2021-04-08 11:17:26 +0000
commit62820273346475937aea1d8109f9a4feed233ba6 (patch)
tree220ad1fe2b2b58ced1304e5ca0cf17b89356dcbb /app/src/main/java
parentf22b649bee3b75bbf9687facf2895ec3653f593e (diff)
downloadinfinity-for-reddit-62820273346475937aea1d8109f9a4feed233ba6.tar
infinity-for-reddit-62820273346475937aea1d8109f9a4feed233ba6.tar.gz
infinity-for-reddit-62820273346475937aea1d8109f9a4feed233ba6.tar.bz2
infinity-for-reddit-62820273346475937aea1d8109f9a4feed233ba6.tar.lz
infinity-for-reddit-62820273346475937aea1d8109f9a4feed233ba6.tar.xz
infinity-for-reddit-62820273346475937aea1d8109f9a4feed233ba6.tar.zst
infinity-for-reddit-62820273346475937aea1d8109f9a4feed233ba6.zip
Add an option to disable NSFW forever.
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/settings/NsfwAndSpoilerFragment.java54
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java1
2 files changed, 55 insertions, 0 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/settings/NsfwAndSpoilerFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/settings/NsfwAndSpoilerFragment.java
index 99affad3..2f24d336 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/settings/NsfwAndSpoilerFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/settings/NsfwAndSpoilerFragment.java
@@ -8,11 +8,14 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
+import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.switchmaterial.SwitchMaterial;
import org.greenrobot.eventbus.EventBus;
@@ -49,6 +52,15 @@ public class NsfwAndSpoilerFragment extends Fragment {
LinearLayout blurSpoilerLinearLayout;
@BindView(R.id.blur_spoiler_switch_nsfw_and_spoiler_fragment)
SwitchMaterial blurSpoilerSwitchMaterial;
+ @BindView(R.id.disable_nsfw_forever_linear_layout_nsfw_and_spoiler_fragment)
+ LinearLayout disableNsfwForeverLinearLayout;
+ @BindView(R.id.disable_nsfw_forever_text_view_nsfw_and_spoiler_fragment)
+ TextView disableNsfwForeverTextView;
+ @BindView(R.id.disable_nsfw_forever_switch_nsfw_and_spoiler_fragment)
+ SwitchMaterial disableNsfwForeverSwitchMaterial;
+ @Inject
+ @Named("default")
+ SharedPreferences sharedPreferences;
@Inject
@Named("nsfw_and_spoiler")
SharedPreferences nsfwAndBlurringSharedPreferences;
@@ -56,6 +68,8 @@ public class NsfwAndSpoilerFragment extends Fragment {
private Activity activity;
private boolean blurNsfw;
private boolean doNotBlurNsfwInNsfwSubreddits;
+ private boolean disableNsfwForever;
+ private boolean manuallyCheckDisableNsfwForever = true;
public NsfwAndSpoilerFragment() {
// Required empty public constructor
@@ -77,6 +91,7 @@ public class NsfwAndSpoilerFragment extends Fragment {
blurNsfw = nsfwAndBlurringSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.BLUR_NSFW_BASE, true);
doNotBlurNsfwInNsfwSubreddits = nsfwAndBlurringSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.DO_NOT_BLUR_NSFW_IN_NSFW_SUBREDDITS, false);
boolean blurSpoiler = nsfwAndBlurringSharedPreferences.getBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.BLUR_SPOILER_BASE, false);
+ disableNsfwForever = sharedPreferences.getBoolean(SharedPreferencesUtils.DISABLE_NSFW_FOREVER, false);
if (enableNsfw) {
blurNsfwLinearLayout.setVisibility(View.VISIBLE);
@@ -87,6 +102,12 @@ public class NsfwAndSpoilerFragment extends Fragment {
blurNsfwSwitchMaterial.setChecked(blurNsfw);
doNotBlurNsfwInNsfwSubredditsSwitch.setChecked(doNotBlurNsfwInNsfwSubreddits);
blurSpoilerSwitchMaterial.setChecked(blurSpoiler);
+ disableNsfwForeverSwitchMaterial.setChecked(disableNsfwForever);
+ disableNsfwForeverSwitchMaterial.setEnabled(!disableNsfwForever);
+ if (disableNsfwForever) {
+ disableNsfwForeverTextView.setTextColor(ContextCompat.getColor(activity, R.color.settingsSubtitleColor));
+ disableNsfwForeverLinearLayout.setEnabled(false);
+ }
enableNsfwLinearLayout.setOnClickListener(view -> enableNsfwSwitchMaterial.performClick());
enableNsfwSwitchMaterial.setOnCheckedChangeListener((compoundButton, b) -> {
@@ -120,6 +141,39 @@ public class NsfwAndSpoilerFragment extends Fragment {
nsfwAndBlurringSharedPreferences.edit().putBoolean((accountName == null ? "" : accountName) + SharedPreferencesUtils.BLUR_SPOILER_BASE, b).apply();
EventBus.getDefault().post(new ChangeSpoilerBlurEvent(b));
});
+
+ disableNsfwForeverLinearLayout.setOnClickListener(view -> {
+ disableNsfwForeverSwitchMaterial.performClick();
+ });
+ disableNsfwForeverSwitchMaterial.setOnCheckedChangeListener((compoundButton, b) -> {
+ if (manuallyCheckDisableNsfwForever) {
+ manuallyCheckDisableNsfwForever = false;
+ new MaterialAlertDialogBuilder(activity, R.style.MaterialAlertDialogTheme)
+ .setTitle(R.string.warning)
+ .setMessage(R.string.disable_nsfw_forever_message)
+ .setPositiveButton(R.string.yes, (dialogInterface, i)
+ -> {
+ sharedPreferences.edit().putBoolean(SharedPreferencesUtils.DISABLE_NSFW_FOREVER, true).apply();
+ disableNsfwForever = true;
+ disableNsfwForeverSwitchMaterial.setEnabled(false);
+ disableNsfwForeverLinearLayout.setEnabled(false);
+ disableNsfwForeverSwitchMaterial.setChecked(true);
+ disableNsfwForeverTextView.setTextColor(ContextCompat.getColor(activity, R.color.settingsSubtitleColor));
+ EventBus.getDefault().post(new ChangeNSFWEvent(false));
+ })
+ .setNegativeButton(R.string.no, (dialogInterface, i) -> {
+ disableNsfwForeverSwitchMaterial.setChecked(false);
+ manuallyCheckDisableNsfwForever = true;
+ })
+ .setOnDismissListener(dialogInterface -> {
+ if (!disableNsfwForever) {
+ disableNsfwForeverSwitchMaterial.setChecked(false);
+ }
+ manuallyCheckDisableNsfwForever = true;
+ })
+ .show();
+ }
+ });
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 2aeb34c6..dc585d93 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/SharedPreferencesUtils.java
@@ -176,6 +176,7 @@ public class SharedPreferencesUtils {
public static final String SWIPE_BETWEEN_POSTS = "swipe_between_posts";
public static final String NUMBER_OF_COLUMNS_IN_POST_FEED_PORTRAIT_CARD_LAYOUT_2 = "number_of_columns_in_post_feed_portrait_card_layout_2";
public static final String NUMBER_OF_COLUMNS_IN_POST_FEED_LANDSCAPE_CARD_LAYOUT_2 = "number_of_columns_in_post_feed_landscape_card_layout_2";
+ public static final String DISABLE_NSFW_FOREVER = "disable_nsfw_forever";
public static final String DEFAULT_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit_preferences";
public static final String MAIN_PAGE_TABS_SHARED_PREFERENCES_FILE = "ml.docilealligator.infinityforreddit.main_page_tabs";