Ask move for leave deleted

This commit is contained in:
M66B 2022-04-01 17:01:20 +02:00
parent f36a9e4eb6
commit 71ba40acf1
2 changed files with 58 additions and 26 deletions

View File

@ -5318,20 +5318,27 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
}
private void onActionDelete(TupleMessageEx message) {
boolean leaveDeleted =
(message.accountProtocol == EntityAccount.TYPE_POP &&
message.accountLeaveDeleted);
Bundle aargs = new Bundle();
aargs.putString("question", context.getString(R.string.title_ask_delete));
if (leaveDeleted)
aargs.putString("question", context.getResources()
.getQuantityString(R.plurals.title_moving_messages, 1, 1));
else
aargs.putString("question", context.getString(R.string.title_ask_delete));
aargs.putString("remark", message.getRemark());
aargs.putLong("id", message.id);
aargs.putInt("faq", 160);
aargs.putString("notagain", "delete_asked");
aargs.putString("accept", context.getString(R.string.title_ask_delete_accept));
if (!leaveDeleted)
aargs.putString("accept", context.getString(R.string.title_ask_delete_accept));
aargs.putBoolean("warning", true);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean delete_asked = prefs.getBoolean("delete_asked", false);
if (delete_asked ||
(message.accountProtocol == EntityAccount.TYPE_POP &&
message.accountLeaveDeleted)) {
if (delete_asked) {
Intent data = new Intent();
data.putExtra("args", aargs);
parentFragment.onActivityResult(FragmentMessages.REQUEST_MESSAGE_DELETE, RESULT_OK, data);

View File

@ -2523,11 +2523,9 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
onSwipeJunk(message);
} else if (EntityMessage.SWIPE_ACTION_DELETE.equals(action) ||
(action.equals(message.folder) && EntityFolder.TRASH.equals(message.folderType)) ||
(EntityFolder.TRASH.equals(actionType) && EntityFolder.JUNK.equals(message.folderType))) {
if (!(message.accountLeaveDeleted && EntityFolder.INBOX.equals(message.folderType)))
adapter.notifyItemChanged(pos);
onSwipeDelete(message);
} else
(EntityFolder.TRASH.equals(actionType) && EntityFolder.JUNK.equals(message.folderType)))
onSwipeDelete(message, pos);
else
swipeFolder(message, action);
}
@ -2619,7 +2617,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
onSwipeJunk(message);
return true;
} else if (itemId == R.string.title_delete_permanently) {
onSwipeDelete(message);
onSwipeDelete(message, NO_POSITION);
return true;
}
return false;
@ -2691,27 +2689,37 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
ask.show(getParentFragmentManager(), "swipe:junk");
}
private void onSwipeDelete(@NonNull TupleMessageEx message) {
private void onSwipeDelete(@NonNull TupleMessageEx message, int pos) {
boolean leave_deleted =
(message.accountProtocol == EntityAccount.TYPE_POP &&
message.accountLeaveDeleted);
Bundle args = new Bundle();
args.putString("question", getString(R.string.title_ask_delete));
if (leave_deleted)
args.putString("question", getResources()
.getQuantityString(R.plurals.title_moving_messages, 1, 1));
else
args.putString("question", getString(R.string.title_ask_delete));
args.putString("remark", message.getRemark());
args.putLong("id", message.id);
args.putInt("faq", 160);
args.putString("notagain", "delete_asked");
args.putString("accept", getString(R.string.title_ask_delete_accept));
if (!leave_deleted)
args.putString("accept", getString(R.string.title_ask_delete_accept));
args.putBoolean("warning", true);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean delete_asked = prefs.getBoolean("delete_asked", false);
if (delete_asked ||
(message.accountProtocol == EntityAccount.TYPE_POP &&
message.accountLeaveDeleted)) {
if (delete_asked) {
Intent data = new Intent();
data.putExtra("args", args);
onActivityResult(REQUEST_MESSAGE_DELETE, RESULT_OK, data);
return;
}
if (pos != NO_POSITION)
adapter.notifyItemChanged(pos);
FragmentDialogAsk ask = new FragmentDialogAsk();
ask.setArguments(args);
ask.setTargetFragment(FragmentMessages.this, REQUEST_MESSAGE_DELETE);
@ -3802,14 +3810,22 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
@Override
protected void onExecuted(Bundle args, final List<Long> ids) {
Bundle aargs = new Bundle();
aargs.putString("question", getResources()
.getQuantityString(R.plurals.title_deleting_messages, ids.size(), ids.size()));
aargs.putString("accept", getString(R.string.title_ask_delete_accept));
if (popOnly && leave_delete) {
aargs.putString("question", getResources()
.getQuantityString(R.plurals.title_moving_messages, ids.size(), ids.size()));
aargs.putString("notagain", "delete_asked");
} else {
aargs.putString("question", getResources()
.getQuantityString(R.plurals.title_deleting_messages, ids.size(), ids.size()));
aargs.putString("accept", getString(R.string.title_ask_delete_accept));
}
aargs.putInt("faq", 160);
aargs.putLongArray("ids", Helper.toLongArray(ids));
aargs.putBoolean("warning", true);
if (popOnly && leave_delete) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean delete_asked = prefs.getBoolean("delete_asked", false);
if (popOnly && leave_delete && delete_asked) {
Intent data = new Intent();
data.putExtra("args", aargs);
onActivityResult(REQUEST_MESSAGES_DELETE, RESULT_OK, data);
@ -4102,16 +4118,25 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
@Override
protected void onExecuted(Bundle args, List<Long> ids) {
boolean leave_deleted = args.getBoolean("leave_deleted");
Bundle aargs = new Bundle();
aargs.putString("question", getResources()
.getQuantityString(R.plurals.title_deleting_messages, ids.size(), ids.size()));
aargs.putString("accept", getString(R.string.title_ask_delete_accept));
if (leave_deleted) {
aargs.putString("question", getResources()
.getQuantityString(R.plurals.title_moving_messages, ids.size(), ids.size()));
aargs.putString("notagain", "delete_asked");
} else {
aargs.putString("question", getResources()
.getQuantityString(R.plurals.title_deleting_messages, ids.size(), ids.size()));
aargs.putString("accept", getString(R.string.title_ask_delete_accept));
}
aargs.putInt("faq", 160);
aargs.putLongArray("ids", Helper.toLongArray(ids));
aargs.putBoolean("warning", true);
boolean leave_deleted = args.getBoolean("leave_deleted");
if (leave_deleted) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean delete_asked = prefs.getBoolean("delete_asked", false);
if (leave_deleted && delete_asked) {
Intent data = new Intent();
data.putExtra("args", aargs);
onActivityResult(REQUEST_MESSAGES_DELETE, RESULT_OK, data);