diff --git a/app/src/main/java/eu/faircode/email/ActivityWidgetSync.java b/app/src/main/java/eu/faircode/email/ActivityWidgetSync.java
index c61516edb8..e81a1e25e0 100644
--- a/app/src/main/java/eu/faircode/email/ActivityWidgetSync.java
+++ b/app/src/main/java/eu/faircode/email/ActivityWidgetSync.java
@@ -24,10 +24,12 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
+import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
+import android.widget.CompoundButton;
import androidx.preference.PreferenceManager;
@@ -38,6 +40,7 @@ import com.flask.colorpicker.builder.ColorPickerDialogBuilder;
public class ActivityWidgetSync extends ActivityBase {
private int appWidgetId;
+ private CheckBox cbDayNight;
private CheckBox cbSemiTransparent;
private ViewButtonColor btnColor;
private Button btnSave;
@@ -56,13 +59,17 @@ public class ActivityWidgetSync extends ActivityBase {
AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ 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);
+ daynight = daynight && (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S);
+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setSubtitle(R.string.title_widget_title_sync);
setContentView(R.layout.activity_widget_sync);
+ cbDayNight = findViewById(R.id.cbDayNight);
cbSemiTransparent = findViewById(R.id.cbSemiTransparent);
btnColor = findViewById(R.id.btnColor);
btnSave = findViewById(R.id.btnSave);
@@ -70,6 +77,14 @@ public class ActivityWidgetSync extends ActivityBase {
final Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
+ cbDayNight.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
+ cbSemiTransparent.setEnabled(!checked);
+ btnColor.setEnabled(!checked);
+ }
+ });
+
btnColor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -106,6 +121,7 @@ public class ActivityWidgetSync extends ActivityBase {
public void onClick(View view) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivityWidgetSync.this);
SharedPreferences.Editor editor = prefs.edit();
+ editor.putBoolean("widget." + appWidgetId + ".daynight", cbDayNight.isChecked());
editor.putBoolean("widget." + appWidgetId + ".semi", cbSemiTransparent.isChecked());
editor.putInt("widget." + appWidgetId + ".background", btnColor.getColor());
editor.putInt("widget." + appWidgetId + ".version", BuildConfig.VERSION_CODE);
@@ -119,8 +135,12 @@ public class ActivityWidgetSync extends ActivityBase {
});
// Initialize
+ cbDayNight.setChecked(daynight);
+ cbDayNight.setVisibility(Build.VERSION.SDK_INT < Build.VERSION_CODES.S ? View.GONE : View.VISIBLE);
cbSemiTransparent.setChecked(semi);
+ cbSemiTransparent.setEnabled(!daynight);
btnColor.setColor(background);
+ btnColor.setEnabled(!daynight);
setResult(RESULT_CANCELED, resultValue);
}
diff --git a/app/src/main/java/eu/faircode/email/WidgetSync.java b/app/src/main/java/eu/faircode/email/WidgetSync.java
index ea8bee0faf..fee4222861 100644
--- a/app/src/main/java/eu/faircode/email/WidgetSync.java
+++ b/app/src/main/java/eu/faircode/email/WidgetSync.java
@@ -26,7 +26,9 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.res.ColorStateList;
import android.graphics.Color;
+import android.os.Build;
import android.widget.RemoteViews;
import androidx.core.graphics.ColorUtils;
@@ -48,6 +50,7 @@ public class WidgetSync extends AppWidgetProvider {
int colorWidgetForeground = context.getResources().getColor(R.color.colorWidgetForeground);
for (int appWidgetId : appWidgetIds) {
+ 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 version = prefs.getInt("widget." + appWidgetId + ".version", 0);
@@ -57,9 +60,18 @@ public class WidgetSync extends AppWidgetProvider {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_sync);
views.setOnClickPendingIntent(R.id.ivSync, pi);
- views.setImageViewResource(R.id.ivSync, enabled ? R.drawable.twotone_sync_24 : R.drawable.twotone_sync_disabled_24);
- if (background == Color.TRANSPARENT) {
+ if (!daynight && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ views.setColorStateListAttr(R.id.background, "setBackgroundTintList", 0);
+ views.setImageViewResource(R.id.ivSync, enabled ? R.drawable.twotone_sync_24 : R.drawable.twotone_sync_disabled_24);
+ } else
+ views.setImageViewResource(R.id.ivSync, enabled ? R.drawable.twotone_sync_24_dn : R.drawable.twotone_sync_disabled_24_dn);
+
+ 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);
+ views.setColorAttr(R.id.ivSync, "setColorFilter", android.R.attr.textColorPrimary);
+ } else if (background == Color.TRANSPARENT) {
if (semi)
views.setInt(R.id.background, "setBackgroundResource", R.drawable.widget_background);
else
diff --git a/app/src/main/res/drawable/twotone_sync_disabled_24_dn.xml b/app/src/main/res/drawable/twotone_sync_disabled_24_dn.xml
new file mode 100644
index 0000000000..75988dee49
--- /dev/null
+++ b/app/src/main/res/drawable/twotone_sync_disabled_24_dn.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_widget_sync.xml b/app/src/main/res/layout/activity_widget_sync.xml
index bd0ef313cb..23b8967824 100644
--- a/app/src/main/res/layout/activity_widget_sync.xml
+++ b/app/src/main/res/layout/activity_widget_sync.xml
@@ -12,22 +12,35 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/cbDayNight" />
+ android:background="?android:colorBackground"
+ android:theme="@style/Theme.AppCompat.DayNight">
+ android:src="@drawable/twotone_sync_disabled_24" />
\ No newline at end of file