summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYu Ping Hu <yph@google.com>2013-04-15 20:23:30 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-04-15 20:23:31 +0000
commitd3af8adba6206ceb25f2cfea94419df1478ef974 (patch)
treef3abeb6274732adb877b48e73919a1afe4be182a
parente8fd143c81d3466010ffd8a71bad17393a8b48ec (diff)
parente0d4cab353b84fd632d5609d4780f597c8d56092 (diff)
downloadandroid_packages_apps_Email-d3af8adba6206ceb25f2cfea94419df1478ef974.tar.gz
android_packages_apps_Email-d3af8adba6206ceb25f2cfea94419df1478ef974.tar.bz2
android_packages_apps_Email-d3af8adba6206ceb25f2cfea94419df1478ef974.zip
Merge "Populate the account object with the type" into jb-ub-mail-ur9
-rw-r--r--src/com/android/email/provider/EmailProvider.java48
1 files changed, 47 insertions, 1 deletions
diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java
index f940b23aa..ad07f0343 100644
--- a/src/com/android/email/provider/EmailProvider.java
+++ b/src/com/android/email/provider/EmailProvider.java
@@ -67,6 +67,7 @@ import com.android.emailcommon.provider.EmailContent.Attachment;
import com.android.emailcommon.provider.EmailContent.AttachmentColumns;
import com.android.emailcommon.provider.EmailContent.Body;
import com.android.emailcommon.provider.EmailContent.BodyColumns;
+import com.android.emailcommon.provider.EmailContent.HostAuthColumns;
import com.android.emailcommon.provider.EmailContent.MailboxColumns;
import com.android.emailcommon.provider.EmailContent.Message;
import com.android.emailcommon.provider.EmailContent.MessageColumns;
@@ -374,6 +375,8 @@ public class EmailProvider extends ContentProvider {
public static Uri ACCOUNT_BACKUP_URI;
private static Uri FOLDER_STATUS_URI;
+ private static Map<String, String> sProtocolTypeMap;
+
private SQLiteDatabase mDatabase;
private SQLiteDatabase mBodyDatabase;
@@ -2822,6 +2825,7 @@ outer:
final long accountId = Long.parseLong(id);
final Context context = getContext();
+ // TODO: If uiProjection is null, this will NPE. We should do everything here if it's null.
final Set<String> projectionColumns = ImmutableSet.copyOf(uiProjection);
if (projectionColumns.contains(UIProvider.AccountColumns.CAPABILITIES)) {
@@ -2916,6 +2920,31 @@ outer:
}
}
}
+ if (projectionColumns.contains(UIProvider.AccountColumns.TYPE)) {
+ final String query = "SELECT ha." + HostAuthColumns.PROTOCOL
+ + " FROM " + Account.TABLE_NAME + " a INNER JOIN " + HostAuth.TABLE_NAME
+ + " ha ON a." + AccountColumns.HOST_AUTH_KEY_RECV + " = ha."
+ + HostAuthColumns.ID
+ + " WHERE a." + AccountColumns.ID + " = ?";
+ final Cursor cursor = mDatabase.rawQuery(query, new String[] { id });
+ final String type;
+ if (cursor.moveToFirst()) {
+ loadProtocolTypeMap(context);
+ final String protocol = cursor.getString(0);
+ if (protocol != null && sProtocolTypeMap.containsKey(protocol)) {
+ type = sProtocolTypeMap.get(protocol);
+ } else {
+ type = "unknown";
+ }
+ } else {
+ type = "unknown";
+ }
+
+ cursor.close();
+
+ values.put(UIProvider.AccountColumns.TYPE, type);
+ }
+
final StringBuilder sb = genSelect(getAccountListMap(getContext()), uiProjection, values);
sb.append(" FROM " + Account.TABLE_NAME + " WHERE " + AccountColumns.ID + "=?");
return sb.toString();
@@ -3014,7 +3043,6 @@ outer:
private void addCombinedAccountRow(MatrixCursor mc) {
final long id = Account.getDefaultAccountId(getContext());
if (id == Account.NO_ACCOUNT) return;
- final String idString = Long.toString(id);
// Build a map of the requested columns to the appropriate positions
final ImmutableMap.Builder<String, Integer> builder =
@@ -3041,6 +3069,9 @@ outer:
values[colPosMap.get(UIProvider.AccountColumns.NAME)] = getContext().getString(
R.string.mailbox_list_account_selector_combined_view);
}
+ if (colPosMap.containsKey(UIProvider.AccountColumns.TYPE)) {
+ values[colPosMap.get(UIProvider.AccountColumns.TYPE)] = "unknown";
+ }
if (colPosMap.containsKey(UIProvider.AccountColumns.UNDO_URI)) {
values[colPosMap.get(UIProvider.AccountColumns.UNDO_URI)] =
"'content://" + EmailContent.AUTHORITY + "/uiundo'";
@@ -4702,4 +4733,19 @@ outer:
cursor.close();
}
}
+
+ private void loadProtocolTypeMap(final Context context) {
+ if (sProtocolTypeMap == null) {
+ final ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
+
+ builder.put(context.getString(R.string.protocol_eas),
+ context.getString(R.string.account_manager_type_exchange));
+ builder.put(context.getString(R.string.protocol_imap),
+ context.getString(R.string.account_manager_type_imap));
+ builder.put(context.getString(R.string.protocol_pop3),
+ context.getString(R.string.account_manager_type_pop3));
+
+ sProtocolTypeMap = builder.build();
+ }
+ }
}