Added day/night mode for count widget

This commit is contained in:
M66B
2022-05-06 22:25:37 +02:00
parent 7a9daf7d86
commit 4e38642fb6
9 changed files with 122 additions and 17 deletions

View File

@@ -27,6 +27,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Build;
import android.text.TextUtils;
import android.view.View;
import android.widget.RemoteViews;
@@ -58,6 +59,7 @@ public class Widget extends AppWidgetProvider {
for (int appWidgetId : appWidgetIds) {
String name = prefs.getString("widget." + appWidgetId + ".name", null);
long account = prefs.getLong("widget." + appWidgetId + ".account", -1L);
boolean daynight = prefs.getBoolean("widget." + appWidgetId + ".daynight", false);
boolean semi = prefs.getBoolean("widget." + appWidgetId + ".semi", true);
int background = prefs.getInt("widget." + appWidgetId + ".background", Color.TRANSPARENT);
int layout = prefs.getInt("widget." + appWidgetId + ".layout", 0);
@@ -114,7 +116,12 @@ public class Widget extends AppWidgetProvider {
views.setOnClickPendingIntent(R.id.background, pi);
// Set background
if (semi)
if (!daynight && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
views.setColorStateListAttr(R.id.background, "setBackgroundTintList", 0);
if (daynight && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
views.setInt(R.id.background, "setBackgroundColor", Color.WHITE);
views.setColorStateListAttr(R.id.background, "setBackgroundTintList", android.R.attr.colorBackground);
} else if (semi)
if (background == Color.TRANSPARENT)
views.setInt(R.id.background, "setBackgroundResource",
R.drawable.widget_background);
@@ -125,17 +132,35 @@ public class Widget extends AppWidgetProvider {
views.setInt(R.id.background, "setBackgroundColor", background);
// Set image
if (layout == 1)
views.setImageViewResource(R.id.ivMessage, unseen == 0
? R.drawable.baseline_mail_outline_widget_24
: R.drawable.baseline_mail_widget_24);
else
views.setImageViewResource(R.id.ivMessage, unseen == 0
? R.drawable.twotone_mail_outline_24
: R.drawable.baseline_mail_24);
if (daynight && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
if (layout == 1)
views.setImageViewResource(R.id.ivMessage, unseen == 0
? R.drawable.baseline_mail_outline_widget_24_dn
: R.drawable.baseline_mail_widget_24_dn);
else
views.setImageViewResource(R.id.ivMessage, unseen == 0
? R.drawable.twotone_mail_outline_24_dn
: R.drawable.baseline_mail_24_dn);
} else {
if (layout == 1)
views.setImageViewResource(R.id.ivMessage, unseen == 0
? R.drawable.baseline_mail_outline_widget_24
: R.drawable.baseline_mail_widget_24);
else
views.setImageViewResource(R.id.ivMessage, unseen == 0
? R.drawable.twotone_mail_outline_24
: R.drawable.baseline_mail_24);
}
// Set color
if (background == Color.TRANSPARENT) {
if (daynight && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
views.setColorAttr(R.id.ivMessage, "setColorFilter", android.R.attr.textColorPrimary);
if (layout == 0)
views.setColorStateListAttr(R.id.tvCount, "setTextColor", android.R.attr.textColorPrimary);
else
views.setTextColor(R.id.tvCount, colorWidgetForeground);
views.setColorStateListAttr(R.id.tvAccount, "setTextColor", android.R.attr.textColorPrimary);
} else if (background == Color.TRANSPARENT) {
views.setInt(R.id.ivMessage, "setColorFilter", colorWidgetForeground);
views.setTextColor(R.id.tvCount, colorWidgetForeground);
views.setTextColor(R.id.tvAccount, colorWidgetForeground);