seadroid
seadroid copied to clipboard
Sort repo on CloudLibrarySelectionFragment
private void updateAdapterWithRepos(List<SeafRepo> repos) {
CloudLibraryAdapter adapter=getReposAdapter();
// remove encrypted repos in order to "hide" them in selection list
List<SeafRepo> filteredRepos = Lists.newArrayList();
for (SeafRepo repo : repos) {
if (!repo.encrypted)
filteredRepos.add(repo);
}
adapter.setRepos(filteredRepos);
int sort_type = SettingsManager.instance().getSortFilesTypePref();
int sort_order = SettingsManager.instance().getSortFilesOrderPref();
adapter.sortFiles(sort_type, sort_order);
adapter.notifyChanged();
showListOrEmptyText(filteredRepos.size());
}
in CloudLibraryAdapter add code:
/** sort files type */
public static final int SORT_BY_NAME = 9;
/** sort files type */
public static final int SORT_BY_LAST_MODIFIED_TIME = 10;
/** sort files order */
public static final int SORT_ORDER_ASCENDING = 11;
/** sort files order */
public static final int SORT_ORDER_DESCENDING = 12;
public void notifyChanged() {
notifyDataSetChanged();
}
public void sortFiles(int type, int order) {
List<SeafRepo> folders = Lists.newArrayList();
for (SeafRepo item : repos) {
folders.add(item);
}
repos.clear();
if (type == SORT_BY_NAME) {
// sort by name, in ascending order
Collections.sort(folders, new SeafRepo.RepoNameComparator());
if (order == SORT_ORDER_DESCENDING) {
Collections.reverse(folders);
}
} else if (type == SORT_BY_LAST_MODIFIED_TIME) {
// sort by last modified time, in ascending order
Collections.sort(folders, new SeafRepo.RepoLastMTimeComparator());
if (order == SORT_ORDER_DESCENDING) {
Collections.reverse(folders);
}
}
// Adds the objects in the specified collection to this ArrayList
repos.addAll(folders);
}