From a75098013a60baf26ef611567b8381c38354744e Mon Sep 17 00:00:00 2001 From: Jesse Vincent Date: Sun, 28 Nov 2010 20:28:32 +0000 Subject: [PATCH] add a new quiet time preference --- res/values/strings.xml | 7 +++ res/xml/global_preferences.xml | 25 ++++++++++ src/com/fsck/k9/K9.java | 31 +++++++++++- src/com/fsck/k9/activity/setup/Prefs.java | 50 +++++++++++++++++++ .../k9/preferences/TimePickerPreference.java | 8 ++- 5 files changed, 119 insertions(+), 2 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 327ef366b..e17bd9089 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -338,6 +338,13 @@ Welcome to K-9 Mail setup. K-9 is an open source mail client for Android origin Lock-screen notifications Don\'t display message subject in notification bar when system is locked + + Quiet Time + Disable ringing, buzzing and flashing at night + Quiet Time starts + Quiet Time ends + + Set up a new account Enter this account\'s email address: (You may add %d more accounts.) diff --git a/res/xml/global_preferences.xml b/res/xml/global_preferences.xml index c55c23c29..dbc54b117 100644 --- a/res/xml/global_preferences.xml +++ b/res/xml/global_preferences.xml @@ -264,4 +264,29 @@ + + + + + + diff --git a/src/com/fsck/k9/K9.java b/src/com/fsck/k9/K9.java index 32b52a690..18d569888 100644 --- a/src/com/fsck/k9/K9.java +++ b/src/com/fsck/k9/K9.java @@ -164,6 +164,9 @@ public class K9 extends Application private static boolean mCountSearchMessages = true; private static boolean mZoomControlsEnabled = false; private static boolean mMobileOptimizedLayout = false; + private static boolean mQuietTimeEnabled = false; + private static String mQuietTimeStarts = null; + private static String mQuietTimeEnds = null; private static boolean useGalleryBugWorkaround = false; private static boolean galleryBuggy; @@ -417,7 +420,9 @@ public class K9 extends Application editor.putBoolean("manageBack", mManageBack); editor.putBoolean("zoomControlsEnabled",mZoomControlsEnabled); editor.putBoolean("mobileOptimizedLayout", mMobileOptimizedLayout); - + editor.putBoolean("quietTimeEnabled", mQuietTimeEnabled); + editor.putString("quietTimeStarts", mQuietTimeStarts); + editor.putString("quietTimeEnds", mQuietTimeEnds); editor.putBoolean("startIntegratedInbox", mStartIntegratedInbox); editor.putBoolean("measureAccounts", mMeasureAccounts); @@ -472,6 +477,10 @@ public class K9 extends Application mMobileOptimizedLayout = sprefs.getBoolean("mobileOptimizedLayout", false); mZoomControlsEnabled = sprefs.getBoolean("zoomControlsEnabled",false); + mQuietTimeEnabled = sprefs.getBoolean("quietTimeEnabled", false); + mQuietTimeStarts = sprefs.getString("quietTimeStarts", "21:00" ); + mQuietTimeEnds= sprefs.getString("quietTimeEnds", "7:00"); + mShowContactName = sprefs.getBoolean("showContactName", false); mChangeContactNameColor = sprefs.getBoolean("changeRegisteredNameColor", false); mContactNameColor = sprefs.getInt("registeredNameColor", 0xff00008f); @@ -714,9 +723,29 @@ public class K9 extends Application mMobileOptimizedLayout = mobileOptimizedLayout; } + public static boolean getQuietTimeEnabled() { + return mQuietTimeEnabled; + } + public static void setQuietTimeEnabled(boolean quietTimeEnabled) { + mQuietTimeEnabled = quietTimeEnabled; + } + public static String getQuietTimeStarts() { + return mQuietTimeStarts; + } + public static void setQuietTimeStarts(String quietTimeStarts) { + mQuietTimeStarts = quietTimeStarts; + } + + public static String getQuietTimeEnds() { + return mQuietTimeEnds; + } + + public static void setQuietTimeEnds(String quietTimeEnds) { + mQuietTimeEnds = quietTimeEnds; + } public static boolean startIntegratedInbox() { diff --git a/src/com/fsck/k9/activity/setup/Prefs.java b/src/com/fsck/k9/activity/setup/Prefs.java index 7951bbe49..eec263c87 100644 --- a/src/com/fsck/k9/activity/setup/Prefs.java +++ b/src/com/fsck/k9/activity/setup/Prefs.java @@ -15,6 +15,7 @@ import android.preference.ListPreference; import android.preference.Preference; import android.view.KeyEvent; import android.widget.Toast; +import android.widget.TimePicker; import com.fsck.k9.K9; import com.fsck.k9.Preferences; @@ -24,6 +25,8 @@ import com.fsck.k9.activity.ColorPickerDialog; import com.fsck.k9.activity.DateFormatter; import com.fsck.k9.activity.K9PreferenceActivity; import com.fsck.k9.preferences.CheckBoxListPreference; +import com.fsck.k9.preferences.TimePickerPreference; + import com.fsck.k9.service.MailService; public class Prefs extends K9PreferenceActivity @@ -60,6 +63,11 @@ public class Prefs extends K9PreferenceActivity private static final String PREFERENCE_MESSAGEVIEW_RETURN_TO_LIST = "messageview_return_to_list"; private static final String PREFERENCE_MESSAGEVIEW_ZOOM_CONTROLS_ENABLED = "messageview_zoom_controls"; + private static final String PREFERENCE_QUIET_TIME_ENABLED = "quiet_time_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_MESSAGEVIEW_MOBILE_LAYOUT = "messageview_mobile_layout"; private static final String PREFERENCE_BACKGROUND_OPS = "background_ops"; private static final String PREFERENCE_GALLERY_BUG_WORKAROUND = "use_gallery_bug_workaround"; @@ -94,6 +102,11 @@ public class Prefs extends K9PreferenceActivity private CheckBoxPreference mDebugLogging; private CheckBoxPreference mSensitiveLogging; + private CheckBoxPreference mQuietTimeEnabled; + private com.fsck.k9.preferences.TimePickerPreference mQuietTimeStarts; + private com.fsck.k9.preferences.TimePickerPreference mQuietTimeEnds; + + public static void actionPrefs(Context context) { @@ -241,6 +254,37 @@ public class Prefs extends K9PreferenceActivity mMobileOptimizedLayout.setChecked(K9.mobileOptimizedLayout()); + mQuietTimeEnabled = (CheckBoxPreference) findPreference(PREFERENCE_QUIET_TIME_ENABLED); + mQuietTimeEnabled.setChecked(K9.getQuietTimeEnabled()); + + mQuietTimeStarts = (TimePickerPreference) findPreference(PREFERENCE_QUIET_TIME_STARTS); + mQuietTimeStarts.setDefaultValue(K9.getQuietTimeStarts()); + mQuietTimeStarts.setSummary(K9.getQuietTimeStarts()); + mQuietTimeStarts.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() + { + public boolean onPreferenceChange(Preference preference, Object newValue) + { + final String time = (String) newValue; + mQuietTimeStarts.setSummary(time); + return false; + } + }); + + mQuietTimeEnds = (TimePickerPreference) findPreference(PREFERENCE_QUIET_TIME_ENDS); + mQuietTimeEnds.setSummary(K9.getQuietTimeEnds()); + mQuietTimeEnds.setDefaultValue(K9.getQuietTimeEnds()); + mQuietTimeEnds.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() + { + public boolean onPreferenceChange(Preference preference, Object newValue) + { + final String time = (String) newValue; + mQuietTimeEnds.setSummary(time); + return false; + } + }); + + + mBackgroundOps = setupListPreference(PREFERENCE_BACKGROUND_OPS, K9.getBackgroundOps().toString()); @@ -279,6 +323,12 @@ public class Prefs extends K9PreferenceActivity K9.setMessageViewFixedWidthFont(mFixedWidth.isChecked()); K9.setMessageViewReturnToList(mReturnToList.isChecked()); K9.setMobileOptimizedLayout(mMobileOptimizedLayout.isChecked()); + K9.setQuietTimeEnabled(mQuietTimeEnabled.isChecked()); + + K9.setQuietTimeStarts(mQuietTimeStarts.getTime()); + K9.setQuietTimeEnds(mQuietTimeEnds.getTime()); + + K9.setZoomControlsEnabled(mZoomControlsEnabled.isChecked()); boolean needsRefresh = K9.setBackgroundOps(mBackgroundOps.getValue()); diff --git a/src/com/fsck/k9/preferences/TimePickerPreference.java b/src/com/fsck/k9/preferences/TimePickerPreference.java index d09df11d6..51e0be4bc 100644 --- a/src/com/fsck/k9/preferences/TimePickerPreference.java +++ b/src/com/fsck/k9/preferences/TimePickerPreference.java @@ -84,7 +84,8 @@ public class TimePickerPreference extends DialogPreference implements @Override public void onTimeChanged(TimePicker view, int hour, int minute) { - persistString(hour + ":" + minute); + persistString(String.format("%02d:%02d",hour,minute)); + callChangeListener(String.format("%02d:%02d",hour,minute)); } /* @@ -136,5 +137,10 @@ public class TimePickerPreference extends DialogPreference implements return Integer.valueOf(time.split(":")[1]); } + + public String getTime() { + return getPersistedString(this.defaultValue); + } + }