Added color stripe to unified inbox widget

pull/178/head
M66B 5 years ago
parent 2aa012a12d
commit 2b8d531d2c

@ -2483,7 +2483,7 @@ Checking *Remove tracking parameters* will remove all [UTM parameters](https://e
The widget is designed to look good on most home/launcher screens by making it monochrome and by using a half transparent background.
This way the widget will nicely blend in, while still being properly readable.
Adding (account) colors will cause problems with some backgrounds and will cause readability problems, which is why this won't be added.
Adding colors will cause problems with some backgrounds and will cause readability problems, which is why this won't be added.
Due to Android limitations it is not possible to dynamically set the opacity of the background and to have rounded corners at the same time.

@ -460,12 +460,14 @@ public interface DaoMessage {
@Query("SELECT message.*" +
", account.name AS accountName" +
", COALESCE(identity.color, folder.color, account.color) AS accountColor" +
", SUM(1 - message.ui_seen) AS unseen" +
", COUNT(message.id) - SUM(message.ui_flagged) AS unflagged" +
", MAX(message.received) AS dummy" +
" FROM message" +
" JOIN account_view AS account ON account.id = message.account" +
" JOIN folder_view AS folder ON folder.id = message.folder" +
" LEFT JOIN identity ON identity.id = message.identity" +
" WHERE account.`synchronize`" +
" AND (:account IS NULL OR account.id = :account)" +
" AND ((:folder IS NULL AND folder.unified) OR folder.id = :folder)" +

@ -312,6 +312,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("color_stripe", checked).apply();
WidgetUnified.updateData(getContext());
}
});

@ -21,6 +21,7 @@ package eu.faircode.email;
public class TupleMessageWidget extends EntityMessage {
public String accountName;
public Integer accountColor;
public int unseen;
public int unflagged;
}

@ -45,12 +45,14 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
private boolean threading;
private boolean subject_top;
private boolean subject_italic;
private boolean color_stripe;
private long folder;
private long account;
private boolean unseen;
private boolean flagged;
private int colorWidgetForeground;
private int colorWidgetRead;
private int colorSeparator;
private boolean pro;
private List<TupleMessageWidget> messages = new ArrayList<>();
@ -74,12 +76,14 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
threading = prefs.getBoolean("threading", true);
subject_top = prefs.getBoolean("subject_top", false);
subject_italic = prefs.getBoolean("subject_italic", true);
color_stripe = prefs.getBoolean("color_stripe", true);
account = prefs.getLong("widget." + appWidgetId + ".account", -1L);
folder = prefs.getLong("widget." + appWidgetId + ".folder", -1L);
unseen = prefs.getBoolean("widget." + appWidgetId + ".unseen", false);
flagged = prefs.getBoolean("widget." + appWidgetId + ".flagged", false);
colorWidgetForeground = ContextCompat.getColor(context, R.color.colorWidgetForeground);
colorWidgetRead = ContextCompat.getColor(context, R.color.colorWidgetRead);
colorSeparator = ContextCompat.getColor(context, R.color.lightColorSeparator);
pro = ActivityBilling.isPro(context);
@ -128,6 +132,13 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
thread.putExtra("id", message.id);
views.setOnClickFillInIntent(R.id.llMessage, thread);
int colorBackground =
(message.accountColor == null || !ActivityBilling.isPro(context)
? colorSeparator : message.accountColor);
views.setInt(R.id.stripe, "setBackgroundColor", colorBackground);
views.setViewVisibility(R.id.stripe, account < 0 && color_stripe ? View.VISIBLE : View.GONE);
SpannableString ssFrom = new SpannableString(pro
? MessageHelper.formatAddressesShort(message.from)
: context.getString(R.string.title_pro_feature));

@ -2,7 +2,19 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<FrameLayout
android:id="@+id/stripe"
android:layout_width="3dp"
android:layout_height="match_parent"
android:background="@android:color/darker_gray" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:orientation="vertical"
android:paddingTop="6dp"
android:paddingBottom="6dp">
@ -61,3 +73,4 @@
android:textColor="@color/colorWidgetForeground" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
Loading…
Cancel
Save