diff --git a/app/src/main/java/eu/faircode/email/FragmentRule.java b/app/src/main/java/eu/faircode/email/FragmentRule.java index a2b318a508..572912816f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentRule.java +++ b/app/src/main/java/eu/faircode/email/FragmentRule.java @@ -76,7 +76,9 @@ import java.text.DateFormat; import java.text.DateFormatSymbols; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; +import java.util.Collections; import java.util.List; public class FragmentRule extends FragmentBase { @@ -108,6 +110,7 @@ public class FragmentRule extends FragmentBase { private EditText etMimeType; private EditText etHeader; + private ImageButton ibHeader; private CheckBox cbHeader; private EditText etBody; @@ -211,6 +214,27 @@ public class FragmentRule extends FragmentBase { private final static int REQUEST_DATE_BEFORE = 12; private final static int REQUEST_FOLDER = 13; + private static final List HEADER_CONDITIONS = Collections.unmodifiableList(Arrays.asList( + "$$seen$", + "$$answered$", + "$$flagged$", + "$$deleted$", + "$$tls$", + "$$dkim$", + "$$spf$", + "$$dmarc$", + "$$mx$", + "$$blocklist$", + "$$replydomain$", + "$$nofrom$", + "$$multifrom$", + "$$automatic$", + "$$lowpriority$", + "$$highpriority$", + "$$signed$", + "$$encrypted$" + )); + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -267,6 +291,7 @@ public class FragmentRule extends FragmentBase { etMimeType = view.findViewById(R.id.etMimeType); etHeader = view.findViewById(R.id.etHeader); + ibHeader = view.findViewById(R.id.ibHeader); cbHeader = view.findViewById(R.id.cbHeader); etBody = view.findViewById(R.id.etBody); @@ -382,6 +407,26 @@ public class FragmentRule extends FragmentBase { } }); + ibHeader.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(v.getContext(), getViewLifecycleOwner(), v); + + for (int i = 0; i < HEADER_CONDITIONS.size(); i++) + popupMenu.getMenu().add(Menu.NONE, i + 1, i + 1, HEADER_CONDITIONS.get(i)); + + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + etHeader.setText(item.getTitle()); + return true; + } + }); + + popupMenu.show(); + } + }); + tvDateAfter.setText("-"); tvDateBefore.setText("-"); diff --git a/app/src/main/res/layout/fragment_rule.xml b/app/src/main/res/layout/fragment_rule.xml index 5d411d17af..7dd0510775 100644 --- a/app/src/main/res/layout/fragment_rule.xml +++ b/app/src/main/res/layout/fragment_rule.xml @@ -419,7 +419,18 @@ app:layout_constraintBottom_toBottomOf="@+id/cbHeader" app:layout_constraintEnd_toStartOf="@+id/cbHeader" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@+id/cbHeader" /> + app:layout_constraintTop_toTopOf="@+id/ibHeader" /> + +