diff --git a/res/values/strings.xml b/res/values/strings.xml index 52f1b87ce..f5a059261 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -95,8 +95,11 @@ Choose sender Mark all messages as read - Mark all messages in \'%s\' as read? (including - messages in the folder that are not displayed in K-9) + Mark all messages in \'%s\' as read (including + messages in the folder that are not displayed in K-9)? + + Empty trash + Caution: this will delete all messages in the trash folder on the server, including messages that are not displayed in K-9. Add star Remove star diff --git a/src/com/fsck/k9/activity/FolderList.java b/src/com/fsck/k9/activity/FolderList.java index 33f975b82..6f8640761 100644 --- a/src/com/fsck/k9/activity/FolderList.java +++ b/src/com/fsck/k9/activity/FolderList.java @@ -52,6 +52,7 @@ import java.util.List; public class FolderList extends K9ListActivity { private static final int DIALOG_MARK_ALL_AS_READ = 1; + private static final int DIALOG_EMPTY_TRASH = 2; private static final String EXTRA_ACCOUNT = "account"; @@ -413,11 +414,8 @@ public class FolderList extends K9ListActivity { onRefresh(false); } - private void onRefresh(final boolean forceRemote) { - MessagingController.getInstance(getApplication()).listFolders(mAccount, forceRemote, mAdapter.mListener); - } /** @@ -480,18 +478,20 @@ public class FolderList extends K9ListActivity { Accounts.listAccounts(this); finish(); } + + private void onEmptyTrash() { + showDialog(DIALOG_EMPTY_TRASH); + } - private void onEmptyTrash(final Account account) { + private void emptyTrash() { mHandler.dataChanged(); - - MessagingController.getInstance(getApplication()).emptyTrash(account, null); + MessagingController.getInstance(getApplication()).emptyTrash(mAccount, null); } private void onExpunge(final Account account, String folderName) { MessagingController.getInstance(getApplication()).expunge(account, folderName, null); } - private void onClearFolder(Account account, String folderName) { // There has to be a cheaper way to get at the localFolder object than this LocalFolder localFolder = null; @@ -514,10 +514,6 @@ public class FolderList extends K9ListActivity { onRefresh(!REFRESH_REMOTE); } - - - - private void sendMail(Account account) { MessagingController.getInstance(getApplication()).sendPendingMessages(account, mAdapter.mListener); } @@ -526,50 +522,42 @@ public class FolderList extends K9ListActivity { switch (item.getItemId()) { case R.id.compose: MessageCompose.actionCompose(this, mAccount); - return true; case R.id.check_mail: MessagingController.getInstance(getApplication()).checkMail(this, mAccount, true, true, mAdapter.mListener); - return true; case R.id.send_messages: MessagingController.getInstance(getApplication()).sendPendingMessages(mAccount, null); return true; + case R.id.accounts: onAccounts(); - return true; case R.id.list_folders: onRefresh(REFRESH_REMOTE); - return true; case R.id.filter_folders: onEnterFilter(); - return true; case R.id.account_settings: onEditAccount(); - return true; case R.id.app_settings: onEditPrefs(); - return true; case R.id.empty_trash: - onEmptyTrash(mAccount); - + onEmptyTrash(); return true; case R.id.compact: onCompact(mAccount); - return true; case R.id.display_1st_class: { @@ -621,31 +609,27 @@ public class FolderList extends K9ListActivity { break; case R.id.mark_all_as_read: - onMarkAllAsRead(mAccount, folder.name); + onMarkAllAsRead(folder.name); break; case R.id.send_messages: sendMail(mAccount); - break; case R.id.check_mail: checkMail(folder); - break; case R.id.folder_settings: onEditFolder(mAccount, folder.name); - break; case R.id.empty_trash: - onEmptyTrash(mAccount); - + onEmptyTrash(); break; + case R.id.expunge: onExpunge(mAccount, folder.name); - break; case R.id.clear_local_folder: @@ -659,7 +643,7 @@ public class FolderList extends K9ListActivity { private FolderInfoHolder mSelectedContextFolder = null; - private void onMarkAllAsRead(final Account account, final String folder) { + private void onMarkAllAsRead(final String folder) { mSelectedContextFolder = mAdapter.getFolder(folder); if (K9.confirmMarkAllAsRead()) { showDialog(DIALOG_MARK_ALL_AS_READ); @@ -670,8 +654,7 @@ public class FolderList extends K9ListActivity { private void markAllAsRead() { try { - MessagingController.getInstance(getApplication()) - .markAllMessagesRead(mAccount, mSelectedContextFolder.name); + MessagingController.getInstance(getApplication()).markAllMessagesRead(mAccount, mSelectedContextFolder.name); mSelectedContextFolder.unreadMessageCount = 0; mHandler.dataChanged(); } catch (Exception e) { @@ -683,18 +666,32 @@ public class FolderList extends K9ListActivity { public Dialog onCreateDialog(int id) { switch (id) { case DIALOG_MARK_ALL_AS_READ: - return ConfirmationDialog.create(this, id, - R.string.mark_all_as_read_dlg_title, - getString(R.string.mark_all_as_read_dlg_instructions_fmt, - mSelectedContextFolder.displayName), - R.string.okay_action, - R.string.cancel_action, - new Runnable() { - @Override - public void run() { - markAllAsRead(); - } - }); + return ConfirmationDialog.create(this, + id, + R.string.mark_all_as_read_dlg_title, + getString(R.string.mark_all_as_read_dlg_instructions_fmt, + mSelectedContextFolder.displayName), + R.string.okay_action, + R.string.cancel_action, + new Runnable() { + @Override + public void run() { + markAllAsRead(); + } + }); + case DIALOG_EMPTY_TRASH: + return ConfirmationDialog.create(this, + id, + R.string.empty_trash_dlg_title, + R.string.empty_trash_dlg_instructions, + R.string.okay_action, + R.string.cancel_action, + new Runnable() { + @Override + public void run() { + emptyTrash(); + } + }); } return super.onCreateDialog(id); @@ -705,10 +702,11 @@ public class FolderList extends K9ListActivity { switch (id) { case DIALOG_MARK_ALL_AS_READ: ((AlertDialog)dialog).setMessage(getString(R.string.mark_all_as_read_dlg_instructions_fmt, - mSelectedContextFolder.displayName)); - + mSelectedContextFolder.displayName)); + break; + case DIALOG_EMPTY_TRASH: + ((AlertDialog)dialog).setMessage(getString(R.string.empty_trash_dlg_instructions)); break; - default: super.onPrepareDialog(id, dialog); }