From 2230cbc40fec5e480c077890dc9be60b560ec7c6 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 26 Mar 2021 14:38:51 +0100 Subject: [PATCH] Allow semi transparent widget color --- .../eu/faircode/email/ActivityWidget.java | 19 +++++++++---------- .../eu/faircode/email/ActivityWidgetSync.java | 11 ----------- .../faircode/email/ActivityWidgetUnified.java | 11 ----------- .../main/java/eu/faircode/email/Widget.java | 11 +++++++---- .../java/eu/faircode/email/WidgetSync.java | 9 ++++++--- .../java/eu/faircode/email/WidgetUnified.java | 19 ++++++++++++------- app/src/main/res/layout/activity_widget.xml | 2 +- 7 files changed, 35 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityWidget.java b/app/src/main/java/eu/faircode/email/ActivityWidget.java index 019c81bdd7..600ea97ba9 100644 --- a/app/src/main/java/eu/faircode/email/ActivityWidget.java +++ b/app/src/main/java/eu/faircode/email/ActivityWidget.java @@ -96,10 +96,7 @@ public class ActivityWidget extends ActivityBase { cbSemiTransparent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - btnColor.setColor(Color.TRANSPARENT); - setBackground(); - } + setBackground(); } }); @@ -119,7 +116,6 @@ public class ActivityWidget extends ActivityBase { .setPositiveButton(android.R.string.ok, new ColorPickerClickListener() { @Override public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { - cbSemiTransparent.setChecked(false); btnColor.setColor(selectedColor); setBackground(); } @@ -127,7 +123,6 @@ public class ActivityWidget extends ActivityBase { .setNegativeButton(R.string.title_reset, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - cbSemiTransparent.setChecked(false); btnColor.setColor(Color.TRANSPARENT); setBackground(); } @@ -224,15 +219,19 @@ public class ActivityWidget extends ActivityBase { } private void setBackground() { - if (cbSemiTransparent.isChecked()) { + boolean semi = cbSemiTransparent.isChecked(); + int background = btnColor.getColor(); + if (background == Color.TRANSPARENT) { inOld.setBackgroundResource(R.drawable.widget_background); inNew.setBackgroundResource(R.drawable.widget_background); } else { - int background = btnColor.getColor(); - inOld.setBackgroundColor(background); - inNew.setBackgroundColor(background); float lum = (float) ColorUtils.calculateLuminance(background); int color = (lum > 0.7 ? Color.BLACK : getResources().getColor(R.color.colorWidgetForeground)); + if (semi) + background = ColorUtils.setAlphaComponent(background, 127); + + inOld.setBackgroundColor(background); + inNew.setBackgroundColor(background); ((ImageView) inOld.findViewById(R.id.ivMessage)).setColorFilter(color); ((TextView) inOld.findViewById(R.id.tvCount)).setTextColor(color); diff --git a/app/src/main/java/eu/faircode/email/ActivityWidgetSync.java b/app/src/main/java/eu/faircode/email/ActivityWidgetSync.java index 93a53980c1..6aaaad30db 100644 --- a/app/src/main/java/eu/faircode/email/ActivityWidgetSync.java +++ b/app/src/main/java/eu/faircode/email/ActivityWidgetSync.java @@ -28,7 +28,6 @@ import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; -import android.widget.CompoundButton; import androidx.preference.PreferenceManager; @@ -66,14 +65,6 @@ public class ActivityWidgetSync extends ActivityBase { final Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); - cbSemiTransparent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) - btnColor.setColor(Color.TRANSPARENT); - } - }); - btnColor.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -90,14 +81,12 @@ public class ActivityWidgetSync extends ActivityBase { .setPositiveButton(android.R.string.ok, new ColorPickerClickListener() { @Override public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { - cbSemiTransparent.setChecked(false); btnColor.setColor(selectedColor); } }) .setNegativeButton(R.string.title_reset, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - cbSemiTransparent.setChecked(false); btnColor.setColor(Color.TRANSPARENT); } }) diff --git a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java index 278ef9bb73..a97506bad7 100644 --- a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java +++ b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java @@ -32,7 +32,6 @@ import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; -import android.widget.CompoundButton; import android.widget.Spinner; import android.widget.TextView; @@ -100,14 +99,6 @@ public class ActivityWidgetUnified extends ActivityBase { final Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); - cbSemiTransparent.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) - btnColor.setColor(Color.TRANSPARENT); - } - }); - btnColor.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -124,14 +115,12 @@ public class ActivityWidgetUnified extends ActivityBase { .setPositiveButton(android.R.string.ok, new ColorPickerClickListener() { @Override public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { - cbSemiTransparent.setChecked(false); btnColor.setColor(selectedColor); } }) .setNegativeButton(R.string.title_reset, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - cbSemiTransparent.setChecked(false); btnColor.setColor(Color.TRANSPARENT); } }) diff --git a/app/src/main/java/eu/faircode/email/Widget.java b/app/src/main/java/eu/faircode/email/Widget.java index a025e3cd33..b8a084342e 100644 --- a/app/src/main/java/eu/faircode/email/Widget.java +++ b/app/src/main/java/eu/faircode/email/Widget.java @@ -100,9 +100,6 @@ public class Widget extends AppWidgetProvider { views.setOnClickPendingIntent(R.id.widget, pi); - if (!semi) - views.setInt(R.id.widget, "setBackgroundColor", background); - if (layout == 1) views.setImageViewResource(R.id.ivMessage, unseen == 0 ? R.drawable.baseline_mail_outline_widget_24 @@ -119,8 +116,14 @@ public class Widget extends AppWidgetProvider { views.setViewVisibility(R.id.tvAccount, ViewStripe.VISIBLE); } - if (!semi && background != Color.TRANSPARENT) { + if (background != Color.TRANSPARENT) { float lum = (float) ColorUtils.calculateLuminance(background); + + if (semi) + background = ColorUtils.setAlphaComponent(background, 127); + + views.setInt(R.id.widget, "setBackgroundColor", background); + if (lum > 0.7f) { views.setInt(R.id.ivMessage, "setColorFilter", Color.BLACK); views.setTextColor(R.id.tvCount, Color.BLACK); diff --git a/app/src/main/java/eu/faircode/email/WidgetSync.java b/app/src/main/java/eu/faircode/email/WidgetSync.java index 05c7fe95c8..313b28dca5 100644 --- a/app/src/main/java/eu/faircode/email/WidgetSync.java +++ b/app/src/main/java/eu/faircode/email/WidgetSync.java @@ -49,11 +49,14 @@ public class WidgetSync extends AppWidgetProvider { views.setOnClickPendingIntent(R.id.ivSync, pi); views.setImageViewResource(R.id.ivSync, enabled ? R.drawable.twotone_sync_24 : R.drawable.twotone_sync_disabled_24); - if (!semi) + if (background != Color.TRANSPARENT) { + float lum = (float) ColorUtils.calculateLuminance(background); + + if (semi) + background = ColorUtils.setAlphaComponent(background, 127); + views.setInt(R.id.widget, "setBackgroundColor", background); - if (!semi && background != Color.TRANSPARENT) { - float lum = (float) ColorUtils.calculateLuminance(background); if (lum > 0.7f) views.setInt(R.id.ivSync, "setColorFilter", Color.BLACK); } diff --git a/app/src/main/java/eu/faircode/email/WidgetUnified.java b/app/src/main/java/eu/faircode/email/WidgetUnified.java index 77cba718e1..4a2408510f 100644 --- a/app/src/main/java/eu/faircode/email/WidgetUnified.java +++ b/app/src/main/java/eu/faircode/email/WidgetUnified.java @@ -59,9 +59,6 @@ public class WidgetUnified extends AppWidgetProvider { RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_unified); - if (!semi) - views.setInt(R.id.widget, "setBackgroundColor", background); - if (font > 0) views.setTextViewTextSize(R.id.title, TypedValue.COMPLEX_UNIT_SP, getFontSizeSp(font)); @@ -70,10 +67,6 @@ public class WidgetUnified extends AppWidgetProvider { views.setViewPadding(R.id.title, px, px, px, px); } - float lum = (float) ColorUtils.calculateLuminance(background); - if (lum > 0.7f) - views.setTextColor(R.id.title, Color.BLACK); - if (name == null) views.setTextViewText(R.id.title, context.getString(R.string.title_folder_unified)); else @@ -99,6 +92,18 @@ public class WidgetUnified extends AppWidgetProvider { views.setPendingIntentTemplate(R.id.lv, piItem); + if (background != Color.TRANSPARENT) { + float lum = (float) ColorUtils.calculateLuminance(background); + + if (semi) + background = ColorUtils.setAlphaComponent(background, 127); + + views.setInt(R.id.widget, "setBackgroundColor", background); + + if (lum > 0.7f) + views.setTextColor(R.id.title, Color.BLACK); + } + appWidgetManager.updateAppWidget(appWidgetId, views); } } diff --git a/app/src/main/res/layout/activity_widget.xml b/app/src/main/res/layout/activity_widget.xml index cfef2a3a1b..25855b1f97 100644 --- a/app/src/main/res/layout/activity_widget.xml +++ b/app/src/main/res/layout/activity_widget.xml @@ -55,7 +55,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24dp" - android:background="@color/lightBluePrimary" + android:background="@android:color/darker_gray" android:padding="24dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/btnColor">