Long press to delete from trash

pull/145/head
M66B 7 years ago
parent 2ed92f310e
commit f740ecd661

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

@ -23,6 +23,7 @@ import android.Manifest;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.ContentUris; import android.content.ContentUris;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@ -57,6 +58,7 @@ import javax.mail.Address;
import javax.mail.internet.InternetAddress; import javax.mail.internet.InternetAddress;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu; import androidx.appcompat.widget.PopupMenu;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleOwner;
@ -96,8 +98,9 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
TextView tvError; TextView tvError;
ProgressBar pbLoading; ProgressBar pbLoading;
private static final int action_seen = 1; private static final int action_flag = 1;
private static final int action_flag = 2; private static final int action_seen = 2;
private static final int action_delete = 3;
ViewHolder(View itemView) { ViewHolder(View itemView) {
super(itemView); super(itemView);
@ -293,6 +296,8 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
PopupMenu popupMenu = new PopupMenu(context, itemView); PopupMenu popupMenu = new PopupMenu(context, itemView);
popupMenu.getMenu().add(Menu.NONE, action_flag, 1, message.ui_flagged ? R.string.title_unflag : R.string.title_flag); popupMenu.getMenu().add(Menu.NONE, action_flag, 1, message.ui_flagged ? R.string.title_unflag : R.string.title_flag);
popupMenu.getMenu().add(Menu.NONE, action_seen, 2, message.ui_seen ? R.string.title_unseen : R.string.title_seen); popupMenu.getMenu().add(Menu.NONE, action_seen, 2, message.ui_seen ? R.string.title_unseen : R.string.title_seen);
if (EntityFolder.TRASH.equals(message.folderType))
popupMenu.getMenu().add(Menu.NONE, action_delete, 3, R.string.title_delete);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override @Override
public boolean onMenuItemClick(MenuItem target) { public boolean onMenuItemClick(MenuItem target) {
@ -300,41 +305,83 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
args.putLong("id", message.id); args.putLong("id", message.id);
args.putInt("action", target.getItemId()); args.putInt("action", target.getItemId());
new SimpleTask<Void>() { if (target.getItemId() == action_delete) {
@Override new AlertDialog.Builder(context)
protected Void onLoad(Context context, Bundle args) { .setMessage(R.string.title_ask_delete)
long id = args.getLong("id"); .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
int action = args.getInt("action"); @Override
public void onClick(DialogInterface dialog, int which) {
DB db = DB.getInstance(context); Bundle args = new Bundle();
try { args.putLong("id", message.id);
db.beginTransaction();
new SimpleTask<Void>() {
EntityMessage message = db.message().getMessage(id); @Override
for (EntityMessage tmessage : db.message().getMessageByThread(message.account, message.thread)) protected Void onLoad(Context context, Bundle args) {
if (action == action_flag) { long id = args.getLong("id");
db.message().setMessageUiFlagged(tmessage.id, !message.ui_flagged);
EntityOperation.queue(db, tmessage, EntityOperation.FLAG, !tmessage.ui_flagged); DB db = DB.getInstance(context);
} else if (action == action_seen) { try {
db.message().setMessageUiSeen(tmessage.id, !message.ui_seen); db.beginTransaction();
EntityOperation.queue(db, tmessage, EntityOperation.SEEN, !tmessage.ui_seen);
EntityMessage message = db.message().getMessage(id);
db.message().setMessageUiHide(id, true);
EntityOperation.queue(db, message, EntityOperation.DELETE);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
EntityOperation.process(context);
return null;
}
@Override
protected void onException(Bundle args, Throwable ex) {
Helper.unexpectedError(context, ex);
}
}.load(context, owner, args);
} }
})
.setNegativeButton(android.R.string.cancel, null)
.show();
} else
new SimpleTask<Void>() {
@Override
protected Void onLoad(final Context context, Bundle args) {
long id = args.getLong("id");
int action = args.getInt("action");
DB db = DB.getInstance(context);
try {
db.beginTransaction();
EntityMessage message = db.message().getMessage(id);
for (EntityMessage tmessage : db.message().getMessageByThread(message.account, message.thread))
if (action == action_flag) {
db.message().setMessageUiFlagged(tmessage.id, !message.ui_flagged);
EntityOperation.queue(db, tmessage, EntityOperation.FLAG, !tmessage.ui_flagged);
} else if (action == action_seen) {
db.message().setMessageUiSeen(tmessage.id, !message.ui_seen);
EntityOperation.queue(db, tmessage, EntityOperation.SEEN, !tmessage.ui_seen);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
db.setTransactionSuccessful(); EntityOperation.process(context);
} finally {
db.endTransaction();
}
EntityOperation.process(context);
return null; return null;
} }
@Override @Override
public void onException(Bundle args, Throwable ex) { public void onException(Bundle args, Throwable ex) {
Helper.unexpectedError(context, ex); Helper.unexpectedError(context, ex);
} }
}.load(context, owner, args); }.load(context, owner, args);
return true; return true;
} }

Loading…
Cancel
Save