diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 26f85ee724..d2aed55a3a 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -274,7 +274,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB DB db = DB.getInstance(this); - db.account().liveAccountsEx().observe(this, new Observer>() { + db.account().liveAccountsEx(false).observe(this, new Observer>() { private List last = new ArrayList<>(); @Override diff --git a/app/src/main/java/eu/faircode/email/AdapterAccount.java b/app/src/main/java/eu/faircode/email/AdapterAccount.java index b734cf6e0a..e382e85736 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAccount.java +++ b/app/src/main/java/eu/faircode/email/AdapterAccount.java @@ -22,6 +22,7 @@ package eu.faircode.email; import android.content.Context; import android.content.Intent; import android.graphics.Color; +import android.graphics.Typeface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -30,6 +31,7 @@ import android.widget.TextView; import java.text.Collator; import java.text.DateFormat; +import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; @@ -48,8 +50,12 @@ public class AdapterAccount extends RecyclerView.Adapter items = new ArrayList<>(); + private int colorUnread; + private int textColorSecondary; + private List items = new ArrayList<>(); + + private static NumberFormat nf = NumberFormat.getNumberInstance(); private static final DateFormat df = SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { @@ -87,11 +93,23 @@ public class AdapterAccount extends RecyclerView.Adapter 0) + tvName.setText(context.getString(R.string.title_name_count, account.name, nf.format(account.unseen))); + else + tvName.setText(account.name); + + tvName.setTypeface(null, account.unseen > 0 ? Typeface.BOLD : Typeface.NORMAL); + tvName.setTextColor(account.unseen > 0 ? colorUnread : textColorSecondary); + } + ivSync.setImageResource(account.synchronize ? R.drawable.baseline_sync_24 : R.drawable.baseline_sync_disabled_24); ivSync.setVisibility(settings ? View.VISIBLE : View.GONE); @@ -121,7 +139,7 @@ public class AdapterAccount extends RecyclerView.Adapter accounts) { + public void set(@NonNull List accounts) { Log.i("Set accounts=" + accounts.size()); final Collator collator = Collator.getInstance(Locale.getDefault()); collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc - Collections.sort(accounts, new Comparator() { + Collections.sort(accounts, new Comparator() { @Override - public int compare(EntityAccount a1, EntityAccount a2) { + public int compare(TupleAccountEx a1, TupleAccountEx a2) { int n = collator.compare(a1.name, a2.name); if (n != 0) return n; @@ -188,10 +209,10 @@ public class AdapterAccount extends RecyclerView.Adapter prev = new ArrayList<>(); - private List next = new ArrayList<>(); + private List prev = new ArrayList<>(); + private List next = new ArrayList<>(); - DiffCallback(List prev, List next) { + DiffCallback(List prev, List next) { this.prev.addAll(prev); this.next.addAll(next); } @@ -208,15 +229,15 @@ public class AdapterAccount extends RecyclerView.Adapter getAccountsTbd(); - @Query("SELECT * FROM account" + - " WHERE :all OR account.synchronize") - LiveData> liveAccounts(boolean all); - @Query("SELECT * FROM account WHERE synchronize") LiveData> liveSynchronizingAccounts(); @@ -65,9 +61,9 @@ public interface DaoAccount { " AND NOT ui_hide) AS unsent" + " FROM account" + " LEFT JOIN operation ON operation.account = account.id" + - " WHERE synchronize" + + " WHERE :all OR account.synchronize" + " GROUP BY account.id") - LiveData> liveAccountsEx(); + LiveData> liveAccountsEx(boolean all); @Query("SELECT * FROM account WHERE id = :id") EntityAccount getAccount(long id); diff --git a/app/src/main/java/eu/faircode/email/FragmentAccounts.java b/app/src/main/java/eu/faircode/email/FragmentAccounts.java index a9d693e3fb..bb4962d145 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccounts.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccounts.java @@ -112,10 +112,10 @@ public class FragmentAccounts extends FragmentBase { super.onActivityCreated(savedInstanceState); // Observe accounts - DB.getInstance(getContext()).account().liveAccounts(settings) - .observe(getViewLifecycleOwner(), new Observer>() { + DB.getInstance(getContext()).account().liveAccountsEx(settings) + .observe(getViewLifecycleOwner(), new Observer>() { @Override - public void onChanged(@Nullable List accounts) { + public void onChanged(@Nullable List accounts) { if (accounts == null) accounts = new ArrayList<>();