From db9e77de43d91113a8a43cfda5de8bb2c549ec94 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 28 Sep 2019 22:22:02 +0200 Subject: [PATCH] Subject at top for widget --- .../email/FragmentOptionsDisplay.java | 1 + .../WidgetUnifiedRemoteViewsFactory.java | 28 ++++++++++++------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java index 094a3e2771..4bb243ca5b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java @@ -229,6 +229,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { prefs.edit().putBoolean("subject_top", checked).apply(); + WidgetUnified.update(getContext()); } }); diff --git a/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java b/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java index c568abb687..9ccbae6e96 100644 --- a/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java +++ b/app/src/main/java/eu/faircode/email/WidgetUnifiedRemoteViewsFactory.java @@ -41,6 +41,8 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot private Context context; private int appWidgetId; + private boolean threading; + private boolean subject_top; private long account; private boolean unseen; private boolean flagged; @@ -63,7 +65,8 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot Log.i("Widget factory changed id=" + appWidgetId); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - boolean threading = prefs.getBoolean("threading", true); + threading = prefs.getBoolean("threading", true); + subject_top = prefs.getBoolean("subject_top", false); account = prefs.getLong("widget." + appWidgetId + ".account", -1L); unseen = prefs.getBoolean("widget." + appWidgetId + ".unseen", false); flagged = prefs.getBoolean("widget." + appWidgetId + ".flagged", false); @@ -90,6 +93,10 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot @Override public RemoteViews getViewAt(int position) { RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.item_widget_unified); + int idFrom = (subject_top ? R.id.tvSubject : R.id.tvFrom); + int idTime = (subject_top ? R.id.tvAccount : R.id.tvTime); + int idSubject = (subject_top ? R.id.tvFrom : R.id.tvSubject); + int idAccount = (subject_top ? R.id.tvTime : R.id.tvAccount); if (position >= messages.size()) return views; @@ -113,17 +120,18 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot SpannableString ssAccount = new SpannableString(TextUtils.isEmpty(message.accountName) ? "" : message.accountName); if (!message.ui_seen) { - ssFrom.setSpan(new StyleSpan(Typeface.BOLD), 0, ssFrom.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); - ssTime.setSpan(new StyleSpan(Typeface.BOLD), 0, ssTime.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); - ssSubject.setSpan(new StyleSpan(Typeface.BOLD), 0, ssSubject.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); - ssAccount.setSpan(new StyleSpan(Typeface.BOLD), 0, ssAccount.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); + ssFrom.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 0, ssFrom.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); + ssTime.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 0, ssTime.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); + ssSubject.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 0, ssSubject.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); + ssAccount.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 0, ssAccount.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } - views.setTextViewText(R.id.tvFrom, ssFrom); - views.setTextViewText(R.id.tvTime, ssTime); - views.setTextViewText(R.id.tvSubject, ssSubject); - views.setTextViewText(R.id.tvAccount, ssAccount); - views.setViewVisibility(R.id.tvAccount, account < 0 ? View.VISIBLE : View.GONE); + views.setTextViewText(idFrom, ssFrom); + views.setTextViewText(idTime, ssTime); + views.setTextViewText(idSubject, ssSubject); + views.setTextViewText(idAccount, ssAccount); + views.setViewVisibility(idAccount, account < 0 ? View.VISIBLE : View.GONE); + } catch (Throwable ex) { Log.e(ex); }