package what.whatandroid.forums.categories;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Toast;
import api.forum.categories.ForumCategories;
import api.soup.MySoup;
import what.whatandroid.R;
import what.whatandroid.callbacks.OnLoggedInCallback;
import what.whatandroid.callbacks.SetTitleCallback;
/**
* Fragment for displaying the forum categories
*/
public class ForumCategoriesFragment extends Fragment implements OnLoggedInCallback,
LoaderManager.LoaderCallbacks<ForumCategories> {
/**
* List adapter displaying all the forum information
*/
private ForumCategoriesListAdapter adapter;
private ProgressBar loadingIndicator;
private SetTitleCallback setTitle;
public ForumCategoriesFragment(){
//Required empty ctor
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
setTitle = (SetTitleCallback) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement SetTitleCallbacks");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.fragment_list_view, container, false);
ListView list = (ListView)view.findViewById(R.id.list);
loadingIndicator = (ProgressBar)view.findViewById(R.id.loading_indicator);
adapter = new ForumCategoriesListAdapter(getActivity());
list.setAdapter(adapter);
list.setOnItemClickListener(adapter);
loadingIndicator.setVisibility(View.VISIBLE);
if (MySoup.isLoggedIn()){
onLoggedIn();
}
return view;
}
@Override
public void onResume() {
super.onResume();
setTitle.setTitle(getString(R.string.forums));
}
@Override
public void onLoggedIn(){
if (isAdded()){
getLoaderManager().initLoader(0, null, this);
}
}
@Override
public Loader<ForumCategories> onCreateLoader(int id, Bundle args){
return new ForumCategoriesAsyncLoader(getActivity(), args);
}
@Override
public void onLoadFinished(Loader<ForumCategories> loader, ForumCategories data){
loadingIndicator.setVisibility(View.GONE);
if (data == null || !data.getStatus()){
Toast.makeText(getActivity(), "Could not load forum categories", Toast.LENGTH_LONG).show();
}
else if (adapter.isEmpty()){
adapter.addAll(data.getCategories());
adapter.notifyDataSetChanged();
}
}
@Override
public void onLoaderReset(Loader<ForumCategories> loader){
}
}