Add option to disable notifications in quiet time

Fixes #661
This commit is contained in:
Sander Baas 2015-05-27 16:18:27 +02:00 committed by cketti
parent d301d63274
commit 07c12e83d0
5 changed files with 30 additions and 0 deletions

View File

@ -237,6 +237,7 @@ public class K9 extends Application {
private static boolean mHideSpecialAccounts = false;
private static boolean mAutofitWidth;
private static boolean mQuietTimeEnabled = false;
private static boolean mQuietTimeNotificationEnabled = false;
private static String mQuietTimeStarts = null;
private static String mQuietTimeEnds = null;
private static String mAttachmentDefaultPath = "";
@ -474,6 +475,7 @@ public class K9 extends Application {
editor.putBoolean("useVolumeKeysForListNavigation", mUseVolumeKeysForListNavigation);
editor.putBoolean("autofitWidth", mAutofitWidth);
editor.putBoolean("quietTimeEnabled", mQuietTimeEnabled);
editor.putBoolean("quietTimeNotificationEnabled", mQuietTimeNotificationEnabled);
editor.putString("quietTimeStarts", mQuietTimeStarts);
editor.putString("quietTimeEnds", mQuietTimeEnds);
@ -708,6 +710,7 @@ public class K9 extends Application {
mAutofitWidth = sprefs.getBoolean("autofitWidth", true);
mQuietTimeEnabled = sprefs.getBoolean("quietTimeEnabled", false);
mQuietTimeNotificationEnabled = sprefs.getBoolean("quietTimeNotificationEnabled", false);
mQuietTimeStarts = sprefs.getString("quietTimeStarts", "21:00");
mQuietTimeEnds = sprefs.getString("quietTimeEnds", "7:00");
@ -970,6 +973,14 @@ public class K9 extends Application {
mQuietTimeEnabled = quietTimeEnabled;
}
public static boolean getQuietTimeNotificationEnabled() {
return mQuietTimeNotificationEnabled;
}
public static void setQuietTimeNotificationEnabled(boolean quietTimeNotificationEnabled) {
mQuietTimeNotificationEnabled = quietTimeNotificationEnabled;
}
public static String getQuietTimeStarts() {
return mQuietTimeStarts;
}

View File

@ -79,6 +79,7 @@ public class Prefs extends K9PreferenceActivity {
private static final String PREFERENCE_MESSAGEVIEW_RETURN_TO_LIST = "messageview_return_to_list";
private static final String PREFERENCE_MESSAGEVIEW_SHOW_NEXT = "messageview_show_next";
private static final String PREFERENCE_QUIET_TIME_ENABLED = "quiet_time_enabled";
private static final String PREFERENCE_QUIET_TIME_NOTIFICATION_ENABLED = "quiet_time_notification_enabled";
private static final String PREFERENCE_QUIET_TIME_STARTS = "quiet_time_starts";
private static final String PREFERENCE_QUIET_TIME_ENDS = "quiet_time_ends";
private static final String PREFERENCE_NOTIF_QUICK_DELETE = "notification_quick_delete";
@ -142,6 +143,7 @@ public class Prefs extends K9PreferenceActivity {
private CheckBoxListPreference mVisibleRefileActions;
private CheckBoxPreference mQuietTimeEnabled;
private CheckBoxPreference mQuietTimeNotificationEnabled;
private com.fsck.k9.preferences.TimePickerPreference mQuietTimeStarts;
private com.fsck.k9.preferences.TimePickerPreference mQuietTimeEnds;
private ListPreference mNotificationQuickDelete;
@ -309,6 +311,8 @@ public class Prefs extends K9PreferenceActivity {
mQuietTimeEnabled = (CheckBoxPreference) findPreference(PREFERENCE_QUIET_TIME_ENABLED);
mQuietTimeEnabled.setChecked(K9.getQuietTimeEnabled());
mQuietTimeNotificationEnabled = (CheckBoxPreference) findPreference(PREFERENCE_QUIET_TIME_NOTIFICATION_ENABLED);
mQuietTimeNotificationEnabled.setChecked(K9.getQuietTimeNotificationEnabled());
mQuietTimeStarts = (TimePickerPreference) findPreference(PREFERENCE_QUIET_TIME_STARTS);
mQuietTimeStarts.setDefaultValue(K9.getQuietTimeStarts());
mQuietTimeStarts.setSummary(K9.getQuietTimeStarts());
@ -485,6 +489,7 @@ public class Prefs extends K9PreferenceActivity {
K9.setMessageViewCopyActionVisible(enabledRefileActions[VISIBLE_REFILE_ACTIONS_COPY]);
K9.setMessageViewSpamActionVisible(enabledRefileActions[VISIBLE_REFILE_ACTIONS_SPAM]);
K9.setQuietTimeNotificationEnabled(mQuietTimeNotificationEnabled.isChecked());
K9.setQuietTimeStarts(mQuietTimeStarts.getTime());
K9.setQuietTimeEnds(mQuietTimeEnds.getTime());
K9.setWrapFolderNames(mWrapFolderNames.isChecked());

View File

@ -4685,6 +4685,11 @@ public class MessagingController implements Runnable {
*/
private void notifyAccount(Context context, Account account,
LocalMessage message, int previousUnreadMessageCount) {
// if it's quiet time and notifications are disabled, then we shouldn't show a notification
if (K9.isQuietTime() && K9.getQuietTimeNotificationEnabled()) {
return;
}
final NotificationData data = getNotificationData(account, previousUnreadMessageCount);
synchronized (data) {
notifyAccountWithDataLocked(context, account, message, data);

View File

@ -353,6 +353,8 @@ Please submit bug reports, contribute new features and ask questions at
<string name="quiet_time">Quiet Time</string>
<string name="quiet_time_description">Disable ringing, buzzing and flashing at night</string>
<string name="quiet_time_notification">Quiet Time notifications</string>
<string name="quiet_time_notification_description">Disable notifications during quiet time</string>
<string name="quiet_time_starts">Quiet Time starts</string>
<string name="quiet_time_ends">Quiet Time ends</string>

View File

@ -303,6 +303,13 @@
android:title="@string/quiet_time"
android:summary="@string/quiet_time_description"
/>
<CheckBoxPreference
android:key="quiet_time_notification_enabled"
android:persistent="false"
android:dependency="quiet_time_enabled"
android:title="@string/quiet_time_notification"
android:summary="@string/quiet_time_notification_description"
/>
<com.fsck.k9.preferences.TimePickerPreference
android:key="quiet_time_starts"
android:persistent="false"