mirror of
https://github.com/moparisthebest/k-9
synced 2024-11-15 22:15:15 -05:00
Extracted confirmation dialog creation to ConfirmationDialog
Confirmation dialogs in MessageList and MessageView now use the new ConfirmationDialog class.
This commit is contained in:
parent
449d4df2a9
commit
ac148a1ef7
67
src/com/fsck/k9/activity/ConfirmationDialog.java
Normal file
67
src/com/fsck/k9/activity/ConfirmationDialog.java
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
package com.fsck.k9.activity;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
|
||||||
|
public class ConfirmationDialog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a customized confirmation dialog ({@link AlertDialog}).
|
||||||
|
*
|
||||||
|
* @param activity The activity this dialog is created for.
|
||||||
|
* @param dialogId The id that was used with {@link Activity#showDialog(int)}
|
||||||
|
* @param title The resource id of the text to display in the dialog title
|
||||||
|
* @param message The text to display in the main dialog area
|
||||||
|
* @param confirmButton The resource id of the text to display in the confirm button
|
||||||
|
* @param cancelButton The resource id of the text to display in the cancel button
|
||||||
|
* @param action The action to perform if the user presses the confirm button
|
||||||
|
* @return A confirmation dialog with the supplied arguments
|
||||||
|
*/
|
||||||
|
public static Dialog create(final Activity activity, final int dialogId, final int title,
|
||||||
|
final String message, final int confirmButton, final int cancelButton,
|
||||||
|
final Runnable action) {
|
||||||
|
|
||||||
|
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||||
|
builder.setTitle(title);
|
||||||
|
builder.setMessage(message);
|
||||||
|
builder.setPositiveButton(confirmButton,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
activity.dismissDialog(dialogId);
|
||||||
|
action.run();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.setNegativeButton(cancelButton,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
activity.dismissDialog(dialogId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return builder.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a customized confirmation dialog ({@link AlertDialog}).
|
||||||
|
*
|
||||||
|
* @param activity The activity this dialog is created for.
|
||||||
|
* @param dialogId The id that was used with {@link Activity#showDialog(int)}
|
||||||
|
* @param title The resource id of the text to display in the dialog title
|
||||||
|
* @param message The resource id of text to display in the main dialog area
|
||||||
|
* @param confirmButton The resource id of the text to display in the confirm button
|
||||||
|
* @param cancelButton The resource id of the text to display in the cancel button
|
||||||
|
* @param action The action to perform if the user presses the confirm button
|
||||||
|
* @return A confirmation dialog with the supplied arguments
|
||||||
|
* @see #create(Activity,int,int,String,int,int,Runnable)
|
||||||
|
*/
|
||||||
|
public static Dialog create(final Activity activity, final int dialogId, final int title,
|
||||||
|
final int message, final int confirmButton, final int cancelButton,
|
||||||
|
final Runnable action) {
|
||||||
|
|
||||||
|
return create(activity, dialogId, title, activity.getString(message), confirmButton,
|
||||||
|
cancelButton, action);
|
||||||
|
}
|
||||||
|
}
|
@ -11,7 +11,6 @@ import java.util.Map;
|
|||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
@ -1262,9 +1261,41 @@ public class MessageList
|
|||||||
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 createMarkAllAsReadDialog();
|
return ConfirmationDialog.create(this, id,
|
||||||
|
R.string.mark_all_as_read_dlg_title,
|
||||||
|
getString(R.string.mark_all_as_read_dlg_instructions_fmt,
|
||||||
|
mCurrentFolder.displayName),
|
||||||
|
R.string.okay_action,
|
||||||
|
R.string.cancel_action,
|
||||||
|
new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
mController.markAllMessagesRead(mAccount, mCurrentFolder.name);
|
||||||
|
|
||||||
|
synchronized (mAdapter.messages) {
|
||||||
|
for (MessageInfoHolder holder : mAdapter.messages) {
|
||||||
|
holder.read = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mHandler.sortMessages();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
case R.id.dialog_confirm_spam:
|
case R.id.dialog_confirm_spam:
|
||||||
return createConfirmSpamDialog(id);
|
return ConfirmationDialog.create(this, id,
|
||||||
|
R.string.dialog_confirm_spam_title,
|
||||||
|
R.string.dialog_confirm_spam_message,
|
||||||
|
R.string.dialog_confirm_spam_confirm_button,
|
||||||
|
R.string.dialog_confirm_spam_cancel_button,
|
||||||
|
new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
moveToSpamFolder(mSelectedMessage);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.onCreateDialog(id);
|
return super.onCreateDialog(id);
|
||||||
@ -1286,59 +1317,6 @@ public class MessageList
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Dialog createMarkAllAsReadDialog() {
|
|
||||||
return new AlertDialog.Builder(this)
|
|
||||||
.setTitle(R.string.mark_all_as_read_dlg_title)
|
|
||||||
.setMessage(getString(R.string.mark_all_as_read_dlg_instructions_fmt,
|
|
||||||
mCurrentFolder.displayName))
|
|
||||||
.setPositiveButton(R.string.okay_action, new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog, int whichButton) {
|
|
||||||
dismissDialog(DIALOG_MARK_ALL_AS_READ);
|
|
||||||
|
|
||||||
try {
|
|
||||||
mController.markAllMessagesRead(mAccount, mCurrentFolder.name);
|
|
||||||
|
|
||||||
synchronized (mAdapter.messages) {
|
|
||||||
for (MessageInfoHolder holder : mAdapter.messages) {
|
|
||||||
holder.read = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mHandler.sortMessages();
|
|
||||||
} catch (Exception e) {
|
|
||||||
// Ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.setNegativeButton(R.string.cancel_action, new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog, int whichButton) {
|
|
||||||
dismissDialog(DIALOG_MARK_ALL_AS_READ);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.create();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Dialog createConfirmSpamDialog(final int id) {
|
|
||||||
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
||||||
builder.setTitle(R.string.dialog_confirm_spam_title);
|
|
||||||
builder.setMessage(R.string.dialog_confirm_spam_message);
|
|
||||||
builder.setPositiveButton(R.string.dialog_confirm_spam_confirm_button,
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
dismissDialog(id);
|
|
||||||
moveToSpamFolder(mSelectedMessage);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
builder.setNegativeButton(R.string.dialog_confirm_spam_cancel_button,
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
dismissDialog(id);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return builder.create();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onToggleRead(MessageInfoHolder holder) {
|
private void onToggleRead(MessageInfoHolder holder) {
|
||||||
mController.setFlag(holder.message.getFolder().getAccount(), holder.message.getFolder().getName(), new String[] { holder.uid }, Flag.SEEN, !holder.read);
|
mController.setFlag(holder.message.getFolder().getAccount(), holder.message.getFolder().getName(), new String[] { holder.uid }, Flag.SEEN, !holder.read);
|
||||||
holder.read = !holder.read;
|
holder.read = !holder.read;
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
package com.fsck.k9.activity;
|
package com.fsck.k9.activity;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
@ -563,32 +561,6 @@ public class MessageView extends K9Activity implements OnClickListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param id
|
|
||||||
* @return Never <code>null</code>
|
|
||||||
*/
|
|
||||||
protected Dialog createConfirmDeleteDialog(final int id) {
|
|
||||||
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
||||||
builder.setTitle(R.string.dialog_confirm_delete_title);
|
|
||||||
builder.setMessage(R.string.dialog_confirm_delete_message);
|
|
||||||
builder.setPositiveButton(R.string.dialog_confirm_delete_confirm_button,
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
dismissDialog(id);
|
|
||||||
delete();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
builder.setNegativeButton(R.string.dialog_confirm_delete_cancel_button,
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
dismissDialog(id);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return builder.create();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void delete() {
|
private void delete() {
|
||||||
if (mMessage != null) {
|
if (mMessage != null) {
|
||||||
// Disable the delete button after it's tapped (to try to prevent
|
// Disable the delete button after it's tapped (to try to prevent
|
||||||
@ -944,7 +916,17 @@ public class MessageView extends K9Activity implements OnClickListener {
|
|||||||
protected Dialog onCreateDialog(final int id) {
|
protected Dialog onCreateDialog(final int id) {
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case R.id.dialog_confirm_delete:
|
case R.id.dialog_confirm_delete:
|
||||||
return createConfirmDeleteDialog(id);
|
return ConfirmationDialog.create(this, id,
|
||||||
|
R.string.dialog_confirm_delete_title,
|
||||||
|
R.string.dialog_confirm_delete_message,
|
||||||
|
R.string.dialog_confirm_delete_confirm_button,
|
||||||
|
R.string.dialog_confirm_delete_cancel_button,
|
||||||
|
new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
delete();
|
||||||
|
}
|
||||||
|
});
|
||||||
case R.id.dialog_attachment_progress:
|
case R.id.dialog_attachment_progress:
|
||||||
ProgressDialog d = new ProgressDialog(this);
|
ProgressDialog d = new ProgressDialog(this);
|
||||||
d.setIndeterminate(true);
|
d.setIndeterminate(true);
|
||||||
|
Loading…
Reference in New Issue
Block a user