Swipe/ask: added trash/archive

pull/217/head
M66B 11 months ago
parent c1909db169
commit cddcaf6819

@ -3420,158 +3420,197 @@ public class FragmentMessages extends FragmentBase
} }
private void onSwipeAsk(final @NonNull TupleMessageEx message, @NonNull View anchor) { private void onSwipeAsk(final @NonNull TupleMessageEx message, @NonNull View anchor) {
// Make sure animations are done Bundle args = new Bundle();
rvMessage.post(new Runnable() { args.putLong("account", message.account);
new SimpleTask<Pair<EntityFolder, EntityFolder>>() {
@Override @Override
public void run() { protected Pair<EntityFolder, EntityFolder> onExecute(Context context, Bundle args) throws Throwable {
try { long account = args.getLong("account");
final Context context = getContext();
int order = 1; DB db = DB.getInstance(context);
PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(context, getViewLifecycleOwner(), anchor); return new Pair(
db.folder().getFolderByType(account, EntityFolder.ARCHIVE),
db.folder().getFolderByType(account, EntityFolder.TRASH));
}
if (message.ui_seen) @Override
popupMenu.getMenu().add(Menu.NONE, R.string.title_unseen, order++, R.string.title_unseen) protected void onExecuted(Bundle args, Pair<EntityFolder, EntityFolder> data) {
.setIcon(R.drawable.twotone_mail_24); // Make sure animations are done
else rvMessage.post(new Runnable() {
popupMenu.getMenu().add(Menu.NONE, R.string.title_seen, order++, R.string.title_seen) @Override
.setIcon(R.drawable.twotone_drafts_24); public void run() {
try {
final Context context = getContext();
popupMenu.getMenu().add(Menu.NONE, R.string.title_snooze, order++, R.string.title_snooze) int order = 1;
.setIcon(R.drawable.twotone_timelapse_24); PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(context, getViewLifecycleOwner(), anchor);
if (message.ui_snoozed == null) if (message.ui_seen)
popupMenu.getMenu().add(Menu.NONE, R.string.title_hide, order++, R.string.title_hide) popupMenu.getMenu().add(Menu.NONE, R.string.title_unseen, order++, R.string.title_unseen)
.setIcon(R.drawable.twotone_visibility_off_24); .setIcon(R.drawable.twotone_mail_24);
else if (message.ui_snoozed == Long.MAX_VALUE) else
popupMenu.getMenu().add(Menu.NONE, R.string.title_unhide, order++, R.string.title_unhide) popupMenu.getMenu().add(Menu.NONE, R.string.title_seen, order++, R.string.title_seen)
.setIcon(R.drawable.twotone_visibility_24); .setIcon(R.drawable.twotone_drafts_24);
if (message.ui_flagged) popupMenu.getMenu().add(Menu.NONE, R.string.title_snooze, order++, R.string.title_snooze)
popupMenu.getMenu().add(Menu.NONE, R.string.title_unflag, order++, R.string.title_unflag) .setIcon(R.drawable.twotone_timelapse_24);
.setIcon(R.drawable.twotone_star_border_24);
else if (message.ui_snoozed == null)
popupMenu.getMenu().add(Menu.NONE, R.string.title_flag, order++, R.string.title_flag) popupMenu.getMenu().add(Menu.NONE, R.string.title_hide, order++, R.string.title_hide)
.setIcon(R.drawable.twotone_star_24); .setIcon(R.drawable.twotone_visibility_off_24);
else if (message.ui_snoozed == Long.MAX_VALUE)
popupMenu.getMenu().add(Menu.NONE, R.string.title_flag_color, order++, R.string.title_flag_color) popupMenu.getMenu().add(Menu.NONE, R.string.title_unhide, order++, R.string.title_unhide)
.setIcon(R.drawable.twotone_auto_awesome_24); .setIcon(R.drawable.twotone_visibility_24);
SubMenu importance = popupMenu.getMenu() if (message.ui_flagged)
.addSubMenu(Menu.NONE, Menu.NONE, order++, R.string.title_set_importance) popupMenu.getMenu().add(Menu.NONE, R.string.title_unflag, order++, R.string.title_unflag)
.setIcon(R.drawable.twotone_north_24); .setIcon(R.drawable.twotone_star_border_24);
importance.add(Menu.NONE, R.string.title_importance_high, 1, R.string.title_importance_high) else
.setIcon(R.drawable.twotone_north_24) popupMenu.getMenu().add(Menu.NONE, R.string.title_flag, order++, R.string.title_flag)
.setEnabled(!EntityMessage.PRIORITIY_HIGH.equals(message.importance)); .setIcon(R.drawable.twotone_star_24);
importance.add(Menu.NONE, R.string.title_importance_normal, 2, R.string.title_importance_normal)
.setIcon(R.drawable.twotone_horizontal_rule_24) popupMenu.getMenu().add(Menu.NONE, R.string.title_flag_color, order++, R.string.title_flag_color)
.setEnabled(!EntityMessage.PRIORITIY_NORMAL.equals(message.importance)); .setIcon(R.drawable.twotone_auto_awesome_24);
importance.add(Menu.NONE, R.string.title_importance_low, 3, R.string.title_importance_low)
.setIcon(R.drawable.twotone_south_24) SubMenu importance = popupMenu.getMenu()
.setEnabled(!EntityMessage.PRIORITIY_LOW.equals(message.importance)); .addSubMenu(Menu.NONE, Menu.NONE, order++, R.string.title_set_importance)
.setIcon(R.drawable.twotone_north_24);
if (AI.isAvailable(context)) importance.add(Menu.NONE, R.string.title_importance_high, 1, R.string.title_importance_high)
popupMenu.getMenu().add(Menu.NONE, R.string.title_summarize, order++, R.string.title_summarize) .setIcon(R.drawable.twotone_north_24)
.setIcon(R.drawable.twotone_smart_toy_24); .setEnabled(!EntityMessage.PRIORITIY_HIGH.equals(message.importance));
importance.add(Menu.NONE, R.string.title_importance_normal, 2, R.string.title_importance_normal)
if (message.accountProtocol == EntityAccount.TYPE_IMAP) { .setIcon(R.drawable.twotone_horizontal_rule_24)
popupMenu.getMenu().add(Menu.NONE, R.string.title_move, order++, R.string.title_move) .setEnabled(!EntityMessage.PRIORITIY_NORMAL.equals(message.importance));
.setIcon(R.drawable.twotone_drive_file_move_24); importance.add(Menu.NONE, R.string.title_importance_low, 3, R.string.title_importance_low)
popupMenu.getMenu().add(Menu.NONE, R.string.title_report_spam, order++, R.string.title_report_spam) .setIcon(R.drawable.twotone_south_24)
.setIcon(R.drawable.twotone_report_24); .setEnabled(!EntityMessage.PRIORITIY_LOW.equals(message.importance));
}
popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_permanently, order++, R.string.title_delete_permanently) if (AI.isAvailable(context))
.setIcon(R.drawable.twotone_delete_forever_24); popupMenu.getMenu().add(Menu.NONE, R.string.title_summarize, order++, R.string.title_summarize)
.setIcon(R.drawable.twotone_smart_toy_24);
if (data.first != null && data.first.id != null)
popupMenu.getMenu().add(Menu.NONE, R.string.title_archive, order++, R.string.title_archive)
.setIcon(R.drawable.twotone_archive_24)
.setIntent(new Intent().putExtra("folder", data.first.id));
if (data.second != null && data.second.id != null)
popupMenu.getMenu().add(Menu.NONE, R.string.title_trash, order++, R.string.title_trash)
.setIcon(R.drawable.twotone_delete_24)
.setIntent(new Intent().putExtra("folder", data.second.id));
if (message.accountProtocol == EntityAccount.TYPE_IMAP) {
popupMenu.getMenu().add(Menu.NONE, R.string.title_move, order++, R.string.title_move)
.setIcon(R.drawable.twotone_drive_file_move_24);
popupMenu.getMenu().add(Menu.NONE, R.string.title_report_spam, order++, R.string.title_report_spam)
.setIcon(R.drawable.twotone_report_24);
}
popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_permanently, order++, R.string.title_delete_permanently)
.setIcon(R.drawable.twotone_delete_forever_24);
popupMenu.insertIcons(context); popupMenu.insertIcons(context);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override @Override
public boolean onMenuItemClick(MenuItem target) { public boolean onMenuItemClick(MenuItem target) {
int itemId = target.getItemId(); int itemId = target.getItemId();
if (itemId == R.string.title_seen) { if (itemId == R.string.title_seen) {
onActionSeenSelection(true, message.id, false); onActionSeenSelection(true, message.id, false);
return true; return true;
} else if (itemId == R.string.title_unseen) { } else if (itemId == R.string.title_unseen) {
onActionSeenSelection(false, message.id, false); onActionSeenSelection(false, message.id, false);
return true; return true;
} else if (itemId == R.string.title_snooze) { } else if (itemId == R.string.title_snooze) {
onMenuSnooze(); onMenuSnooze();
return true; return true;
} else if (itemId == R.string.title_hide || itemId == R.string.title_unhide) { } else if (itemId == R.string.title_hide || itemId == R.string.title_unhide) {
onActionHide(message); onActionHide(message);
return true; return true;
} else if (itemId == R.string.title_flag) { } else if (itemId == R.string.title_flag) {
onActionFlagSelection(true, Color.TRANSPARENT, message.id, false); onActionFlagSelection(true, Color.TRANSPARENT, message.id, false);
return true; return true;
} else if (itemId == R.string.title_unflag) { } else if (itemId == R.string.title_unflag) {
onActionFlagSelection(false, Color.TRANSPARENT, message.id, false); onActionFlagSelection(false, Color.TRANSPARENT, message.id, false);
return true; return true;
} else if (itemId == R.string.title_flag_color) { } else if (itemId == R.string.title_flag_color) {
onMenuColor(); onMenuColor();
return true; return true;
} else if (itemId == R.string.title_importance_low) { } else if (itemId == R.string.title_importance_low) {
onActionSetImportanceSelection(EntityMessage.PRIORITIY_LOW, message.id, false); onActionSetImportanceSelection(EntityMessage.PRIORITIY_LOW, message.id, false);
return true; return true;
} else if (itemId == R.string.title_importance_normal) { } else if (itemId == R.string.title_importance_normal) {
onActionSetImportanceSelection(EntityMessage.PRIORITIY_NORMAL, message.id, false); onActionSetImportanceSelection(EntityMessage.PRIORITIY_NORMAL, message.id, false);
return true; return true;
} else if (itemId == R.string.title_importance_high) { } else if (itemId == R.string.title_importance_high) {
onActionSetImportanceSelection(EntityMessage.PRIORITIY_HIGH, message.id, false); onActionSetImportanceSelection(EntityMessage.PRIORITIY_HIGH, message.id, false);
return true; return true;
} else if (itemId == R.string.title_summarize) { } else if (itemId == R.string.title_summarize) {
onSwipeSummarize(message); onSwipeSummarize(message);
return true; return true;
} else if (itemId == R.string.title_move) { } else if (itemId == R.string.title_archive || itemId == R.string.title_trash) {
onSwipeMove(message); Intent intent = target.getIntent();
return true; long folder = (intent == null ? -1L : intent.getLongExtra("folder", -1L));
} else if (itemId == R.string.title_report_spam) { if (folder < 0)
onSwipeJunk(message); return false;
return true; swipeFolder(message, folder);
} else if (itemId == R.string.title_delete_permanently) { return true;
onSwipeDelete(message, null); } else if (itemId == R.string.title_move) {
return true; onSwipeMove(message);
} return true;
return false; } else if (itemId == R.string.title_report_spam) {
} onSwipeJunk(message);
return true;
} else if (itemId == R.string.title_delete_permanently) {
onSwipeDelete(message, null);
return true;
}
return false;
}
private void onMenuSnooze() { private void onMenuSnooze() {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString("title", getString(R.string.title_snooze)); args.putString("title", getString(R.string.title_snooze));
args.putLong("account", message.account); args.putLong("account", message.account);
args.putString("thread", message.thread); args.putString("thread", message.thread);
args.putLong("id", message.id); args.putLong("id", message.id);
if (message.ui_snoozed != null) if (message.ui_snoozed != null)
args.putLong("time", message.ui_snoozed); args.putLong("time", message.ui_snoozed);
args.putBoolean("finish", false); args.putBoolean("finish", false);
FragmentDialogDuration fragment = new FragmentDialogDuration(); FragmentDialogDuration fragment = new FragmentDialogDuration();
fragment.setArguments(args); fragment.setArguments(args);
fragment.setTargetFragment(FragmentMessages.this, REQUEST_MESSAGE_SNOOZE); fragment.setTargetFragment(FragmentMessages.this, REQUEST_MESSAGE_SNOOZE);
fragment.show(getParentFragmentManager(), "message:snooze"); fragment.show(getParentFragmentManager(), "message:snooze");
} }
private void onMenuColor() {
Bundle args = new Bundle();
args.putLong("id", message.id);
args.putInt("color", message.color == null ? Color.TRANSPARENT : message.color);
args.putString("title", getString(R.string.title_flag_color));
args.putBoolean("reset", true);
args.putInt("faq", 187);
FragmentDialogColor fragment = new FragmentDialogColor();
fragment.setArguments(args);
fragment.setTargetFragment(FragmentMessages.this, REQUEST_MESSAGE_COLOR);
fragment.show(getParentFragmentManager(), "message:color");
}
});
private void onMenuColor() { popupMenu.show();
Bundle args = new Bundle(); } catch (Throwable ex) {
args.putLong("id", message.id); Log.e(ex);
args.putInt("color", message.color == null ? Color.TRANSPARENT : message.color);
args.putString("title", getString(R.string.title_flag_color));
args.putBoolean("reset", true);
args.putInt("faq", 187);
FragmentDialogColor fragment = new FragmentDialogColor();
fragment.setArguments(args);
fragment.setTargetFragment(FragmentMessages.this, REQUEST_MESSAGE_COLOR);
fragment.show(getParentFragmentManager(), "message:color");
} }
}); }
});
}
popupMenu.show(); @Override
} catch (Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Log.e(ex); Log.unexpectedError(getParentFragment(), ex);
}
} }
}); }.execute(FragmentMessages.this, args, "swipe:ask");
} }
private void onSwipeSnooze(TupleMessageEx message, RecyclerView.ViewHolder viewHolder) { private void onSwipeSnooze(TupleMessageEx message, RecyclerView.ViewHolder viewHolder) {

Loading…
Cancel
Save