diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index f102b13018..6e026a4f9c 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -104,12 +104,13 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB private boolean searching = false; static final int REQUEST_UNIFIED = 1; - static final int REQUEST_WHY = 2; - static final int REQUEST_THREAD = 3; - static final int REQUEST_OUTBOX = 4; - static final int REQUEST_ERROR = 5; - static final int REQUEST_UPDATE = 6; - static final int REQUEST_WIDGET = 7; + static final int REQUEST_FOLDER = 2; + static final int REQUEST_WHY = 3; + static final int REQUEST_THREAD = 4; + static final int REQUEST_OUTBOX = 5; + static final int REQUEST_ERROR = 6; + static final int REQUEST_UPDATE = 7; + static final int REQUEST_WIDGET = 8; static final String ACTION_VIEW_FOLDERS = BuildConfig.APPLICATION_ID + ".VIEW_FOLDERS"; static final String ACTION_VIEW_MESSAGES = BuildConfig.APPLICATION_ID + ".VIEW_MESSAGES"; @@ -791,6 +792,16 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB startService(clear); } + } else if (action.startsWith("folder")) { + if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + getSupportFragmentManager().popBackStack("unified", 0); + + long folder = Long.parseLong(action.split(":", 2)[1]); + if (folder > 0) { + intent.putExtra("folder", folder); + onViewMessages(intent); + } + } else if ("why".equals(action)) { if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) getSupportFragmentManager().popBackStack("unified", 0); diff --git a/app/src/main/java/eu/faircode/email/WidgetUnified.java b/app/src/main/java/eu/faircode/email/WidgetUnified.java index ae3a155788..90dbb8fbbe 100644 --- a/app/src/main/java/eu/faircode/email/WidgetUnified.java +++ b/app/src/main/java/eu/faircode/email/WidgetUnified.java @@ -67,14 +67,18 @@ public class WidgetUnified extends AppWidgetProvider { private static void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - Intent view = new Intent(context, ActivityView.class); - view.setAction("unified"); - view.putExtra("refresh", true); - view.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - PendingIntent pi = PendingIntent.getActivity(context, ActivityView.REQUEST_UNIFIED, view, PendingIntent.FLAG_UPDATE_CURRENT); - boolean pro = ActivityBilling.isPro(context); for (int appWidgetId : appWidgetIds) { + long account = prefs.getLong("widget." + appWidgetId + ".account", -1L); + long folder = prefs.getLong("widget." + appWidgetId + ".folder", -1L); + + Intent view = new Intent(context, ActivityView.class); + view.setAction("folder:" + folder); + view.putExtra("account", account); + view.putExtra("refresh", true); + view.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + PendingIntent pi = PendingIntent.getActivity(context, ActivityView.REQUEST_FOLDER, view, PendingIntent.FLAG_UPDATE_CURRENT); + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_unified); views.setViewVisibility(R.id.pro, pro ? View.GONE : View.VISIBLE);