package com.mhacks.android.schedule;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import com.mhacks.android.R;
import com.mhacks.android.pong.PongHeaderTransformer;import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import java.util.ArrayList;
import java.util.List;
import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
import uk.co.senab.actionbarpulltorefresh.library.Options;import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout;
import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
public class ScheduleFragment extends Fragment implements OnRefreshListener {
private ScheduleAdapter mAdapter;
private ArrayList<ParseObject> mEvents;
private ListView mListView;
private PullToRefreshLayout mPullToRefreshLayout;
public ScheduleFragment() {
mEvents = new ArrayList<ParseObject>();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.fragment_schedule, container, false);
mListView = (ListView) layout.findViewById(R.id.schedule_listview);
mListView.addFooterView(new View(getActivity()));
mAdapter = new ScheduleAdapter(this.getActivity(), mEvents);
mListView.setAdapter(mAdapter);
View view = new View(getActivity());
int pixels = 48 * getResources().getDisplayMetrics().densityDpi / 160;
AbsListView.LayoutParams params = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, pixels);
view.setLayoutParams(params);
mListView.addFooterView(view);
setRetainInstance(true);
return layout;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
ViewGroup container = (ViewGroup) view;
mPullToRefreshLayout = new PullToRefreshLayout(container.getContext());
ActionBarPullToRefresh.from(getActivity())
.options(Options.create()
.scrollDistance(0.5f)
.headerLayout(R.layout.pong_header)
.headerTransformer(new PongHeaderTransformer())
.build())
.insertLayoutInto(container)
.theseChildrenArePullable(R.id.schedule_listview)
.listener(this)
.setup(mPullToRefreshLayout);
}
@Override
public void onResume() {
super.onResume();
if (mAdapter.getCount() == 0) {
refresh();
}
}
@Override
public void onRefreshStarted(View view) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Event");
query.orderByAscending("time");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> parseObjects, ParseException e) {
if (e == null) {
Log.d("Schedule", "Got " + parseObjects.size() + " events.");
mEvents.clear();
mEvents.addAll(parseObjects);
mAdapter.notifyDataSetChanged();
}
mPullToRefreshLayout.setRefreshComplete();
}
});
}
private void refresh() {
mPullToRefreshLayout.setRefreshing(true);
onRefreshStarted(mListView);
}
}