Experiment: swipe right to reply

pull/194/merge
M66B 3 years ago
parent f967292a2f
commit a8745ba7e1

@ -3354,14 +3354,9 @@ For some background, see for [this Wikipedia article](https://en.wikipedia.org/w
<br />
*Report new messages when composing a message*
*Swip right to reply*
A bottom notification will be shown if a new message arrives in the same conversation thread as a new message is being composed for.
There will be a *show* button to show the conversation and from there you can tap on the draft message to continue editting.
The notification can be swiped away.
This requires grouping of messages into conversations to be enabled.
Swiping an expanded message in a conversation thread to the right will reply to the sender of the message.
<br />

@ -1990,6 +1990,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
boolean button_headers = prefs.getBoolean("button_headers", false);
boolean button_unsubscribe = prefs.getBoolean("button_unsubscribe", true);
boolean button_rule = prefs.getBoolean("button_rule", false);
boolean experiments = prefs.getBoolean("experiments", false);
ibHide.setImageResource(message.ui_snoozed == null ? R.drawable.twotone_visibility_off_24 : R.drawable.twotone_visibility_24);
ibSeen.setImageResource(message.ui_seen ? R.drawable.twotone_mail_24 : R.drawable.twotone_drafts_24);
@ -2013,7 +2014,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
ibForceLight.setImageLevel(force_light ? 1 : 0);
ibHide.setVisibility(tools && button_hide && !outbox ? View.VISIBLE : View.GONE);
ibSeen.setVisibility(tools && button_seen && !outbox && seen ? View.VISIBLE : View.GONE);
ibAnswer.setVisibility(!tools || outbox || (!expand_all && expand_one) || !threading ? View.GONE : View.VISIBLE);
ibAnswer.setVisibility(!tools || outbox || (!expand_all && expand_one) || !threading || experiments ? View.GONE : View.VISIBLE);
ibNotes.setVisibility(tools && button_notes && !outbox ? View.VISIBLE : View.GONE);
ibLabels.setVisibility(tools && labels_header && labels ? View.VISIBLE : View.GONE);
ibKeywords.setVisibility(tools && button_keywords && keywords ? View.VISIBLE : View.GONE);

@ -113,6 +113,7 @@ public class EntityMessage implements Serializable {
static final Long SWIPE_ACTION_FLAG = -6L;
static final Long SWIPE_ACTION_DELETE = -7L;
static final Long SWIPE_ACTION_JUNK = -8L;
static final Long SWIPE_ACTION_REPLY = -9L;
@PrimaryKey(autoGenerate = true)
public Long id;

@ -317,6 +317,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
private String onclose;
private boolean quick_scroll;
private boolean addresses;
private boolean experiments;
private int colorPrimary;
private int colorAccent;
@ -444,6 +445,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
onclose = (autoclose ? null : prefs.getString("onclose", null));
quick_scroll = prefs.getBoolean("quick_scroll", true);
addresses = prefs.getBoolean("addresses", false);
experiments = prefs.getBoolean("experiments", false);
colorPrimary = Helper.resolveColor(getContext(), R.attr.colorPrimary);
colorAccent = Helper.resolveColor(getContext(), R.attr.colorAccent);
@ -2112,6 +2114,11 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if (message == null)
return 0;
boolean expanded = iProperties.getValue("expanded", message.id);
if (expanded && experiments)
return makeMovementFlags(0, ItemTouchHelper.RIGHT);
if (EntityFolder.OUTBOX.equals(message.folderType))
return makeMovementFlags(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
@ -2184,8 +2191,16 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if (message == null)
return;
boolean expanded = iProperties.getValue("expanded", message.id);
TupleAccountSwipes swipes;
if (EntityFolder.OUTBOX.equals(message.folderType)) {
if (expanded && experiments) {
swipes = new TupleAccountSwipes();
swipes.swipe_right = EntityMessage.SWIPE_ACTION_REPLY;
swipes.right_type = null;
swipes.swipe_left = null;
swipes.left_type = null;
} else if (EntityFolder.OUTBOX.equals(message.folderType)) {
swipes = new TupleAccountSwipes();
swipes.swipe_right = 0L;
swipes.right_type = EntityFolder.DRAFTS;
@ -2226,6 +2241,15 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
int margin = Helper.dp2pixels(context, 12);
int size = Helper.dp2pixels(context, 24);
if (expanded && experiments) {
Rect r1 = new Rect();
holder.itemView.getGlobalVisibleRect(r1);
Rect r2 = new Rect();
recyclerView.getGlobalVisibleRect(r2);
rect.top = Math.max(rect.top, r1.top - r2.top);
rect.bottom = Math.min(rect.bottom, r1.bottom - r2.top);
}
int icon;
if (EntityMessage.SWIPE_ACTION_ASK.equals(action))
icon = R.drawable.twotone_help_24;
@ -2247,6 +2271,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
(action.equals(message.folder) && EntityFolder.TRASH.equals(message.folderType)) ||
(EntityFolder.TRASH.equals(actionType) && EntityFolder.JUNK.equals(message.folderType)))
icon = R.drawable.twotone_delete_forever_24;
else if (EntityMessage.SWIPE_ACTION_REPLY.equals(action))
icon = R.drawable.twotone_reply_24;
else
icon = EntityFolder.getIcon(dX > 0 ? swipes.right_type : swipes.left_type);
@ -2315,6 +2341,14 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
return;
}
boolean expanded = iProperties.getValue("expanded", message.id);
if (expanded && experiments) {
adapter.notifyItemChanged(pos);
onMenuReply(message, "reply", null);
return;
}
if (EntityFolder.OUTBOX.equals(message.folderType)) {
ActivityCompose.undoSend(message.id, getContext(), getViewLifecycleOwner(), getParentFragmentManager());
return;
@ -2396,7 +2430,9 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if (message == null)
return null;
if (iProperties.getValue("expanded", message.id))
boolean expanded = iProperties.getValue("expanded", message.id);
if (expanded && !experiments)
return null;
return message;

Loading…
Cancel
Save