diff --git a/app/src/main/java/eu/faircode/email/ActivityWidget.java b/app/src/main/java/eu/faircode/email/ActivityWidget.java index 08250c623c..cce395d6d5 100644 --- a/app/src/main/java/eu/faircode/email/ActivityWidget.java +++ b/app/src/main/java/eu/faircode/email/ActivityWidget.java @@ -76,6 +76,12 @@ public class ActivityWidget extends ActivityBase { appWidgetId = extras.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivityWidget.this); + long account = prefs.getLong("widget." + appWidgetId + ".account", -1L); + boolean semi = prefs.getBoolean("widget." + appWidgetId + ".semi", true); + int background = prefs.getInt("widget." + appWidgetId + ".background", Color.TRANSPARENT); + int layout = prefs.getInt("widget." + appWidgetId + ".layout", 1 /* new */); + getSupportActionBar().setSubtitle(R.string.title_widget_title_count); setContentView(R.layout.activity_widget); @@ -154,7 +160,6 @@ public class ActivityWidget extends ActivityBase { public void onClick(View view) { EntityAccount account = (EntityAccount) spAccount.getSelectedItem(); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivityWidget.this); SharedPreferences.Editor editor = prefs.edit(); if (account != null && account.id > 0) editor.putString("widget." + appWidgetId + ".name", account.name); @@ -178,10 +183,14 @@ public class ActivityWidget extends ActivityBase { adapterAccount.setDropDownViewResource(R.layout.spinner_item1_dropdown); spAccount.setAdapter(adapterAccount); + // Initialize ((TextView) inOld.findViewById(R.id.tvCount)).setText("12"); ((TextView) inNew.findViewById(R.id.tvCount)).setText("12"); - btnColor.setColor(Color.TRANSPARENT); + cbSemiTransparent.setChecked(semi); + btnColor.setColor(background); + rbOld.setChecked(layout != 1); + rbNew.setChecked(layout == 1); setBackground(); grpReady.setVisibility(View.GONE); @@ -189,6 +198,8 @@ public class ActivityWidget extends ActivityBase { setResult(RESULT_CANCELED, resultValue); + Bundle args = new Bundle(); + new SimpleTask>() { @Override protected List onExecute(Context context, Bundle args) { @@ -210,6 +221,12 @@ public class ActivityWidget extends ActivityBase { adapterAccount.addAll(accounts); + for (int i = 0; i < accounts.size(); i++) + if (accounts.get(i).id.equals(account)) { + spAccount.setSelection(i); + break; + } + grpReady.setVisibility(View.VISIBLE); pbWait.setVisibility(View.GONE); } @@ -218,7 +235,7 @@ public class ActivityWidget extends ActivityBase { protected void onException(Bundle args, Throwable ex) { Log.unexpectedError(getSupportFragmentManager(), ex); } - }.execute(this, new Bundle(), "widget:accounts"); + }.execute(this, args, "widget:accounts"); } private void setBackground() { diff --git a/app/src/main/java/eu/faircode/email/Widget.java b/app/src/main/java/eu/faircode/email/Widget.java index 00c9d11a72..de79373b8f 100644 --- a/app/src/main/java/eu/faircode/email/Widget.java +++ b/app/src/main/java/eu/faircode/email/Widget.java @@ -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; @@ -62,6 +63,9 @@ public class Widget extends AppWidgetProvider { int layout = prefs.getInt("widget." + appWidgetId + ".layout", 0); int version = prefs.getInt("widget." + appWidgetId + ".version", 0); + if (version <= 1550) + semi = true; // Legacy + List folders = db.folder().getNotifyingFolders(account); if (folders == null) folders = new ArrayList<>(); @@ -126,8 +130,15 @@ public class Widget extends AppWidgetProvider { } if (background == Color.TRANSPARENT) { - if (!semi && version > 1550) + if (semi) + views.setInt(R.id.widget, "setBackgroundResource", R.drawable.widget_background); + else views.setInt(R.id.widget, "setBackgroundColor", background); + + int colorWidgetForeground = context.getResources().getColor(R.color.colorWidgetForeground); + views.setInt(R.id.ivMessage, "setColorFilter", colorWidgetForeground); + views.setTextColor(R.id.tvCount, colorWidgetForeground); + views.setTextColor(R.id.tvAccount, colorWidgetForeground); } else { float lum = (float) ColorUtils.calculateLuminance(background); @@ -143,6 +154,9 @@ public class Widget extends AppWidgetProvider { } } + int pad = Helper.dp2pixels(context, layout == 0 ? 3 : 6); + views.setViewPadding(R.id.widget, pad, pad, pad, pad); + appWidgetManager.updateAppWidget(appWidgetId, views); } } diff --git a/app/src/main/res/xml/widget.xml b/app/src/main/res/xml/widget.xml index 4c9656d703..01f7c40785 100644 --- a/app/src/main/res/xml/widget.xml +++ b/app/src/main/res/xml/widget.xml @@ -7,4 +7,5 @@ android:previewImage="@drawable/widget_preview_new" android:resizeMode="horizontal|vertical" android:updatePeriodMillis="0" - android:widgetCategory="home_screen" /> + android:widgetCategory="home_screen" + android:widgetFeatures="reconfigurable" />