mirror of
https://github.com/M66B/FairEmail.git
synced 2025-01-01 04:35:57 +00:00
Mark all read "don't ask again"
This commit is contained in:
parent
b2481213a0
commit
3a25f87d06
2 changed files with 62 additions and 47 deletions
|
@ -360,6 +360,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
static final int REQUEST_PICK_CONTACT = 23;
|
||||
static final int REQUEST_BUTTONS = 24;
|
||||
private static final int REQUEST_ASKED_RAW = 25;
|
||||
private static final int REQUEST_ALL_READ = 26;
|
||||
|
||||
static final String ACTION_STORE_RAW = BuildConfig.APPLICATION_ID + ".STORE_RAW";
|
||||
static final String ACTION_DECRYPT = BuildConfig.APPLICATION_ID + ".DECRYPT";
|
||||
|
@ -4482,60 +4483,70 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
}
|
||||
|
||||
private void onMenuMarkAllRead() {
|
||||
new AlertDialog.Builder(getContext())
|
||||
.setTitle(R.string.title_mark_all_read)
|
||||
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Bundle args = new Bundle();
|
||||
args.putString("type", type);
|
||||
args.putLong("folder", folder);
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
boolean all_read_asked = prefs.getBoolean("all_read_asked", false);
|
||||
if (all_read_asked) {
|
||||
markAllRead();
|
||||
return;
|
||||
}
|
||||
|
||||
new SimpleTask<Void>() {
|
||||
@Override
|
||||
protected Void onExecute(Context context, Bundle args) throws Throwable {
|
||||
String type = args.getString("type");
|
||||
long folder = args.getLong("folder");
|
||||
Bundle args = new Bundle();
|
||||
args.putString("question", getString(R.string.title_mark_all_read));
|
||||
args.putString("notagain", "all_read_asked");
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
boolean filter_unflagged = prefs.getBoolean("filter_unflagged", false);
|
||||
boolean filter_unknown = prefs.getBoolean("filter_unknown", false);
|
||||
boolean filter_snoozed = prefs.getBoolean("filter_snoozed", true);
|
||||
boolean language_detection = prefs.getBoolean("language_detection", false);
|
||||
String filter_language = prefs.getString("filter_language", null);
|
||||
FragmentDialogAsk ask = new FragmentDialogAsk();
|
||||
ask.setArguments(args);
|
||||
ask.setTargetFragment(FragmentMessages.this, REQUEST_ALL_READ);
|
||||
ask.show(getParentFragmentManager(), "messages:allread");
|
||||
|
||||
DB db = DB.getInstance(context);
|
||||
try {
|
||||
db.beginTransaction();
|
||||
}
|
||||
|
||||
List<Long> ids = db.message().getMessageUnseen(
|
||||
folder < 0 ? null : folder,
|
||||
folder < 0 ? type : null,
|
||||
filter_unflagged, filter_unknown, filter_snoozed,
|
||||
language_detection ? filter_language : null);
|
||||
for (long id : ids) {
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message != null)
|
||||
EntityOperation.queue(context, message, EntityOperation.SEEN, true);
|
||||
}
|
||||
private void markAllRead() {
|
||||
Bundle args = new Bundle();
|
||||
args.putString("type", type);
|
||||
args.putLong("folder", folder);
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
new SimpleTask<Void>() {
|
||||
@Override
|
||||
protected Void onExecute(Context context, Bundle args) throws Throwable {
|
||||
String type = args.getString("type");
|
||||
long folder = args.getLong("folder");
|
||||
|
||||
return null;
|
||||
}
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
boolean filter_unflagged = prefs.getBoolean("filter_unflagged", false);
|
||||
boolean filter_unknown = prefs.getBoolean("filter_unknown", false);
|
||||
boolean filter_snoozed = prefs.getBoolean("filter_snoozed", true);
|
||||
boolean language_detection = prefs.getBoolean("language_detection", false);
|
||||
String filter_language = prefs.getString("filter_language", null);
|
||||
|
||||
@Override
|
||||
protected void onException(Bundle args, Throwable ex) {
|
||||
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||
}
|
||||
}.execute(FragmentMessages.this, args, "message:read");
|
||||
DB db = DB.getInstance(context);
|
||||
try {
|
||||
db.beginTransaction();
|
||||
|
||||
List<Long> ids = db.message().getMessageUnseen(
|
||||
folder < 0 ? null : folder,
|
||||
folder < 0 ? type : null,
|
||||
filter_unflagged, filter_unknown, filter_snoozed,
|
||||
language_detection ? filter_language : null);
|
||||
for (long id : ids) {
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message != null)
|
||||
EntityOperation.queue(context, message, EntityOperation.SEEN, true);
|
||||
}
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show();
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onException(Bundle args, Throwable ex) {
|
||||
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||
}
|
||||
}.execute(FragmentMessages.this, args, "messages:allread");
|
||||
}
|
||||
|
||||
private void onMenuSyncMore() {
|
||||
|
@ -6047,6 +6058,10 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
|||
if (resultCode == RESULT_OK)
|
||||
_onActionRaw();
|
||||
break;
|
||||
case REQUEST_ALL_READ:
|
||||
if (requestCode == RESULT_OK)
|
||||
markAllRead();
|
||||
break;
|
||||
}
|
||||
} catch (Throwable ex) {
|
||||
Log.e(ex);
|
||||
|
|
|
@ -151,7 +151,7 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
|
|||
"selected_folders", "move_1_confirmed", "move_n_confirmed",
|
||||
"last_search_senders", "last_search_recipients", "last_search_subject", "last_search_keywords", "last_search_message", "last_search",
|
||||
"identities_asked", "identities_primary_hint",
|
||||
"raw_asked",
|
||||
"raw_asked", "all_read_asked",
|
||||
"cc_bcc", "inline_image_hint", "compose_reference", "send_dialog",
|
||||
"setup_reminder", "setup_advanced"
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue