Loading src/com/fsck/k9/Account.java +17 −70 Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ import java.util.List; import java.util.Map; import java.util.UUID; import java.util.HashMap; import java.util.HashSet; import java.util.concurrent.ConcurrentHashMap; import android.content.ContentResolver; Loading Loading @@ -91,11 +90,9 @@ public class Account implements BaseAccount { public static final String IDENTITY_EMAIL_KEY = "email"; public static final String IDENTITY_DESCRIPTION_KEY = "description"; private static final String EMPTY = "empty"; /* http://developer.android.com/design/style/color.html Note: Order does matter, it's the order in which they will be picked. * http://developer.android.com/design/style/color.html * Note: Order does matter, it's the order in which they will be picked. */ public static final Integer[] PREDEFINED_COLORS = new Integer[] { Color.parseColor("#0099CC"), // blue Loading Loading @@ -345,59 +342,22 @@ public class Account implements BaseAccount { * Pick a nice Android guidelines color if we haven't used them all yet. */ private int pickColor(Context context) { SharedPreferences prefs = Preferences.getPreferences(context).getPreferences(); String availableColors = prefs.getString("availableColors",""); Account[] accounts = Preferences.getPreferences(context).getAccounts(); if (!availableColors.equals(EMPTY)) { List<Integer> availableColors = new ArrayList<Integer>(PREDEFINED_COLORS.length); Collections.addAll(availableColors, PREDEFINED_COLORS); // first run for (Account account : accounts) { Integer color = account.getChipColor(); if (availableColors.contains(color)) { availableColors.remove(color); if (availableColors.isEmpty()) { availableColors = Utility.combine(Account.PREDEFINED_COLORS, ','); } String[] colors = availableColors.split(","); // determine remaining colors String remainingColors = ""; if (colors.length > 1) { remainingColors = Utility.combine(Arrays.copyOfRange(colors, 1, colors.length), ','); } else { remainingColors = EMPTY; } // save remaining colors SharedPreferences.Editor editor = prefs.edit(); editor.putString("availableColors", remainingColors); editor.commit(); return Integer.parseInt(colors[0]); } else { return ColorPicker.getRandomColor(); } } /* Put the account color back in circulation if it's a predefined one, we also want to maintain the order of preference. */ private String calculateAvailableColors(Preferences preferences, int currentColor) { ArrayList<Integer> newAvailableColors = new ArrayList<Integer>(); HashSet<Integer> oldAvailableColors = new HashSet<Integer>(); String oldColors = preferences.getPreferences().getString("availableColors", ""); if (!oldColors.equals(EMPTY)) { for (String color : oldColors.split(",")) { oldAvailableColors.add(Integer.parseInt(color)); } break; } for (Integer color : PREDEFINED_COLORS) { if (color == currentColor || oldAvailableColors.contains(color)) { newAvailableColors.add(color); } } return Utility.combine(newAvailableColors.toArray(), ','); return (availableColors.isEmpty()) ? ColorPicker.getRandomColor() : availableColors.get(0); } protected Account(Preferences preferences, String uuid) { Loading Loading @@ -566,11 +526,6 @@ public class Account implements BaseAccount { editor.putString("accountUuids", accountUuids); } // Put color back in circulation if necesarry if (Arrays.asList(PREDEFINED_COLORS).contains(mChipColor)) { editor.putString("availableColors", calculateAvailableColors(preferences, mChipColor)); } editor.remove(mUuid + ".storeUri"); editor.remove(mUuid + ".localStoreUri"); editor.remove(mUuid + ".transportUri"); Loading Loading @@ -884,15 +839,7 @@ public class Account implements BaseAccount { } public synchronized void setChipColor(Context context, int color) { // release current color if predefined one if (Arrays.asList(PREDEFINED_COLORS).contains(mChipColor)) { String availableColors = calculateAvailableColors(Preferences.getPreferences(context), color); SharedPreferences.Editor editor = Preferences.getPreferences(context).getPreferences().edit(); editor.putString("availableColors", availableColors); editor.commit(); } public synchronized void setChipColor(int color) { mChipColor = color; cacheChips(); } Loading src/com/fsck/k9/activity/setup/AccountSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -884,7 +884,7 @@ public class AccountSettings extends K9PreferenceActivity { dialog = new ColorPickerDialog(this, new ColorPickerDialog.OnColorChangedListener() { public void colorChanged(int color) { mAccount.setChipColor(AccountSettings.this, color); mAccount.setChipColor(color); } }, mAccount.getChipColor()); Loading src/com/fsck/k9/preferences/GlobalSettings.java +0 −4 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ 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.helper.Utility; import com.fsck.k9.preferences.Settings.*; public class GlobalSettings { Loading Loading @@ -222,9 +221,6 @@ public class GlobalSettings { s.put("showContactPicture", Settings.versions( new V(25, new BooleanSetting(true)) )); s.put("availableColors", Settings.versions( new V(26, new StringSetting(Utility.combine(Account.PREDEFINED_COLORS, ','))) )); SETTINGS = Collections.unmodifiableMap(s); Loading src/com/fsck/k9/preferences/Settings.java +1 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ public class Settings { * * @see SettingsExporter */ public static final int VERSION = 27; public static final int VERSION = 26; public static Map<String, Object> validate(int version, Map<String, TreeMap<Integer, SettingsDescription>> settings, Loading Loading
src/com/fsck/k9/Account.java +17 −70 Original line number Diff line number Diff line Loading @@ -11,7 +11,6 @@ import java.util.List; import java.util.Map; import java.util.UUID; import java.util.HashMap; import java.util.HashSet; import java.util.concurrent.ConcurrentHashMap; import android.content.ContentResolver; Loading Loading @@ -91,11 +90,9 @@ public class Account implements BaseAccount { public static final String IDENTITY_EMAIL_KEY = "email"; public static final String IDENTITY_DESCRIPTION_KEY = "description"; private static final String EMPTY = "empty"; /* http://developer.android.com/design/style/color.html Note: Order does matter, it's the order in which they will be picked. * http://developer.android.com/design/style/color.html * Note: Order does matter, it's the order in which they will be picked. */ public static final Integer[] PREDEFINED_COLORS = new Integer[] { Color.parseColor("#0099CC"), // blue Loading Loading @@ -345,59 +342,22 @@ public class Account implements BaseAccount { * Pick a nice Android guidelines color if we haven't used them all yet. */ private int pickColor(Context context) { SharedPreferences prefs = Preferences.getPreferences(context).getPreferences(); String availableColors = prefs.getString("availableColors",""); Account[] accounts = Preferences.getPreferences(context).getAccounts(); if (!availableColors.equals(EMPTY)) { List<Integer> availableColors = new ArrayList<Integer>(PREDEFINED_COLORS.length); Collections.addAll(availableColors, PREDEFINED_COLORS); // first run for (Account account : accounts) { Integer color = account.getChipColor(); if (availableColors.contains(color)) { availableColors.remove(color); if (availableColors.isEmpty()) { availableColors = Utility.combine(Account.PREDEFINED_COLORS, ','); } String[] colors = availableColors.split(","); // determine remaining colors String remainingColors = ""; if (colors.length > 1) { remainingColors = Utility.combine(Arrays.copyOfRange(colors, 1, colors.length), ','); } else { remainingColors = EMPTY; } // save remaining colors SharedPreferences.Editor editor = prefs.edit(); editor.putString("availableColors", remainingColors); editor.commit(); return Integer.parseInt(colors[0]); } else { return ColorPicker.getRandomColor(); } } /* Put the account color back in circulation if it's a predefined one, we also want to maintain the order of preference. */ private String calculateAvailableColors(Preferences preferences, int currentColor) { ArrayList<Integer> newAvailableColors = new ArrayList<Integer>(); HashSet<Integer> oldAvailableColors = new HashSet<Integer>(); String oldColors = preferences.getPreferences().getString("availableColors", ""); if (!oldColors.equals(EMPTY)) { for (String color : oldColors.split(",")) { oldAvailableColors.add(Integer.parseInt(color)); } break; } for (Integer color : PREDEFINED_COLORS) { if (color == currentColor || oldAvailableColors.contains(color)) { newAvailableColors.add(color); } } return Utility.combine(newAvailableColors.toArray(), ','); return (availableColors.isEmpty()) ? ColorPicker.getRandomColor() : availableColors.get(0); } protected Account(Preferences preferences, String uuid) { Loading Loading @@ -566,11 +526,6 @@ public class Account implements BaseAccount { editor.putString("accountUuids", accountUuids); } // Put color back in circulation if necesarry if (Arrays.asList(PREDEFINED_COLORS).contains(mChipColor)) { editor.putString("availableColors", calculateAvailableColors(preferences, mChipColor)); } editor.remove(mUuid + ".storeUri"); editor.remove(mUuid + ".localStoreUri"); editor.remove(mUuid + ".transportUri"); Loading Loading @@ -884,15 +839,7 @@ public class Account implements BaseAccount { } public synchronized void setChipColor(Context context, int color) { // release current color if predefined one if (Arrays.asList(PREDEFINED_COLORS).contains(mChipColor)) { String availableColors = calculateAvailableColors(Preferences.getPreferences(context), color); SharedPreferences.Editor editor = Preferences.getPreferences(context).getPreferences().edit(); editor.putString("availableColors", availableColors); editor.commit(); } public synchronized void setChipColor(int color) { mChipColor = color; cacheChips(); } Loading
src/com/fsck/k9/activity/setup/AccountSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -884,7 +884,7 @@ public class AccountSettings extends K9PreferenceActivity { dialog = new ColorPickerDialog(this, new ColorPickerDialog.OnColorChangedListener() { public void colorChanged(int color) { mAccount.setChipColor(AccountSettings.this, color); mAccount.setChipColor(color); } }, mAccount.getChipColor()); Loading
src/com/fsck/k9/preferences/GlobalSettings.java +0 −4 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ 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.helper.Utility; import com.fsck.k9.preferences.Settings.*; public class GlobalSettings { Loading Loading @@ -222,9 +221,6 @@ public class GlobalSettings { s.put("showContactPicture", Settings.versions( new V(25, new BooleanSetting(true)) )); s.put("availableColors", Settings.versions( new V(26, new StringSetting(Utility.combine(Account.PREDEFINED_COLORS, ','))) )); SETTINGS = Collections.unmodifiableMap(s); Loading
src/com/fsck/k9/preferences/Settings.java +1 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ public class Settings { * * @see SettingsExporter */ public static final int VERSION = 27; public static final int VERSION = 26; public static Map<String, Object> validate(int version, Map<String, TreeMap<Integer, SettingsDescription>> settings, Loading