package com.github.mobile.ui.issue;
import static java.lang.String.CASE_INSENSITIVE_ORDER;
import android.os.Bundle;
import android.support.v4.content.Loader;
import android.view.View;
import android.widget.ListView;
import com.github.kevinsawicki.wishlist.AsyncLoader;
import com.github.kevinsawicki.wishlist.SingleTypeAdapter;
import com.github.mobile.R.string;
import com.github.mobile.core.issue.IssueFilter;
import com.github.mobile.persistence.AccountDataManager;
import com.github.mobile.ui.ItemListFragment;
import com.github.mobile.util.AvatarLoader;
import com.google.inject.Inject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* Fragment to display a list of {@link IssueFilter} objects
*/
public class FilterListFragment extends ItemListFragment<IssueFilter> implements
Comparator<IssueFilter> {
@Inject
private AccountDataManager cache;
@Inject
private AvatarLoader avatars;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setEmptyText(string.no_bookmarks);
}
@Override
public Loader<List<IssueFilter>> onCreateLoader(int id, Bundle args) {
return new AsyncLoader<List<IssueFilter>>(getActivity()) {
@Override
public List<IssueFilter> loadInBackground() {
List<IssueFilter> filters = new ArrayList<IssueFilter>(
cache.getIssueFilters());
Collections.sort(filters, FilterListFragment.this);
return filters;
}
};
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
IssueFilter filter = (IssueFilter) l.getItemAtPosition(position);
startActivity(IssueBrowseActivity.createIntent(filter));
}
@Override
public void onResume() {
super.onResume();
refresh();
}
@Override
protected int getErrorMessage(Exception exception) {
return string.error_bookmarks_load;
}
@Override
protected SingleTypeAdapter<IssueFilter> createAdapter(
List<IssueFilter> items) {
return new FilterListAdapter(getActivity().getLayoutInflater(),
items.toArray(new IssueFilter[items.size()]), avatars);
}
@Override
public int compare(final IssueFilter lhs, final IssueFilter rhs) {
int compare = CASE_INSENSITIVE_ORDER.compare(lhs.getRepository()
.generateId(), rhs.getRepository().generateId());
if (compare == 0)
compare = CASE_INSENSITIVE_ORDER.compare(
lhs.toDisplay().toString(), rhs.toDisplay().toString());
return compare;
}
}