Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc713807 authored by cketti's avatar cketti
Browse files

Don't fetch list of folders from adapter in worker thread

parent 1005f5e3
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ import com.fsck.k9.mailstore.LocalFolder;
import com.fsck.k9.ui.folders.FolderIconProvider;
import timber.log.Timber;

import static java.util.Collections.emptyList;


public class ChooseFolder extends K9ListActivity {
    public static final String EXTRA_ACCOUNT = "com.fsck.k9.ChooseFolder_account";
@@ -344,9 +346,9 @@ public class ChooseFolder extends K9ListActivity {
    };

    class FolderListAdapter extends BaseAdapter implements Filterable, FolderAdapter {
        private List<FolderInfoHolder> mFolders = new ArrayList<>();
        private List<FolderInfoHolder> mFilteredFolders = Collections.unmodifiableList(mFolders);
        private Filter mFilter = new FolderListFilter(this);
        private List<FolderInfoHolder> mFolders = emptyList();
        private List<FolderInfoHolder> mFilteredFolders = emptyList();
        private Filter mFilter = new FolderListFilter(this, mFolders);
        private FolderIconProvider folderIconProvider = new FolderIconProvider(getTheme());
        private CharSequence filterText;

@@ -437,11 +439,6 @@ public class ChooseFolder extends K9ListActivity {
            return mFilter;
        }

        @Override
        public List<FolderInfoHolder> getFolders() {
            return mFolders;
        }

        @Override
        public void setFilteredFolders(CharSequence filterText, List<FolderInfoHolder> folders) {
            this.filterText = filterText;
@@ -451,7 +448,8 @@ public class ChooseFolder extends K9ListActivity {

        void setFolders(List<FolderInfoHolder> folders) {
            mFolders = folders;
            getFilter().filter(filterText);
            mFilter = new FolderListFilter(this, folders);
            mFilter.filter(filterText);
        }
    }

+6 −5
Original line number Diff line number Diff line
@@ -11,10 +11,12 @@ import android.widget.Filter;
 */
public class FolderListFilter extends Filter {
    private final FolderAdapter adapter;
    private final List<FolderInfoHolder> folders;


    public FolderListFilter(FolderAdapter folders) {
        this.adapter = folders;
    public FolderListFilter(FolderAdapter adapter, List<FolderInfoHolder> folders) {
        this.adapter = adapter;
        this.folders = folders;
    }

    @Override
@@ -23,7 +25,7 @@ public class FolderListFilter extends Filter {

        Locale locale = Locale.getDefault();
        if (searchTerm == null || searchTerm.length() == 0) {
            List<FolderInfoHolder> list = new ArrayList<>(adapter.getFolders());
            List<FolderInfoHolder> list = new ArrayList<>(folders);
            results.values = list;
            results.count = list.size();
        } else {
@@ -31,7 +33,7 @@ public class FolderListFilter extends Filter {
            String[] words = searchTermString.split(" ");

            List<FolderInfoHolder> newValues = new ArrayList<>();
            for (FolderInfoHolder folderInfoHolder : adapter.getFolders()) {
            for (FolderInfoHolder folderInfoHolder : folders) {
                String valueText = folderInfoHolder.displayName.toLowerCase(locale);

                for (String word : words) {
@@ -58,7 +60,6 @@ public class FolderListFilter extends Filter {


    public interface FolderAdapter {
        List<FolderInfoHolder> getFolders();
        void setFilteredFolders(CharSequence filterText, List<FolderInfoHolder> folders);
    }
}