diff --git a/app/src/main/java/eu/faircode/email/ActivityCompose.java b/app/src/main/java/eu/faircode/email/ActivityCompose.java
index 6d644c80ac..c92e8fde7a 100644
--- a/app/src/main/java/eu/faircode/email/ActivityCompose.java
+++ b/app/src/main/java/eu/faircode/email/ActivityCompose.java
@@ -71,7 +71,9 @@ public class ActivityCompose extends ActivityBase implements FragmentManager.OnB
@Override
public void onBackStackChanged() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
- if (!isShared(getIntent().getAction())) {
+ String action = getIntent().getAction();
+ if (!isShared(action) &&
+ (action == null || !action.startsWith("widget:"))) {
Intent parent = getParentActivityIntent();
if (parent != null)
if (shouldUpRecreateTask(parent))
diff --git a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java
index 9d5a9ea56c..dd85e9ecba 100644
--- a/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java
+++ b/app/src/main/java/eu/faircode/email/ActivityWidgetUnified.java
@@ -60,6 +60,7 @@ public class ActivityWidgetUnified extends ActivityBase {
private ViewButtonColor btnColor;
private Spinner spFontSize;
private Spinner spPadding;
+ private CheckBox cbCompose;
private Button btnSave;
private ContentLoadingProgressBar pbWait;
private Group grpReady;
@@ -91,6 +92,7 @@ public class ActivityWidgetUnified extends ActivityBase {
int background = prefs.getInt("widget." + appWidgetId + ".background", Color.TRANSPARENT);
int font = prefs.getInt("widget." + appWidgetId + ".font", 0);
int padding = prefs.getInt("widget." + appWidgetId + ".padding", 0);
+ boolean compose = prefs.getBoolean("widget." + appWidgetId + ".compose", false);
getSupportActionBar().setSubtitle(R.string.title_widget_title_list);
setContentView(R.layout.activity_widget_unified);
@@ -103,6 +105,7 @@ public class ActivityWidgetUnified extends ActivityBase {
btnColor = findViewById(R.id.btnColor);
spFontSize = findViewById(R.id.spFontSize);
spPadding = findViewById(R.id.spPadding);
+ cbCompose = findViewById(R.id.cbCompose);
btnSave = findViewById(R.id.btnSave);
pbWait = findViewById(R.id.pbWait);
grpReady = findViewById(R.id.grpReady);
@@ -170,6 +173,7 @@ public class ActivityWidgetUnified extends ActivityBase {
editor.putInt("widget." + appWidgetId + ".background", btnColor.getColor());
editor.putInt("widget." + appWidgetId + ".font", tinyOut(font));
editor.putInt("widget." + appWidgetId + ".padding", tinyOut(padding));
+ editor.putBoolean("widget." + appWidgetId + ".compose", cbCompose.isChecked());
editor.putInt("widget." + appWidgetId + ".version", BuildConfig.VERSION_CODE);
editor.apply();
@@ -287,6 +291,7 @@ public class ActivityWidgetUnified extends ActivityBase {
btnColor.setColor(background);
spFontSize.setSelection(tinyIn(font));
spPadding.setSelection(tinyIn(padding));
+ cbCompose.setChecked(compose);
grpReady.setVisibility(View.GONE);
pbWait.setVisibility(View.VISIBLE);
diff --git a/app/src/main/java/eu/faircode/email/WidgetUnified.java b/app/src/main/java/eu/faircode/email/WidgetUnified.java
index 53a40c18d5..2720f69c79 100644
--- a/app/src/main/java/eu/faircode/email/WidgetUnified.java
+++ b/app/src/main/java/eu/faircode/email/WidgetUnified.java
@@ -29,6 +29,7 @@ import android.content.SharedPreferences;
import android.graphics.Color;
import android.net.Uri;
import android.util.TypedValue;
+import android.view.View;
import android.widget.RemoteViews;
import androidx.core.graphics.ColorUtils;
@@ -48,6 +49,7 @@ public class WidgetUnified extends AppWidgetProvider {
int background = prefs.getInt("widget." + appWidgetId + ".background", Color.TRANSPARENT);
int font = prefs.getInt("widget." + appWidgetId + ".font", 0);
int padding = prefs.getInt("widget." + appWidgetId + ".padding", 0);
+ boolean compose = prefs.getBoolean("widget." + appWidgetId + ".compose", false);
int version = prefs.getInt("widget." + appWidgetId + ".version", 0);
if (version <= 1550)
@@ -67,6 +69,14 @@ public class WidgetUnified extends AppWidgetProvider {
PendingIntent pi = PendingIntentCompat.getActivity(
context, appWidgetId, view, PendingIntent.FLAG_UPDATE_CURRENT);
+ Intent edit = new Intent(context, ActivityCompose.class);
+ edit.setAction("widget:" + appWidgetId);
+ edit.putExtra("action", "new");
+ edit.putExtra("account", account);
+ edit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ PendingIntent piCompose = PendingIntentCompat.getActivity(
+ context, appWidgetId, edit, PendingIntent.FLAG_UPDATE_CURRENT);
+
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_unified);
views.setTextViewTextSize(R.id.title, TypedValue.COMPLEX_UNIT_SP, getFontSizeSp(font));
@@ -81,6 +91,10 @@ public class WidgetUnified extends AppWidgetProvider {
views.setOnClickPendingIntent(R.id.title, pi);
+ views.setViewVisibility(R.id.compose, compose ? View.VISIBLE : View.GONE);
+ views.setViewPadding(R.id.compose, px, px, px, px);
+ views.setOnClickPendingIntent(R.id.compose, piCompose);
+
Intent service = new Intent(context, WidgetUnifiedService.class);
service.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
service.setData(Uri.parse(service.toUri(Intent.URI_INTENT_SCHEME)));
diff --git a/app/src/main/res/layout/activity_widget_unified.xml b/app/src/main/res/layout/activity_widget_unified.xml
index ecf3d6b831..586da90620 100644
--- a/app/src/main/res/layout/activity_widget_unified.xml
+++ b/app/src/main/res/layout/activity_widget_unified.xml
@@ -121,6 +121,16 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvPadding" />
+
+
+ app:layout_constraintTop_toBottomOf="@id/cbCompose" />
-
+ android:orientation="horizontal">
+
+
+
+
+
Text size
Padding size
Semi transparent background
+ Show compose new message button
Background color
Collapsed