diff --git a/app/src/main/java/eu/faircode/email/AdapterAccount.java b/app/src/main/java/eu/faircode/email/AdapterAccount.java index 1f437874f1..f94baaf285 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAccount.java +++ b/app/src/main/java/eu/faircode/email/AdapterAccount.java @@ -23,13 +23,17 @@ import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.graphics.Typeface; +import android.os.Bundle; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.appcompat.widget.PopupMenu; import androidx.constraintlayout.widget.Group; import androidx.lifecycle.LifecycleOwner; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -57,7 +61,7 @@ public class AdapterAccount extends RecyclerView.Adapter() { + @Override + protected Boolean onExecute(Context context, Bundle args) { + long id = args.getLong("id"); + boolean sync = args.getBoolean("sync"); + + DB db = DB.getInstance(context); + db.account().setAccountSynchronize(id, sync); + + return sync; + } + + @Override + protected void onExecuted(Bundle args, Boolean sync) { + ServiceSynchronize.reload(context, "account set sync=" + sync); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(context, owner, ex); + } + }.execute(context, owner, args, "account:enable"); + } + }); + + popupMenu.show(); + + return true; + } } AdapterAccount(Context context, LifecycleOwner owner, boolean settings) { diff --git a/app/src/main/java/eu/faircode/email/AdapterFolder.java b/app/src/main/java/eu/faircode/email/AdapterFolder.java index 46880ac22c..f6be82fdd6 100644 --- a/app/src/main/java/eu/faircode/email/AdapterFolder.java +++ b/app/src/main/java/eu/faircode/email/AdapterFolder.java @@ -110,11 +110,12 @@ public class AdapterFolder extends RecyclerView.Adapter() { + @Override + protected Boolean onExecute(Context context, Bundle args) { + long id = args.getLong("id"); + boolean sync = args.getBoolean("sync"); + + DB db = DB.getInstance(context); + db.folder().setFolderSynchronize(id, sync); + + return sync; + } + + @Override + protected void onExecuted(Bundle args, Boolean sync) { + ServiceSynchronize.reload(context, "folder set sync=" + sync); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(context, owner, ex); + } + }.execute(context, owner, args, "folder:enable"); + } + private void OnActionDeleteLocal(final boolean browsed) { View dview = LayoutInflater.from(context).inflate(R.layout.dialog_message, null); TextView tvMessage = dview.findViewById(R.id.tvMessage); diff --git a/app/src/main/java/eu/faircode/email/AdapterIdentity.java b/app/src/main/java/eu/faircode/email/AdapterIdentity.java index bf3f8aecea..4a6242498b 100644 --- a/app/src/main/java/eu/faircode/email/AdapterIdentity.java +++ b/app/src/main/java/eu/faircode/email/AdapterIdentity.java @@ -22,13 +22,18 @@ package eu.faircode.email; import android.content.Context; import android.content.Intent; import android.graphics.Color; +import android.os.Bundle; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.appcompat.widget.PopupMenu; +import androidx.lifecycle.LifecycleOwner; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.ListUpdateCallback; @@ -45,13 +50,14 @@ import java.util.Locale; public class AdapterIdentity extends RecyclerView.Adapter { private Context context; + private LifecycleOwner owner; private LayoutInflater inflater; private List items = new ArrayList<>(); private DateFormat df = SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); - public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { private View view; private View vwColor; private ImageView ivSync; @@ -82,10 +88,12 @@ public class AdapterIdentity extends RecyclerView.Adapter() { + @Override + protected Boolean onExecute(Context context, Bundle args) { + long id = args.getLong("id"); + boolean sync = args.getBoolean("sync"); + + DB db = DB.getInstance(context); + db.identity().setIdentitySynchronize(id, sync); + + return sync; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(context, owner, ex); + } + }.execute(context, owner, args, "identitty:enable"); + } + }); + + popupMenu.show(); + + return true; + } } - AdapterIdentity(Context context) { + AdapterIdentity(Context context, LifecycleOwner owner) { this.context = context; + this.owner = owner; this.inflater = LayoutInflater.from(context); setHasStableIds(true); } diff --git a/app/src/main/java/eu/faircode/email/DaoAccount.java b/app/src/main/java/eu/faircode/email/DaoAccount.java index 187a7c3633..74ca71b29a 100644 --- a/app/src/main/java/eu/faircode/email/DaoAccount.java +++ b/app/src/main/java/eu/faircode/email/DaoAccount.java @@ -102,6 +102,9 @@ public interface DaoAccount { @Update void updateAccount(EntityAccount account); + @Query("UPDATE account SET synchronize = :synchronize WHERE id = :id") + int setAccountSynchronize(long id, boolean synchronize); + @Query("UPDATE account SET state = :state WHERE id = :id") int setAccountState(long id, String state); diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index e6211bebca..e819ea96fb 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -162,6 +162,9 @@ public interface DaoFolder { @Insert long insertFolder(EntityFolder folder); + @Query("UPDATE folder SET synchronize = :synchronize WHERE id = :id") + int setFolderSynchronize(long id, boolean synchronize); + @Query("UPDATE folder SET state = :state WHERE id = :id") int setFolderState(long id, String state); diff --git a/app/src/main/java/eu/faircode/email/DaoIdentity.java b/app/src/main/java/eu/faircode/email/DaoIdentity.java index 295edb903d..66510ebf19 100644 --- a/app/src/main/java/eu/faircode/email/DaoIdentity.java +++ b/app/src/main/java/eu/faircode/email/DaoIdentity.java @@ -70,6 +70,9 @@ public interface DaoIdentity { @Update void updateIdentity(EntityIdentity identity); + @Query("UPDATE identity SET synchronize = :synchronize WHERE id = :id") + int setIdentitySynchronize(long id, boolean synchronize); + @Query("UPDATE identity SET state = :state WHERE id = :id") int setIdentityState(long id, String state); diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentities.java b/app/src/main/java/eu/faircode/email/FragmentIdentities.java index 5e21786f97..fe97821297 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentities.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentities.java @@ -72,7 +72,7 @@ public class FragmentIdentities extends FragmentBase { itemDecorator.setDrawable(getContext().getDrawable(R.drawable.divider)); rvIdentity.addItemDecoration(itemDecorator); - adapter = new AdapterIdentity(getContext()); + adapter = new AdapterIdentity(getContext(), getViewLifecycleOwner()); rvIdentity.setAdapter(adapter); fab.setOnClickListener(new View.OnClickListener() {