diff --git a/res/xml/account_settings_preferences.xml b/res/xml/account_settings_preferences.xml index 22b08b316..33a29ed60 100644 --- a/res/xml/account_settings_preferences.xml +++ b/res/xml/account_settings_preferences.xml @@ -300,17 +300,12 @@ android:key="archive_folder" android:title="@string/archive_folder_label" android:dialogTitle="@string/archive_folder_label" /> + - - { } if (this.name.equals(account.getOutboxFolderName())) { - this.displayName = String.format(context.getString(R.string.special_mailbox_name_outbox_fmt), this.name); + this.displayName = context.getString(R.string.special_mailbox_name_outbox); } if (this.name.equals(account.getDraftsFolderName())) { diff --git a/src/com/fsck/k9/activity/MessageList.java b/src/com/fsck/k9/activity/MessageList.java index 6a35b77e4..a84d19292 100644 --- a/src/com/fsck/k9/activity/MessageList.java +++ b/src/com/fsck/k9/activity/MessageList.java @@ -488,6 +488,8 @@ public class MessageList if (K9.INBOX.equalsIgnoreCase(displayName)) { displayName = getString(R.string.special_mailbox_name_inbox); + } else if (mAccount.getOutboxFolderName().equals(displayName)) { + displayName = getString(R.string.special_mailbox_name_outbox); } String dispString = mAdapter.mListener.formatHeader(MessageList.this, getString(R.string.message_list_title, mAccount.getDescription(), displayName), mUnreadMessageCount, getTimeFormat()); diff --git a/src/com/fsck/k9/activity/setup/AccountSettings.java b/src/com/fsck/k9/activity/setup/AccountSettings.java index 84c452110..8980b072f 100644 --- a/src/com/fsck/k9/activity/setup/AccountSettings.java +++ b/src/com/fsck/k9/activity/setup/AccountSettings.java @@ -11,6 +11,7 @@ import android.preference.*; import android.util.Log; import android.view.KeyEvent; +import java.util.Iterator; import java.util.Map; import java.util.LinkedList; import java.util.List; @@ -96,7 +97,6 @@ public class AccountSettings extends K9PreferenceActivity { private static final String PREFERENCE_ARCHIVE_FOLDER = "archive_folder"; private static final String PREFERENCE_DRAFTS_FOLDER = "drafts_folder"; - private static final String PREFERENCE_OUTBOX_FOLDER = "outbox_folder"; private static final String PREFERENCE_SENT_FOLDER = "sent_folder"; private static final String PREFERENCE_SPAM_FOLDER = "spam_folder"; private static final String PREFERENCE_TRASH_FOLDER = "trash_folder"; @@ -157,7 +157,6 @@ public class AccountSettings extends K9PreferenceActivity { private ListPreference mArchiveFolder; private ListPreference mDraftsFolder; - private ListPreference mOutboxFolder; private ListPreference mSentFolder; private ListPreference mSpamFolder; private ListPreference mTrashFolder; @@ -699,7 +698,6 @@ public class AccountSettings extends K9PreferenceActivity { mAccount.setAutoExpandFolderName(reverseTranslateFolder(mAutoExpandFolder.getValue())); mAccount.setArchiveFolderName(mArchiveFolder.getValue()); mAccount.setDraftsFolderName(mDraftsFolder.getValue()); - mAccount.setOutboxFolderName(mOutboxFolder.getValue()); mAccount.setSentFolderName(mSentFolder.getValue()); mAccount.setSpamFolderName(mSpamFolder.getValue()); mAccount.setTrashFolderName(mTrashFolder.getValue()); @@ -852,18 +850,26 @@ public class AccountSettings extends K9PreferenceActivity { } catch (Exception e) { /// this can't be checked in } - allFolderValues = new String[folders.size()+2]; - allFolderLabels = new String[folders.size()+2]; + + // TODO: In the future the call above should be changed to only return remote folders. + // For now we just remove the Outbox folder if present. + Iterator iter = folders.iterator(); + while (iter.hasNext()) + { + Folder folder = iter.next(); + if (mAccount.getOutboxFolderName().equals(folder.getName())) + { + iter.remove(); + } + } + + allFolderValues = new String[folders.size()+1]; + allFolderLabels = new String[folders.size()+1]; allFolderValues[0] = K9.FOLDER_NONE; allFolderLabels[0] = K9.FOLDER_NONE; - // There's a non-zero chance that "outbox" won't actually exist, so we force it into the list - allFolderValues[1] = mAccount.getOutboxFolderName(); - allFolderLabels[1] = mAccount.getOutboxFolderName(); - - - int i = 2; + int i = 1; for (Folder folder : folders) { allFolderLabels[i] = folder.getName(); allFolderValues[i] = folder.getName(); @@ -880,8 +886,6 @@ public class AccountSettings extends K9PreferenceActivity { mArchiveFolder.setEnabled(false); mDraftsFolder = (ListPreference)findPreference(PREFERENCE_DRAFTS_FOLDER); mDraftsFolder.setEnabled(false); - mOutboxFolder = (ListPreference)findPreference(PREFERENCE_OUTBOX_FOLDER); - mOutboxFolder.setEnabled(false); mSentFolder = (ListPreference)findPreference(PREFERENCE_SENT_FOLDER); mSentFolder.setEnabled(false); mSpamFolder = (ListPreference)findPreference(PREFERENCE_SPAM_FOLDER); @@ -896,14 +900,12 @@ public class AccountSettings extends K9PreferenceActivity { initListPreference(mAutoExpandFolder, mAccount.getAutoExpandFolderName(), allFolderLabels, allFolderValues); initListPreference(mArchiveFolder, mAccount.getArchiveFolderName(), allFolderLabels, allFolderValues); initListPreference(mDraftsFolder, mAccount.getDraftsFolderName(), allFolderLabels, allFolderValues); - initListPreference(mOutboxFolder, mAccount.getOutboxFolderName(), allFolderLabels, allFolderValues); initListPreference(mSentFolder, mAccount.getSentFolderName(), allFolderLabels, allFolderValues); initListPreference(mSpamFolder, mAccount.getSpamFolderName(), allFolderLabels, allFolderValues); initListPreference(mTrashFolder, mAccount.getTrashFolderName(), allFolderLabels, allFolderValues); mAutoExpandFolder.setEnabled(true); mArchiveFolder.setEnabled(true); mDraftsFolder.setEnabled(true); - mOutboxFolder.setEnabled(true); mSentFolder.setEnabled(true); mSpamFolder.setEnabled(true); mTrashFolder.setEnabled(true); diff --git a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java index 021683ab9..0bde132a1 100644 --- a/src/com/fsck/k9/activity/setup/AccountSetupBasics.java +++ b/src/com/fsck/k9/activity/setup/AccountSetupBasics.java @@ -233,7 +233,6 @@ public class AccountSetupBasics extends K9Activity mAccount.setTrashFolderName(getString(R.string.special_mailbox_name_trash)); mAccount.setArchiveFolderName(getString(R.string.special_mailbox_name_archive)); mAccount.setSpamFolderName(getString(R.string.special_mailbox_name_spam)); - mAccount.setOutboxFolderName(getString(R.string.special_mailbox_name_outbox)); mAccount.setSentFolderName(getString(R.string.special_mailbox_name_sent)); AccountSetupCheckSettings.actionCheckSettings(this, mAccount, true, true); } catch (UnsupportedEncodingException enc) { @@ -313,7 +312,6 @@ public class AccountSetupBasics extends K9Activity } mAccount.setDraftsFolderName(getString(R.string.special_mailbox_name_drafts)); mAccount.setTrashFolderName(getString(R.string.special_mailbox_name_trash)); - mAccount.setOutboxFolderName(getString(R.string.special_mailbox_name_outbox)); mAccount.setSentFolderName(getString(R.string.special_mailbox_name_sent)); AccountSetupAccountType.actionSelectAccountType(this, mAccount, mDefaultView.isChecked()); diff --git a/src/com/fsck/k9/mail/store/ImapStore.java b/src/com/fsck/k9/mail/store/ImapStore.java index 2a5dd2a27..f122cfab5 100644 --- a/src/com/fsck/k9/mail/store/ImapStore.java +++ b/src/com/fsck/k9/mail/store/ImapStore.java @@ -386,6 +386,13 @@ public class ImapStore extends Store { if (folder.equalsIgnoreCase(K9.INBOX)) { continue; + } else if (folder.equalsIgnoreCase(K9.OUTBOX)) { + /* + * There is a folder on the server with the same name as our local + * outbox. Until we have a good plan to deal with this situation + * we simply ignore the folder on the server. + */ + continue; } else { if (getCombinedPrefix().length() > 0) {