mirror of https://github.com/M66B/FairEmail.git
Added quick actions config
This commit is contained in:
parent
545f9dace5
commit
fcfe97700d
|
@ -293,10 +293,12 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
private CardView cardMore;
|
private CardView cardMore;
|
||||||
private ImageButton ibLowImportance;
|
private ImageButton ibLowImportance;
|
||||||
private ImageButton ibBatchSeen;
|
private ImageButton ibBatchSeen;
|
||||||
|
private ImageButton ibBatchFlag;
|
||||||
private ImageButton ibInbox;
|
private ImageButton ibInbox;
|
||||||
private ImageButton ibArchive;
|
private ImageButton ibArchive;
|
||||||
private ImageButton ibJunk;
|
private ImageButton ibJunk;
|
||||||
private ImageButton ibTrash;
|
private ImageButton ibTrash;
|
||||||
|
private ImageButton ibMoreSettings;
|
||||||
private FloatingActionButton fabSearch;
|
private FloatingActionButton fabSearch;
|
||||||
private FloatingActionButton fabError;
|
private FloatingActionButton fabError;
|
||||||
private ObjectAnimator animator;
|
private ObjectAnimator animator;
|
||||||
|
@ -563,10 +565,12 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
cardMore = view.findViewById(R.id.cardMore);
|
cardMore = view.findViewById(R.id.cardMore);
|
||||||
ibLowImportance = view.findViewById(R.id.ibLowImportance);
|
ibLowImportance = view.findViewById(R.id.ibLowImportance);
|
||||||
ibBatchSeen = view.findViewById(R.id.ibBatchSeen);
|
ibBatchSeen = view.findViewById(R.id.ibBatchSeen);
|
||||||
|
ibBatchFlag = view.findViewById(R.id.ibBatchFlag);
|
||||||
ibInbox = view.findViewById(R.id.ibInbox);
|
ibInbox = view.findViewById(R.id.ibInbox);
|
||||||
ibArchive = view.findViewById(R.id.ibArchive);
|
ibArchive = view.findViewById(R.id.ibArchive);
|
||||||
ibJunk = view.findViewById(R.id.ibJunk);
|
ibJunk = view.findViewById(R.id.ibJunk);
|
||||||
ibTrash = view.findViewById(R.id.ibTrash);
|
ibTrash = view.findViewById(R.id.ibTrash);
|
||||||
|
ibMoreSettings = view.findViewById(R.id.ibMoreSettings);
|
||||||
fabSearch = view.findViewById(R.id.fabSearch);
|
fabSearch = view.findViewById(R.id.fabSearch);
|
||||||
fabError = view.findViewById(R.id.fabError);
|
fabError = view.findViewById(R.id.fabError);
|
||||||
|
|
||||||
|
@ -1307,6 +1311,13 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ibBatchFlag.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
onActionFlagSelection(true, Color.TRANSPARENT, null, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
ibInbox.setOnClickListener(new View.OnClickListener() {
|
ibInbox.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
|
@ -1335,6 +1346,62 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ibMoreSettings.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(v.getContext(), getViewLifecycleOwner(), ibMoreSettings);
|
||||||
|
popupMenu.inflate(R.menu.popup_config_more);
|
||||||
|
|
||||||
|
popupMenu.getMenu().findItem(R.id.menu_importance_low)
|
||||||
|
.setChecked(prefs.getBoolean("more_importance_low", false));
|
||||||
|
popupMenu.getMenu().findItem(R.id.menu_seen)
|
||||||
|
.setChecked(prefs.getBoolean("more_seen", false));
|
||||||
|
popupMenu.getMenu().findItem(R.id.menu_flag)
|
||||||
|
.setChecked(prefs.getBoolean("more_flag", false));
|
||||||
|
popupMenu.getMenu().findItem(R.id.menu_inbox)
|
||||||
|
.setChecked(prefs.getBoolean("more_inbox", true));
|
||||||
|
popupMenu.getMenu().findItem(R.id.menu_archive)
|
||||||
|
.setChecked(prefs.getBoolean("more_archive", true));
|
||||||
|
popupMenu.getMenu().findItem(R.id.menu_junk)
|
||||||
|
.setChecked(prefs.getBoolean("more_junk", true));
|
||||||
|
popupMenu.getMenu().findItem(R.id.menu_trash)
|
||||||
|
.setChecked(prefs.getBoolean("more_trash", true));
|
||||||
|
|
||||||
|
popupMenu.insertIcons(v.getContext());
|
||||||
|
|
||||||
|
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem target) {
|
||||||
|
String key;
|
||||||
|
int itemId = target.getItemId();
|
||||||
|
if (itemId == R.id.menu_importance_low)
|
||||||
|
key = "more_importance_low";
|
||||||
|
else if (itemId == R.id.menu_seen)
|
||||||
|
key = "more_seen";
|
||||||
|
else if (itemId == R.id.menu_flag)
|
||||||
|
key = "more_flag";
|
||||||
|
else if (itemId == R.id.menu_inbox)
|
||||||
|
key = "more_inbox";
|
||||||
|
else if (itemId == R.id.menu_archive)
|
||||||
|
key = "more_archive";
|
||||||
|
else if (itemId == R.id.menu_junk)
|
||||||
|
key = "more_junk";
|
||||||
|
else if (itemId == R.id.menu_trash)
|
||||||
|
key = "more_trash";
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
|
||||||
|
prefs.edit().putBoolean(key, !target.isChecked()).apply();
|
||||||
|
updateMore();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
popupMenu.show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
fabSearch.setOnClickListener(new View.OnClickListener() {
|
fabSearch.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -2617,7 +2684,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
} else if (EntityMessage.SWIPE_ACTION_SEEN.equals(action))
|
} else if (EntityMessage.SWIPE_ACTION_SEEN.equals(action))
|
||||||
onActionSeenSelection(!message.ui_seen, message.id, false);
|
onActionSeenSelection(!message.ui_seen, message.id, false);
|
||||||
else if (EntityMessage.SWIPE_ACTION_FLAG.equals(action))
|
else if (EntityMessage.SWIPE_ACTION_FLAG.equals(action))
|
||||||
onActionFlagSelection(!message.ui_flagged, Color.TRANSPARENT, message.id);
|
onActionFlagSelection(!message.ui_flagged, Color.TRANSPARENT, message.id, false);
|
||||||
else if (EntityMessage.SWIPE_ACTION_SNOOZE.equals(action))
|
else if (EntityMessage.SWIPE_ACTION_SNOOZE.equals(action))
|
||||||
if (ActivityBilling.isPro(getContext()))
|
if (ActivityBilling.isPro(getContext()))
|
||||||
onActionSnooze(message);
|
onActionSnooze(message);
|
||||||
|
@ -2708,10 +2775,10 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
onActionSeenSelection(false, message.id, false);
|
onActionSeenSelection(false, message.id, 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);
|
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);
|
onActionFlagSelection(false, Color.TRANSPARENT, message.id, false);
|
||||||
return true;
|
return true;
|
||||||
} else if (itemId == R.string.title_snooze) {
|
} else if (itemId == R.string.title_snooze) {
|
||||||
onMenuSnooze();
|
onMenuSnooze();
|
||||||
|
@ -3393,10 +3460,10 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
onHideSelection(false);
|
onHideSelection(false);
|
||||||
return true;
|
return true;
|
||||||
} else if (itemId == R.string.title_flag) {
|
} else if (itemId == R.string.title_flag) {
|
||||||
onActionFlagSelection(true, Color.TRANSPARENT, null);
|
onActionFlagSelection(true, Color.TRANSPARENT, null, false);
|
||||||
return true;
|
return true;
|
||||||
} else if (itemId == R.string.title_unflag) {
|
} else if (itemId == R.string.title_unflag) {
|
||||||
onActionFlagSelection(false, Color.TRANSPARENT, null);
|
onActionFlagSelection(false, Color.TRANSPARENT, null, false);
|
||||||
return true;
|
return true;
|
||||||
} else if (itemId == R.string.title_flag_color) {
|
} else if (itemId == R.string.title_flag_color) {
|
||||||
onActionFlagColorSelection();
|
onActionFlagColorSelection();
|
||||||
|
@ -3612,7 +3679,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
}.execute(this, args, "messages:flag");
|
}.execute(this, args, "messages:flag");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onActionFlagSelection(boolean flagged, int color, Long id) {
|
private void onActionFlagSelection(boolean flagged, int color, Long id, boolean clear) {
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
args.putLongArray("ids", id == null ? getSelection() : new long[]{id});
|
args.putLongArray("ids", id == null ? getSelection() : new long[]{id});
|
||||||
args.putBoolean("flagged", flagged);
|
args.putBoolean("flagged", flagged);
|
||||||
|
@ -3620,8 +3687,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
args.putBoolean("threading", threading &&
|
args.putBoolean("threading", threading &&
|
||||||
(id == null || viewType != AdapterMessage.ViewType.THREAD));
|
(id == null || viewType != AdapterMessage.ViewType.THREAD));
|
||||||
|
|
||||||
//if (selectionTracker != null)
|
if (clear && selectionTracker != null)
|
||||||
// selectionTracker.clearSelection();
|
selectionTracker.clearSelection();
|
||||||
|
|
||||||
new SimpleTask<Void>() {
|
new SimpleTask<Void>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -5760,22 +5827,25 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onExecuted(Bundle args, MoreResult result) {
|
protected void onExecuted(Bundle args, MoreResult result) {
|
||||||
boolean importance = (BuildConfig.DEBUG &&
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
|
||||||
|
boolean importance = (prefs.getBoolean("more_importance_low", false) &&
|
||||||
!EntityMessage.PRIORITIY_LOW.equals(result.importance));
|
!EntityMessage.PRIORITIY_LOW.equals(result.importance));
|
||||||
|
boolean seen = (prefs.getBoolean("more_seen", false) && result.unseen);
|
||||||
|
boolean flag = (prefs.getBoolean("more_flag", false) && result.unflagged);
|
||||||
|
boolean inbox = (prefs.getBoolean("more_inbox", true) && result.canInbox());
|
||||||
|
boolean archive = (prefs.getBoolean("more_archive", true) && result.canArchive());
|
||||||
|
boolean junk = (prefs.getBoolean("more_junk", true) && result.canJunk());
|
||||||
|
boolean trash = (prefs.getBoolean("more_trash", true) && result.canTrash());
|
||||||
|
|
||||||
ibLowImportance.setVisibility(importance ? View.VISIBLE : View.GONE);
|
ibLowImportance.setVisibility(importance ? View.VISIBLE : View.GONE);
|
||||||
ibBatchSeen.setVisibility(result.unseen ? View.VISIBLE : View.GONE);
|
ibBatchSeen.setVisibility(seen ? View.VISIBLE : View.GONE);
|
||||||
ibInbox.setVisibility(result.canInbox() ? View.VISIBLE : View.GONE);
|
ibBatchFlag.setVisibility(flag ? View.VISIBLE : View.GONE);
|
||||||
ibArchive.setVisibility(result.canArchive() ? View.VISIBLE : View.GONE);
|
ibInbox.setVisibility(inbox ? View.VISIBLE : View.GONE);
|
||||||
ibJunk.setVisibility(result.canJunk() ? View.VISIBLE : View.GONE);
|
ibArchive.setVisibility(archive ? View.VISIBLE : View.GONE);
|
||||||
ibTrash.setVisibility(result.canTrash() ? View.VISIBLE : View.GONE);
|
ibJunk.setVisibility(junk ? View.VISIBLE : View.GONE);
|
||||||
cardMore.setVisibility(fabMore.isOrWillBeShown() &&
|
ibTrash.setVisibility(trash ? View.VISIBLE : View.GONE);
|
||||||
(importance ||
|
cardMore.setVisibility(fabMore.isOrWillBeShown() ? View.VISIBLE : View.GONE);
|
||||||
result.unseen ||
|
|
||||||
result.canInbox() ||
|
|
||||||
result.canArchive() ||
|
|
||||||
result.canJunk() ||
|
|
||||||
result.canTrash())
|
|
||||||
? View.VISIBLE : View.GONE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -7344,7 +7414,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||||
}
|
}
|
||||||
|
|
||||||
Bundle args = data.getBundleExtra("args");
|
Bundle args = data.getBundleExtra("args");
|
||||||
onActionFlagSelection(true, args.getInt("color"), null);
|
onActionFlagSelection(true, args.getInt("color"), null, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case REQUEST_MESSAGE_SNOOZE:
|
case REQUEST_MESSAGE_SNOOZE:
|
||||||
|
|
|
@ -508,7 +508,7 @@
|
||||||
android:alpha="0.6"
|
android:alpha="0.6"
|
||||||
app:cardBackgroundColor="?attr/colorActionBackground"
|
app:cardBackgroundColor="?attr/colorActionBackground"
|
||||||
app:cardCornerRadius="3dp"
|
app:cardCornerRadius="3dp"
|
||||||
app:layout_anchor="@+id/fabMore"
|
app:layout_anchor="@id/fabMore"
|
||||||
app:layout_anchorGravity="center_vertical">
|
app:layout_anchorGravity="center_vertical">
|
||||||
|
|
||||||
<eu.faircode.email.ConstraintLayoutEx
|
<eu.faircode.email.ConstraintLayoutEx
|
||||||
|
@ -530,7 +530,6 @@
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:srcCompat="@drawable/baseline_arrow_downward_24" />
|
app:srcCompat="@drawable/baseline_arrow_downward_24" />
|
||||||
|
|
||||||
|
|
||||||
<eu.faircode.email.FixedImageButton
|
<eu.faircode.email.FixedImageButton
|
||||||
android:id="@+id/ibBatchSeen"
|
android:id="@+id/ibBatchSeen"
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
|
@ -545,6 +544,20 @@
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:srcCompat="@drawable/twotone_drafts_24" />
|
app:srcCompat="@drawable/twotone_drafts_24" />
|
||||||
|
|
||||||
|
<eu.faircode.email.FixedImageButton
|
||||||
|
android:id="@+id/ibBatchFlag"
|
||||||
|
android:layout_width="48dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||||
|
android:contentDescription="@string/title_flag"
|
||||||
|
android:padding="6dp"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:tint="@color/action_foreground"
|
||||||
|
android:tooltipText="@string/title_flag"
|
||||||
|
app:layout_constraintEnd_toStartOf="@+id/ibBatchSeen"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:srcCompat="@drawable/twotone_star_24" />
|
||||||
|
|
||||||
<eu.faircode.email.FixedImageButton
|
<eu.faircode.email.FixedImageButton
|
||||||
android:id="@+id/ibInbox"
|
android:id="@+id/ibInbox"
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
|
@ -555,7 +568,7 @@
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:tint="@color/action_foreground"
|
android:tint="@color/action_foreground"
|
||||||
android:tooltipText="@string/title_folder_inbox"
|
android:tooltipText="@string/title_folder_inbox"
|
||||||
app:layout_constraintEnd_toStartOf="@id/ibBatchSeen"
|
app:layout_constraintEnd_toStartOf="@id/ibBatchFlag"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:srcCompat="@drawable/twotone_inbox_24" />
|
app:srcCompat="@drawable/twotone_inbox_24" />
|
||||||
|
|
||||||
|
@ -600,6 +613,19 @@
|
||||||
app:layout_constraintEnd_toStartOf="@id/ibJunk"
|
app:layout_constraintEnd_toStartOf="@id/ibJunk"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:srcCompat="@drawable/twotone_delete_24" />
|
app:srcCompat="@drawable/twotone_delete_24" />
|
||||||
|
|
||||||
|
<eu.faircode.email.FixedImageButton
|
||||||
|
android:id="@+id/ibMoreSettings"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||||
|
android:contentDescription="@string/title_setup"
|
||||||
|
android:padding="6dp"
|
||||||
|
android:tint="@color/action_foreground"
|
||||||
|
android:tooltipText="@string/title_setup"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/ibTrash"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:srcCompat="@drawable/twotone_settings_24" />
|
||||||
</eu.faircode.email.ConstraintLayoutEx>
|
</eu.faircode.email.ConstraintLayoutEx>
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_importance_low"
|
||||||
|
android:checkable="true"
|
||||||
|
android:icon="@drawable/baseline_arrow_downward_24"
|
||||||
|
android:title="@string/title_importance_low" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_seen"
|
||||||
|
android:checkable="true"
|
||||||
|
android:icon="@drawable/twotone_drafts_24"
|
||||||
|
android:title="@string/title_seen" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_flag"
|
||||||
|
android:checkable="true"
|
||||||
|
android:icon="@drawable/twotone_star_24"
|
||||||
|
android:title="@string/title_flag" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_inbox"
|
||||||
|
android:checkable="true"
|
||||||
|
android:icon="@drawable/twotone_inbox_24"
|
||||||
|
android:title="@string/title_folder_inbox" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_archive"
|
||||||
|
android:checkable="true"
|
||||||
|
android:icon="@drawable/twotone_archive_24"
|
||||||
|
android:title="@string/title_archive" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_junk"
|
||||||
|
android:checkable="true"
|
||||||
|
android:icon="@drawable/twotone_report_24"
|
||||||
|
android:title="@string/title_folder_junk" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_trash"
|
||||||
|
android:checkable="true"
|
||||||
|
android:icon="@drawable/twotone_delete_24"
|
||||||
|
android:title="@string/title_trash" />
|
||||||
|
</menu>
|
Loading…
Reference in New Issue