Added batch manage keywords button

This commit is contained in:
M66B
2024-11-08 10:56:31 +01:00
parent 88791994c1
commit ab8ae3761e
4 changed files with 58 additions and 4 deletions

View File

@@ -63,6 +63,7 @@ public class FragmentDialogQuickActions extends FragmentDialogBase {
final CheckBox cbDelete = dview.findViewById(R.id.cbDelete);
final CheckBox cbJunk = dview.findViewById(R.id.cbJunk);
final CheckBox cbInbox = dview.findViewById(R.id.cbInbox);
final CheckBox cbKeywords = dview.findViewById(R.id.cbKeywords);
final CheckBox cbClear = dview.findViewById(R.id.cbClear);
cbSummarize.setVisibility(AI.isAvailable(context) ? View.VISIBLE : View.GONE);
@@ -86,6 +87,7 @@ public class FragmentDialogQuickActions extends FragmentDialogBase {
cbDelete.setChecked(prefs.getBoolean("more_delete", false));
cbJunk.setChecked(prefs.getBoolean("more_junk", true));
cbInbox.setChecked(prefs.getBoolean("more_inbox", true));
cbKeywords.setChecked(prefs.getBoolean("more_keywords", false));
cbClear.setChecked(prefs.getBoolean("more_clear", true));
return new AlertDialog.Builder(getContext())
@@ -111,6 +113,7 @@ public class FragmentDialogQuickActions extends FragmentDialogBase {
editor.putBoolean("more_delete", cbDelete.isChecked());
editor.putBoolean("more_junk", cbJunk.isChecked());
editor.putBoolean("more_inbox", cbInbox.isChecked());
editor.putBoolean("more_keywords", cbKeywords.isChecked());
editor.putBoolean("more_clear", cbClear.isChecked());
editor.apply();
sendResult(Activity.RESULT_OK);

View File

@@ -315,6 +315,7 @@ public class FragmentMessages extends FragmentBase
private ImageButton ibDelete;
private ImageButton ibJunk;
private ImageButton ibInbox;
private ImageButton ibKeywords;
private ImageButton ibMoreSettings;
private FloatingActionButton fabSearch;
private FloatingActionButton fabError;
@@ -666,6 +667,7 @@ public class FragmentMessages extends FragmentBase
ibDelete = view.findViewById(R.id.ibDelete);
ibJunk = view.findViewById(R.id.ibJunk);
ibInbox = view.findViewById(R.id.ibInbox);
ibKeywords = view.findViewById(R.id.ibKeywords);
ibMoreSettings = view.findViewById(R.id.ibMoreSettings);
fabSearch = view.findViewById(R.id.fabSearch);
fabError = view.findViewById(R.id.fabError);
@@ -1831,6 +1833,14 @@ public class FragmentMessages extends FragmentBase
}
});
ibKeywords.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean more_clear = prefs.getBoolean("more_clear", true);
onActionManageKeywords(more_clear);
}
});
ibMoreSettings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -4686,7 +4696,7 @@ public class FragmentMessages extends FragmentBase
onActionMoveSelectionAccount(result.copyto.id, true, result.folders);
return true;
} else if (itemId == R.string.title_manage_keywords) {
onActionManageKeywords();
onActionManageKeywords(false);
return true;
} else if (itemId == R.string.title_search_sender) {
long[] ids = getSelection();
@@ -5188,7 +5198,7 @@ public class FragmentMessages extends FragmentBase
fragment.show(getParentFragmentManager(), "messages:move");
}
private void onActionManageKeywords() {
private void onActionManageKeywords(boolean clear) {
Bundle args = new Bundle();
args.putLongArray("ids", getSelection());
@@ -5282,6 +5292,14 @@ public class FragmentMessages extends FragmentBase
fragment.show(getParentFragmentManager(), "keywords:add");
}
})
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
if (clear && selectionTracker != null)
selectionTracker.clearSelection();
}
})
.show();
}
@@ -7390,6 +7408,7 @@ public class FragmentMessages extends FragmentBase
boolean more_trash = prefs.getBoolean("more_trash", true);
boolean more_delete = prefs.getBoolean("more_delete", false);
boolean more_move = prefs.getBoolean("more_move", true);
boolean more_keywords = prefs.getBoolean("more_keywords", false);
boolean inTrash = EntityFolder.TRASH.equals(type);
boolean inJunk = EntityFolder.JUNK.equals(type);
@@ -7426,6 +7445,10 @@ public class FragmentMessages extends FragmentBase
if (inbox)
count++;
boolean keywords = (more_keywords && count < FragmentDialogQuickActions.MAX_QUICK_ACTIONS && !result.hasPop && result.hasImap);
if (keywords)
count++;
boolean importance_high = (more_importance_high && count < FragmentDialogQuickActions.MAX_QUICK_ACTIONS &&
!EntityMessage.PRIORITIY_HIGH.equals(result.importance));
if (importance_high)
@@ -7497,6 +7520,7 @@ public class FragmentMessages extends FragmentBase
ibDelete.setVisibility(delete ? View.VISIBLE : View.GONE);
ibJunk.setVisibility(junk ? View.VISIBLE : View.GONE);
ibInbox.setVisibility(inbox ? View.VISIBLE : View.GONE);
ibKeywords.setVisibility(keywords ? View.VISIBLE : View.GONE);
cardMore.setTag(fabMore.isOrWillBeShown() ? result : null);
cardMore.setVisibility(fabMore.isOrWillBeShown() ? View.VISIBLE : View.GONE);
}