From c67007d13c9dad3131551aa8c2d3407e8725d987 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 13 Nov 2023 09:40:35 +0100 Subject: [PATCH] Suggest account categories --- .../main/java/eu/faircode/email/DaoAccount.java | 6 ++++++ .../java/eu/faircode/email/FragmentAccount.java | 16 +++++++++++++++- .../java/eu/faircode/email/FragmentPop.java | 17 ++++++++++++++++- app/src/main/res/layout/fragment_account.xml | 2 +- app/src/main/res/layout/fragment_pop.xml | 2 +- 5 files changed, 39 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DaoAccount.java b/app/src/main/java/eu/faircode/email/DaoAccount.java index 4de609c935..f249d338fb 100644 --- a/app/src/main/java/eu/faircode/email/DaoAccount.java +++ b/app/src/main/java/eu/faircode/email/DaoAccount.java @@ -161,6 +161,12 @@ public interface DaoAccount { " AND tbd IS NULL") List getAccounts(String user, int protocol); + @Query("SELECT DISTINCT category" + + " FROM account" + + " WHERE NOT (category IS NULL OR category = '')" + + " ORDER BY category COLLATE NOCASE") + List getAccountCategories(); + @Query("SELECT * FROM account WHERE `primary`") EntityAccount getPrimaryAccount(); diff --git a/app/src/main/java/eu/faircode/email/FragmentAccount.java b/app/src/main/java/eu/faircode/email/FragmentAccount.java index 0f7c6cc5f4..d7df471ddd 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccount.java @@ -46,6 +46,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; @@ -110,7 +111,8 @@ public class FragmentAccount extends FragmentBase { private EditText etRealm; private EditText etName; - private EditText etCategory; + private ArrayAdapter adapterCategory; + private AutoCompleteTextView etCategory; private ViewButtonColor btnColor; private TextView tvColorPro; @@ -434,6 +436,10 @@ public class FragmentAccount extends FragmentBase { } }); + adapterCategory = new ArrayAdapter<>(getContext(), R.layout.spinner_item1_dropdown, android.R.id.text1); + etCategory.setThreshold(1); + etCategory.setAdapter(adapterCategory); + btnColor.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -1597,6 +1603,11 @@ public class FragmentAccount extends FragmentBase { DB db = DB.getInstance(context); + List categories = db.account().getAccountCategories(); + if (categories == null) + categories = new ArrayList<>(); + args.putStringArrayList("categories", new ArrayList<>(categories)); + List identities = db.identity().getIdentities(id); if (identities != null && identities.size() == 1) args.putString("personal", identities.get(0).name); @@ -1617,6 +1628,9 @@ public class FragmentAccount extends FragmentBase { aaProvider.setDropDownViewResource(R.layout.spinner_item1_dropdown); spProvider.setAdapter(aaProvider); + adapterCategory.clear(); + adapterCategory.addAll(args.getStringArrayList("categories")); + if (savedInstanceState == null) { JSONObject jcondition = new JSONObject(); try { diff --git a/app/src/main/java/eu/faircode/email/FragmentPop.java b/app/src/main/java/eu/faircode/email/FragmentPop.java index 217c71f88b..294553516e 100644 --- a/app/src/main/java/eu/faircode/email/FragmentPop.java +++ b/app/src/main/java/eu/faircode/email/FragmentPop.java @@ -41,6 +41,7 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; @@ -81,7 +82,8 @@ public class FragmentPop extends FragmentBase { private TextView tvPasswordStorage; private EditText etName; - private EditText etCategory; + private ArrayAdapter adapterCategory; + private AutoCompleteTextView etCategory; private ViewButtonColor btnColor; private TextView tvColorPro; @@ -247,6 +249,10 @@ public class FragmentPop extends FragmentBase { } }); + adapterCategory = new ArrayAdapter<>(getContext(), R.layout.spinner_item1_dropdown, android.R.id.text1); + etCategory.setThreshold(1); + etCategory.setAdapter(adapterCategory); + btnColor.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -787,11 +793,20 @@ public class FragmentPop extends FragmentBase { long id = args.getLong("id"); DB db = DB.getInstance(context); + + List categories = db.account().getAccountCategories(); + if (categories == null) + categories = new ArrayList<>(); + args.putStringArrayList("categories", new ArrayList<>(categories)); + return db.account().getAccount(id); } @Override protected void onExecuted(Bundle args, final EntityAccount account) { + adapterCategory.clear(); + adapterCategory.addAll(args.getStringArrayList("categories")); + if (savedInstanceState == null) { JSONObject jcondition = new JSONObject(); try { diff --git a/app/src/main/res/layout/fragment_account.xml b/app/src/main/res/layout/fragment_account.xml index 755021d674..2d1b652acc 100644 --- a/app/src/main/res/layout/fragment_account.xml +++ b/app/src/main/res/layout/fragment_account.xml @@ -404,7 +404,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/etName" /> - -