diff --git a/app/src/main/java/eu/faircode/email/AdapterOperation.java b/app/src/main/java/eu/faircode/email/AdapterOperation.java index ef28c5421e..20cef8fc3f 100644 --- a/app/src/main/java/eu/faircode/email/AdapterOperation.java +++ b/app/src/main/java/eu/faircode/email/AdapterOperation.java @@ -21,22 +21,23 @@ package eu.faircode.email; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; 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.fragment.app.Fragment; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.OnLifecycleEvent; import androidx.localbroadcastmanager.content.LocalBroadcastManager; -import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.ListUpdateCallback; import androidx.recyclerview.widget.RecyclerView; @@ -53,8 +54,6 @@ public class AdapterOperation extends RecyclerView.Adapter items = new ArrayList<>(); public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { @@ -65,6 +64,8 @@ public class AdapterOperation extends RecyclerView.Adapter() { + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override - protected Void onExecute(Context context, Bundle args) { - long id = args.getLong("id"); - long folder = args.getLong("folder"); - DB db = DB.getInstance(context); - db.operation().deleteOperation(id); - db.folder().setFolderError(folder, null); - return null; + public boolean onMenuItemClick(MenuItem item) { + switch (item.getItemId()) { + case R.string.title_delete: + onActionDelete(); + return true; + default: + return false; + } } - @Override - protected void onException(Bundle args, Throwable ex) { - Helper.unexpectedError(parentFragment.getFragmentManager(), ex); + private void onActionDelete() { + Bundle args = new Bundle(); + args.putLong("id", operation.id); + + new SimpleTask() { + @Override + protected Void onExecute(Context context, Bundle args) { + long id = args.getLong("id"); + DB db = DB.getInstance(context); + EntityOperation operation = db.operation().getOperation(id); + if (operation == null) + return null; + + db.operation().deleteOperation(operation.id); + db.folder().setFolderError(operation.folder, null); + return null; + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Helper.unexpectedError(parentFragment.getFragmentManager(), ex); + } + }.execute(context, owner, args, "operation:delete"); } - }.execute(context, owner, args, "operation:delete"); + }); + + popupMenu.show(); return true; } @@ -218,9 +239,6 @@ public class AdapterOperation extends RecyclerView.Adapter getOperations(String name); + @Query("SELECT * FROM operation WHERE id = :id") + EntityOperation getOperation(long id); + @Query("SELECT * FROM operation WHERE error IS NOT NULL") List getOperationsError();