diff --git a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java
index fb5d971890..1fcc40f30a 100644
--- a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java
+++ b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java
@@ -56,6 +56,7 @@ public class ActivityWidgetUnified extends ActivityBase {
private Spinner spFolder;
private CheckBox cbUnseen;
private CheckBox cbFlagged;
+ private CheckBox cbHighlight;
private CheckBox cbSemiTransparent;
private ViewButtonColor btnColor;
private Spinner spFontSize;
@@ -89,6 +90,7 @@ public class ActivityWidgetUnified extends ActivityBase {
long folder = prefs.getLong("widget." + appWidgetId + ".folder", -1L);
boolean unseen = prefs.getBoolean("widget." + appWidgetId + ".unseen", false);
boolean flagged = prefs.getBoolean("widget." + appWidgetId + ".flagged", false);
+ boolean highlight = prefs.getBoolean("widget." + appWidgetId + ".highlight", false);
boolean semi = prefs.getBoolean("widget." + appWidgetId + ".semi", true);
int background = prefs.getInt("widget." + appWidgetId + ".background", Color.TRANSPARENT);
int font = prefs.getInt("widget." + appWidgetId + ".font", 0);
@@ -104,6 +106,7 @@ public class ActivityWidgetUnified extends ActivityBase {
spFolder = findViewById(R.id.spFolder);
cbUnseen = findViewById(R.id.cbUnseen);
cbFlagged = findViewById(R.id.cbFlagged);
+ cbHighlight = findViewById(R.id.cbHighlight);
cbSemiTransparent = findViewById(R.id.cbSemiTransparent);
btnColor = findViewById(R.id.btnColor);
spFontSize = findViewById(R.id.spFontSize);
@@ -173,6 +176,7 @@ public class ActivityWidgetUnified extends ActivityBase {
editor.putString("widget." + appWidgetId + ".type", folder == null ? null : folder.type);
editor.putBoolean("widget." + appWidgetId + ".unseen", cbUnseen.isChecked());
editor.putBoolean("widget." + appWidgetId + ".flagged", cbFlagged.isChecked());
+ editor.putBoolean("widget." + appWidgetId + ".highlight", cbHighlight.isChecked());
editor.putBoolean("widget." + appWidgetId + ".semi", cbSemiTransparent.isChecked());
editor.putInt("widget." + appWidgetId + ".background", btnColor.getColor());
editor.putInt("widget." + appWidgetId + ".font", tinyOut(font));
@@ -292,6 +296,7 @@ public class ActivityWidgetUnified extends ActivityBase {
// Initialize
cbUnseen.setChecked(unseen);
cbFlagged.setChecked(flagged);
+ cbHighlight.setChecked(highlight);
cbSemiTransparent.setChecked(semi);
btnColor.setColor(background);
spFontSize.setSelection(tinyIn(font));
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java
index a0e23592ad..ecdc6cd758 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java
@@ -659,6 +659,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) {
prefs.edit().putInt("highlight_color", selectedColor).apply();
btnHighlightColor.setColor(selectedColor);
+ WidgetUnified.updateData(context);
}
})
.setNegativeButton(R.string.title_reset, new DialogInterface.OnClickListener() {
@@ -666,6 +667,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
public void onClick(DialogInterface dialog, int which) {
prefs.edit().remove("highlight_color").apply();
btnHighlightColor.setColor(Helper.resolveColor(context, R.attr.colorAccent));
+ WidgetUnified.updateData(context);
}
});
diff --git a/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java b/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java
index 8eb7ee7919..545b7bc6b8 100644
--- a/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java
+++ b/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java
@@ -29,6 +29,7 @@ import android.os.Build;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
+import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.text.style.UnderlineSpan;
import android.util.TypedValue;
@@ -57,6 +58,7 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
private long account;
private boolean unseen;
private boolean flagged;
+ private boolean highlight;
private boolean semi;
private int background;
private int font;
@@ -66,6 +68,7 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
private boolean distinguish_contacts;
private int colorStripeWidth;
private int colorWidgetForeground;
+ private int colorUnreadHighlight;
private int colorWidgetRead;
private int colorSeparator;
private boolean pro;
@@ -97,6 +100,7 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
folder = prefs.getLong("widget." + appWidgetId + ".folder", -1L);
unseen = prefs.getBoolean("widget." + appWidgetId + ".unseen", false);
flagged = prefs.getBoolean("widget." + appWidgetId + ".flagged", false);
+ highlight = prefs.getBoolean("widget." + appWidgetId + ".highlight", false);
semi = prefs.getBoolean("widget." + appWidgetId + ".semi", true);
background = prefs.getInt("widget." + appWidgetId + ".background", Color.TRANSPARENT);
font = prefs.getInt("widget." + appWidgetId + ".font", 0);
@@ -109,6 +113,8 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
this.colorStripeWidth = Helper.dp2pixels(context, color_stripe_wide ? 12 : 6);
colorWidgetForeground = ContextCompat.getColor(context, R.color.colorWidgetForeground);
+ colorUnreadHighlight = prefs.getInt("highlight_color", Helper.resolveColor(context, R.attr.colorUnreadHighlight));
+ colorUnreadHighlight = ColorUtils.setAlphaComponent(colorUnreadHighlight, 255);
colorWidgetRead = ContextCompat.getColor(context, R.color.colorWidgetRead);
colorSeparator = ContextCompat.getColor(context, R.color.lightColorSeparator);
@@ -227,7 +233,9 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
views.setTextViewText(idSubject, ssSubject);
views.setTextViewText(idAccount, ssAccount);
- int textColor = (message.ui_seen ? colorWidgetRead : colorWidgetForeground);
+ int textColor = (message.ui_seen
+ ? colorWidgetRead
+ : (highlight ? colorUnreadHighlight : colorWidgetForeground));
views.setTextColor(idFrom, textColor);
views.setTextColor(idTime, textColor);
diff --git a/app/src/main/res/layout/activity_widget_unified.xml b/app/src/main/res/layout/activity_widget_unified.xml
index e94e49be51..f9f3011600 100644
--- a/app/src/main/res/layout/activity_widget_unified.xml
+++ b/app/src/main/res/layout/activity_widget_unified.xml
@@ -65,6 +65,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbUnseen" />
+
+
+ app:layout_constraintTop_toBottomOf="@id/cbHighlight" />