Added rule action local notes

This commit is contained in:
M66B
2023-08-14 09:39:53 +02:00
parent f0a0c46b44
commit ba7b2302b4
9 changed files with 138 additions and 1 deletions

View File

@@ -169,6 +169,9 @@ public class FragmentRule extends FragmentBase {
private TextView tvAutomation;
private EditText etNotes;
private ViewButtonColor btnColorNotes;
private BottomNavigationView bottom_navigation;
private ContentLoadingProgressBar pbWait;
@@ -186,6 +189,7 @@ public class FragmentRule extends FragmentBase {
private Group grpAutomation;
private Group grpDelete;
private Group grpLocalOnly;
private Group grpNotes;
private ArrayAdapter<String> adapterGroup;
private ArrayAdapter<String> adapterDay;
@@ -215,6 +219,7 @@ public class FragmentRule extends FragmentBase {
private final static int REQUEST_DATE_AFTER = 11;
private final static int REQUEST_DATE_BEFORE = 12;
private final static int REQUEST_FOLDER = 13;
private final static int REQUEST_COLOR_NOTES = 14;
private static final List<String> HEADER_CONDITIONS = Collections.unmodifiableList(Arrays.asList(
"$$seen$",
@@ -354,6 +359,9 @@ public class FragmentRule extends FragmentBase {
tvAutomation = view.findViewById(R.id.tvAutomation);
etNotes = view.findViewById(R.id.etNotes);
btnColorNotes = view.findViewById(R.id.btnColorNotes);
bottom_navigation = view.findViewById(R.id.bottom_navigation);
pbWait = view.findViewById(R.id.pbWait);
@@ -372,6 +380,7 @@ public class FragmentRule extends FragmentBase {
grpAutomation = view.findViewById(R.id.grpAutomation);
grpDelete = view.findViewById(R.id.grpDelete);
grpLocalOnly = view.findViewById(R.id.grpLocalOnly);
grpNotes = view.findViewById(R.id.grpNotes);
adapterGroup = new ArrayAdapter<>(getContext(), R.layout.spinner_item1_dropdown, android.R.id.text1);
etGroup.setThreshold(1);
@@ -625,8 +634,10 @@ public class FragmentRule extends FragmentBase {
actions.add(new Action(EntityRule.TYPE_SNOOZE, getString(R.string.title_rule_snooze)));
actions.add(new Action(EntityRule.TYPE_FLAG, getString(R.string.title_rule_flag)));
actions.add(new Action(EntityRule.TYPE_IMPORTANCE, getString(R.string.title_rule_importance)));
if (protocol == EntityAccount.TYPE_IMAP) {
if (protocol == EntityAccount.TYPE_IMAP)
actions.add(new Action(EntityRule.TYPE_KEYWORD, getString(R.string.title_rule_keyword)));
actions.add(new Action(EntityRule.TYPE_NOTES, getString(R.string.title_rule_notes)));
if (protocol == EntityAccount.TYPE_IMAP) {
actions.add(new Action(EntityRule.TYPE_MOVE, getString(R.string.title_rule_move)));
actions.add(new Action(EntityRule.TYPE_COPY, getString(R.string.title_rule_copy)));
}
@@ -787,6 +798,21 @@ public class FragmentRule extends FragmentBase {
EntityRule.EXTRA_SENDER,
EntityRule.EXTRA_SUBJECT})));
btnColorNotes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle args = new Bundle();
args.putInt("color", btnColorNotes.getColor());
args.putString("title", getString(R.string.title_rule_notes));
args.putBoolean("reset", true);
FragmentDialogColor fragment = new FragmentDialogColor();
fragment.setArguments(args);
fragment.setTargetFragment(FragmentRule.this, REQUEST_COLOR_NOTES);
fragment.show(getParentFragmentManager(), "rule:color:notes");
}
});
bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
@@ -822,6 +848,7 @@ public class FragmentRule extends FragmentBase {
grpAutomation.setVisibility(View.GONE);
grpDelete.setVisibility(View.GONE);
grpLocalOnly.setVisibility(View.GONE);
grpNotes.setVisibility(View.GONE);
pbWait.setVisibility(View.VISIBLE);
@@ -991,6 +1018,12 @@ public class FragmentRule extends FragmentBase {
if (resultCode == RESULT_OK && data != null)
onFolderSelected(data.getBundleExtra("args"));
break;
case REQUEST_COLOR_NOTES:
if (resultCode == RESULT_OK && data != null) {
Bundle args = data.getBundleExtra("args");
btnColorNotes.setColor(args.getInt("color"));
}
break;
}
} catch (Throwable ex) {
Log.e(ex);
@@ -1319,6 +1352,13 @@ public class FragmentRule extends FragmentBase {
etAlarmDuration.setEnabled(alarm);
etAlarmDuration.setText(duration == 0 ? null : Integer.toString(duration));
break;
case EntityRule.TYPE_NOTES:
etNotes.setText(jaction.getString("notes"));
btnColorNotes.setColor(
!jaction.has("color") || jaction.isNull("color")
? null : jaction.getInt("color"));
break;
}
for (int pos = 0; pos < adapterAction.getCount(); pos++)
@@ -1376,6 +1416,7 @@ public class FragmentRule extends FragmentBase {
grpAutomation.setVisibility(type == EntityRule.TYPE_AUTOMATION ? View.VISIBLE : View.GONE);
grpDelete.setVisibility(type == EntityRule.TYPE_DELETE ? View.VISIBLE : View.GONE);
grpLocalOnly.setVisibility(type == EntityRule.TYPE_LOCAL_ONLY ? View.VISIBLE : View.GONE);
grpNotes.setVisibility(type == EntityRule.TYPE_NOTES ? View.VISIBLE : View.GONE);
}
private void onActionDelete() {
@@ -1706,6 +1747,13 @@ public class FragmentRule extends FragmentBase {
Log.e(ex);
}
break;
case EntityRule.TYPE_NOTES:
jaction.put("notes", etNotes.getText().toString());
int ncolor = btnColorNotes.getColor();
if (ncolor != Color.TRANSPARENT)
jaction.put("color", ncolor);
break;
}
}