From 828ceba5033baaab9cbd010f11dd29e951a67eee Mon Sep 17 00:00:00 2001 From: Daniel Applebaum Date: Sat, 3 Jan 2009 01:47:24 +0000 Subject: [PATCH] Set to use new folder display and sync class defaults. Accounts are now set: Folder display mode = All except 2nd Class Folder sync mode = Only 1st Class Only the Inbox is set for: Folder sync class = 1st Class All other folders have class set to None for sync and display Also restored an optimization on opening local folders that I removed. It is now optimistic, and in the normal case does not have to make an explicit existence check --- src/com/android/email/Account.java | 8 +-- .../android/email/MessagingController.java | 2 - .../android/email/mail/store/LocalStore.java | 57 +++++++++++-------- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/com/android/email/Account.java b/src/com/android/email/Account.java index 72037a057..24b52674e 100644 --- a/src/com/android/email/Account.java +++ b/src/com/android/email/Account.java @@ -75,8 +75,8 @@ public class Account implements Serializable { mNotifyNewMail = true; mSignature = "Sent from my Android phone with K-9. Please excuse my brevity."; mVibrate = false; - mFolderDisplayMode = FolderMode.ALL; - mFolderSyncMode = FolderMode.ALL; + mFolderDisplayMode = FolderMode.NOT_SECOND_CLASS; + mFolderSyncMode = FolderMode.FIRST_CLASS; mRingtoneUri = "content://settings/system/notification_sound"; } @@ -126,7 +126,7 @@ public class Account implements Serializable { } catch (Exception e) { - mFolderDisplayMode = FolderMode.ALL; + mFolderDisplayMode = FolderMode.NOT_SECOND_CLASS; } try @@ -136,7 +136,7 @@ public class Account implements Serializable { } catch (Exception e) { - mFolderSyncMode = FolderMode.ALL; + mFolderSyncMode = FolderMode.FIRST_CLASS; } } diff --git a/src/com/android/email/MessagingController.java b/src/com/android/email/MessagingController.java index 28aa0a84d..17b89958a 100644 --- a/src/com/android/email/MessagingController.java +++ b/src/com/android/email/MessagingController.java @@ -304,9 +304,7 @@ public class MessagingController implements Runnable { for (int i = 0, count = remoteFolders.length; i < count; i++) { LocalFolder localFolder = localStore.getFolder(remoteFolders[i].getName()); if (!localFolder.exists()) { - // TODO: if the localFolder is inbox, set to 1st Class localFolder.create(FolderType.HOLDS_MESSAGES, account.getDisplayCount()); - localFolder.setDisplayClass(Folder.FolderClass.FIRST_CLASS); localFolder.save(Preferences.getPreferences(mApplication)); } remoteFolderNames.add(remoteFolders[i].getName()); diff --git a/src/com/android/email/mail/store/LocalStore.java b/src/com/android/email/mail/store/LocalStore.java index 398f26e11..091981315 100644 --- a/src/com/android/email/mail/store/LocalStore.java +++ b/src/com/android/email/mail/store/LocalStore.java @@ -348,6 +348,12 @@ public class LocalStore extends Store implements Serializable { public LocalFolder(String name) { this.mName = name; + + if (Email.INBOX.equals(getName())) + { + syncClass = FolderClass.FIRST_CLASS; + } + } public long getId() { @@ -356,28 +362,33 @@ public class LocalStore extends Store implements Serializable { @Override public void open(OpenMode mode) throws MessagingException { - if (isOpen()) { - return; - } - if (!exists()) { - create(FolderType.HOLDS_MESSAGES); - } - Cursor cursor = null; - try { - cursor = mDb.rawQuery("SELECT id, unread_count, visible_limit, last_updated, status FROM folders " - + "where folders.name = ?", - new String[] { - mName - }); - cursor.moveToFirst(); + if (isOpen()) { + return; + } + Cursor cursor = null; + try { + cursor = mDb.rawQuery("SELECT id, unread_count, visible_limit, last_updated, status FROM folders " + + "where folders.name = ?", + new String[] { + mName + }); + + if (cursor.moveToFirst()) { + int folderId = cursor.getInt(0); + if (folderId > 0) + { open(cursor.getInt(0), cursor.getInt(1), cursor.getInt(2), cursor.getLong(3), cursor.getString(4)); - + } + } else { + create(FolderType.HOLDS_MESSAGES); + open(mode); } - finally { - if (cursor != null) { - cursor.close(); - } + } + finally { + if (cursor != null) { + cursor.close(); } + } } private void open(int id, int unreadCount, int visibleLimit, long lastChecked, String status) throws MessagingException @@ -581,8 +592,8 @@ public class LocalStore extends Store implements Serializable { String id = getPrefId(); SharedPreferences.Editor editor = preferences.mSharedPreferences.edit(); - // there can be a lot of folders. For the defaults, let's not save prefs, saving space - if (displayClass == FolderClass.NONE) + // there can be a lot of folders. For the defaults, let's not save prefs, saving space, except for INBOX + if (displayClass == FolderClass.NONE && !Email.INBOX.equals(getName())) { editor.remove(id + ".displayMode"); } @@ -591,7 +602,7 @@ public class LocalStore extends Store implements Serializable { editor.putString(id + ".displayMode", displayClass.name()); } - if (syncClass == FolderClass.NONE) + if (syncClass == FolderClass.NONE && !Email.INBOX.equals(getName())) { editor.remove(id + ".syncMode"); } @@ -605,7 +616,7 @@ public class LocalStore extends Store implements Serializable { public void refresh(Preferences preferences) throws MessagingException { String id = getPrefId(); - + try { displayClass = FolderClass.valueOf(preferences.mSharedPreferences.getString(id + ".displayMode",