package org.intermine.app.fragment;
/*
* Copyright (C) 2015 InterMine
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. See the LICENSE file for more
* information or http://www.gnu.org/copyleft/lesser.html.
*
*/
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.ProgressBar;
import org.intermine.app.R;
import org.intermine.app.activity.MainActivity;
import org.intermine.app.adapter.GenesAdapter;
import org.intermine.app.core.Gene;
import org.intermine.app.listener.OnGeneSelectedListener;
import org.intermine.app.util.Collections;
import org.intermine.app.util.Views;
import java.util.List;
import butterknife.InjectView;
public class FavoritesListFragment extends BaseFragment {
@InjectView(R.id.list)
protected ListView mListView;
@InjectView(R.id.not_found_results_container)
protected View mNotFoundView;
@InjectView(R.id.progress_view)
protected ProgressBar mProgressView;
private GenesAdapter mGenesAdapter;
private OnGeneSelectedListener mListener;
private GeneFavoritesAsyncTask mAsyncTask;
protected boolean mLoading;
public static FavoritesListFragment newInstance() {
FavoritesListFragment fragment = new FavoritesListFragment();
return fragment;
}
// --------------------------------------------------------------------------------------------
// Inner Classes
// --------------------------------------------------------------------------------------------
private class GeneFavoritesAsyncTask extends AsyncTask<Void, Void, List<Gene>> {
@Override
protected void onPreExecute() {
super.onPreExecute();
setProgress(true);
}
@Override
protected List<Gene> doInBackground(Void... params) {
List<Gene> genes = getStorage().getGeneFavorites();
return genes;
}
@Override
protected void onPostExecute(List<Gene> genes) {
super.onPostExecute(genes);
if (Collections.isNullOrEmpty(genes)) {
Views.setVisible(mNotFoundView);
Views.setGone(mListView, mProgressView);
} else {
mGenesAdapter.updateGenes(genes);
setProgress(false);
}
}
}
// --------------------------------------------------------------------------------------------
// Lifecycle
// --------------------------------------------------------------------------------------------
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.favorites_fragment, container, false);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
mListener = (OnGeneSelectedListener) context;
if (context instanceof MainActivity) {
((MainActivity) context).onSectionAttached(getString(R.string.favorites));
}
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mGenesAdapter = new GenesAdapter(getContext());
mListView.setAdapter(mGenesAdapter);
mAsyncTask = new GeneFavoritesAsyncTask();
mAsyncTask.execute();
}
@Override
public void onDestroyView() {
super.onDestroyView();
mAsyncTask.cancel(true);
mAsyncTask = null;
}
// --------------------------------------------------------------------------------------------
// Helper Methods
// --------------------------------------------------------------------------------------------
protected void setProgress(boolean loading) {
mLoading = loading;
if (loading) {
Views.setVisible(mProgressView);
Views.setGone(mListView, mNotFoundView);
} else {
Views.setVisible(mListView);
Views.setGone(mProgressView, mNotFoundView);
}
}
}