package what.whatandroid.request;
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.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import api.requests.Request;
import com.astuetz.PagerSlidingTabStrip;
import what.whatandroid.R;
import what.whatandroid.callbacks.OnLoggedInCallback;
import what.whatandroid.callbacks.SetTitleCallback;
/**
* Fragment for showing a swipe view containing the request details and comments
*/
public class RequestFragment extends Fragment implements OnLoggedInCallback, LoaderManager.LoaderCallbacks<Request> {
private SetTitleCallback setTitle;
private RequestPagerAdapter requestPagerAdapter;
public static RequestFragment newInstance(int requestId){
RequestFragment f = new RequestFragment();
Bundle args = new Bundle();
args.putInt(RequestActivity.REQUEST_ID, requestId);
f.setArguments(args);
return f;
}
public RequestFragment(){
//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_view_pager_tabs, container, false);
ViewPager viewPager = (ViewPager)view.findViewById(R.id.pager);
requestPagerAdapter = new RequestPagerAdapter(getChildFragmentManager());
viewPager.setAdapter(requestPagerAdapter);
PagerSlidingTabStrip tabs = (PagerSlidingTabStrip)view.findViewById(R.id.tabs);
tabs.setViewPager(viewPager);
return view;
}
/**
* Refresh the request being viewed
*/
public void refresh(){
getLoaderManager().restartLoader(0, getArguments(), this);
}
@Override
public void onLoggedIn(){
if (isAdded()){
getLoaderManager().initLoader(0, getArguments(), this);
}
}
@Override
public Loader<Request> onCreateLoader(int id, Bundle args){
if (isAdded()){
getActivity().setProgressBarIndeterminate(true);
getActivity().setProgressBarIndeterminateVisibility(true);
}
return new RequestAsyncLoader(getActivity(), args);
}
@Override
public void onLoadFinished(Loader<Request> loader, Request data){
if (isAdded()){
getActivity().setProgressBarIndeterminate(false);
getActivity().setProgressBarIndeterminateVisibility(false);
if (data != null && data.getStatus()){
setTitle.setTitle(data.getResponse().getTitle());
requestPagerAdapter.onLoadingComplete(data);
}
else {
Toast.makeText(getActivity(), "Could not load request", Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onLoaderReset(Loader<Request> loader){
}
}