mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-02 15:17:03 +02:00
Rule execution
This commit is contained in:
@@ -58,8 +58,7 @@ public class FragmentRule extends FragmentBase {
|
||||
private EditText etSubject;
|
||||
private EditText etText;
|
||||
private Spinner spAction;
|
||||
private Spinner spMove;
|
||||
private CheckBox cbMoveSeen;
|
||||
private Spinner spTarget;
|
||||
private BottomNavigationView bottom_navigation;
|
||||
private ContentLoadingProgressBar pbWait;
|
||||
private Group grpReady;
|
||||
@@ -68,6 +67,7 @@ public class FragmentRule extends FragmentBase {
|
||||
private ArrayAdapter<EntityAccount> adapterAccount;
|
||||
private ArrayAdapter<EntityFolder> adapterFolder;
|
||||
private ArrayAdapter<Action> adapterAction;
|
||||
private ArrayAdapter<EntityFolder> adapterTarget;
|
||||
|
||||
private long id = -1;
|
||||
|
||||
@@ -95,8 +95,7 @@ public class FragmentRule extends FragmentBase {
|
||||
etSubject = view.findViewById(R.id.etSubject);
|
||||
etText = view.findViewById(R.id.etText);
|
||||
spAction = view.findViewById(R.id.spAction);
|
||||
spMove = view.findViewById(R.id.spMove);
|
||||
cbMoveSeen = view.findViewById(R.id.cbMoveSeen);
|
||||
spTarget = view.findViewById(R.id.spTarget);
|
||||
bottom_navigation = view.findViewById(R.id.bottom_navigation);
|
||||
pbWait = view.findViewById(R.id.pbWait);
|
||||
grpReady = view.findViewById(R.id.grpReady);
|
||||
@@ -114,10 +113,14 @@ public class FragmentRule extends FragmentBase {
|
||||
adapterAction.setDropDownViewResource(R.layout.spinner_item1_dropdown);
|
||||
spAction.setAdapter(adapterAction);
|
||||
|
||||
adapterTarget = new ArrayAdapter<>(getContext(), R.layout.spinner_item1, android.R.id.text1, new ArrayList<EntityFolder>());
|
||||
adapterTarget.setDropDownViewResource(R.layout.spinner_item1_dropdown);
|
||||
spTarget.setAdapter(adapterTarget);
|
||||
|
||||
List<Action> actions = new ArrayList<>();
|
||||
actions.add(new Action(EntityRule.TYPE_SEEN, getString(R.string.title_seen)));
|
||||
actions.add(new Action(EntityRule.TYPE_UNSEEN, getString(R.string.title_unseen)));
|
||||
//actions.add(new Action(EntityRule.TYPE_MOVE, getString(R.string.title_move)));
|
||||
actions.add(new Action(EntityRule.TYPE_MOVE, getString(R.string.title_move)));
|
||||
adapterAction.addAll(actions);
|
||||
|
||||
spAccount.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@@ -133,6 +136,23 @@ public class FragmentRule extends FragmentBase {
|
||||
}
|
||||
});
|
||||
|
||||
spAction.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
|
||||
Action action = (Action) adapterView.getAdapter().getItem(position);
|
||||
onActionSelected(action.type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
onActionSelected(-1);
|
||||
}
|
||||
|
||||
private void onActionSelected(int type) {
|
||||
grpMove.setVisibility(type == EntityRule.TYPE_MOVE ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
});
|
||||
|
||||
bottom_navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(MenuItem menuItem) {
|
||||
@@ -223,6 +243,9 @@ public class FragmentRule extends FragmentBase {
|
||||
spAccount.setTag(rule.account);
|
||||
spFolder.setTag(rule.folder);
|
||||
|
||||
if (type == EntityRule.TYPE_MOVE)
|
||||
spTarget.setTag(jaction.getLong("target"));
|
||||
|
||||
for (int pos = 0; pos < adapterAccount.getCount(); pos++)
|
||||
if (adapterAccount.getItem(pos).id.equals(rule.account)) {
|
||||
spAccount.setSelection(pos);
|
||||
@@ -265,6 +288,9 @@ public class FragmentRule extends FragmentBase {
|
||||
adapterFolder.clear();
|
||||
adapterFolder.addAll(folders);
|
||||
|
||||
adapterTarget.clear();
|
||||
adapterTarget.addAll(folders);
|
||||
|
||||
long account = args.getLong("account");
|
||||
if (account == (Long) spAccount.getTag()) {
|
||||
Long folder = (Long) spFolder.getTag();
|
||||
@@ -273,8 +299,17 @@ public class FragmentRule extends FragmentBase {
|
||||
spFolder.setSelection(pos);
|
||||
break;
|
||||
}
|
||||
} else
|
||||
|
||||
Long target = (Long) spTarget.getTag();
|
||||
for (int pos = 0; pos < folders.size(); pos++)
|
||||
if (folders.get(pos).id.equals(target)) {
|
||||
spTarget.setSelection(pos);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
spFolder.setSelection(0);
|
||||
spTarget.setSelection(0);
|
||||
}
|
||||
|
||||
grpReady.setVisibility(View.VISIBLE);
|
||||
bottom_navigation.setVisibility(View.VISIBLE);
|
||||
@@ -352,8 +387,13 @@ public class FragmentRule extends FragmentBase {
|
||||
Action action = (Action) spAction.getSelectedItem();
|
||||
|
||||
JSONObject jaction = new JSONObject();
|
||||
if (action != null)
|
||||
if (action != null) {
|
||||
jaction.put("type", action.type);
|
||||
if (action.type == EntityRule.TYPE_MOVE) {
|
||||
EntityFolder target = (EntityFolder) spTarget.getSelectedItem();
|
||||
jaction.put("target", target.id);
|
||||
}
|
||||
}
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("id", id);
|
||||
|
||||
Reference in New Issue
Block a user