Loading k9mail/src/main/java/com/fsck/k9/preferences/AccountSettings.java +22 −12 Original line number Diff line number Diff line package com.fsck.k9.preferences; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; Loading @@ -19,7 +20,16 @@ import com.fsck.k9.Account.SortType; import com.fsck.k9.K9; import com.fsck.k9.R; import com.fsck.k9.mailstore.StorageManager; import com.fsck.k9.preferences.Settings.*; import com.fsck.k9.preferences.Settings.BooleanSetting; import com.fsck.k9.preferences.Settings.ColorSetting; import com.fsck.k9.preferences.Settings.EnumSetting; import com.fsck.k9.preferences.Settings.IntegerRangeSetting; import com.fsck.k9.preferences.Settings.InvalidSettingValueException; import com.fsck.k9.preferences.Settings.PseudoEnumSetting; import com.fsck.k9.preferences.Settings.SettingsDescription; import com.fsck.k9.preferences.Settings.SettingsUpgrader; import com.fsck.k9.preferences.Settings.StringSetting; import com.fsck.k9.preferences.Settings.V; public class AccountSettings { public static final Map<String, TreeMap<Integer, SettingsDescription>> SETTINGS; Loading Loading @@ -273,7 +283,7 @@ public class AccountSettings { public IntegerResourceSetting(int defaultValue, int resId) { super(defaultValue); Map<Integer, String> mapping = new HashMap<Integer, String>(); Map<Integer, String> mapping = new HashMap<>(); String[] values = K9.app.getResources().getStringArray(resId); for (String value : values) { int intValue = Integer.parseInt(value); Loading @@ -288,7 +298,7 @@ public class AccountSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { return Integer.parseInt(value); } catch (NumberFormatException e) { Loading Loading @@ -324,7 +334,7 @@ public class AccountSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { if (!mMapping.containsKey(value)) { throw new InvalidSettingValueException(); } Loading @@ -335,13 +345,13 @@ public class AccountSettings { /** * The notification ringtone setting. */ public static class RingtoneSetting extends SettingsDescription { public static class RingtoneSetting extends SettingsDescription<String> { public RingtoneSetting(String defaultValue) { super(defaultValue); } @Override public Object fromString(String value) { public String fromString(String value) { //TODO: add validation return value; } Loading @@ -350,18 +360,18 @@ public class AccountSettings { /** * The storage provider setting. */ public static class StorageProviderSetting extends SettingsDescription { public static class StorageProviderSetting extends SettingsDescription<String> { public StorageProviderSetting() { super(null); } @Override public Object getDefaultValue() { public String getDefaultValue() { return StorageManager.getInstance(K9.app).getDefaultProviderId(); } @Override public Object fromString(String value) { public String fromString(String value) { StorageManager storageManager = StorageManager.getInstance(K9.app); Map<String, String> providers = storageManager.getAvailableProviders(); if (providers.containsKey(value)) { Loading @@ -375,8 +385,8 @@ public class AccountSettings { private Map<Integer, String> mMapping; public DeletePolicySetting(DeletePolicy defaultValue) { super(defaultValue); Map<Integer, String> mapping = new HashMap<Integer, String>(); super(defaultValue.setting); Map<Integer, String> mapping = new HashMap<>(); mapping.put(DeletePolicy.NEVER.setting, "NEVER"); mapping.put(DeletePolicy.ON_DELETE.setting, "DELETE"); mapping.put(DeletePolicy.MARK_AS_READ.setting, "MARK_AS_READ"); Loading @@ -389,7 +399,7 @@ public class AccountSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { Integer deletePolicy = Integer.parseInt(value); if (mMapping.containsKey(deletePolicy)) { Loading k9mail/src/main/java/com/fsck/k9/preferences/GlobalSettings.java +29 −18 Original line number Diff line number Diff line package com.fsck.k9.preferences; import java.io.File; import java.util.Arrays; import java.util.Collections; Loading @@ -13,6 +14,7 @@ import java.util.TreeMap; import android.os.Environment; import com.fsck.k9.Account; import com.fsck.k9.Account.SortType; import com.fsck.k9.FontSizes; import com.fsck.k9.K9; import com.fsck.k9.K9.NotificationHideSubject; Loading @@ -20,8 +22,17 @@ import com.fsck.k9.K9.NotificationQuickDelete; import com.fsck.k9.K9.SplitViewMode; import com.fsck.k9.K9.Theme; import com.fsck.k9.R; import com.fsck.k9.Account.SortType; import com.fsck.k9.preferences.Settings.*; import com.fsck.k9.preferences.Settings.BooleanSetting; import com.fsck.k9.preferences.Settings.ColorSetting; import com.fsck.k9.preferences.Settings.EnumSetting; import com.fsck.k9.preferences.Settings.FontSizeSetting; import com.fsck.k9.preferences.Settings.IntegerRangeSetting; import com.fsck.k9.preferences.Settings.InvalidSettingValueException; import com.fsck.k9.preferences.Settings.PseudoEnumSetting; import com.fsck.k9.preferences.Settings.SettingsDescription; import com.fsck.k9.preferences.Settings.SettingsUpgrader; import com.fsck.k9.preferences.Settings.V; import com.fsck.k9.preferences.Settings.WebFontSizeSetting; import static com.fsck.k9.K9.LockScreenNotificationVisibility; Loading Loading @@ -431,7 +442,7 @@ public class GlobalSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { if (mMapping.containsKey(value)) { return value; } Loading @@ -443,7 +454,7 @@ public class GlobalSettings { /** * The theme setting. */ public static class ThemeSetting extends SettingsDescription { public static class ThemeSetting extends SettingsDescription<K9.Theme> { private static final String THEME_LIGHT = "light"; private static final String THEME_DARK = "dark"; Loading @@ -452,7 +463,7 @@ public class GlobalSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public K9.Theme fromString(String value) throws InvalidSettingValueException { try { Integer theme = Integer.parseInt(value); if (theme == K9.Theme.LIGHT.ordinal() || Loading @@ -470,7 +481,7 @@ public class GlobalSettings { } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { public K9.Theme fromPrettyString(String value) throws InvalidSettingValueException { if (THEME_LIGHT.equals(value)) { return K9.Theme.LIGHT; } else if (THEME_DARK.equals(value)) { Loading @@ -481,8 +492,8 @@ public class GlobalSettings { } @Override public String toPrettyString(Object value) { switch ((K9.Theme) value) { public String toPrettyString(K9.Theme value) { switch (value) { case DARK: { return THEME_DARK; } Loading @@ -493,8 +504,8 @@ public class GlobalSettings { } @Override public String toString(Object value) { return Integer.toString(((K9.Theme) value).ordinal()); public String toString(K9.Theme value) { return Integer.toString(value.ordinal()); } } Loading @@ -509,7 +520,7 @@ public class GlobalSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public K9.Theme fromString(String value) throws InvalidSettingValueException { try { Integer theme = Integer.parseInt(value); if (theme == K9.Theme.USE_GLOBAL.ordinal()) { Loading @@ -523,7 +534,7 @@ public class GlobalSettings { } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { public K9.Theme fromPrettyString(String value) throws InvalidSettingValueException { if (THEME_USE_GLOBAL.equals(value)) { return K9.Theme.USE_GLOBAL; } Loading @@ -532,8 +543,8 @@ public class GlobalSettings { } @Override public String toPrettyString(Object value) { if (((K9.Theme) value) == K9.Theme.USE_GLOBAL) { public String toPrettyString(K9.Theme value) { if (value == K9.Theme.USE_GLOBAL) { return THEME_USE_GLOBAL; } Loading @@ -544,13 +555,13 @@ public class GlobalSettings { /** * A time setting. */ public static class TimeSetting extends SettingsDescription { public static class TimeSetting extends SettingsDescription<String> { public TimeSetting(String defaultValue) { super(defaultValue); } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { if (!value.matches(TimePickerPreference.VALIDATION_EXPRESSION)) { throw new InvalidSettingValueException(); } Loading @@ -561,13 +572,13 @@ public class GlobalSettings { /** * A directory on the file system. */ public static class DirectorySetting extends SettingsDescription { public static class DirectorySetting extends SettingsDescription<String> { public DirectorySetting(File defaultPath) { super(defaultPath.toString()); } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { try { if (new File(value).isDirectory()) { return value; Loading k9mail/src/main/java/com/fsck/k9/preferences/IdentitySettings.java +11 −11 Original line number Diff line number Diff line Loading @@ -76,18 +76,18 @@ public class IdentitySettings { /** * The message signature setting. */ public static class SignatureSetting extends SettingsDescription { public static class SignatureSetting extends SettingsDescription<String> { public SignatureSetting() { super(null); } @Override public Object getDefaultValue() { public String getDefaultValue() { return K9.app.getResources().getString(R.string.default_signature); } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { return value; } } Loading @@ -95,7 +95,7 @@ public class IdentitySettings { /** * An optional email address setting. */ public static class OptionalEmailAddressSetting extends SettingsDescription { public static class OptionalEmailAddressSetting extends SettingsDescription<String> { private EmailAddressValidator mValidator; public OptionalEmailAddressSetting() { Loading @@ -104,7 +104,7 @@ public class IdentitySettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { if (value != null && !mValidator.isValidAddressOnly(value)) { throw new InvalidSettingValueException(); } Loading @@ -112,18 +112,18 @@ public class IdentitySettings { } @Override public String toString(Object value) { return (value != null) ? value.toString() : null; public String toString(String value) { return (value != null) ? value : null; } @Override public String toPrettyString(Object value) { return (value == null) ? "" : value.toString(); public String toPrettyString(String value) { return (value == null) ? "" : value; } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { return ("".equals(value)) ? null : fromString(value); public String fromPrettyString(String value) throws InvalidSettingValueException { return "".equals(value) ? null : fromString(value); } } } k9mail/src/main/java/com/fsck/k9/preferences/Settings.java +28 −28 Original line number Diff line number Diff line Loading @@ -272,13 +272,13 @@ public class Settings { * negligible. * </p> */ static abstract class SettingsDescription { static abstract class SettingsDescription<A> { /** * The setting's default value (internal representation). */ Object mDefaultValue; A mDefaultValue; SettingsDescription(Object defaultValue) { SettingsDescription(A defaultValue) { mDefaultValue = defaultValue; } Loading @@ -287,7 +287,7 @@ public class Settings { * * @return The internal representation of the default value. */ public Object getDefaultValue() { public A getDefaultValue() { return mDefaultValue; } Loading @@ -299,7 +299,7 @@ public class Settings { * * @return The string representation of {@code value}. */ public String toString(Object value) { public String toString(A value) { return value.toString(); } Loading @@ -314,7 +314,7 @@ public class Settings { * @throws InvalidSettingValueException * If {@code value} contains an invalid value. */ public abstract Object fromString(String value) throws InvalidSettingValueException; public abstract A fromString(String value) throws InvalidSettingValueException; /** * Convert a setting value to the "pretty" string representation. Loading @@ -324,7 +324,7 @@ public class Settings { * * @return A pretty-printed version of the setting's value. */ public String toPrettyString(Object value) { public String toPrettyString(A value) { return toString(value); } Loading @@ -340,7 +340,7 @@ public class Settings { * @throws InvalidSettingValueException * If {@code value} contains an invalid value. */ public Object fromPrettyString(String value) throws InvalidSettingValueException { public A fromPrettyString(String value) throws InvalidSettingValueException { return fromString(value); } } Loading Loading @@ -383,13 +383,13 @@ public class Settings { /** * A string setting. */ static class StringSetting extends SettingsDescription { static class StringSetting extends SettingsDescription<String> { StringSetting(String defaultValue) { super(defaultValue); } @Override public Object fromString(String value) { public String fromString(String value) { return value; } } Loading @@ -397,13 +397,13 @@ public class Settings { /** * A boolean setting. */ static class BooleanSetting extends SettingsDescription { static class BooleanSetting extends SettingsDescription<Boolean> { BooleanSetting(boolean defaultValue) { super(defaultValue); } @Override public Object fromString(String value) throws InvalidSettingValueException { public Boolean fromString(String value) throws InvalidSettingValueException { if (Boolean.TRUE.toString().equals(value)) { return true; } else if (Boolean.FALSE.toString().equals(value)) { Loading @@ -416,13 +416,13 @@ public class Settings { /** * A color setting. */ static class ColorSetting extends SettingsDescription { static class ColorSetting extends SettingsDescription<Integer> { ColorSetting(int defaultValue) { super(defaultValue); } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { return Integer.parseInt(value); } catch (NumberFormatException e) { Loading @@ -431,13 +431,13 @@ public class Settings { } @Override public String toPrettyString(Object value) { int color = ((Integer) value) & 0x00FFFFFF; public String toPrettyString(Integer value) { int color = value & 0x00FFFFFF; return String.format("#%06x", color); } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { public Integer fromPrettyString(String value) throws InvalidSettingValueException { try { if (value.length() == 7) { return Integer.parseInt(value.substring(1), 16) | 0xFF000000; Loading @@ -455,16 +455,16 @@ public class Settings { * {@link Enum#toString()} is used to obtain the "pretty" string representation. * </p> */ static class EnumSetting<T extends Enum<T>> extends SettingsDescription { static class EnumSetting<T extends Enum<T>> extends SettingsDescription<T> { private Class<T> mEnumClass; EnumSetting(Class<T> enumClass, Object defaultValue) { EnumSetting(Class<T> enumClass, T defaultValue) { super(defaultValue); mEnumClass = enumClass; } @Override public Object fromString(String value) throws InvalidSettingValueException { public T fromString(String value) throws InvalidSettingValueException { try { return Enum.valueOf(mEnumClass, value); } catch (Exception e) { Loading @@ -479,20 +479,20 @@ public class Settings { * @param <A> * The type of the internal representation (e.g. {@code Integer}). */ abstract static class PseudoEnumSetting<A> extends SettingsDescription { PseudoEnumSetting(Object defaultValue) { abstract static class PseudoEnumSetting<A> extends SettingsDescription<A> { PseudoEnumSetting(A defaultValue) { super(defaultValue); } protected abstract Map<A, String> getMapping(); @Override public String toPrettyString(Object value) { public String toPrettyString(A value) { return getMapping().get(value); } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { public A fromPrettyString(String value) throws InvalidSettingValueException { for (Entry<A, String> entry : getMapping().entrySet()) { if (entry.getValue().equals(value)) { return entry.getKey(); Loading Loading @@ -529,7 +529,7 @@ public class Settings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { Integer fontSize = Integer.parseInt(value); if (mMapping.containsKey(fontSize)) { Loading Loading @@ -565,7 +565,7 @@ public class Settings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { Integer fontSize = Integer.parseInt(value); if (mMapping.containsKey(fontSize)) { Loading @@ -580,7 +580,7 @@ public class Settings { /** * An integer settings whose values a limited to a certain range. */ static class IntegerRangeSetting extends SettingsDescription { static class IntegerRangeSetting extends SettingsDescription<Integer> { private int mStart; private int mEnd; Loading @@ -591,7 +591,7 @@ public class Settings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { int intValue = Integer.parseInt(value); if (mStart <= intValue && intValue <= mEnd) { Loading Loading
k9mail/src/main/java/com/fsck/k9/preferences/AccountSettings.java +22 −12 Original line number Diff line number Diff line package com.fsck.k9.preferences; import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; Loading @@ -19,7 +20,16 @@ import com.fsck.k9.Account.SortType; import com.fsck.k9.K9; import com.fsck.k9.R; import com.fsck.k9.mailstore.StorageManager; import com.fsck.k9.preferences.Settings.*; import com.fsck.k9.preferences.Settings.BooleanSetting; import com.fsck.k9.preferences.Settings.ColorSetting; import com.fsck.k9.preferences.Settings.EnumSetting; import com.fsck.k9.preferences.Settings.IntegerRangeSetting; import com.fsck.k9.preferences.Settings.InvalidSettingValueException; import com.fsck.k9.preferences.Settings.PseudoEnumSetting; import com.fsck.k9.preferences.Settings.SettingsDescription; import com.fsck.k9.preferences.Settings.SettingsUpgrader; import com.fsck.k9.preferences.Settings.StringSetting; import com.fsck.k9.preferences.Settings.V; public class AccountSettings { public static final Map<String, TreeMap<Integer, SettingsDescription>> SETTINGS; Loading Loading @@ -273,7 +283,7 @@ public class AccountSettings { public IntegerResourceSetting(int defaultValue, int resId) { super(defaultValue); Map<Integer, String> mapping = new HashMap<Integer, String>(); Map<Integer, String> mapping = new HashMap<>(); String[] values = K9.app.getResources().getStringArray(resId); for (String value : values) { int intValue = Integer.parseInt(value); Loading @@ -288,7 +298,7 @@ public class AccountSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { return Integer.parseInt(value); } catch (NumberFormatException e) { Loading Loading @@ -324,7 +334,7 @@ public class AccountSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { if (!mMapping.containsKey(value)) { throw new InvalidSettingValueException(); } Loading @@ -335,13 +345,13 @@ public class AccountSettings { /** * The notification ringtone setting. */ public static class RingtoneSetting extends SettingsDescription { public static class RingtoneSetting extends SettingsDescription<String> { public RingtoneSetting(String defaultValue) { super(defaultValue); } @Override public Object fromString(String value) { public String fromString(String value) { //TODO: add validation return value; } Loading @@ -350,18 +360,18 @@ public class AccountSettings { /** * The storage provider setting. */ public static class StorageProviderSetting extends SettingsDescription { public static class StorageProviderSetting extends SettingsDescription<String> { public StorageProviderSetting() { super(null); } @Override public Object getDefaultValue() { public String getDefaultValue() { return StorageManager.getInstance(K9.app).getDefaultProviderId(); } @Override public Object fromString(String value) { public String fromString(String value) { StorageManager storageManager = StorageManager.getInstance(K9.app); Map<String, String> providers = storageManager.getAvailableProviders(); if (providers.containsKey(value)) { Loading @@ -375,8 +385,8 @@ public class AccountSettings { private Map<Integer, String> mMapping; public DeletePolicySetting(DeletePolicy defaultValue) { super(defaultValue); Map<Integer, String> mapping = new HashMap<Integer, String>(); super(defaultValue.setting); Map<Integer, String> mapping = new HashMap<>(); mapping.put(DeletePolicy.NEVER.setting, "NEVER"); mapping.put(DeletePolicy.ON_DELETE.setting, "DELETE"); mapping.put(DeletePolicy.MARK_AS_READ.setting, "MARK_AS_READ"); Loading @@ -389,7 +399,7 @@ public class AccountSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { Integer deletePolicy = Integer.parseInt(value); if (mMapping.containsKey(deletePolicy)) { Loading
k9mail/src/main/java/com/fsck/k9/preferences/GlobalSettings.java +29 −18 Original line number Diff line number Diff line package com.fsck.k9.preferences; import java.io.File; import java.util.Arrays; import java.util.Collections; Loading @@ -13,6 +14,7 @@ import java.util.TreeMap; import android.os.Environment; import com.fsck.k9.Account; import com.fsck.k9.Account.SortType; import com.fsck.k9.FontSizes; import com.fsck.k9.K9; import com.fsck.k9.K9.NotificationHideSubject; Loading @@ -20,8 +22,17 @@ import com.fsck.k9.K9.NotificationQuickDelete; import com.fsck.k9.K9.SplitViewMode; import com.fsck.k9.K9.Theme; import com.fsck.k9.R; import com.fsck.k9.Account.SortType; import com.fsck.k9.preferences.Settings.*; import com.fsck.k9.preferences.Settings.BooleanSetting; import com.fsck.k9.preferences.Settings.ColorSetting; import com.fsck.k9.preferences.Settings.EnumSetting; import com.fsck.k9.preferences.Settings.FontSizeSetting; import com.fsck.k9.preferences.Settings.IntegerRangeSetting; import com.fsck.k9.preferences.Settings.InvalidSettingValueException; import com.fsck.k9.preferences.Settings.PseudoEnumSetting; import com.fsck.k9.preferences.Settings.SettingsDescription; import com.fsck.k9.preferences.Settings.SettingsUpgrader; import com.fsck.k9.preferences.Settings.V; import com.fsck.k9.preferences.Settings.WebFontSizeSetting; import static com.fsck.k9.K9.LockScreenNotificationVisibility; Loading Loading @@ -431,7 +442,7 @@ public class GlobalSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { if (mMapping.containsKey(value)) { return value; } Loading @@ -443,7 +454,7 @@ public class GlobalSettings { /** * The theme setting. */ public static class ThemeSetting extends SettingsDescription { public static class ThemeSetting extends SettingsDescription<K9.Theme> { private static final String THEME_LIGHT = "light"; private static final String THEME_DARK = "dark"; Loading @@ -452,7 +463,7 @@ public class GlobalSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public K9.Theme fromString(String value) throws InvalidSettingValueException { try { Integer theme = Integer.parseInt(value); if (theme == K9.Theme.LIGHT.ordinal() || Loading @@ -470,7 +481,7 @@ public class GlobalSettings { } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { public K9.Theme fromPrettyString(String value) throws InvalidSettingValueException { if (THEME_LIGHT.equals(value)) { return K9.Theme.LIGHT; } else if (THEME_DARK.equals(value)) { Loading @@ -481,8 +492,8 @@ public class GlobalSettings { } @Override public String toPrettyString(Object value) { switch ((K9.Theme) value) { public String toPrettyString(K9.Theme value) { switch (value) { case DARK: { return THEME_DARK; } Loading @@ -493,8 +504,8 @@ public class GlobalSettings { } @Override public String toString(Object value) { return Integer.toString(((K9.Theme) value).ordinal()); public String toString(K9.Theme value) { return Integer.toString(value.ordinal()); } } Loading @@ -509,7 +520,7 @@ public class GlobalSettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public K9.Theme fromString(String value) throws InvalidSettingValueException { try { Integer theme = Integer.parseInt(value); if (theme == K9.Theme.USE_GLOBAL.ordinal()) { Loading @@ -523,7 +534,7 @@ public class GlobalSettings { } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { public K9.Theme fromPrettyString(String value) throws InvalidSettingValueException { if (THEME_USE_GLOBAL.equals(value)) { return K9.Theme.USE_GLOBAL; } Loading @@ -532,8 +543,8 @@ public class GlobalSettings { } @Override public String toPrettyString(Object value) { if (((K9.Theme) value) == K9.Theme.USE_GLOBAL) { public String toPrettyString(K9.Theme value) { if (value == K9.Theme.USE_GLOBAL) { return THEME_USE_GLOBAL; } Loading @@ -544,13 +555,13 @@ public class GlobalSettings { /** * A time setting. */ public static class TimeSetting extends SettingsDescription { public static class TimeSetting extends SettingsDescription<String> { public TimeSetting(String defaultValue) { super(defaultValue); } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { if (!value.matches(TimePickerPreference.VALIDATION_EXPRESSION)) { throw new InvalidSettingValueException(); } Loading @@ -561,13 +572,13 @@ public class GlobalSettings { /** * A directory on the file system. */ public static class DirectorySetting extends SettingsDescription { public static class DirectorySetting extends SettingsDescription<String> { public DirectorySetting(File defaultPath) { super(defaultPath.toString()); } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { try { if (new File(value).isDirectory()) { return value; Loading
k9mail/src/main/java/com/fsck/k9/preferences/IdentitySettings.java +11 −11 Original line number Diff line number Diff line Loading @@ -76,18 +76,18 @@ public class IdentitySettings { /** * The message signature setting. */ public static class SignatureSetting extends SettingsDescription { public static class SignatureSetting extends SettingsDescription<String> { public SignatureSetting() { super(null); } @Override public Object getDefaultValue() { public String getDefaultValue() { return K9.app.getResources().getString(R.string.default_signature); } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { return value; } } Loading @@ -95,7 +95,7 @@ public class IdentitySettings { /** * An optional email address setting. */ public static class OptionalEmailAddressSetting extends SettingsDescription { public static class OptionalEmailAddressSetting extends SettingsDescription<String> { private EmailAddressValidator mValidator; public OptionalEmailAddressSetting() { Loading @@ -104,7 +104,7 @@ public class IdentitySettings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public String fromString(String value) throws InvalidSettingValueException { if (value != null && !mValidator.isValidAddressOnly(value)) { throw new InvalidSettingValueException(); } Loading @@ -112,18 +112,18 @@ public class IdentitySettings { } @Override public String toString(Object value) { return (value != null) ? value.toString() : null; public String toString(String value) { return (value != null) ? value : null; } @Override public String toPrettyString(Object value) { return (value == null) ? "" : value.toString(); public String toPrettyString(String value) { return (value == null) ? "" : value; } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { return ("".equals(value)) ? null : fromString(value); public String fromPrettyString(String value) throws InvalidSettingValueException { return "".equals(value) ? null : fromString(value); } } }
k9mail/src/main/java/com/fsck/k9/preferences/Settings.java +28 −28 Original line number Diff line number Diff line Loading @@ -272,13 +272,13 @@ public class Settings { * negligible. * </p> */ static abstract class SettingsDescription { static abstract class SettingsDescription<A> { /** * The setting's default value (internal representation). */ Object mDefaultValue; A mDefaultValue; SettingsDescription(Object defaultValue) { SettingsDescription(A defaultValue) { mDefaultValue = defaultValue; } Loading @@ -287,7 +287,7 @@ public class Settings { * * @return The internal representation of the default value. */ public Object getDefaultValue() { public A getDefaultValue() { return mDefaultValue; } Loading @@ -299,7 +299,7 @@ public class Settings { * * @return The string representation of {@code value}. */ public String toString(Object value) { public String toString(A value) { return value.toString(); } Loading @@ -314,7 +314,7 @@ public class Settings { * @throws InvalidSettingValueException * If {@code value} contains an invalid value. */ public abstract Object fromString(String value) throws InvalidSettingValueException; public abstract A fromString(String value) throws InvalidSettingValueException; /** * Convert a setting value to the "pretty" string representation. Loading @@ -324,7 +324,7 @@ public class Settings { * * @return A pretty-printed version of the setting's value. */ public String toPrettyString(Object value) { public String toPrettyString(A value) { return toString(value); } Loading @@ -340,7 +340,7 @@ public class Settings { * @throws InvalidSettingValueException * If {@code value} contains an invalid value. */ public Object fromPrettyString(String value) throws InvalidSettingValueException { public A fromPrettyString(String value) throws InvalidSettingValueException { return fromString(value); } } Loading Loading @@ -383,13 +383,13 @@ public class Settings { /** * A string setting. */ static class StringSetting extends SettingsDescription { static class StringSetting extends SettingsDescription<String> { StringSetting(String defaultValue) { super(defaultValue); } @Override public Object fromString(String value) { public String fromString(String value) { return value; } } Loading @@ -397,13 +397,13 @@ public class Settings { /** * A boolean setting. */ static class BooleanSetting extends SettingsDescription { static class BooleanSetting extends SettingsDescription<Boolean> { BooleanSetting(boolean defaultValue) { super(defaultValue); } @Override public Object fromString(String value) throws InvalidSettingValueException { public Boolean fromString(String value) throws InvalidSettingValueException { if (Boolean.TRUE.toString().equals(value)) { return true; } else if (Boolean.FALSE.toString().equals(value)) { Loading @@ -416,13 +416,13 @@ public class Settings { /** * A color setting. */ static class ColorSetting extends SettingsDescription { static class ColorSetting extends SettingsDescription<Integer> { ColorSetting(int defaultValue) { super(defaultValue); } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { return Integer.parseInt(value); } catch (NumberFormatException e) { Loading @@ -431,13 +431,13 @@ public class Settings { } @Override public String toPrettyString(Object value) { int color = ((Integer) value) & 0x00FFFFFF; public String toPrettyString(Integer value) { int color = value & 0x00FFFFFF; return String.format("#%06x", color); } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { public Integer fromPrettyString(String value) throws InvalidSettingValueException { try { if (value.length() == 7) { return Integer.parseInt(value.substring(1), 16) | 0xFF000000; Loading @@ -455,16 +455,16 @@ public class Settings { * {@link Enum#toString()} is used to obtain the "pretty" string representation. * </p> */ static class EnumSetting<T extends Enum<T>> extends SettingsDescription { static class EnumSetting<T extends Enum<T>> extends SettingsDescription<T> { private Class<T> mEnumClass; EnumSetting(Class<T> enumClass, Object defaultValue) { EnumSetting(Class<T> enumClass, T defaultValue) { super(defaultValue); mEnumClass = enumClass; } @Override public Object fromString(String value) throws InvalidSettingValueException { public T fromString(String value) throws InvalidSettingValueException { try { return Enum.valueOf(mEnumClass, value); } catch (Exception e) { Loading @@ -479,20 +479,20 @@ public class Settings { * @param <A> * The type of the internal representation (e.g. {@code Integer}). */ abstract static class PseudoEnumSetting<A> extends SettingsDescription { PseudoEnumSetting(Object defaultValue) { abstract static class PseudoEnumSetting<A> extends SettingsDescription<A> { PseudoEnumSetting(A defaultValue) { super(defaultValue); } protected abstract Map<A, String> getMapping(); @Override public String toPrettyString(Object value) { public String toPrettyString(A value) { return getMapping().get(value); } @Override public Object fromPrettyString(String value) throws InvalidSettingValueException { public A fromPrettyString(String value) throws InvalidSettingValueException { for (Entry<A, String> entry : getMapping().entrySet()) { if (entry.getValue().equals(value)) { return entry.getKey(); Loading Loading @@ -529,7 +529,7 @@ public class Settings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { Integer fontSize = Integer.parseInt(value); if (mMapping.containsKey(fontSize)) { Loading Loading @@ -565,7 +565,7 @@ public class Settings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { Integer fontSize = Integer.parseInt(value); if (mMapping.containsKey(fontSize)) { Loading @@ -580,7 +580,7 @@ public class Settings { /** * An integer settings whose values a limited to a certain range. */ static class IntegerRangeSetting extends SettingsDescription { static class IntegerRangeSetting extends SettingsDescription<Integer> { private int mStart; private int mEnd; Loading @@ -591,7 +591,7 @@ public class Settings { } @Override public Object fromString(String value) throws InvalidSettingValueException { public Integer fromString(String value) throws InvalidSettingValueException { try { int intValue = Integer.parseInt(value); if (mStart <= intValue && intValue <= mEnd) { Loading