|
|
@ -411,7 +411,6 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess |
|
|
|
boolean hasJunk = false; |
|
|
|
boolean hasTrash = false; |
|
|
|
boolean hasArchive = false; |
|
|
|
boolean hasUser = false; |
|
|
|
|
|
|
|
if (folders != null) |
|
|
|
for (EntityFolder folder : folders) { |
|
|
@ -421,8 +420,6 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess |
|
|
|
hasTrash = true; |
|
|
|
else if (EntityFolder.ARCHIVE.equals(folder.type)) |
|
|
|
hasArchive = true; |
|
|
|
else if (EntityFolder.USER.equals(folder.type)) |
|
|
|
hasUser = true; |
|
|
|
} |
|
|
|
|
|
|
|
boolean inInbox = EntityFolder.INBOX.equals(message.folderType); |
|
|
@ -437,7 +434,7 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess |
|
|
|
bnvActions.setTag(data); |
|
|
|
|
|
|
|
bnvActions.getMenu().findItem(R.id.action_delete).setVisible((message.uid != null && hasTrash) || (inOutbox && !TextUtils.isEmpty(message.error))); |
|
|
|
bnvActions.getMenu().findItem(R.id.action_move).setVisible(message.uid != null && (!inInbox || hasUser)); |
|
|
|
bnvActions.getMenu().findItem(R.id.action_move).setVisible(message.uid != null); |
|
|
|
bnvActions.getMenu().findItem(R.id.action_archive).setVisible(message.uid != null && !inArchive && hasArchive); |
|
|
|
|
|
|
|
bnvActions.getMenu().findItem(R.id.action_reply).setEnabled(message.content); |
|
|
@ -1238,46 +1235,32 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess |
|
|
|
new SimpleTask<List<EntityFolder>>() { |
|
|
|
@Override |
|
|
|
protected List<EntityFolder> onLoad(Context context, Bundle args) { |
|
|
|
EntityMessage message; |
|
|
|
List<EntityFolder> folders; |
|
|
|
|
|
|
|
DB db = DB.getInstance(context); |
|
|
|
try { |
|
|
|
db.beginTransaction(); |
|
|
|
|
|
|
|
message = db.message().getMessage(args.getLong("id")); |
|
|
|
folders = db.folder().getUserFolders(message.account); |
|
|
|
|
|
|
|
for (int i = 0; i < folders.size(); i++) |
|
|
|
if (folders.get(i).id.equals(message.folder)) { |
|
|
|
folders.remove(i); |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
db.setTransactionSuccessful(); |
|
|
|
} finally { |
|
|
|
db.endTransaction(); |
|
|
|
} |
|
|
|
EntityMessage message = db.message().getMessage(args.getLong("id")); |
|
|
|
List<EntityFolder> folders = db.folder().getFolders(message.account); |
|
|
|
List<EntityFolder> targets = new ArrayList<>(); |
|
|
|
for (EntityFolder f : folders) |
|
|
|
if (!f.id.equals(message.folder) && !EntityFolder.DRAFTS.equals(f.type)) |
|
|
|
targets.add(f); |
|
|
|
|
|
|
|
final Collator collator = Collator.getInstance(Locale.getDefault()); |
|
|
|
collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc |
|
|
|
|
|
|
|
Collections.sort(folders, new Comparator<EntityFolder>() { |
|
|
|
Collections.sort(targets, new Comparator<EntityFolder>() { |
|
|
|
@Override |
|
|
|
public int compare(EntityFolder f1, EntityFolder f2) { |
|
|
|
return collator.compare(f1.name, f2.name); |
|
|
|
int s = Integer.compare( |
|
|
|
EntityFolder.FOLDER_SORT_ORDER.indexOf(f1.type), |
|
|
|
EntityFolder.FOLDER_SORT_ORDER.indexOf(f2.type)); |
|
|
|
if (s != 0) |
|
|
|
return s; |
|
|
|
return collator.compare( |
|
|
|
f1.name == null ? "" : f1.name, |
|
|
|
f2.name == null ? "" : f2.name); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
EntityFolder sent = db.folder().getFolderByType(message.account, EntityFolder.SENT); |
|
|
|
if (sent != null && !message.folder.equals(sent.id)) |
|
|
|
folders.add(0, sent); |
|
|
|
|
|
|
|
EntityFolder inbox = db.folder().getFolderByType(message.account, EntityFolder.INBOX); |
|
|
|
if (inbox != null && !message.folder.equals(inbox.id)) |
|
|
|
folders.add(0, inbox); |
|
|
|
|
|
|
|
return folders; |
|
|
|
return targets; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|