From c25edaa3b247a9e9e9cb7e96f8602389a4f4125b Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 8 Apr 2020 14:28:57 +0200 Subject: [PATCH] Added new widget layout --- .../eu/faircode/email/ActivityWidget.java | 45 ++++++ .../main/java/eu/faircode/email/Widget.java | 4 +- .../res/drawable/widget_background_unread.xml | 5 + app/src/main/res/layout/activity_widget.xml | 152 ++++++++++++------ app/src/main/res/layout/widget_new.xml | 58 +++++++ 5 files changed, 213 insertions(+), 51 deletions(-) create mode 100644 app/src/main/res/drawable/widget_background_unread.xml create mode 100644 app/src/main/res/layout/widget_new.xml diff --git a/app/src/main/java/eu/faircode/email/ActivityWidget.java b/app/src/main/java/eu/faircode/email/ActivityWidget.java index 9918e10b69..0f467c9774 100644 --- a/app/src/main/java/eu/faircode/email/ActivityWidget.java +++ b/app/src/main/java/eu/faircode/email/ActivityWidget.java @@ -23,12 +23,16 @@ import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.RadioButton; import android.widget.Spinner; +import android.widget.TextView; import androidx.constraintlayout.widget.Group; import androidx.preference.PreferenceManager; @@ -41,6 +45,10 @@ public class ActivityWidget extends ActivityBase { private Spinner spAccount; private CheckBox cbSemiTransparent; + private View inOld; + private View inNew; + private RadioButton rbOld; + private RadioButton rbNew; private Button btnSave; private ContentLoadingProgressBar pbWait; private Group grpReady; @@ -65,6 +73,10 @@ public class ActivityWidget extends ActivityBase { spAccount = findViewById(R.id.spAccount); cbSemiTransparent = findViewById(R.id.cbSemiTransparent); + inOld = findViewById(R.id.inOld); + inNew = findViewById(R.id.inNew); + rbOld = findViewById(R.id.rbOld); + rbNew = findViewById(R.id.rbNew); btnSave = findViewById(R.id.btnSave); pbWait = findViewById(R.id.pbWait); grpReady = findViewById(R.id.grpReady); @@ -72,6 +84,35 @@ public class ActivityWidget 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) { + inOld.setBackgroundResource(R.drawable.widget_background); + inNew.setBackgroundResource(R.drawable.widget_background); + } else { + inOld.setBackgroundColor(Color.TRANSPARENT); + inNew.setBackgroundColor(Color.TRANSPARENT); + } + } + }); + + rbOld.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (isChecked) + rbNew.setChecked(false); + } + }); + + rbNew.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (isChecked) + rbOld.setChecked(false); + } + }); + btnSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -85,6 +126,7 @@ public class ActivityWidget extends ActivityBase { editor.remove("widget." + appWidgetId + ".name"); editor.putLong("widget." + appWidgetId + ".account", account == null ? -1L : account.id); editor.putBoolean("widget." + appWidgetId + ".semi", cbSemiTransparent.isChecked()); + editor.putInt("widget." + appWidgetId + ".layout", rbNew.isChecked() ? 1 : 0); editor.apply(); Widget.init(ActivityWidget.this, appWidgetId); @@ -98,6 +140,9 @@ public class ActivityWidget extends ActivityBase { adapterAccount.setDropDownViewResource(R.layout.spinner_item1_dropdown); spAccount.setAdapter(adapterAccount); + ((TextView) inOld.findViewById(R.id.tvCount)).setText("12"); + ((TextView) inNew.findViewById(R.id.tvCount)).setText("12"); + grpReady.setVisibility(View.GONE); pbWait.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/eu/faircode/email/Widget.java b/app/src/main/java/eu/faircode/email/Widget.java index 424ecd1207..cc8289e548 100644 --- a/app/src/main/java/eu/faircode/email/Widget.java +++ b/app/src/main/java/eu/faircode/email/Widget.java @@ -56,6 +56,7 @@ public class Widget extends AppWidgetProvider { String name = prefs.getString("widget." + appWidgetId + ".name", null); long account = prefs.getLong("widget." + appWidgetId + ".account", -1L); boolean semi = prefs.getBoolean("widget." + appWidgetId + ".semi", true); + int layout = prefs.getInt("widget." + appWidgetId + ".layout", 0); List folders = db.folder().getNotifyingFolders(account); if (folders == null) @@ -91,7 +92,8 @@ public class Widget extends AppWidgetProvider { if (unseen == null) unseen = 0; - RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); + RemoteViews views = new RemoteViews(context.getPackageName(), + layout == 0 ? R.layout.widget : R.layout.widget_new); views.setOnClickPendingIntent(R.id.widget, pi); diff --git a/app/src/main/res/drawable/widget_background_unread.xml b/app/src/main/res/drawable/widget_background_unread.xml new file mode 100644 index 0000000000..6a1d97ba6e --- /dev/null +++ b/app/src/main/res/drawable/widget_background_unread.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_widget.xml b/app/src/main/res/layout/activity_widget.xml index d223768205..380df23d39 100644 --- a/app/src/main/res/layout/activity_widget.xml +++ b/app/src/main/res/layout/activity_widget.xml @@ -1,61 +1,113 @@ - - + - + - + -