1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-11-23 09:52:16 -05:00

Merge branch 'fixed_account_colors'

Conflicts:
	src/com/fsck/k9/Account.java
This commit is contained in:
cketti 2013-02-26 18:40:07 +01:00
commit 4e46b3411c

View File

@ -10,12 +10,14 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.Color;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.Uri; import android.net.Uri;
import android.util.Log; import android.util.Log;
@ -41,8 +43,6 @@ import com.fsck.k9.search.SearchSpecification.Searchfield;
import com.fsck.k9.view.ColorChip; import com.fsck.k9.view.ColorChip;
import com.larswerkman.colorpicker.ColorPicker; import com.larswerkman.colorpicker.ColorPicker;
import java.util.HashMap;
/** /**
* Account stores all of the settings for a single account defined by the user. It is able to save * Account stores all of the settings for a single account defined by the user. It is able to save
* and delete itself given a Preferences to work with. Each account is defined by a UUID. * and delete itself given a Preferences to work with. Each account is defined by a UUID.
@ -90,6 +90,18 @@ public class Account implements BaseAccount {
public static final String IDENTITY_EMAIL_KEY = "email"; public static final String IDENTITY_EMAIL_KEY = "email";
public static final String IDENTITY_DESCRIPTION_KEY = "description"; public static final String IDENTITY_DESCRIPTION_KEY = "description";
/*
* 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
Color.parseColor("#669900"), // green
Color.parseColor("#FF8800"), // orange
Color.parseColor("#CC0000"), // red
Color.parseColor("#9933CC") // purple
};
public enum SortType { public enum SortType {
SORT_DATE(R.string.sort_earliest_first, R.string.sort_latest_first, false), SORT_DATE(R.string.sort_earliest_first, R.string.sort_latest_first, false),
SORT_ARRIVAL(R.string.sort_earliest_first, R.string.sort_latest_first, false), SORT_ARRIVAL(R.string.sort_earliest_first, R.string.sort_latest_first, false),
@ -280,7 +292,7 @@ public class Account implements BaseAccount {
mAutoExpandFolderName = INBOX; mAutoExpandFolderName = INBOX;
mInboxFolderName = INBOX; mInboxFolderName = INBOX;
mMaxPushFolders = 10; mMaxPushFolders = 10;
mChipColor = ColorPicker.getRandomColor(); mChipColor = pickColor(context);
goToUnreadMessageSearch = false; goToUnreadMessageSearch = false;
mNotificationShowsUnreadCount = true; mNotificationShowsUnreadCount = true;
subscribedFoldersOnly = false; subscribedFoldersOnly = false;
@ -326,6 +338,28 @@ public class Account implements BaseAccount {
cacheChips(); cacheChips();
} }
/*
* Pick a nice Android guidelines color if we haven't used them all yet.
*/
private int pickColor(Context context) {
Account[] accounts = Preferences.getPreferences(context).getAccounts();
List<Integer> availableColors = new ArrayList<Integer>(PREDEFINED_COLORS.length);
Collections.addAll(availableColors, PREDEFINED_COLORS);
for (Account account : accounts) {
Integer color = account.getChipColor();
if (availableColors.contains(color)) {
availableColors.remove(color);
if (availableColors.isEmpty()) {
break;
}
}
}
return (availableColors.isEmpty()) ? ColorPicker.getRandomColor() : availableColors.get(0);
}
protected Account(Preferences preferences, String uuid) { protected Account(Preferences preferences, String uuid) {
this.mUuid = uuid; this.mUuid = uuid;
loadAccount(preferences); loadAccount(preferences);
@ -808,7 +842,6 @@ public class Account implements BaseAccount {
public synchronized void setChipColor(int color) { public synchronized void setChipColor(int color) {
mChipColor = color; mChipColor = color;
cacheChips(); cacheChips();
} }
public synchronized void cacheChips() { public synchronized void cacheChips() {