mirror of
https://github.com/M66B/FairEmail.git
synced 2026-01-05 04:19:21 +01:00
Added notification action hide
This commit is contained in:
@@ -4109,6 +4109,7 @@ class Core {
|
||||
boolean notify_reply_direct = (prefs.getBoolean("notify_reply_direct", false) && pro);
|
||||
boolean notify_flag = (prefs.getBoolean("notify_flag", false) && flags && pro);
|
||||
boolean notify_seen = (prefs.getBoolean("notify_seen", true) || !pro);
|
||||
boolean notify_hide = (prefs.getBoolean("notify_hide", false) && pro);
|
||||
boolean notify_snooze = (prefs.getBoolean("notify_snooze", false) && pro);
|
||||
boolean notify_remove = prefs.getBoolean("notify_remove", true);
|
||||
boolean light = prefs.getBoolean("light", false);
|
||||
@@ -4548,6 +4549,23 @@ class Core {
|
||||
wactions.add(actionSeen.build());
|
||||
}
|
||||
|
||||
if (notify_hide) {
|
||||
Intent hide = new Intent(context, ServiceUI.class)
|
||||
.setAction("hide:" + message.id)
|
||||
.putExtra("group", group);
|
||||
PendingIntent piHide = PendingIntentCompat.getService(
|
||||
context, ServiceUI.PI_HIDE, hide, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
NotificationCompat.Action.Builder actionHide = new NotificationCompat.Action.Builder(
|
||||
R.drawable.twotone_visibility_off_24,
|
||||
context.getString(R.string.title_advanced_notify_action_hide),
|
||||
piHide)
|
||||
.setShowsUserInterface(false)
|
||||
.setAllowGeneratedReplies(false);
|
||||
mbuilder.addAction(actionHide.build());
|
||||
|
||||
wactions.add(actionHide.build());
|
||||
}
|
||||
|
||||
if (notify_snooze) {
|
||||
Intent snooze = new Intent(context, ServiceUI.class)
|
||||
.setAction("snooze:" + message.id)
|
||||
|
||||
@@ -71,6 +71,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
||||
private CheckBox cbNotifyActionReplyDirect;
|
||||
private CheckBox cbNotifyActionFlag;
|
||||
private CheckBox cbNotifyActionSeen;
|
||||
private CheckBox cbNotifyActionHide;
|
||||
private CheckBox cbNotifyActionSnooze;
|
||||
private TextView tvNotifyActionsPro;
|
||||
private SwitchCompat swLight;
|
||||
@@ -105,7 +106,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
||||
"background_service",
|
||||
"notify_trash", "notify_junk", "notify_block_sender", "notify_archive", "notify_move",
|
||||
"notify_reply", "notify_reply_direct",
|
||||
"notify_flag", "notify_seen", "notify_snooze",
|
||||
"notify_flag", "notify_seen", "notify_hide", "notify_snooze",
|
||||
"light", "sound",
|
||||
"badge", "unseen_ignored",
|
||||
"notify_background_only", "notify_known", "notify_summary", "notify_remove", "notify_clear",
|
||||
@@ -143,6 +144,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
||||
cbNotifyActionReplyDirect = view.findViewById(R.id.cbNotifyActionReplyDirect);
|
||||
cbNotifyActionFlag = view.findViewById(R.id.cbNotifyActionFlag);
|
||||
cbNotifyActionSeen = view.findViewById(R.id.cbNotifyActionSeen);
|
||||
cbNotifyActionHide = view.findViewById(R.id.cbNotifyActionHide);
|
||||
cbNotifyActionSnooze = view.findViewById(R.id.cbNotifyActionSnooze);
|
||||
tvNotifyActionsPro = view.findViewById(R.id.tvNotifyActionsPro);
|
||||
swLight = view.findViewById(R.id.swLight);
|
||||
@@ -306,6 +308,13 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
||||
}
|
||||
});
|
||||
|
||||
cbNotifyActionHide.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean checked) {
|
||||
prefs.edit().putBoolean("notify_hide", checked).apply();
|
||||
}
|
||||
});
|
||||
|
||||
cbNotifyActionSnooze.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean checked) {
|
||||
@@ -544,6 +553,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
||||
cbNotifyActionReplyDirect.setChecked(prefs.getBoolean("notify_reply_direct", false) && pro);
|
||||
cbNotifyActionFlag.setChecked(prefs.getBoolean("notify_flag", false) && pro);
|
||||
cbNotifyActionSeen.setChecked(prefs.getBoolean("notify_seen", true) || !pro);
|
||||
cbNotifyActionHide.setChecked(prefs.getBoolean("notify_hide", false) && pro);
|
||||
cbNotifyActionSnooze.setChecked(prefs.getBoolean("notify_snooze", false) && pro);
|
||||
swLight.setChecked(prefs.getBoolean("light", false));
|
||||
|
||||
@@ -578,6 +588,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
||||
cbNotifyActionReplyDirect.setEnabled(pro && !summary);
|
||||
cbNotifyActionFlag.setEnabled(pro && !summary);
|
||||
cbNotifyActionSeen.setEnabled(pro && !summary);
|
||||
cbNotifyActionHide.setEnabled(pro && !summary);
|
||||
cbNotifyActionSnooze.setEnabled(pro && !summary);
|
||||
swNotifyPreviewAll.setEnabled(!summary && swNotifyPreview.isChecked());
|
||||
swNotifyPreviewOnly.setEnabled(!summary && swNotifyPreview.isChecked());
|
||||
|
||||
@@ -54,9 +54,10 @@ public class ServiceUI extends IntentService {
|
||||
static final int PI_REPLY_DIRECT = 6;
|
||||
static final int PI_FLAG = 7;
|
||||
static final int PI_SEEN = 8;
|
||||
static final int PI_SNOOZE = 9;
|
||||
static final int PI_IGNORED = 10;
|
||||
static final int PI_THREAD = 11;
|
||||
static final int PI_HIDE = 9;
|
||||
static final int PI_SNOOZE = 10;
|
||||
static final int PI_IGNORED = 11;
|
||||
static final int PI_THREAD = 12;
|
||||
|
||||
public ServiceUI() {
|
||||
this(ServiceUI.class.getName());
|
||||
@@ -139,6 +140,11 @@ public class ServiceUI extends IntentService {
|
||||
onSeen(id);
|
||||
break;
|
||||
|
||||
case "hide":
|
||||
cancel(group, id);
|
||||
onHide(id);
|
||||
break;
|
||||
|
||||
case "snooze":
|
||||
cancel(group, id);
|
||||
onSnooze(id);
|
||||
@@ -379,6 +385,25 @@ public class ServiceUI extends IntentService {
|
||||
}
|
||||
}
|
||||
|
||||
private void onHide(long id) {
|
||||
DB db = DB.getInstance(this);
|
||||
try {
|
||||
db.beginTransaction();
|
||||
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message == null)
|
||||
return;
|
||||
|
||||
db.message().setMessageSnoozed(message.id, Long.MAX_VALUE);
|
||||
db.message().setMessageUiIgnored(message.id, true);
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
private void onSnooze(long id) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
int notify_snooze_duration = prefs.getInt("default_snooze", 1);
|
||||
|
||||
Reference in New Issue
Block a user