mirror of
https://github.com/moparisthebest/k-9
synced 2024-12-25 00:58:50 -05:00
Fix for Issue 4164: Force close when moving an email to another folder
This commit is contained in:
parent
482ae352c1
commit
58c01c05b7
@ -1,6 +1,11 @@
|
|||||||
|
|
||||||
package com.fsck.k9.activity;
|
package com.fsck.k9.activity;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@ -19,15 +24,16 @@ import android.widget.EditText;
|
|||||||
import android.widget.Filter;
|
import android.widget.Filter;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import com.fsck.k9.*;
|
|
||||||
|
import com.fsck.k9.Account;
|
||||||
import com.fsck.k9.Account.FolderMode;
|
import com.fsck.k9.Account.FolderMode;
|
||||||
|
import com.fsck.k9.K9;
|
||||||
|
import com.fsck.k9.Preferences;
|
||||||
|
import com.fsck.k9.R;
|
||||||
import com.fsck.k9.controller.MessagingController;
|
import com.fsck.k9.controller.MessagingController;
|
||||||
import com.fsck.k9.controller.MessagingListener;
|
import com.fsck.k9.controller.MessagingListener;
|
||||||
import com.fsck.k9.mail.Folder;
|
import com.fsck.k9.mail.Folder;
|
||||||
import com.fsck.k9.mail.MessagingException;
|
import com.fsck.k9.mail.MessagingException;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Comparator;
|
|
||||||
|
|
||||||
public class ChooseFolder extends K9ListActivity {
|
public class ChooseFolder extends K9ListActivity {
|
||||||
String mFolder;
|
String mFolder;
|
||||||
@ -40,6 +46,8 @@ public class ChooseFolder extends K9ListActivity {
|
|||||||
boolean hideCurrentFolder = true;
|
boolean hideCurrentFolder = true;
|
||||||
boolean showOptionNone = false;
|
boolean showOptionNone = false;
|
||||||
boolean showDisplayableOnly = false;
|
boolean showDisplayableOnly = false;
|
||||||
|
|
||||||
|
private List<String> folderList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* What folders to display.<br/>
|
* What folders to display.<br/>
|
||||||
@ -361,17 +369,19 @@ public class ChooseFolder extends K9ListActivity {
|
|||||||
return aName.compareToIgnoreCase(bName);
|
return aName.compareToIgnoreCase(bName);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
mAdapter.setNotifyOnChange(false);
|
|
||||||
int selectedFolder = -1;
|
int selectedFolder = -1;
|
||||||
|
// We're not allowed to change the adapter from a background thread, so we use
|
||||||
|
// a java.util.List to build a list of the folder names.
|
||||||
|
// We'll add the folder names to the adapter from the UI-thread (see the 'finally' block).
|
||||||
|
folderList = new ArrayList<String>();
|
||||||
try {
|
try {
|
||||||
mAdapter.clear();
|
|
||||||
int position = 0;
|
int position = 0;
|
||||||
for (String name : localFolders) {
|
for (String name : localFolders) {
|
||||||
if (mAccount.getInboxFolderName().equalsIgnoreCase(name)) {
|
if (mAccount.getInboxFolderName().equalsIgnoreCase(name)) {
|
||||||
mAdapter.add(getString(R.string.special_mailbox_name_inbox));
|
folderList.add(getString(R.string.special_mailbox_name_inbox));
|
||||||
heldInbox = name;
|
heldInbox = name;
|
||||||
} else if (!K9.ERROR_FOLDER_NAME.equals(name) && !account.getOutboxFolderName().equals(name)) {
|
} else if (!K9.ERROR_FOLDER_NAME.equals(name) && !account.getOutboxFolderName().equals(name)) {
|
||||||
mAdapter.add(name);
|
folderList.add(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mSelectFolder != null) {
|
if (mSelectFolder != null) {
|
||||||
@ -390,11 +400,13 @@ public class ChooseFolder extends K9ListActivity {
|
|||||||
position++;
|
position++;
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
mAdapter.setNotifyOnChange(true);
|
|
||||||
runOnUiThread(new Runnable() {
|
runOnUiThread(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
// runOnUiThread(
|
// Now we're in the UI-thread, we can safely change the contents of the adapter.
|
||||||
mAdapter.notifyDataSetChanged();
|
mAdapter.clear();
|
||||||
|
for (String folderName: folderList) {
|
||||||
|
mAdapter.add(folderName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user