Added undo on swipe/hide

master
M66B 9 months ago
parent 9a827f35c6
commit b26692a9cc

@ -3421,7 +3421,7 @@ public class FragmentMessages extends FragmentBase
} else if (EntityMessage.SWIPE_ACTION_SNOOZE.equals(action)) } else if (EntityMessage.SWIPE_ACTION_SNOOZE.equals(action))
onSwipeSnooze(message, viewHolder); onSwipeSnooze(message, viewHolder);
else if (EntityMessage.SWIPE_ACTION_HIDE.equals(action)) else if (EntityMessage.SWIPE_ACTION_HIDE.equals(action))
onActionHide(message); onActionHide(message, true);
else if (EntityMessage.SWIPE_ACTION_MOVE.equals(action)) { else if (EntityMessage.SWIPE_ACTION_MOVE.equals(action)) {
redraw(viewHolder); redraw(viewHolder);
onSwipeMove(message); onSwipeMove(message);
@ -3623,7 +3623,7 @@ public class FragmentMessages extends FragmentBase
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, false);
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);
@ -4926,7 +4926,7 @@ public class FragmentMessages extends FragmentBase
}.execute(this, args, "messages:seen"); }.execute(this, args, "messages:seen");
} }
private void onActionHide(TupleMessageEx message) { private void onActionHide(TupleMessageEx message, boolean undo) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putLong("account", message.account); args.putLong("account", message.account);
args.putString("thread", message.thread); args.putString("thread", message.thread);
@ -4934,6 +4934,7 @@ public class FragmentMessages extends FragmentBase
args.putLong("duration", message.ui_snoozed == null ? Long.MAX_VALUE : 0); args.putLong("duration", message.ui_snoozed == null ? Long.MAX_VALUE : 0);
args.putLong("time", message.ui_snoozed == null ? Long.MAX_VALUE : 0); args.putLong("time", message.ui_snoozed == null ? Long.MAX_VALUE : 0);
args.putBoolean("hide", true); args.putBoolean("hide", true);
args.putBoolean("undo", undo);
onSnoozeOrHide(args); onSnoozeOrHide(args);
} }
@ -11400,6 +11401,8 @@ public class FragmentMessages extends FragmentBase
long time = args.getLong("time"); long time = args.getLong("time");
args.putLong("wakeup", duration == 0 ? -1 : time); args.putLong("wakeup", duration == 0 ? -1 : time);
final Context context = getContext();
new SimpleTask<Long>() { new SimpleTask<Long>() {
@Override @Override
protected Long onExecute(Context context, Bundle args) { protected Long onExecute(Context context, Bundle args) {
@ -11457,6 +11460,27 @@ public class FragmentMessages extends FragmentBase
protected void onExecuted(Bundle args, Long wakeup) { protected void onExecuted(Bundle args, Long wakeup) {
if (wakeup != null && args.getBoolean("finish")) if (wakeup != null && args.getBoolean("finish"))
finish(); finish();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean filter_snoozed = prefs.getBoolean(getFilter(context, "snoozed", viewType, type), true);
if (duration == Long.MAX_VALUE && filter_snoozed && args.getBoolean("undo")) {
FragmentActivity activity = getActivity();
if (activity instanceof ActivityView)
((ActivityView) activity).undo(getString(R.string.title_hide), args, null,
new SimpleTask<Void>() {
@Override
protected Void onExecute(Context context, Bundle args) throws Throwable {
args.putLong("duration", 0);
args.putLong("time", 0);
onSnoozeOrHide(args);
return null;
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.unexpectedError(getParentFragmentManager(), ex);
}
});
}
} }
@Override @Override

Loading…
Cancel
Save