1
0
mirror of https://github.com/moparisthebest/k-9 synced 2025-02-11 20:50:19 -05:00

Add a confirmation dialog for the empty trash action, as this is fairly destructive.

This commit is contained in:
Kris Wong 2012-01-22 16:54:51 -05:00
parent 0d368c916a
commit 8bc656fe89
2 changed files with 49 additions and 48 deletions

View File

@ -95,8 +95,11 @@
<string name="send_alternate_chooser_title">Choose sender</string> <string name="send_alternate_chooser_title">Choose sender</string>
<string name="mark_all_as_read_dlg_title">Mark all messages as read</string> <string name="mark_all_as_read_dlg_title">Mark all messages as read</string>
<string name="mark_all_as_read_dlg_instructions_fmt">Mark all messages in \'<xliff:g id="folder">%s</xliff:g>\' as read? (including <string name="mark_all_as_read_dlg_instructions_fmt">Mark all messages in \'<xliff:g id="folder">%s</xliff:g>\' as read (including
messages in the folder that are not displayed in K-9)</string> messages in the folder that are not displayed in K-9)?</string>
<string name="empty_trash_dlg_title">Empty trash</string>
<string name="empty_trash_dlg_instructions">Caution: this will delete all messages in the trash folder on the server, including messages that are not displayed in K-9.</string>
<string name="flag_action">Add star</string> <string name="flag_action">Add star</string>
<string name="unflag_action">Remove star</string> <string name="unflag_action">Remove star</string>

View File

@ -52,6 +52,7 @@ import java.util.List;
public class FolderList extends K9ListActivity { public class FolderList extends K9ListActivity {
private static final int DIALOG_MARK_ALL_AS_READ = 1; 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"; private static final String EXTRA_ACCOUNT = "account";
@ -413,11 +414,8 @@ public class FolderList extends K9ListActivity {
onRefresh(false); onRefresh(false);
} }
private void onRefresh(final boolean forceRemote) { private void onRefresh(final boolean forceRemote) {
MessagingController.getInstance(getApplication()).listFolders(mAccount, forceRemote, mAdapter.mListener); MessagingController.getInstance(getApplication()).listFolders(mAccount, forceRemote, mAdapter.mListener);
} }
/** /**
@ -480,18 +478,20 @@ public class FolderList extends K9ListActivity {
Accounts.listAccounts(this); Accounts.listAccounts(this);
finish(); finish();
} }
private void onEmptyTrash() {
showDialog(DIALOG_EMPTY_TRASH);
}
private void onEmptyTrash(final Account account) { private void emptyTrash() {
mHandler.dataChanged(); mHandler.dataChanged();
MessagingController.getInstance(getApplication()).emptyTrash(mAccount, null);
MessagingController.getInstance(getApplication()).emptyTrash(account, null);
} }
private void onExpunge(final Account account, String folderName) { private void onExpunge(final Account account, String folderName) {
MessagingController.getInstance(getApplication()).expunge(account, folderName, null); MessagingController.getInstance(getApplication()).expunge(account, folderName, null);
} }
private void onClearFolder(Account account, String folderName) { private void onClearFolder(Account account, String folderName) {
// There has to be a cheaper way to get at the localFolder object than this // There has to be a cheaper way to get at the localFolder object than this
LocalFolder localFolder = null; LocalFolder localFolder = null;
@ -514,10 +514,6 @@ public class FolderList extends K9ListActivity {
onRefresh(!REFRESH_REMOTE); onRefresh(!REFRESH_REMOTE);
} }
private void sendMail(Account account) { private void sendMail(Account account) {
MessagingController.getInstance(getApplication()).sendPendingMessages(account, mAdapter.mListener); MessagingController.getInstance(getApplication()).sendPendingMessages(account, mAdapter.mListener);
} }
@ -526,50 +522,42 @@ public class FolderList extends K9ListActivity {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.compose: case R.id.compose:
MessageCompose.actionCompose(this, mAccount); MessageCompose.actionCompose(this, mAccount);
return true; return true;
case R.id.check_mail: case R.id.check_mail:
MessagingController.getInstance(getApplication()).checkMail(this, mAccount, true, true, mAdapter.mListener); MessagingController.getInstance(getApplication()).checkMail(this, mAccount, true, true, mAdapter.mListener);
return true; return true;
case R.id.send_messages: case R.id.send_messages:
MessagingController.getInstance(getApplication()).sendPendingMessages(mAccount, null); MessagingController.getInstance(getApplication()).sendPendingMessages(mAccount, null);
return true; return true;
case R.id.accounts: case R.id.accounts:
onAccounts(); onAccounts();
return true; return true;
case R.id.list_folders: case R.id.list_folders:
onRefresh(REFRESH_REMOTE); onRefresh(REFRESH_REMOTE);
return true; return true;
case R.id.filter_folders: case R.id.filter_folders:
onEnterFilter(); onEnterFilter();
return true; return true;
case R.id.account_settings: case R.id.account_settings:
onEditAccount(); onEditAccount();
return true; return true;
case R.id.app_settings: case R.id.app_settings:
onEditPrefs(); onEditPrefs();
return true; return true;
case R.id.empty_trash: case R.id.empty_trash:
onEmptyTrash(mAccount); onEmptyTrash();
return true; return true;
case R.id.compact: case R.id.compact:
onCompact(mAccount); onCompact(mAccount);
return true; return true;
case R.id.display_1st_class: { case R.id.display_1st_class: {
@ -621,31 +609,27 @@ public class FolderList extends K9ListActivity {
break; break;
case R.id.mark_all_as_read: case R.id.mark_all_as_read:
onMarkAllAsRead(mAccount, folder.name); onMarkAllAsRead(folder.name);
break; break;
case R.id.send_messages: case R.id.send_messages:
sendMail(mAccount); sendMail(mAccount);
break; break;
case R.id.check_mail: case R.id.check_mail:
checkMail(folder); checkMail(folder);
break; break;
case R.id.folder_settings: case R.id.folder_settings:
onEditFolder(mAccount, folder.name); onEditFolder(mAccount, folder.name);
break; break;
case R.id.empty_trash: case R.id.empty_trash:
onEmptyTrash(mAccount); onEmptyTrash();
break; break;
case R.id.expunge: case R.id.expunge:
onExpunge(mAccount, folder.name); onExpunge(mAccount, folder.name);
break; break;
case R.id.clear_local_folder: case R.id.clear_local_folder:
@ -659,7 +643,7 @@ public class FolderList extends K9ListActivity {
private FolderInfoHolder mSelectedContextFolder = null; private FolderInfoHolder mSelectedContextFolder = null;
private void onMarkAllAsRead(final Account account, final String folder) { private void onMarkAllAsRead(final String folder) {
mSelectedContextFolder = mAdapter.getFolder(folder); mSelectedContextFolder = mAdapter.getFolder(folder);
if (K9.confirmMarkAllAsRead()) { if (K9.confirmMarkAllAsRead()) {
showDialog(DIALOG_MARK_ALL_AS_READ); showDialog(DIALOG_MARK_ALL_AS_READ);
@ -670,8 +654,7 @@ public class FolderList extends K9ListActivity {
private void markAllAsRead() { private void markAllAsRead() {
try { try {
MessagingController.getInstance(getApplication()) MessagingController.getInstance(getApplication()).markAllMessagesRead(mAccount, mSelectedContextFolder.name);
.markAllMessagesRead(mAccount, mSelectedContextFolder.name);
mSelectedContextFolder.unreadMessageCount = 0; mSelectedContextFolder.unreadMessageCount = 0;
mHandler.dataChanged(); mHandler.dataChanged();
} catch (Exception e) { } catch (Exception e) {
@ -683,18 +666,32 @@ public class FolderList extends K9ListActivity {
public Dialog onCreateDialog(int id) { public Dialog onCreateDialog(int id) {
switch (id) { switch (id) {
case DIALOG_MARK_ALL_AS_READ: case DIALOG_MARK_ALL_AS_READ:
return ConfirmationDialog.create(this, id, return ConfirmationDialog.create(this,
R.string.mark_all_as_read_dlg_title, id,
getString(R.string.mark_all_as_read_dlg_instructions_fmt, R.string.mark_all_as_read_dlg_title,
mSelectedContextFolder.displayName), getString(R.string.mark_all_as_read_dlg_instructions_fmt,
R.string.okay_action, mSelectedContextFolder.displayName),
R.string.cancel_action, R.string.okay_action,
new Runnable() { R.string.cancel_action,
@Override new Runnable() {
public void run() { @Override
markAllAsRead(); 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); return super.onCreateDialog(id);
@ -705,10 +702,11 @@ public class FolderList extends K9ListActivity {
switch (id) { switch (id) {
case DIALOG_MARK_ALL_AS_READ: case DIALOG_MARK_ALL_AS_READ:
((AlertDialog)dialog).setMessage(getString(R.string.mark_all_as_read_dlg_instructions_fmt, ((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; break;
default: default:
super.onPrepareDialog(id, dialog); super.onPrepareDialog(id, dialog);
} }