Limit synchronizing folders to 25

This commit is contained in:
M66B 2018-09-18 05:51:44 +00:00
parent 8a7bd92172
commit ff99597008
3 changed files with 26 additions and 3 deletions

View File

@ -30,7 +30,7 @@
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

View File

@ -90,6 +90,10 @@ public interface DaoFolder {
" WHERE account = :account AND type = :type")
EntityFolder getFolderByType(long account, String type);
@Query("SELECT COUNT(folder.id) FROM folder" +
" WHERE account = :account AND `synchronize`")
int getFolderSyncCount(long account);
// For debug/crash info
@Query("SELECT folder.* FROM folder" +
" JOIN account ON account.id = folder.account" +

View File

@ -61,6 +61,8 @@ public class FragmentFolder extends FragmentEx {
private long id = -1;
private long account = -1;
private static final int MAX_FOLDER_SYNC = 25;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -295,14 +297,13 @@ public class FragmentFolder extends FragmentEx {
private boolean once = false;
@Override
public void onChanged(@Nullable EntityFolder folder) {
public void onChanged(@Nullable final EntityFolder folder) {
if (once)
return;
once = true;
if (savedInstanceState == null) {
etRename.setText(folder == null ? null : folder.name);
cbSynchronize.setChecked(folder == null ? true : folder.synchronize);
cbUnified.setChecked(folder == null ? false : folder.unified);
etAfter.setText(Integer.toString(folder == null ? EntityFolder.DEFAULT_USER_SYNC : folder.after));
}
@ -311,9 +312,27 @@ public class FragmentFolder extends FragmentEx {
pbWait.setVisibility(View.GONE);
Helper.setViewsEnabled(view, true);
etRename.setEnabled(folder == null || EntityFolder.USER.equals(folder.type));
cbSynchronize.setEnabled(false);
btnSave.setEnabled(true);
ibDelete.setEnabled(true);
ibDelete.setVisibility(folder == null ? View.GONE : View.VISIBLE);
Bundle args = new Bundle();
args.putLong("account", folder == null ? account : folder.account);
new SimpleTask<Integer>() {
@Override
protected Integer onLoad(Context context, Bundle args) {
long account = args.getLong("account");
return DB.getInstance(context).folder().getFolderSyncCount(account);
}
@Override
protected void onLoaded(Bundle args, Integer count) {
cbSynchronize.setChecked((folder == null || folder.synchronize) && count < MAX_FOLDER_SYNC);
cbSynchronize.setEnabled(count < MAX_FOLDER_SYNC);
}
}.load(FragmentFolder.this, args);
}
});
}