package org.smartpaws.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import org.smartpaws.R;
import org.smartpaws.objects.Convention;
import org.smartpaws.objects.Event;
import org.smartpaws.objects.transform.Filter;
import org.smartpaws.objects.transform.Sort;
import org.smartpaws.recycler.ScheduleRecyclerView;
import org.smartpaws.util.TimeUtils;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
public class ScheduleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Convention convention = (Convention) getArguments().getSerializable("convention");
int day = getArguments().getInt("day");
Calendar cal = Calendar.getInstance();
cal.setTime(convention.getDateStart());
cal.add(Calendar.DATE, day);
Event[] events = Filter.byDate(convention.getEvents(), cal.getTime());
Sort.byDate(events);
View root = inflater.inflate(R.layout.frag_schedule, null);
TextView dateView = (TextView) root.findViewById(R.id.schedule_date);
SimpleDateFormat formatStart = new SimpleDateFormat("EEEE, dd", Locale.getDefault());
SimpleDateFormat formatEnd = new SimpleDateFormat(" MMMM yyyy", Locale.getDefault());
formatStart.setTimeZone(TimeZone.getDefault());
formatEnd.setTimeZone(TimeZone.getDefault());
dateView.setText(formatStart.format(cal.getTime())
+ TimeUtils.getDayOfMonthSuffix(cal.get(Calendar.DAY_OF_MONTH))
+ formatEnd.format(cal.getTime()));
RecyclerView recycler = (RecyclerView) root.findViewById(R.id.cardList);
recycler.setAdapter(new ScheduleRecyclerView(events));
recycler.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(root.getContext());
llm.setOrientation(LinearLayoutManager.VERTICAL);
recycler.setLayoutManager(llm);
recycler.scrollToPosition(getScrollPos(events));
return root;
}
private int getScrollPos(Event[] events) {
for (int i=0; i<events.length; i++) {
if (!TimeUtils.isPast(events[i])) return i;
}
return 0;
}
}