diff options
author | Alex Ning <chineseperson5@gmail.com> | 2021-04-08 11:17:26 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2021-04-08 11:17:26 +0000 |
commit | 62820273346475937aea1d8109f9a4feed233ba6 (patch) | |
tree | 220ad1fe2b2b58ced1304e5ca0cf17b89356dcbb | |
parent | f22b649bee3b75bbf9687facf2895ec3653f593e (diff) | |
download | infinity-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.
4 files changed, 107 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"; diff --git a/app/src/main/res/layout/fragment_nsfw_and_spoiler.xml b/app/src/main/res/layout/fragment_nsfw_and_spoiler.xml index 5320416c..76fec79d 100644 --- a/app/src/main/res/layout/fragment_nsfw_and_spoiler.xml +++ b/app/src/main/res/layout/fragment_nsfw_and_spoiler.xml @@ -141,6 +141,54 @@ </LinearLayout> + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="@color/dividerColor" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingTop="16dp" + android:paddingStart="72dp" + android:paddingEnd="16dp" + android:text="@string/settings_nsfw_and_spoiler_dangerous_group_title" + android:textColor="@color/colorAccent" + android:textSize="?attr/font_default" + android:fontFamily="?attr/font_family" /> + + <LinearLayout + android:id="@+id/disable_nsfw_forever_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:id="@+id/disable_nsfw_forever_text_view_nsfw_and_spoiler_fragment" + 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_disable_nsfw_forever_title" + android:textColor="?attr/primaryTextColor" + android:textSize="?attr/font_16" + android:fontFamily="?attr/font_family" /> + + <com.google.android.material.switchmaterial.SwitchMaterial + android:id="@+id/disable_nsfw_forever_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>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54c20710..f0a595d7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -559,6 +559,8 @@ <string name="settings_hide_subscribed_subreddits_sections_title">Hide Subscribed Subreddits Section</string> <string name="settings_default_search_result_tab">Default Search Result Tab</string> <string name="settings_crash_reports_title">Crash Reports</string> + <string name="settings_nsfw_and_spoiler_dangerous_group_title">Dangerous</string> + <string name="settings_disable_nsfw_forever_title">Disable NSFW Forever</string> <string name="no_link_available">Cannot get the link</string> @@ -1098,4 +1100,6 @@ <string name="crash_reports_deleted">Crash reports are deleted</string> + <string name="disable_nsfw_forever_message">Once enabled, NSFW will be permanently disabled, regardless of whether the NSFW setting is enabled or not. And this option is irreversible, the only way to re-enable NSFW is to clear the app data.\n\nStill want to enable it?</string> + </resources> |