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" />
+
+