mirror of
https://github.com/moparisthebest/k-9
synced 2024-11-27 19:52:17 -05:00
svn merge -c 806 ../issue4-1.X/ .
r806 merged to trunk from issue4-1.X
This commit is contained in:
parent
02889cfe37
commit
b414e4d77d
@ -89,8 +89,6 @@ public class MessageList extends K9ListActivity {
|
|||||||
private static final int ACTIVITY_CHOOSE_FOLDER_MOVE = 1;
|
private static final int ACTIVITY_CHOOSE_FOLDER_MOVE = 1;
|
||||||
|
|
||||||
private static final int ACTIVITY_CHOOSE_FOLDER_COPY = 2;
|
private static final int ACTIVITY_CHOOSE_FOLDER_COPY = 2;
|
||||||
|
|
||||||
|
|
||||||
private static final boolean FORCE_REMOTE_SYNC = true;
|
private static final boolean FORCE_REMOTE_SYNC = true;
|
||||||
|
|
||||||
private static final String EXTRA_ACCOUNT = "account";
|
private static final String EXTRA_ACCOUNT = "account";
|
||||||
@ -206,13 +204,11 @@ public class MessageList extends K9ListActivity {
|
|||||||
|
|
||||||
private static final int MSG_PROGRESS = 2;
|
private static final int MSG_PROGRESS = 2;
|
||||||
|
|
||||||
private static final int MSG_DATA_CHANGED = 3;
|
|
||||||
|
|
||||||
private static final int MSG_FOLDER_LOADING = 7;
|
private static final int MSG_FOLDER_LOADING = 7;
|
||||||
|
|
||||||
|
private static final int MSG_ADD_MESSAGE = 10;
|
||||||
private static final int MSG_REMOVE_MESSAGE = 11;
|
private static final int MSG_REMOVE_MESSAGE = 11;
|
||||||
|
private static final int MSG_SORT_MESSAGES = 12;
|
||||||
private static final int MSG_SYNC_MESSAGES = 13;
|
|
||||||
|
|
||||||
private static final int MSG_FOLDER_SYNCING = 18;
|
private static final int MSG_FOLDER_SYNCING = 18;
|
||||||
|
|
||||||
@ -225,15 +221,33 @@ public class MessageList extends K9ListActivity {
|
|||||||
showProgressIndicator(msg.arg1 != 0 );
|
showProgressIndicator(msg.arg1 != 0 );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSG_DATA_CHANGED:
|
case MSG_SORT_MESSAGES:
|
||||||
mAdapter.notifyDataSetChanged();
|
|
||||||
|
|
||||||
|
synchronized(mAdapter.messages)
|
||||||
|
{
|
||||||
|
Collections.sort(mAdapter.messages);
|
||||||
|
}
|
||||||
|
mAdapter.notifyDataSetChanged();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSG_REMOVE_MESSAGE: {
|
case MSG_REMOVE_MESSAGE: {
|
||||||
FolderInfoHolder folder = (FolderInfoHolder)((Object[]) msg.obj)[0];
|
|
||||||
MessageInfoHolder message = (MessageInfoHolder)((Object[]) msg.obj)[1];
|
MessageInfoHolder message = (MessageInfoHolder)((Object[]) msg.obj)[1];
|
||||||
folder.messages.remove(message);
|
mAdapter.messages.remove(message);
|
||||||
|
mAdapter.notifyDataSetChanged();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case MSG_ADD_MESSAGE: {
|
||||||
|
MessageInfoHolder message = (MessageInfoHolder)((Object[]) msg.obj)[1];
|
||||||
|
|
||||||
|
int index = Collections.binarySearch( mAdapter.messages, message);
|
||||||
|
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
index = (index * -1) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
mAdapter.messages.add(index, message);
|
||||||
mAdapter.notifyDataSetChanged();
|
mAdapter.notifyDataSetChanged();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -259,7 +273,6 @@ public class MessageList extends K9ListActivity {
|
|||||||
if (folder != null)
|
if (folder != null)
|
||||||
{
|
{
|
||||||
folder.loading = msg.arg1 != 0;
|
folder.loading = msg.arg1 != 0;
|
||||||
mAdapter.notifyDataSetChanged();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -290,6 +303,18 @@ public class MessageList extends K9ListActivity {
|
|||||||
sendMessage(msg);
|
sendMessage(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addMessage(MessageInfoHolder message) {
|
||||||
|
android.os.Message msg = new android.os.Message();
|
||||||
|
msg.what = MSG_ADD_MESSAGE;
|
||||||
|
msg.obj = new Object[] { message.folder, message };
|
||||||
|
sendMessage(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sortMessages()
|
||||||
|
{
|
||||||
|
sendEmptyMessage(MSG_SORT_MESSAGES);
|
||||||
|
}
|
||||||
|
|
||||||
public void folderLoading(String folder, boolean loading) {
|
public void folderLoading(String folder, boolean loading) {
|
||||||
android.os.Message msg = new android.os.Message();
|
android.os.Message msg = new android.os.Message();
|
||||||
msg.what = MSG_FOLDER_LOADING;
|
msg.what = MSG_FOLDER_LOADING;
|
||||||
@ -305,10 +330,6 @@ public class MessageList extends K9ListActivity {
|
|||||||
sendMessage(msg);
|
sendMessage(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dataChanged() {
|
|
||||||
sendEmptyMessage(MSG_DATA_CHANGED);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void folderSyncing(String folder) {
|
public void folderSyncing(String folder) {
|
||||||
android.os.Message msg = new android.os.Message();
|
android.os.Message msg = new android.os.Message();
|
||||||
msg.what = MSG_FOLDER_SYNCING;
|
msg.what = MSG_FOLDER_SYNCING;
|
||||||
@ -573,7 +594,7 @@ public class MessageList extends K9ListActivity {
|
|||||||
|
|
||||||
if (!message.read) {
|
if (!message.read) {
|
||||||
message.read = true;
|
message.read = true;
|
||||||
mHandler.dataChanged();
|
mHandler.sortMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.folder.name.equals(mAccount.getDraftsFolderName())) {
|
if (message.folder.name.equals(mAccount.getDraftsFolderName())) {
|
||||||
@ -617,21 +638,10 @@ public class MessageList extends K9ListActivity {
|
|||||||
Toast toast = Toast.makeText(this, toastString, Toast.LENGTH_SHORT);
|
Toast toast = Toast.makeText(this, toastString, Toast.LENGTH_SHORT);
|
||||||
toast.show();
|
toast.show();
|
||||||
|
|
||||||
sortMessages();
|
mHandler.sortMessages();
|
||||||
|
|
||||||
mAdapter.notifyDataSetChanged();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sortMessages()
|
|
||||||
{
|
|
||||||
synchronized(mAdapter.messages)
|
|
||||||
{
|
|
||||||
Collections.sort(mAdapter.messages);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void onCycleSort() {
|
private void onCycleSort() {
|
||||||
SORT_TYPE[] sorts = SORT_TYPE.values();
|
SORT_TYPE[] sorts = SORT_TYPE.values();
|
||||||
int curIndex = 0;
|
int curIndex = 0;
|
||||||
@ -861,13 +871,13 @@ public class MessageList extends K9ListActivity {
|
|||||||
|
|
||||||
MessagingController.getInstance(getApplication()).markAllMessagesRead(mAccount, mCurrentFolder.name);
|
MessagingController.getInstance(getApplication()).markAllMessagesRead(mAccount, mCurrentFolder.name);
|
||||||
|
|
||||||
for (MessageInfoHolder holder : mCurrentFolder.messages) {
|
for (MessageInfoHolder holder : mAdapter.messages) {
|
||||||
holder.read = true;
|
holder.read = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
mCurrentFolder.unreadMessageCount = 0;
|
mCurrentFolder.unreadMessageCount = 0;
|
||||||
|
|
||||||
mHandler.dataChanged();
|
mHandler.sortMessages();
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -895,14 +905,14 @@ public class MessageList extends K9ListActivity {
|
|||||||
|
|
||||||
MessagingController.getInstance(getApplication()).markMessageRead(mAccount, holder.message.getFolder().getName(), holder.uid, !holder.read);
|
MessagingController.getInstance(getApplication()).markMessageRead(mAccount, holder.message.getFolder().getName(), holder.uid, !holder.read);
|
||||||
holder.read = !holder.read;
|
holder.read = !holder.read;
|
||||||
mHandler.dataChanged();
|
mHandler.sortMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onToggleFlag(MessageInfoHolder holder) {
|
private void onToggleFlag(MessageInfoHolder holder) {
|
||||||
|
|
||||||
MessagingController.getInstance(getApplication()).setMessageFlag(mAccount, holder.message.getFolder().getName(), holder.uid, Flag.FLAGGED, !holder.flagged);
|
MessagingController.getInstance(getApplication()).setMessageFlag(mAccount, holder.message.getFolder().getName(), holder.uid, Flag.FLAGGED, !holder.flagged);
|
||||||
holder.flagged = !holder.flagged;
|
holder.flagged = !holder.flagged;
|
||||||
mHandler.dataChanged();
|
mHandler.sortMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
// private void checkMail(final Account account) {
|
// private void checkMail(final Account account) {
|
||||||
@ -1136,6 +1146,7 @@ public class MessageList extends K9ListActivity {
|
|||||||
mHandler.progress(false);
|
mHandler.progress(false);
|
||||||
mHandler.folderLoading(folder, false);
|
mHandler.folderLoading(folder, false);
|
||||||
mHandler.folderSyncing(null);
|
mHandler.folderSyncing(null);
|
||||||
|
mHandler.sortMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1149,6 +1160,7 @@ public class MessageList extends K9ListActivity {
|
|||||||
mHandler.progress(false);
|
mHandler.progress(false);
|
||||||
mHandler.folderLoading(folder, false);
|
mHandler.folderLoading(folder, false);
|
||||||
mHandler.folderSyncing(null);
|
mHandler.folderSyncing(null);
|
||||||
|
mHandler.sortMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1157,7 +1169,7 @@ public class MessageList extends K9ListActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
addOrUpdateMessage(folder, message, true);
|
addOrUpdateMessage(folder, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1180,8 +1192,7 @@ public class MessageList extends K9ListActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sortMessages();
|
mHandler.sortMessages();
|
||||||
mHandler.dataChanged();
|
|
||||||
mHandler.progress(false);
|
mHandler.progress(false);
|
||||||
mHandler.folderLoading(folder, false);
|
mHandler.folderLoading(folder, false);
|
||||||
}
|
}
|
||||||
@ -1192,9 +1203,7 @@ public class MessageList extends K9ListActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sortMessages();
|
mHandler.sortMessages();
|
||||||
mHandler.dataChanged();
|
|
||||||
|
|
||||||
mHandler.progress(false);
|
mHandler.progress(false);
|
||||||
mHandler.folderLoading(folder, false);
|
mHandler.folderLoading(folder, false);
|
||||||
}
|
}
|
||||||
@ -1229,11 +1238,7 @@ public class MessageList extends K9ListActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
addOrUpdateMessage(folder, message, false);
|
addOrUpdateMessage(folder, message);
|
||||||
if (mAdapter.messages.size() % 10 == 0 ) {
|
|
||||||
sortMessages();
|
|
||||||
mHandler.dataChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1243,7 +1248,7 @@ public class MessageList extends K9ListActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
addOrUpdateMessage(folder, message, false);
|
addOrUpdateMessage(folder, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -1266,47 +1271,37 @@ public class MessageList extends K9ListActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mAdapter.messages.remove(holder);
|
|
||||||
mHandler.removeMessage(holder);
|
mHandler.removeMessage(holder);
|
||||||
sortMessages();
|
|
||||||
mHandler.dataChanged();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addOrUpdateMessage(String folder, Message message) {
|
private void addOrUpdateMessage(FolderInfoHolder folder, Message message) {
|
||||||
addOrUpdateMessage(folder, message, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addOrUpdateMessage(FolderInfoHolder folder, Message message, boolean sort) {
|
|
||||||
|
|
||||||
MessageInfoHolder m = getMessage( message.getUid());
|
MessageInfoHolder m = getMessage( message.getUid());
|
||||||
|
|
||||||
boolean notify = false;
|
|
||||||
if (m == null) {
|
if (m == null) {
|
||||||
m = new MessageInfoHolder(message, folder);
|
m = new MessageInfoHolder(message, folder);
|
||||||
mAdapter.messages.add(m);
|
mHandler.addMessage(m);
|
||||||
notify = true;
|
|
||||||
} else {
|
} else {
|
||||||
notify = m.populate(message, folder);
|
if (message.isSet(Flag.DELETED)) {
|
||||||
|
removeMessage(m);
|
||||||
|
} else {
|
||||||
|
m.populate(message, folder);
|
||||||
|
mHandler.sortMessages();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sort) {
|
|
||||||
sortMessages();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (notify) {
|
|
||||||
mHandler.dataChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addOrUpdateMessage(String folder, Message message, boolean sort) {
|
private void addOrUpdateMessage(String folder, Message message) {
|
||||||
FolderInfoHolder f = getFolder(folder);
|
FolderInfoHolder f = getFolder(folder);
|
||||||
|
|
||||||
if (f == null) {
|
if (f == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
addOrUpdateMessage(f, message, sort);
|
addOrUpdateMessage(f, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX TODO - make this not use a for loop
|
// XXX TODO - make this not use a for loop
|
||||||
@ -1522,11 +1517,7 @@ public class MessageList extends K9ListActivity {
|
|||||||
populate(m, folder);
|
populate(m, folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean populate(Message m, FolderInfoHolder folder) {
|
public void populate(Message m, FolderInfoHolder folder) {
|
||||||
if (this.message!=null
|
|
||||||
&& m.getInternalDate().equals(this.message.getInternalDate())) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
LocalMessage message = (LocalMessage) m;
|
LocalMessage message = (LocalMessage) m;
|
||||||
@ -1563,12 +1554,10 @@ public class MessageList extends K9ListActivity {
|
|||||||
this.uid = message.getUid();
|
this.uid = message.getUid();
|
||||||
this.message = m;
|
this.message = m;
|
||||||
|
|
||||||
return true;
|
|
||||||
} catch (MessagingException me) {
|
} catch (MessagingException me) {
|
||||||
if (Config.LOGV) {
|
if (Config.LOGV) {
|
||||||
Log.v(Email.LOG_TAG, "Unable to load message info", me);
|
Log.v(Email.LOG_TAG, "Unable to load message info", me);
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1662,8 +1651,6 @@ public class MessageList extends K9ListActivity {
|
|||||||
|
|
||||||
public String displayName;
|
public String displayName;
|
||||||
|
|
||||||
public ArrayList<MessageInfoHolder> messages;
|
|
||||||
|
|
||||||
public long lastChecked;
|
public long lastChecked;
|
||||||
|
|
||||||
public int unreadMessageCount;
|
public int unreadMessageCount;
|
||||||
@ -1731,10 +1718,6 @@ public class MessageList extends K9ListActivity {
|
|||||||
this.displayName = String.format( getString(R.string.special_mailbox_name_sent_fmt), this.name);
|
this.displayName = String.format( getString(R.string.special_mailbox_name_sent_fmt), this.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.messages == null) {
|
|
||||||
this.messages = new ArrayList<MessageInfoHolder>();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.lastChecked = folder.getLastChecked();
|
this.lastChecked = folder.getLastChecked();
|
||||||
|
|
||||||
String mess = truncateStatus(folder.getStatus());
|
String mess = truncateStatus(folder.getStatus());
|
||||||
|
Loading…
Reference in New Issue
Block a user