Support for renaming folders

This commit is contained in:
M66B
2019-07-29 21:53:32 +02:00
parent c4ebff4c09
commit 1ed78da2a0
7 changed files with 1890 additions and 14 deletions

View File

@@ -222,7 +222,7 @@ public class FragmentFolder extends FragmentBase {
Helper.setViewsEnabled(view, true);
etName.setEnabled(folder == null);
etName.setEnabled(folder == null || EntityFolder.USER.equals(folder.type));
cbPoll.setEnabled(cbSynchronize.isChecked());
cbDownload.setEnabled(cbSynchronize.isChecked());
etKeepDays.setEnabled(!cbKeepAll.isChecked());
@@ -361,7 +361,7 @@ public class FragmentFolder extends FragmentBase {
boolean should = args.getBoolean("should");
if (TextUtils.isEmpty(display))
if (TextUtils.isEmpty(display) || display.equals(name))
display = null;
int sync_days = (TextUtils.isEmpty(sync) ? EntityFolder.DEFAULT_SYNC : Integer.parseInt(sync));
@@ -380,6 +380,8 @@ public class FragmentFolder extends FragmentBase {
if (folder == null)
return !TextUtils.isEmpty(name);
if (!Objects.equals(folder.name, name))
return true;
if (!Objects.equals(folder.display, display))
return true;
if (!Objects.equals(folder.unified, unified))
@@ -406,9 +408,6 @@ public class FragmentFolder extends FragmentBase {
return false;
}
if (TextUtils.isEmpty(display) || display.equals(name))
display = null;
if (folder == null) {
reload = true;
Log.i("Creating folder=" + name + " parent=" + parent);
@@ -423,7 +422,8 @@ public class FragmentFolder extends FragmentBase {
if (TextUtils.isEmpty(name))
throw new IllegalArgumentException(context.getString(R.string.title_folder_name_missing));
if (db.folder().getFolderByName(aid, name) != null)
EntityFolder target = db.folder().getFolderByName(aid, name);
if (target != null)
throw new IllegalArgumentException(context.getString(R.string.title_folder_exists, name));
EntityFolder create = new EntityFolder();
@@ -443,11 +443,19 @@ public class FragmentFolder extends FragmentBase {
create.tbc = true;
db.folder().insertFolder(create);
} else {
reload = (!folder.synchronize.equals(synchronize) ||
if (!folder.name.equals(name)) {
EntityFolder target = db.folder().getFolderByName(folder.account, name);
if (target != null)
throw new IllegalArgumentException(context.getString(R.string.title_folder_exists, name));
}
reload = (!folder.name.equals(name) ||
!folder.synchronize.equals(synchronize) ||
!folder.poll.equals(poll));
Log.i("Updating folder=" + name);
Log.i("Updating folder=" + folder.name);
db.folder().setFolderProperties(id,
folder.name.equals(name) ? null : name,
display, unified, navigation, notify, hide,
synchronize, poll, download,
sync_days, keep_days, auto_delete);