Use on demand sync when disabled

This commit is contained in:
M66B 2019-02-28 12:35:19 +00:00
parent 1324a364e8
commit 4b8a4b92bc
6 changed files with 28 additions and 19 deletions

View File

@ -135,7 +135,8 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
vwLevel.setLayoutParams(lp);
}
if (folder.sync_state == null || "requested".equals(folder.sync_state)) {
if (folder.sync_state == null ||
"requested".equals(folder.sync_state) || "manual".equals(folder.sync_state)) {
if ("waiting".equals(folder.state))
ivState.setImageResource(R.drawable.baseline_hourglass_empty_24);
else if ("connected".equals(folder.state))
@ -145,16 +146,11 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
else if ("closing".equals(folder.state))
ivState.setImageResource(R.drawable.baseline_close_24);
else if (folder.state == null)
if ("requested".equals(folder.sync_state))
ivState.setImageResource(R.drawable.baseline_hourglass_empty_24);
else
ivState.setImageResource(R.drawable.baseline_cloud_off_24);
ivState.setImageResource(R.drawable.baseline_cloud_off_24);
else
ivState.setImageResource(android.R.drawable.stat_sys_warning);
} else {
if ("requested".equals(folder.sync_state))
ivState.setImageResource(R.drawable.baseline_hourglass_empty_24);
else if ("syncing".equals(folder.sync_state))
if ("syncing".equals(folder.sync_state))
ivState.setImageResource(R.drawable.baseline_compare_arrows_24);
else if ("downloading".equals(folder.sync_state))
ivState.setImageResource(R.drawable.baseline_cloud_download_24);
@ -298,6 +294,9 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
NetworkInfo ni = cm.getActiveNetworkInfo();
boolean internet = (ni != null && ni.isConnected());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean enabled = prefs.getBoolean("enabled", true);
DB db = DB.getInstance(context);
try {
db.beginTransaction();
@ -312,7 +311,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
throw new IllegalArgumentException(context.getString(R.string.title_no_internet));
} else {
EntityAccount account = db.account().getAccount(aid);
if (account.ondemand) {
if (account.ondemand || !enabled) {
if (internet) {
now = true;
ServiceUI.sync(context, fid);

View File

@ -81,7 +81,7 @@ public interface DaoFolder {
", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" +
" FROM folder" +
" JOIN account ON account.id = folder.account" +
" JOIN message ON message.folder = folder.id AND NOT message.ui_hide" +
" LEFT JOIN message ON message.folder = folder.id AND NOT message.ui_hide" +
" WHERE account.`synchronize`" +
" AND folder.unified" +
" GROUP BY folder.id")

View File

@ -228,6 +228,11 @@ public class FragmentFolders extends FragmentBase {
args.putLong("account", account);
new SimpleTask<Boolean>() {
@Override
protected void onPostExecute(Bundle args) {
swipeRefresh.setRefreshing(false);
}
@Override
protected Boolean onExecute(Context context, Bundle args) {
long aid = args.getLong("account");
@ -236,6 +241,9 @@ public class FragmentFolders extends FragmentBase {
NetworkInfo ni = cm.getActiveNetworkInfo();
boolean internet = (ni != null && ni.isConnected());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean enabled = prefs.getBoolean("enabled", true);
DB db = DB.getInstance(context);
try {
db.beginTransaction();
@ -248,7 +256,7 @@ public class FragmentFolders extends FragmentBase {
List<EntityFolder> folders = db.folder().getFoldersSynchronizingUnified();
for (EntityFolder folder : folders) {
EntityAccount account = db.account().getAccount(folder.account);
if (account.ondemand)
if (account.ondemand || !enabled)
if (internet) {
now = true;
ServiceUI.sync(context, folder.id);
@ -261,7 +269,7 @@ public class FragmentFolders extends FragmentBase {
}
} else {
EntityAccount account = db.account().getAccount(aid);
if (account.ondemand) {
if (account.ondemand || !enabled) {
if (internet) {
now = true;
List<EntityFolder> folders = db.folder().getFoldersOnDemandSync(aid);
@ -291,15 +299,12 @@ public class FragmentFolders extends FragmentBase {
@Override
protected void onExecuted(Bundle args, Boolean now) {
if (!now) {
swipeRefresh.setRefreshing(false);
if (!now)
Snackbar.make(view, R.string.title_sync_delayed, Snackbar.LENGTH_LONG).show();
}
}
@Override
protected void onException(Bundle args, Throwable ex) {
swipeRefresh.setRefreshing(false);
if (ex instanceof IllegalArgumentException)
Snackbar.make(view, ex.getMessage(), Snackbar.LENGTH_LONG).show();
else

View File

@ -496,6 +496,9 @@ public class FragmentMessages extends FragmentBase {
NetworkInfo ni = cm.getActiveNetworkInfo();
boolean internet = (ni != null && ni.isConnected());
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean enabled = prefs.getBoolean("enabled", true);
DB db = DB.getInstance(context);
try {
db.beginTransaction();
@ -523,7 +526,7 @@ public class FragmentMessages extends FragmentBase {
nointernet = true;
} else {
EntityAccount account = db.account().getAccount(folder.account);
if (account.ondemand) {
if (account.ondemand || !enabled) {
if (internet) {
now = true;
ServiceUI.sync(context, folder.id);

View File

@ -310,7 +310,8 @@ public class ServiceUI extends IntentService {
public static void sync(Context context, long folder) {
DB db = DB.getInstance(context);
db.folder().setFolderSyncState(folder, "requested");
db.folder().setFolderState(folder, "waiting");
db.folder().setFolderSyncState(folder, "manual");
context.startService(
new Intent(context, ServiceUI.class)

View File

@ -33,7 +33,8 @@ public class TupleFolderEx extends EntityFolder {
boolean isSynchronizing() {
return (sync_state != null &&
(EntityFolder.OUTBOX.equals(type) ||
accountOnDemand || "connected".equals(accountState)));
!"requested".equals(sync_state) ||
"connected".equals(accountState)));
}
@Override