mirror of
https://github.com/M66B/FairEmail.git
synced 2025-02-24 07:01:05 +00:00
Added notify action junk
This commit is contained in:
parent
aa3f5e01ab
commit
bfe383594c
5 changed files with 55 additions and 34 deletions
|
@ -2475,6 +2475,7 @@ class Core {
|
|||
boolean flags = prefs.getBoolean("flags", true);
|
||||
boolean notify_preview = prefs.getBoolean("notify_preview", true);
|
||||
boolean notify_trash = (prefs.getBoolean("notify_trash", true) || !pro);
|
||||
boolean notify_junk = (prefs.getBoolean("notify_junk", true) && pro);
|
||||
boolean notify_archive = (prefs.getBoolean("notify_archive", true) || !pro);
|
||||
boolean notify_reply = (prefs.getBoolean("notify_reply", false) && pro);
|
||||
boolean notify_reply_direct = (prefs.getBoolean("notify_reply_direct", false) && pro);
|
||||
|
@ -2671,6 +2672,19 @@ class Core {
|
|||
mbuilder.addAction(actionTrash.build());
|
||||
}
|
||||
|
||||
if (notify_junk &&
|
||||
db.folder().getFolderByType(message.account, EntityFolder.JUNK) != null) {
|
||||
Intent junk = new Intent(context, ServiceUI.class)
|
||||
.setAction("junk:" + message.id)
|
||||
.putExtra("group", group);
|
||||
PendingIntent piJunk = PendingIntent.getService(context, ServiceUI.PI_JUNK, junk, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
NotificationCompat.Action.Builder actionJunk = new NotificationCompat.Action.Builder(
|
||||
R.drawable.baseline_flag_24,
|
||||
context.getString(R.string.title_advanced_notify_action_junk),
|
||||
piJunk);
|
||||
mbuilder.addAction(actionJunk.build());
|
||||
}
|
||||
|
||||
if (notify_archive &&
|
||||
db.folder().getFolderByType(message.account, EntityFolder.ARCHIVE) != null) {
|
||||
Intent archive = new Intent(context, ServiceUI.class)
|
||||
|
|
|
@ -58,6 +58,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
|||
private SwitchCompat swUnseenIgnored;
|
||||
private SwitchCompat swNotifyPreview;
|
||||
private CheckBox cbNotifyActionTrash;
|
||||
private CheckBox cbNotifyActionJunk;
|
||||
private CheckBox cbNotifyActionArchive;
|
||||
private CheckBox cbNotifyActionReply;
|
||||
private CheckBox cbNotifyActionReplyDirect;
|
||||
|
@ -79,7 +80,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
|||
|
||||
private final static String[] RESET_OPTIONS = new String[]{
|
||||
"badge", "unseen_ignored",
|
||||
"notify_preview", "notify_trash", "notify_archive", "notify_reply", "notify_reply_direct", "notify_flag",
|
||||
"notify_preview", "notify_trash", "notify_junk", "notify_archive", "notify_reply", "notify_reply_direct", "notify_flag",
|
||||
"notify_seen", "notify_snooze", "notify_snooze_duration", "notify_remove",
|
||||
"biometrics_notify",
|
||||
"light", "sound", "alert_once"
|
||||
|
@ -99,6 +100,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
|||
swUnseenIgnored = view.findViewById(R.id.swUnseenIgnored);
|
||||
swNotifyPreview = view.findViewById(R.id.swNotifyPreview);
|
||||
cbNotifyActionTrash = view.findViewById(R.id.cbNotifyActionTrash);
|
||||
cbNotifyActionJunk = view.findViewById(R.id.cbNotifyActionJunk);
|
||||
cbNotifyActionArchive = view.findViewById(R.id.cbNotifyActionArchive);
|
||||
cbNotifyActionReply = view.findViewById(R.id.cbNotifyActionReply);
|
||||
cbNotifyActionReplyDirect = view.findViewById(R.id.cbNotifyActionReplyDirect);
|
||||
|
@ -155,6 +157,13 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
|||
}
|
||||
});
|
||||
|
||||
cbNotifyActionJunk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean checked) {
|
||||
prefs.edit().putBoolean("notify_junk", checked).apply();
|
||||
}
|
||||
});
|
||||
|
||||
cbNotifyActionArchive.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean checked) {
|
||||
|
@ -338,6 +347,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
|||
swNotifyPreview.setChecked(prefs.getBoolean("notify_preview", true));
|
||||
|
||||
cbNotifyActionTrash.setChecked(prefs.getBoolean("notify_trash", true) || !pro);
|
||||
cbNotifyActionJunk.setChecked(prefs.getBoolean("notify_junk", false) && pro);
|
||||
cbNotifyActionArchive.setChecked(prefs.getBoolean("notify_archive", true) || !pro);
|
||||
cbNotifyActionReply.setChecked(prefs.getBoolean("notify_reply", false) && pro);
|
||||
cbNotifyActionReplyDirect.setChecked(prefs.getBoolean("notify_reply_direct", false) && pro);
|
||||
|
@ -347,8 +357,10 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
|||
etNotifyActionSnooze.setText(Integer.toString(prefs.getInt("notify_snooze_duration", 60)));
|
||||
|
||||
cbNotifyActionTrash.setEnabled(pro);
|
||||
cbNotifyActionJunk.setEnabled(pro);
|
||||
cbNotifyActionArchive.setEnabled(pro);
|
||||
cbNotifyActionReply.setEnabled(pro);
|
||||
cbNotifyActionReplyDirect.setEnabled(pro);
|
||||
cbNotifyActionFlag.setEnabled(pro);
|
||||
cbNotifyActionSeen.setEnabled(pro);
|
||||
cbNotifyActionSnooze.setEnabled(pro);
|
||||
|
|
|
@ -42,13 +42,14 @@ import javax.mail.internet.InternetAddress;
|
|||
public class ServiceUI extends IntentService {
|
||||
static final int PI_CLEAR = 1;
|
||||
static final int PI_TRASH = 2;
|
||||
static final int PI_ARCHIVE = 3;
|
||||
static final int PI_REPLY_DIRECT = 4;
|
||||
static final int PI_FLAG = 5;
|
||||
static final int PI_SEEN = 6;
|
||||
static final int PI_SNOOZE = 7;
|
||||
static final int PI_IGNORED = 8;
|
||||
static final int PI_WAKEUP = 9;
|
||||
static final int PI_JUNK = 3;
|
||||
static final int PI_ARCHIVE = 4;
|
||||
static final int PI_REPLY_DIRECT = 5;
|
||||
static final int PI_FLAG = 6;
|
||||
static final int PI_SEEN = 7;
|
||||
static final int PI_SNOOZE = 8;
|
||||
static final int PI_IGNORED = 9;
|
||||
static final int PI_WAKEUP = 10;
|
||||
|
||||
public ServiceUI() {
|
||||
this(ServiceUI.class.getName());
|
||||
|
@ -97,12 +98,17 @@ public class ServiceUI extends IntentService {
|
|||
|
||||
case "trash":
|
||||
cancel(group, id);
|
||||
onTrash(id);
|
||||
onMove(id, EntityFolder.TRASH);
|
||||
break;
|
||||
|
||||
case "junk":
|
||||
cancel(group, id);
|
||||
onMove(id, EntityFolder.JUNK);
|
||||
break;
|
||||
|
||||
case "archive":
|
||||
cancel(group, id);
|
||||
onArchive(id);
|
||||
onMove(id, EntityFolder.ARCHIVE);
|
||||
break;
|
||||
|
||||
case "reply":
|
||||
|
@ -158,7 +164,7 @@ public class ServiceUI extends IntentService {
|
|||
nm.cancel(tag, 1);
|
||||
}
|
||||
|
||||
private void onTrash(long id) {
|
||||
private void onMove(long id, String folderType) {
|
||||
DB db = DB.getInstance(this);
|
||||
try {
|
||||
db.beginTransaction();
|
||||
|
@ -167,7 +173,7 @@ public class ServiceUI extends IntentService {
|
|||
if (message == null)
|
||||
return;
|
||||
|
||||
EntityFolder trash = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
|
||||
EntityFolder trash = db.folder().getFolderByType(message.account, folderType);
|
||||
if (trash != null)
|
||||
EntityOperation.queue(this, message, EntityOperation.MOVE, trash.id);
|
||||
|
||||
|
@ -177,27 +183,6 @@ public class ServiceUI extends IntentService {
|
|||
}
|
||||
}
|
||||
|
||||
private void onArchive(long id) {
|
||||
DB db = DB.getInstance(this);
|
||||
try {
|
||||
db.beginTransaction();
|
||||
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message == null)
|
||||
return;
|
||||
|
||||
EntityFolder archive = db.folder().getFolderByType(message.account, EntityFolder.ARCHIVE);
|
||||
if (archive == null)
|
||||
archive = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
|
||||
if (archive != null)
|
||||
EntityOperation.queue(this, message, EntityOperation.MOVE, archive.id);
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
}
|
||||
|
||||
private void onReplyDirect(long id, Intent intent) throws IOException {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
boolean prefix_once = prefs.getBoolean("prefix_once", true);
|
||||
|
|
|
@ -92,6 +92,15 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvNotifyActions" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbNotifyActionJunk"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:text="@string/title_advanced_notify_action_junk"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/cbNotifyActionTrash" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbNotifyActionArchive"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -99,7 +108,7 @@
|
|||
android:layout_marginTop="6dp"
|
||||
android:text="@string/title_advanced_notify_action_archive"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/cbNotifyActionTrash" />
|
||||
app:layout_constraintTop_toBottomOf="@id/cbNotifyActionJunk" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbNotifyActionReply"
|
||||
|
|
|
@ -284,6 +284,7 @@
|
|||
<string name="title_advanced_notify_preview">Show message preview in notifications</string>
|
||||
<string name="title_advanced_notify_actions">Notification actions</string>
|
||||
<string name="title_advanced_notify_action_trash">Trash</string>
|
||||
<string name="title_advanced_notify_action_junk">Spam</string>
|
||||
<string name="title_advanced_notify_action_archive">Archive</string>
|
||||
<string name="title_advanced_notify_action_reply">Reply</string>
|
||||
<string name="title_advanced_notify_action_reply_direct">Direct reply</string>
|
||||
|
|
Loading…
Reference in a new issue