Added move to answer selection menu

pull/212/head
M66B 1 year ago
parent 936e3bf91d
commit 3900781b6e

@ -3440,9 +3440,8 @@ public class FragmentMessages extends FragmentBase
long_press ? "answer_action" : "answer_single",
long_press ? "reply" : "menu");
if ("move".equals(action)) {
View child = rvMessage.getChildAt(pos);
if (child != null && child.isEnabled())
child.findViewById(R.id.ibMove).performClick();
if (canMove(message))
onMenuMove(message);
} else if ("menu".equals(action) || !message.content)
onReply(message, selected, fabReply);
else
@ -3556,6 +3555,7 @@ public class FragmentMessages extends FragmentBase
popupMenu.getMenu().findItem(R.id.menu_forward_raw).setEnabled(canRaw);
popupMenu.getMenu().findItem(R.id.menu_editasnew).setEnabled(message.content);
popupMenu.getMenu().findItem(R.id.menu_reply_answer).setEnabled(message.content);
popupMenu.getMenu().findItem(R.id.menu_move_to).setEnabled(canMove(message));
if (data.answers != null) {
int order = 100;
@ -3627,6 +3627,9 @@ public class FragmentMessages extends FragmentBase
} else if (itemId == R.id.menu_reply_answer) {
onMenuAnswer(message);
return true;
} else if (itemId == R.id.menu_move_to) {
onMenuMove(message);
return true;
} else if (itemId == R.id.menu_settings) {
onMenuAnswerSettings();
return true;
@ -3770,6 +3773,59 @@ public class FragmentMessages extends FragmentBase
}.execute(getContext(), getViewLifecycleOwner(), new Bundle(), "message:answer");
}
private boolean canMove(TupleMessageEx message) {
boolean pop = (message.accountProtocol == EntityAccount.TYPE_POP);
boolean move = !(message.folderReadOnly || message.uid == null) ||
(pop && EntityFolder.TRASH.equals(message.folderType));
return move;
}
private void onMenuMove(TupleMessageEx message) {
if (message.accountProtocol == EntityAccount.TYPE_POP &&
EntityFolder.TRASH.equals(message.folderType) && !message.accountLeaveDeleted) {
Bundle args = new Bundle();
args.putLong("id", message.account);
new SimpleTask<EntityFolder>() {
@Override
protected EntityFolder onExecute(Context context, Bundle args) {
long id = args.getLong("id");
DB db = DB.getInstance(context);
return db.folder().getFolderByType(id, EntityFolder.INBOX);
}
@Override
protected void onExecuted(Bundle args, EntityFolder inbox) {
_onMenuMove(message, new long[]{message.folder, inbox == null ? -1L : inbox.id});
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.unexpectedError(getParentFragmentManager(), ex);
}
}.execute(this, args, "move:pop");
} else
_onMenuMove(message, new long[]{message.folder});
}
private void _onMenuMove(TupleMessageEx message, long[] disabled) {
Bundle args = new Bundle();
args.putInt("icon", R.drawable.twotone_drive_file_move_24);
args.putString("title", getString(R.string.title_move_to_folder));
args.putLong("account", message.account);
args.putLongArray("disabled", disabled);
args.putLong("message", message.id);
args.putBoolean("copy", false);
args.putBoolean("cancopy", true);
args.putBoolean("similar", false);
FragmentDialogSelectFolder fragment = new FragmentDialogSelectFolder();
fragment.setArguments(args);
fragment.setTargetFragment(this, REQUEST_MESSAGE_MOVE);
fragment.show(getParentFragmentManager(), "message:move");
}
private void onMenuAnswerSettings() {
FragmentDialogAnswerButton fragment = new FragmentDialogAnswerButton();
fragment.show(getParentFragmentManager(), "dialog:answer");

@ -57,6 +57,13 @@
<menu />
</item>
<item
android:id="@+id/menu_move_to"
android:icon="@drawable/twotone_drive_file_move_24"
android:title="@string/title_move_to">
<menu />
</item>
<item
android:id="@+id/menu_settings"
android:icon="@drawable/twotone_settings_24"

Loading…
Cancel
Save