Added long press folder to mark all read

pull/217/head
M66B 10 months ago
parent 99826f4f9c
commit dc65869e5d

@ -627,6 +627,8 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
popupMenu.getMenu().add(Menu.NONE, R.string.title_expunge, order++, R.string.title_expunge); popupMenu.getMenu().add(Menu.NONE, R.string.title_expunge, order++, R.string.title_expunge);
} }
popupMenu.getMenu().add(Menu.NONE, R.string.title_mark_all_read, order++, R.string.title_mark_all_read);
if (EntityFolder.TRASH.equals(folder.type)) if (EntityFolder.TRASH.equals(folder.type))
popupMenu.getMenu().add(Menu.NONE, R.string.title_empty_trash, order++, R.string.title_empty_trash); popupMenu.getMenu().add(Menu.NONE, R.string.title_empty_trash, order++, R.string.title_empty_trash);
else if (EntityFolder.JUNK.equals(folder.type)) else if (EntityFolder.JUNK.equals(folder.type))
@ -804,6 +806,9 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
} else if (itemId == R.string.title_subscribe) { } else if (itemId == R.string.title_subscribe) {
onActionSubscribe(); onActionSubscribe();
return true; return true;
} else if (itemId == R.string.title_mark_all_read) {
onActionMarkAllRead();
return true;
} else if (itemId == R.string.title_empty_trash) { } else if (itemId == R.string.title_empty_trash) {
onActionEmpty(EntityFolder.TRASH); onActionEmpty(EntityFolder.TRASH);
return true; return true;
@ -1244,6 +1249,27 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
}.execute(context, owner, args, "folder:expunge"); }.execute(context, owner, args, "folder:expunge");
} }
private void onActionMarkAllRead() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean all_read_asked = prefs.getBoolean("all_read_asked", false);
if (all_read_asked) {
FragmentMessages.markAllRead(parentFragment, folder.type, folder.id, AdapterMessage.ViewType.FOLDER);
return;
}
Bundle args = new Bundle();
args.putString("type", folder.type);
args.putLong("folder", folder.id);
args.putString("question", context.getString(R.string.title_mark_all_read));
args.putString("notagain", "all_read_asked");
FragmentDialogAsk ask = new FragmentDialogAsk();
ask.setArguments(args);
ask.setTargetFragment(parentFragment, FragmentFolders.REQUEST_ALL_READ);
ask.show(parentFragment.getParentFragmentManager(), "folder:allread");
}
private void onActionEmpty(String type) { private void onActionEmpty(String type) {
Bundle aargs = new Bundle(); Bundle aargs = new Bundle();
if (EntityFolder.TRASH.equals(type)) if (EntityFolder.TRASH.equals(type))

@ -137,6 +137,7 @@ public class FragmentFolders extends FragmentBase {
static final int REQUEST_EDIT_FOLDER_COLOR = 7; static final int REQUEST_EDIT_FOLDER_COLOR = 7;
static final int REQUEST_EDIT_ACCOUNT_NAME = 8; static final int REQUEST_EDIT_ACCOUNT_NAME = 8;
static final int REQUEST_EDIT_ACCOUNT_COLOR = 9; static final int REQUEST_EDIT_ACCOUNT_COLOR = 9;
static final int REQUEST_ALL_READ = 10;
private static final long EXPORT_PROGRESS_INTERVAL = 5000L; // milliseconds private static final long EXPORT_PROGRESS_INTERVAL = 5000L; // milliseconds
@ -991,6 +992,10 @@ public class FragmentFolders extends FragmentBase {
if (resultCode == RESULT_OK && data != null) if (resultCode == RESULT_OK && data != null)
onEditAccountColor(data.getBundleExtra("args")); onEditAccountColor(data.getBundleExtra("args"));
break; break;
case REQUEST_ALL_READ:
if (resultCode == RESULT_OK && data != null)
onMarkAllRead(data.getBundleExtra("args"));
break;
} }
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(ex); Log.e(ex);
@ -1808,4 +1813,9 @@ public class FragmentFolders extends FragmentBase {
} }
}.execute(this, args, "edit:color"); }.execute(this, args, "edit:color");
} }
private void onMarkAllRead(Bundle args) {
FragmentMessages.markAllRead(this,
args.getString("type"), args.getLong("folder"), AdapterMessage.ViewType.FOLDER);
}
} }

@ -7002,7 +7002,7 @@ public class FragmentMessages extends FragmentBase
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
boolean all_read_asked = prefs.getBoolean("all_read_asked", false); boolean all_read_asked = prefs.getBoolean("all_read_asked", false);
if (all_read_asked) { if (all_read_asked) {
markAllRead(); markAllRead(FragmentMessages.this, type, folder, viewType);
return; return;
} }
@ -7028,16 +7028,18 @@ public class FragmentMessages extends FragmentBase
fragmentTransaction.commit(); fragmentTransaction.commit();
} }
private void markAllRead() { static void markAllRead(Fragment fragment, String type, long folder, AdapterMessage.ViewType viewType) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString("type", type); args.putString("type", type);
args.putLong("folder", folder); args.putLong("folder", folder);
args.putString("viewType", viewType.name());
new SimpleTask<Void>() { new SimpleTask<Void>() {
@Override @Override
protected Void onExecute(Context context, Bundle args) throws Throwable { protected Void onExecute(Context context, Bundle args) throws Throwable {
String type = args.getString("type"); String type = args.getString("type");
long folder = args.getLong("folder"); long folder = args.getLong("folder");
AdapterMessage.ViewType viewType = AdapterMessage.ViewType.valueOf(args.getString("viewType"));
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean filter_unflagged = prefs.getBoolean(getFilter(context, "unflagged", viewType, type), false); boolean filter_unflagged = prefs.getBoolean(getFilter(context, "unflagged", viewType, type), false);
@ -7071,9 +7073,9 @@ public class FragmentMessages extends FragmentBase
@Override @Override
protected void onException(Bundle args, Throwable ex) { protected void onException(Bundle args, Throwable ex) {
Log.unexpectedError(getParentFragmentManager(), ex); Log.unexpectedError(fragment.getParentFragmentManager(), ex);
} }
}.execute(FragmentMessages.this, args, "messages:allread"); }.execute(fragment, args, "messages:allread");
} }
private void onSaveSearch(Bundle args) { private void onSaveSearch(Bundle args) {
@ -9477,7 +9479,7 @@ public class FragmentMessages extends FragmentBase
break; break;
case REQUEST_ALL_READ: case REQUEST_ALL_READ:
if (resultCode == RESULT_OK) if (resultCode == RESULT_OK)
markAllRead(); markAllRead(FragmentMessages.this, type, folder, viewType);
break; break;
case REQUEST_SAVE_SEARCH: case REQUEST_SAVE_SEARCH:
if (resultCode == RESULT_OK && data != null) if (resultCode == RESULT_OK && data != null)

Loading…
Cancel
Save