Added option to show unread messages in widget as read

master
M66B 3 weeks ago
parent ceefde9924
commit 21d8f37667

@ -61,6 +61,7 @@ public class ActivityWidgetUnified extends ActivityBase {
private Spinner spAccount;
private Spinner spFolder;
private CheckBox cbUnseen;
private CheckBox cbShowUnseen;
private CheckBox cbFlagged;
private CheckBox cbDayNight;
private CheckBox cbHighlight;
@ -107,6 +108,7 @@ public class ActivityWidgetUnified extends ActivityBase {
long account = prefs.getLong("widget." + appWidgetId + ".account", -1L);
long folder = prefs.getLong("widget." + appWidgetId + ".folder", -1L);
boolean unseen = prefs.getBoolean("widget." + appWidgetId + ".unseen", false);
boolean show_unseen = prefs.getBoolean("widget." + appWidgetId + ".show_unseen", true);
boolean flagged = prefs.getBoolean("widget." + appWidgetId + ".flagged", false);
boolean daynight = prefs.getBoolean("widget." + appWidgetId + ".daynight", false);
boolean highlight = prefs.getBoolean("widget." + appWidgetId + ".highlight", false);
@ -135,6 +137,7 @@ public class ActivityWidgetUnified extends ActivityBase {
spAccount = findViewById(R.id.spAccount);
spFolder = findViewById(R.id.spFolder);
cbUnseen = findViewById(R.id.cbUnseen);
cbShowUnseen = findViewById(R.id.cbShowUnseen);
cbFlagged = findViewById(R.id.cbFlagged);
cbDayNight = findViewById(R.id.cbDayNight);
cbHighlight = findViewById(R.id.cbHighlight);
@ -160,6 +163,13 @@ public class ActivityWidgetUnified extends ActivityBase {
final Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
cbUnseen.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
cbShowUnseen.setEnabled(isChecked);
}
});
cbDayNight.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -293,6 +303,7 @@ public class ActivityWidgetUnified extends ActivityBase {
editor.putLong("widget." + appWidgetId + ".folder", folder == null ? -1L : folder.id);
editor.putString("widget." + appWidgetId + ".type", folder == null ? null : folder.type);
editor.putBoolean("widget." + appWidgetId + ".unseen", cbUnseen.isChecked());
editor.putBoolean("widget." + appWidgetId + ".show_unseen", cbShowUnseen.isChecked());
editor.putBoolean("widget." + appWidgetId + ".daynight", cbDayNight.isChecked());
editor.putBoolean("widget." + appWidgetId + ".flagged", cbFlagged.isChecked());
editor.putBoolean("widget." + appWidgetId + ".highlight", cbHighlight.isChecked());
@ -422,6 +433,8 @@ public class ActivityWidgetUnified extends ActivityBase {
// Initialize
cbUnseen.setChecked(unseen);
cbShowUnseen.setChecked(show_unseen);
cbShowUnseen.setEnabled(cbUnseen.isChecked());
cbFlagged.setChecked(flagged);
cbDayNight.setChecked(daynight);
cbDayNight.setVisibility(Build.VERSION.SDK_INT < Build.VERSION_CODES.S ? View.GONE : View.VISIBLE);

@ -57,6 +57,7 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
private long folder;
private long account;
private boolean unseen;
private boolean show_unseen;
private boolean flagged;
private boolean daynight;
private boolean highlight;
@ -109,6 +110,7 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
account = prefs.getLong("widget." + appWidgetId + ".account", -1L);
folder = prefs.getLong("widget." + appWidgetId + ".folder", -1L);
unseen = prefs.getBoolean("widget." + appWidgetId + ".unseen", false);
show_unseen = prefs.getBoolean("widget." + appWidgetId + ".show_unseen", true);
flagged = prefs.getBoolean("widget." + appWidgetId + ".flagged", false);
daynight = prefs.getBoolean("widget." + appWidgetId + ".daynight", false);
highlight = prefs.getBoolean("widget." + appWidgetId + ".highlight", false);
@ -258,7 +260,9 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
SpannableString ssAccount = new SpannableString(
TextUtils.isEmpty(message.accountName) ? "" : message.accountName);
if (message.ui_seen || unseen) {
boolean show_seen = (unseen && !show_unseen);
if (message.ui_seen || show_seen) {
if (subject_italic)
ssSubject.setSpan(new StyleSpan(Typeface.ITALIC), 0, ssSubject.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
} else {
@ -284,14 +288,14 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
views.setViewVisibility(ivFrom, View.GONE);
views.setViewVisibility(ivSubject, message.attachments > 0 ? View.VISIBLE : View.GONE);
views.setColorStateList(ivSubject, "setImageTintList",
ColorStateList.valueOf(message.ui_seen || unseen ? colorWidgetRead : colorWidgetUnread));
ColorStateList.valueOf(message.ui_seen || show_seen ? colorWidgetRead : colorWidgetUnread));
} else {
views.setViewVisibility(ivFrom, View.GONE);
views.setViewVisibility(ivSubject, View.GONE);
}
if (daynight && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
int textColorAttr = (message.ui_seen || unseen ? android.R.attr.textColorPrimary : android.R.attr.textColorLink);
int textColorAttr = (message.ui_seen || show_seen ? android.R.attr.textColorPrimary : android.R.attr.textColorLink);
views.setColorStateListAttr(idFrom, "setTextColor", textColorAttr);
views.setColorStateListAttr(idTime, "setTextColor", textColorAttr);
views.setColorStateListAttr(idSubject, "setTextColor", textColorAttr);
@ -299,7 +303,7 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
views.setInt(R.id.separator, "setBackgroundColor", Color.WHITE);
views.setColorStateListAttr(R.id.separator, "setBackgroundTintList", android.R.attr.colorControlNormal);
} else {
int textColor = (message.ui_seen || unseen ? colorWidgetRead : colorWidgetUnread);
int textColor = (message.ui_seen || show_seen ? colorWidgetRead : colorWidgetUnread);
views.setTextColor(idFrom, textColor);
views.setTextColor(idTime, textColor);
views.setTextColor(idSubject, textColor);

@ -57,6 +57,17 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spFolder" />
<CheckBox
android:id="@+id/cbShowUnseen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
android:checked="true"
android:text="@string/title_widget_show_unseen"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbUnseen" />
<CheckBox
android:id="@+id/cbFlagged"
android:layout_width="wrap_content"
@ -64,7 +75,7 @@
android:layout_marginTop="12dp"
android:text="@string/title_widget_flagged"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cbUnseen" />
app:layout_constraintTop_toBottomOf="@id/cbShowUnseen" />
<CheckBox
android:id="@+id/cbDayNight"

@ -2452,6 +2452,7 @@
<string name="title_widget_folder_unified">Unified inbox folders</string>
<string name="title_widget_folder_notifying">Folders with new message notifications</string>
<string name="title_widget_unseen">Unread messages only</string>
<string name="title_widget_show_unseen">Show as unread</string>
<string name="title_widget_flagged">Starred messages only</string>
<string name="title_widget_font_size">Text size</string>
<string name="title_widget_padding">Padding size</string>

Loading…
Cancel
Save