Added quick folder actions

pull/156/head
M66B 6 years ago
parent 109ab986c8
commit 7988a82e33

@ -390,31 +390,39 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
popupMenu.getMenu().add(Menu.NONE, R.string.title_synchronize_now, 1, R.string.title_synchronize_now); popupMenu.getMenu().add(Menu.NONE, R.string.title_synchronize_now, 1, R.string.title_synchronize_now);
if (folder.account != null) if (folder.account != null) {
popupMenu.getMenu().add(Menu.NONE, R.string.title_synchronize_enabled, 2, R.string.title_synchronize_enabled) popupMenu.getMenu().add(Menu.NONE, R.string.title_unified_folder, 2, R.string.title_unified_folder)
.setCheckable(true).setChecked(folder.unified);
popupMenu.getMenu().add(Menu.NONE, R.string.title_navigation_folder, 3, R.string.title_navigation_folder)
.setCheckable(true).setChecked(folder.navigation);
popupMenu.getMenu().add(Menu.NONE, R.string.title_notify_folder, 4, R.string.title_notify_folder)
.setCheckable(true).setChecked(folder.notify);
popupMenu.getMenu().add(Menu.NONE, R.string.title_synchronize_enabled, 5, R.string.title_synchronize_enabled)
.setCheckable(true).setChecked(folder.synchronize); .setCheckable(true).setChecked(folder.synchronize);
if (folder.account != null) { // outbox popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_local, 6, R.string.title_delete_local);
popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_local, 3, R.string.title_delete_local); popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_browsed, 7, R.string.title_delete_browsed);
popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_browsed, 4, R.string.title_delete_browsed);
} }
if (EntityFolder.TRASH.equals(folder.type)) if (EntityFolder.TRASH.equals(folder.type))
popupMenu.getMenu().add(Menu.NONE, R.string.title_empty_trash, 5, R.string.title_empty_trash); popupMenu.getMenu().add(Menu.NONE, R.string.title_empty_trash, 8, R.string.title_empty_trash);
if (folder.account != null) { if (folder.account != null) {
popupMenu.getMenu().add(Menu.NONE, R.string.title_edit_rules, 6, R.string.title_edit_rules); popupMenu.getMenu().add(Menu.NONE, R.string.title_edit_rules, 9, R.string.title_edit_rules);
popupMenu.getMenu().add(Menu.NONE, R.string.title_edit_properties, 7, R.string.title_edit_properties); popupMenu.getMenu().add(Menu.NONE, R.string.title_edit_properties, 10, R.string.title_edit_properties);
if (folder.notify && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (folder.notify && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = EntityFolder.getNotificationChannelId(folder.id); String channelId = EntityFolder.getNotificationChannelId(folder.id);
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel = nm.getNotificationChannel(channelId); NotificationChannel channel = nm.getNotificationChannel(channelId);
if (channel == null) if (channel == null)
popupMenu.getMenu().add(Menu.NONE, R.string.title_create_channel, 8, R.string.title_create_channel); popupMenu.getMenu().add(Menu.NONE, R.string.title_create_channel, 11, R.string.title_create_channel);
else { else {
popupMenu.getMenu().add(Menu.NONE, R.string.title_edit_channel, 9, R.string.title_edit_channel); popupMenu.getMenu().add(Menu.NONE, R.string.title_edit_channel, 12, R.string.title_edit_channel);
popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_channel, 10, R.string.title_delete_channel); popupMenu.getMenu().add(Menu.NONE, R.string.title_delete_channel, 13, R.string.title_delete_channel);
} }
} }
} }
@ -427,8 +435,11 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
onActionSynchronizeNow(); onActionSynchronizeNow();
return true; return true;
case R.string.title_unified_folder:
case R.string.title_navigation_folder:
case R.string.title_notify_folder:
case R.string.title_synchronize_enabled: case R.string.title_synchronize_enabled:
onActionSync(!item.isChecked()); onActionProperty(item.getItemId(), !item.isChecked());
return true; return true;
case R.string.title_delete_local: case R.string.title_delete_local:
@ -520,26 +531,42 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
}.execute(context, owner, args, "folder:sync"); }.execute(context, owner, args, "folder:sync");
} }
private void onActionSync(boolean sync) { private void onActionProperty(int property, boolean enabled) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putLong("id", folder.id); args.putLong("id", folder.id);
args.putBoolean("sync", sync); args.putInt("property", property);
args.putBoolean("enabled", enabled);
new SimpleTask<Boolean>() { new SimpleTask<Boolean>() {
@Override @Override
protected Boolean onExecute(Context context, Bundle args) { protected Boolean onExecute(Context context, Bundle args) {
long id = args.getLong("id"); long id = args.getLong("id");
boolean sync = args.getBoolean("sync"); int property = args.getInt("property");
boolean enabled = args.getBoolean("enabled");
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
db.folder().setFolderSynchronize(id, sync); switch (property) {
case R.string.title_unified_folder:
return sync; db.folder().setFolderUnified(id, enabled);
return false;
case R.string.title_navigation_folder:
db.folder().setFolderNavigation(id, enabled);
return false;
case R.string.title_notify_folder:
db.folder().setFolderNotify(id, enabled);
return false;
case R.string.title_synchronize_enabled:
db.folder().setFolderSynchronize(id, enabled);
return true;
default:
return false;
}
} }
@Override @Override
protected void onExecuted(Bundle args, Boolean sync) { protected void onExecuted(Bundle args, Boolean reload) {
ServiceSynchronize.reload(context, "folder set sync=" + sync); if (reload)
ServiceSynchronize.reload(context, "folder property changed");
} }
@Override @Override

@ -161,6 +161,15 @@ public interface DaoFolder {
@Insert @Insert
long insertFolder(EntityFolder folder); long insertFolder(EntityFolder folder);
@Query("UPDATE folder SET unified = :unified WHERE id = :id")
int setFolderUnified(long id, boolean unified);
@Query("UPDATE folder SET navigation = :navigation WHERE id = :id")
int setFolderNavigation(long id, boolean navigation);
@Query("UPDATE folder SET notify = :notify WHERE id = :id")
int setFolderNotify(long id, boolean notify);
@Query("UPDATE folder SET synchronize = :synchronize WHERE id = :id") @Query("UPDATE folder SET synchronize = :synchronize WHERE id = :id")
int setFolderSynchronize(long id, boolean synchronize); int setFolderSynchronize(long id, boolean synchronize);

Loading…
Cancel
Save