From dd40f0634fc3bb7b16c5d34996ff2aff74f7977e Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 12 Nov 2021 19:38:59 +0100 Subject: [PATCH] Added Gmail label colors --- .../eu/faircode/email/AdapterMessage.java | 36 ++++++++++++++++--- app/src/main/java/eu/faircode/email/Core.java | 9 ++++- .../eu/faircode/email/FragmentFolder.java | 15 +++++++- .../eu/faircode/email/TupleMessageEx.java | 19 ++++++++++ 4 files changed, 73 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 830e8feff3..1261ee4205 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -1306,10 +1306,9 @@ public class AdapterMessage extends RecyclerView.Adapter 0 - ? View.VISIBLE : View.GONE); + Spanned labels = getLabels(message); + tvLabels.setText(labels); + tvLabels.setVisibility(labels == null ? View.GONE : View.VISIBLE); boolean selected = properties.getValue("selected", message.id); if (viewType == ViewType.THREAD || (!threading && !selected)) { @@ -5631,6 +5630,33 @@ public class AdapterMessage extends RecyclerView.Adapter 0) + ssb.append(' '); + + String label = message.labels[i]; + ssb.append(label); + + if (message.label_colors == null) + continue; + if (i >= message.label_colors.length) + continue; + + int len = ssb.length(); + ssb.setSpan(new ForegroundColorSpan(message.label_colors[i]), + len - label.length(), len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + + return ssb; + } + private SpannableStringBuilder getKeywords(TupleMessageEx message) { SpannableStringBuilder ssb = new SpannableStringBuilderEx(); @@ -6552,6 +6578,7 @@ public class AdapterMessage extends RecyclerView.Adapter local = new HashMap<>(); List folders = db.folder().getFolders(account.id, false, false); - for (EntityFolder folder : folders) + for (EntityFolder folder : folders) { if (folder.tbc != null) { try { Log.i(folder.name + " creating"); @@ -2053,6 +2053,13 @@ class Core { sync_folders = true; } } + + String key = "label.color." + folder.name; + if (folder.color == null) + prefs.edit().remove(key).apply(); + else + prefs.edit().putInt(key, folder.color).apply(); + } Log.i("Local folder count=" + local.size() + " drafts=" + drafts); if (!drafts) { diff --git a/app/src/main/java/eu/faircode/email/FragmentFolder.java b/app/src/main/java/eu/faircode/email/FragmentFolder.java index 4829087cde..c3ef8c7b87 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolder.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolder.java @@ -21,6 +21,7 @@ package eu.faircode.email; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.database.sqlite.SQLiteConstraintException; import android.graphics.Color; import android.os.Bundle; @@ -44,6 +45,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.Group; import androidx.lifecycle.Lifecycle; +import androidx.preference.PreferenceManager; import com.google.android.material.snackbar.Snackbar; @@ -658,8 +660,19 @@ public class FragmentFolder extends FragmentBase { ask.setArguments(aargs); ask.setTargetFragment(FragmentFolder.this, REQUEST_SAVE_CHANGES); ask.show(getParentFragmentManager(), "folder:save"); - } else if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + } else if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) { + String name = args.getString("name"); + Integer color = args.getInt("color"); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + String key = "label.color." + name; + if (color == Color.TRANSPARENT) + prefs.edit().remove(key).apply(); + else + prefs.edit().putInt(key, color).apply(); + getParentFragmentManager().popBackStack(); + } } @Override diff --git a/app/src/main/java/eu/faircode/email/TupleMessageEx.java b/app/src/main/java/eu/faircode/email/TupleMessageEx.java index 2c27e00b51..4aa5e98967 100644 --- a/app/src/main/java/eu/faircode/email/TupleMessageEx.java +++ b/app/src/main/java/eu/faircode/email/TupleMessageEx.java @@ -68,6 +68,9 @@ public class TupleMessageEx extends EntityMessage { @Ignore boolean duplicate; + @Ignore + public Integer[] label_colors; + @Ignore public Integer[] keyword_colors; @Ignore @@ -79,6 +82,22 @@ public class TupleMessageEx extends EntityMessage { : folderDisplay); } + void resolveLabelColors(Context context) { + List color = new ArrayList<>(); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + if (this.labels != null) + for (int i = 0; i < this.labels.length; i++) { + String key = "label.color." + this.labels[i]; + if (prefs.contains(key)) + color.add(prefs.getInt(key, Color.GRAY)); + else + color.add(null); + } + + this.label_colors = color.toArray(new Integer[0]); + } + void resolveKeywordColors(Context context) { List color = new ArrayList<>(); List titles = new ArrayList<>();