From 0ecc49815f1b90f57a8040254bda0faa3eb46a47 Mon Sep 17 00:00:00 2001 From: Joe Steele Date: Thu, 4 Apr 2013 12:00:18 -0400 Subject: [PATCH 1/5] Don't show a disabled preference if there is nothing a user can do to enable it. --- src/com/fsck/k9/activity/setup/Prefs.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/com/fsck/k9/activity/setup/Prefs.java b/src/com/fsck/k9/activity/setup/Prefs.java index c29aa8bfc..fa8505779 100644 --- a/src/com/fsck/k9/activity/setup/Prefs.java +++ b/src/com/fsck/k9/activity/setup/Prefs.java @@ -17,6 +17,7 @@ import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; +import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import android.text.TextUtils; import android.widget.Toast; @@ -94,6 +95,7 @@ public class Prefs extends K9PreferenceActivity { private static final int ACTIVITY_CHOOSE_FOLDER = 1; + private static final String PREFERENCE_CATEGORY_MESSAGEVIEW_PREFERENCES = "messageview_preferences"; private ListPreference mLanguage; private ListPreference mTheme; @@ -282,11 +284,10 @@ public class Prefs extends K9PreferenceActivity { mShowNext.setChecked(K9.messageViewShowNext()); mMobileOptimizedLayout = (CheckBoxPreference) findPreference(PREFERENCE_MESSAGEVIEW_MOBILE_LAYOUT); + mMobileOptimizedLayout.setChecked(K9.mobileOptimizedLayout()); if (!MessageWebView.isSingleColumnLayoutSupported()) { - mMobileOptimizedLayout.setEnabled(false); - mMobileOptimizedLayout.setChecked(false); - } else { - mMobileOptimizedLayout.setChecked(K9.mobileOptimizedLayout()); + PreferenceCategory category = (PreferenceCategory) findPreference(PREFERENCE_CATEGORY_MESSAGEVIEW_PREFERENCES); + category.removePreference(mMobileOptimizedLayout); } mQuietTimeEnabled = (CheckBoxPreference) findPreference(PREFERENCE_QUIET_TIME_ENABLED); From d9979cb1a2be3ef90c54b01450694e1eec861764 Mon Sep 17 00:00:00 2001 From: Joe Steele Date: Thu, 4 Apr 2013 17:11:17 -0400 Subject: [PATCH 2/5] Issue 4503: Auto-fit messages option Create a preference option to automatically shrink messages to fit the screen width (default setting is "shrink"). --- res/values/strings.xml | 2 ++ res/xml/global_preferences.xml | 6 ++++++ src/com/fsck/k9/K9.java | 11 +++++++++++ src/com/fsck/k9/activity/setup/Prefs.java | 6 ++++++ src/com/fsck/k9/preferences/GlobalSettings.java | 3 +++ src/com/fsck/k9/preferences/Settings.java | 2 +- src/com/fsck/k9/view/MessageWebView.java | 8 ++++++++ 7 files changed, 37 insertions(+), 1 deletion(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index dc60041e1..3963a7eb0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -325,6 +325,8 @@ Please submit bug reports, contribute new features and ask questions at Fixed-width fonts Use a fixed-width font when showing plain-text messages + Auto-fit messages + Shrink messages to fit the screen Return to list after delete Return to message list after message deletion Show next message after delete diff --git a/res/xml/global_preferences.xml b/res/xml/global_preferences.xml index f10fa93b0..ef3ecd56f 100644 --- a/res/xml/global_preferences.xml +++ b/res/xml/global_preferences.xml @@ -217,6 +217,12 @@ android:title="@string/settings_messageview_mobile_layout_label" android:summary="@string/settings_messageview_mobile_layout_summary" /> + + diff --git a/src/com/fsck/k9/K9.java b/src/com/fsck/k9/K9.java index d2c843b94..5b1589552 100644 --- a/src/com/fsck/k9/K9.java +++ b/src/com/fsck/k9/K9.java @@ -239,6 +239,7 @@ public class K9 extends Application { private static boolean mCountSearchMessages = true; private static boolean mHideSpecialAccounts = false; private static boolean mMobileOptimizedLayout = false; + private static boolean mAutofitWidth; private static boolean mQuietTimeEnabled = false; private static String mQuietTimeStarts = null; private static String mQuietTimeEnds = null; @@ -487,6 +488,7 @@ public class K9 extends Application { editor.putBoolean("useVolumeKeysForNavigation", mUseVolumeKeysForNavigation); editor.putBoolean("useVolumeKeysForListNavigation", mUseVolumeKeysForListNavigation); editor.putBoolean("mobileOptimizedLayout", mMobileOptimizedLayout); + editor.putBoolean("autofitWidth", mAutofitWidth); editor.putBoolean("quietTimeEnabled", mQuietTimeEnabled); editor.putString("quietTimeStarts", mQuietTimeStarts); editor.putString("quietTimeEnds", mQuietTimeEnds); @@ -684,6 +686,7 @@ public class K9 extends Application { mMessageListPreviewLines = sprefs.getInt("messageListPreviewLines", 2); mMobileOptimizedLayout = sprefs.getBoolean("mobileOptimizedLayout", false); + mAutofitWidth = sprefs.getBoolean("autofitWidth", true); mQuietTimeEnabled = sprefs.getBoolean("quietTimeEnabled", false); mQuietTimeStarts = sprefs.getString("quietTimeStarts", "21:00"); @@ -933,6 +936,14 @@ public class K9 extends Application { mMobileOptimizedLayout = mobileOptimizedLayout; } + public static boolean autofitWidth() { + return mAutofitWidth; + } + + public static void setAutofitWidth(boolean autofitWidth) { + mAutofitWidth = autofitWidth; + } + public static boolean getQuietTimeEnabled() { return mQuietTimeEnabled; } diff --git a/src/com/fsck/k9/activity/setup/Prefs.java b/src/com/fsck/k9/activity/setup/Prefs.java index fa8505779..128f22c2a 100644 --- a/src/com/fsck/k9/activity/setup/Prefs.java +++ b/src/com/fsck/k9/activity/setup/Prefs.java @@ -82,6 +82,7 @@ public class Prefs extends K9PreferenceActivity { private static final String PREFERENCE_NOTIF_QUICK_DELETE = "notification_quick_delete"; private static final String PREFERENCE_MESSAGEVIEW_MOBILE_LAYOUT = "messageview_mobile_layout"; + private static final String PREFERENCE_AUTOFIT_WIDTH = "messageview_autofit_width"; private static final String PREFERENCE_BACKGROUND_OPS = "background_ops"; private static final String PREFERENCE_GALLERY_BUG_WORKAROUND = "use_gallery_bug_workaround"; private static final String PREFERENCE_DEBUG_LOGGING = "debug_logging"; @@ -122,6 +123,7 @@ public class Prefs extends K9PreferenceActivity { private CheckBoxPreference mReturnToList; private CheckBoxPreference mShowNext; private CheckBoxPreference mMobileOptimizedLayout; + private CheckBoxPreference mAutofitWidth; private ListPreference mBackgroundOps; private CheckBoxPreference mUseGalleryBugWorkaround; private CheckBoxPreference mDebugLogging; @@ -290,6 +292,9 @@ public class Prefs extends K9PreferenceActivity { category.removePreference(mMobileOptimizedLayout); } + mAutofitWidth = (CheckBoxPreference) findPreference(PREFERENCE_AUTOFIT_WIDTH); + mAutofitWidth.setChecked(K9.autofitWidth()); + mQuietTimeEnabled = (CheckBoxPreference) findPreference(PREFERENCE_QUIET_TIME_ENABLED); mQuietTimeEnabled.setChecked(K9.getQuietTimeEnabled()); @@ -458,6 +463,7 @@ public class Prefs extends K9PreferenceActivity { K9.setMessageViewReturnToList(mReturnToList.isChecked()); K9.setMessageViewShowNext(mShowNext.isChecked()); K9.setMobileOptimizedLayout(mMobileOptimizedLayout.isChecked()); + K9.setAutofitWidth(mAutofitWidth.isChecked()); K9.setQuietTimeEnabled(mQuietTimeEnabled.isChecked()); K9.setQuietTimeStarts(mQuietTimeStarts.getTime()); diff --git a/src/com/fsck/k9/preferences/GlobalSettings.java b/src/com/fsck/k9/preferences/GlobalSettings.java index 9a88fde94..03eec7870 100644 --- a/src/com/fsck/k9/preferences/GlobalSettings.java +++ b/src/com/fsck/k9/preferences/GlobalSettings.java @@ -221,6 +221,9 @@ public class GlobalSettings { s.put("showContactPicture", Settings.versions( new V(25, new BooleanSetting(true)) )); + s.put("autofitWidth", Settings.versions( + new V(26, new BooleanSetting(true)) + )); SETTINGS = Collections.unmodifiableMap(s); diff --git a/src/com/fsck/k9/preferences/Settings.java b/src/com/fsck/k9/preferences/Settings.java index b56f2d87e..e52872f20 100644 --- a/src/com/fsck/k9/preferences/Settings.java +++ b/src/com/fsck/k9/preferences/Settings.java @@ -35,7 +35,7 @@ public class Settings { * * @see SettingsExporter */ - public static final int VERSION = 26; + public static final int VERSION = 27; public static Map validate(int version, Map> settings, diff --git a/src/com/fsck/k9/view/MessageWebView.java b/src/com/fsck/k9/view/MessageWebView.java index 1d54f1254..06d17c1fa 100644 --- a/src/com/fsck/k9/view/MessageWebView.java +++ b/src/com/fsck/k9/view/MessageWebView.java @@ -112,6 +112,14 @@ public class MessageWebView extends TitleBarWebView { webSettings.setSupportZoom(true); webSettings.setBuiltInZoomControls(true); webSettings.setUseWideViewPort(true); + if (K9.autofitWidth()) { + // 1% will be smaller than overview, so it effectively + // goes into overview mode. + // Tried the following, neither of which worked: + // webSettings.setLoadWithOverviewMode(true); + // setInitialScale(0); + setInitialScale(1); + } disableDisplayZoomControls(); From aedbe4697553d5f303b26455be549fdf253329c4 Mon Sep 17 00:00:00 2001 From: Joe Steele Date: Fri, 5 Apr 2013 11:02:20 -0400 Subject: [PATCH 3/5] Correct preference version number. New number should match updated Settings.VERSION --- src/com/fsck/k9/preferences/GlobalSettings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/fsck/k9/preferences/GlobalSettings.java b/src/com/fsck/k9/preferences/GlobalSettings.java index 03eec7870..2a80f4917 100644 --- a/src/com/fsck/k9/preferences/GlobalSettings.java +++ b/src/com/fsck/k9/preferences/GlobalSettings.java @@ -222,7 +222,7 @@ public class GlobalSettings { new V(25, new BooleanSetting(true)) )); s.put("autofitWidth", Settings.versions( - new V(26, new BooleanSetting(true)) + new V(27, new BooleanSetting(true)) )); SETTINGS = Collections.unmodifiableMap(s); From 84769d2433d7be3dd257222e4351f56d4f45b3f0 Mon Sep 17 00:00:00 2001 From: Joe Steele Date: Thu, 11 Apr 2013 22:26:32 -0400 Subject: [PATCH 4/5] Fix indentation --- src/com/fsck/k9/view/MessageWebView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/fsck/k9/view/MessageWebView.java b/src/com/fsck/k9/view/MessageWebView.java index 06d17c1fa..0951971e7 100644 --- a/src/com/fsck/k9/view/MessageWebView.java +++ b/src/com/fsck/k9/view/MessageWebView.java @@ -119,7 +119,7 @@ public class MessageWebView extends TitleBarWebView { // webSettings.setLoadWithOverviewMode(true); // setInitialScale(0); setInitialScale(1); - } + } disableDisplayZoomControls(); From 97a2f1b2614e83af4dc683ef8e80b349bb7f867b Mon Sep 17 00:00:00 2001 From: Joe Steele Date: Sun, 28 Apr 2013 13:37:29 -0400 Subject: [PATCH 5/5] Revert "Don't show a disabled preference if there is nothing a user can do to enable it." This reverts commit 0ecc49815f1b90f57a8040254bda0faa3eb46a47 because an equivalent commit was subsequently made to master: 5f49195a0a39f573e6728277ddf711fdcb26de87 --- src/com/fsck/k9/activity/setup/Prefs.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/com/fsck/k9/activity/setup/Prefs.java b/src/com/fsck/k9/activity/setup/Prefs.java index 128f22c2a..ce018b0da 100644 --- a/src/com/fsck/k9/activity/setup/Prefs.java +++ b/src/com/fsck/k9/activity/setup/Prefs.java @@ -17,7 +17,6 @@ import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; -import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import android.text.TextUtils; import android.widget.Toast; @@ -96,7 +95,6 @@ public class Prefs extends K9PreferenceActivity { private static final int ACTIVITY_CHOOSE_FOLDER = 1; - private static final String PREFERENCE_CATEGORY_MESSAGEVIEW_PREFERENCES = "messageview_preferences"; private ListPreference mLanguage; private ListPreference mTheme; @@ -286,10 +284,11 @@ public class Prefs extends K9PreferenceActivity { mShowNext.setChecked(K9.messageViewShowNext()); mMobileOptimizedLayout = (CheckBoxPreference) findPreference(PREFERENCE_MESSAGEVIEW_MOBILE_LAYOUT); - mMobileOptimizedLayout.setChecked(K9.mobileOptimizedLayout()); if (!MessageWebView.isSingleColumnLayoutSupported()) { - PreferenceCategory category = (PreferenceCategory) findPreference(PREFERENCE_CATEGORY_MESSAGEVIEW_PREFERENCES); - category.removePreference(mMobileOptimizedLayout); + mMobileOptimizedLayout.setEnabled(false); + mMobileOptimizedLayout.setChecked(false); + } else { + mMobileOptimizedLayout.setChecked(K9.mobileOptimizedLayout()); } mAutofitWidth = (CheckBoxPreference) findPreference(PREFERENCE_AUTOFIT_WIDTH);