Added empty spam

This commit is contained in:
M66B
2019-09-30 09:15:47 +02:00
parent c38330b35d
commit ed98ea5e6f
5 changed files with 84 additions and 58 deletions

View File

@@ -262,7 +262,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
private static final int REQUEST_SEARCH = 18;
private static final int REQUEST_ACCOUNT = 19;
static final int REQUEST_MESSAGE_PROPERTY = 20;
private static final int REQUEST_EMPTY_TRASH = 21;
private static final int REQUEST_EMPTY_FOLDER = 21;
static final String ACTION_STORE_RAW = BuildConfig.APPLICATION_ID + ".STORE_RAW";
static final String ACTION_DECRYPT = BuildConfig.APPLICATION_ID + ".DECRYPT";
@@ -2597,6 +2597,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
(viewType == AdapterMessage.ViewType.UNIFIED || viewType == AdapterMessage.ViewType.FOLDER));
menu.findItem(R.id.menu_empty_trash).setVisible(
viewType == AdapterMessage.ViewType.FOLDER && EntityFolder.TRASH.equals(type));
menu.findItem(R.id.menu_empty_spam).setVisible(
viewType == AdapterMessage.ViewType.FOLDER && EntityFolder.JUNK.equals(type));
menu.findItem(R.id.menu_force_sync).setVisible(viewType == AdapterMessage.ViewType.UNIFIED);
@@ -2687,7 +2689,11 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
return true;
case R.id.menu_empty_trash:
onMenuEmptyTrash();
onMenuEmpty(EntityFolder.TRASH);
return true;
case R.id.menu_empty_spam:
onMenuEmpty(EntityFolder.JUNK);
return true;
case R.id.menu_force_sync:
@@ -2803,14 +2809,21 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
});
}
private void onMenuEmptyTrash() {
private void onMenuEmpty(String type) {
Bundle aargs = new Bundle();
aargs.putString("question", getString(R.string.title_empty_trash_ask));
if (EntityFolder.TRASH.equals(type))
aargs.putString("question", getString(R.string.title_empty_trash_ask));
else if (EntityFolder.JUNK.equals(type))
aargs.putString("question", getString(R.string.title_empty_spam_ask));
else
throw new IllegalArgumentException("Invalid folder type=" + type);
aargs.putLong("folder", folder);
aargs.putString("type", type);
FragmentDialogAsk ask = new FragmentDialogAsk();
ask.setArguments(aargs);
ask.setTargetFragment(this, FragmentMessages.REQUEST_EMPTY_TRASH);
ask.show(getFragmentManager(), "messages:empty_trash");
ask.setTargetFragment(this, FragmentMessages.REQUEST_EMPTY_FOLDER);
ask.show(getFragmentManager(), "messages:empty");
}
private void onMenuForceSync() {
@@ -3641,7 +3654,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
break;
case REQUEST_MESSAGES_DELETE:
if (resultCode == RESULT_OK && data != null)
onDelete(data.getBundleExtra("args").getLongArray("ids"));
onDelete(data.getBundleExtra("args"));
break;
case REQUEST_MESSAGE_JUNK:
if (resultCode == RESULT_OK && data != null)
@@ -3716,9 +3729,9 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if (resultCode == RESULT_OK)
onPropertySet(data.getBundleExtra("args"));
break;
case REQUEST_EMPTY_TRASH:
case REQUEST_EMPTY_FOLDER:
if (resultCode == RESULT_OK)
onEmptyTrash();
onEmptyFolder(data.getBundleExtra("args"));
break;
}
} catch (Throwable ex) {
@@ -4032,10 +4045,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
}.execute(this, args, "message:delete");
}
private void onDelete(long[] ids) {
Bundle args = new Bundle();
args.putLongArray("ids", ids);
private void onDelete(Bundle args) {
selectionTracker.clearSelection();
new SimpleTask<Void>() {
@@ -4456,20 +4466,25 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
iProperties.setValue(name, id, value);
}
private void onEmptyTrash() {
Bundle args = new Bundle();
args.putLong("folder", folder);
private void onEmptyFolder(Bundle args) {
new SimpleTask<Void>() {
@Override
protected Void onExecute(Context context, Bundle args) {
long folder = args.getLong("folder");
long fid = args.getLong("folder");
String type = args.getString("type");
DB db = DB.getInstance(context);
try {
db.beginTransaction();
List<Long> ids = db.message().getMessageByFolder(folder);
EntityFolder folder = db.folder().getFolder(fid);
if (folder == null)
return null;
if (!folder.type.equals(type))
throw new IllegalStateException("Invalid folder type=" + type);
List<Long> ids = db.message().getMessageByFolder(folder.id);
for (Long id : ids) {
EntityMessage message = db.message().getMessage(id);
if (message.uid != null || !TextUtils.isEmpty(message.msgid))