From 548bf64c9d8c370ac219f02782a2547ba8e76f50 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 12 Jan 2025 20:28:23 +0100 Subject: [PATCH] add option to also vibrate in dnd mode --- .../keyboard/latin/AudioAndHapticFeedbackManager.java | 2 +- .../latin/settings/PreferencesSettingsFragment.java | 3 +++ .../java/helium314/keyboard/latin/settings/Settings.java | 1 + .../helium314/keyboard/latin/settings/SettingsValues.java | 2 ++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/prefs_screen_preferences.xml | 6 ++++++ 6 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java b/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java index 90b8f10e0..53527a2c7 100644 --- a/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java +++ b/app/src/main/java/helium314/keyboard/latin/AudioAndHapticFeedbackManager.java @@ -92,7 +92,7 @@ public final class AudioAndHapticFeedbackManager { } public void performHapticFeedback(final View viewToPerformHapticFeedbackOn) { - if (!mSettingsValues.mVibrateOn || mDoNotDisturb) { + if (!mSettingsValues.mVibrateOn || (mDoNotDisturb && !mSettingsValues.mVibrateInDndMode)) { return; } if (mSettingsValues.mKeypressVibrationDuration >= 0) { diff --git a/app/src/main/java/helium314/keyboard/latin/settings/PreferencesSettingsFragment.java b/app/src/main/java/helium314/keyboard/latin/settings/PreferencesSettingsFragment.java index 914efed62..d1d2a3df3 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/PreferencesSettingsFragment.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/PreferencesSettingsFragment.java @@ -45,6 +45,7 @@ public final class PreferencesSettingsFragment extends SubScreenFragment { if (!AudioAndHapticFeedbackManager.getInstance().hasVibrator()) { removePreference(Settings.PREF_VIBRATE_ON); + removePreference(Settings.PREF_VIBRATE_IN_DND_MODE); removePreference(Settings.PREF_VIBRATION_DURATION_SETTINGS); } @@ -112,6 +113,8 @@ public final class PreferencesSettingsFragment extends SubScreenFragment { final Resources res = getResources(); setPreferenceVisible(Settings.PREF_VIBRATION_DURATION_SETTINGS, Settings.readVibrationEnabled(prefs, res)); + setPreferenceVisible(Settings.PREF_VIBRATE_IN_DND_MODE, + Settings.readVibrationEnabled(prefs, res)); setPreferenceVisible(Settings.PREF_KEYPRESS_SOUND_VOLUME, Settings.readKeypressSoundEnabled(prefs, res)); setPreferenceVisible(Settings.PREF_CLIPBOARD_HISTORY_RETENTION_TIME, diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java index 25ffa31e7..ec377d82d 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java @@ -88,6 +88,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_AUTO_CAP = "auto_cap"; public static final String PREF_VIBRATE_ON = "vibrate_on"; + public static final String PREF_VIBRATE_IN_DND_MODE = "vibrate_in_dnd_mode"; public static final String PREF_SOUND_ON = "sound_on"; public static final String PREF_POPUP_ON = "popup_on"; public static final String PREF_AUTO_CORRECTION = "auto_correction"; diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java index 690e31389..dd7524cd0 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java @@ -60,6 +60,7 @@ public class SettingsValues { // From preferences public final boolean mAutoCap; public final boolean mVibrateOn; + public final boolean mVibrateInDndMode; public final boolean mSoundOn; public final boolean mKeyPreviewPopupOn; public final boolean mShowsVoiceInputKey; @@ -155,6 +156,7 @@ public class SettingsValues { // Get the settings preferences mAutoCap = prefs.getBoolean(Settings.PREF_AUTO_CAP, true) && ScriptUtils.scriptSupportsUppercase(mLocale); mVibrateOn = Settings.readVibrationEnabled(prefs, res); + mVibrateInDndMode = prefs.getBoolean(Settings.PREF_VIBRATE_IN_DND_MODE, false); mSoundOn = Settings.readKeypressSoundEnabled(prefs, res); mKeyPreviewPopupOn = Settings.readKeyPreviewPopupEnabled(prefs, res); mSlidingKeyInputPreviewEnabled = prefs.getBoolean( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4061dea81..7f3a0c3f6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,6 +18,8 @@ Spell checker uses entries from your contact list Vibrate on keypress + + Vibrate in do not disturb mode Sound on keypress diff --git a/app/src/main/res/xml/prefs_screen_preferences.xml b/app/src/main/res/xml/prefs_screen_preferences.xml index 2153ef40e..915d8a5b9 100644 --- a/app/src/main/res/xml/prefs_screen_preferences.xml +++ b/app/src/main/res/xml/prefs_screen_preferences.xml @@ -43,6 +43,12 @@ android:title="@string/prefs_keypress_vibration_duration_settings" latin:maxValue="@integer/config_max_vibration_duration" /> + +