package com.ucb.dcm;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockFragment;
import com.emilsjolander.components.stickylistheaders.StickyListHeadersListView;
import com.ucb.dcm.data.*;
import com.ucb.dcm.list.NowListAdapter;
import java.util.ArrayList;
import java.util.Date;
/**
* Created by kurtguenther on 6/5/13.
*/
public class NowActivity extends SherlockFragment {
//Remember, months are 0 indexed for some reason.
public static final Date MARATHON_START_DATE = new Date(2013 - 1900, 5, 28, 16, 00, 0);
private Handler clock;
private Runnable updateClockRunnable = new Runnable() {
@Override
public void run() {
updateClock();
clock.postDelayed(this, 1000);
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
return inflater.inflate(R.layout.activity_now_land, container, false);
}
else {
return inflater.inflate(R.layout.activity_now, container, false);
}
}
@Override
public void onResume() {
super.onResume();
updateUI();
}
private void updateUI(){
Date now = new Date();
View countdown = getView().findViewById(R.id.countdown);
View upcoming = getView().findViewById(R.id.now_list);
if(now.before(MARATHON_START_DATE)) {
countdown.setVisibility(View.VISIBLE);
upcoming.setVisibility(View.GONE);
updateClock();
clock = new Handler();
updateClockRunnable.run();
}
else {
countdown.setVisibility(View.GONE);
upcoming.setVisibility(View.VISIBLE);
//Load up some data for the upcoming.
ArrayList<NowPerformance> perfs = Performance.getUpcomingShows(now);
NowListAdapter mAdpt = new NowListAdapter(getActivity(), R.layout.list_schedule, R.id.schedule_show_name, perfs);
StickyListHeadersListView list = (StickyListHeadersListView) getView().findViewById(R.id.now_list);
list.setAreHeadersSticky(false);
list.setAdapter(mAdpt);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent displayShow = new Intent(getActivity(), ViewShowFragment.class);
NowPerformance np= (NowPerformance) adapterView.getAdapter().getItem(i);
displayShow.putExtra(ViewShowFragment.SHOW_KEY, np.show_id);
startActivity(displayShow);
}
});
}
}
private void updateClock(){
Date now = new Date();
int secondsBetween = (int) ((MARATHON_START_DATE.getTime() - now.getTime()) / 1000);
if(secondsBetween < 0){
clock.removeCallbacks(updateClockRunnable);
updateUI();
}
TextView days = (TextView) getView().findViewById(R.id.countdown_days);
int daysVal = (secondsBetween / (60 * 60 * 24));
days.setText(formatInt(daysVal));
TextView hours = (TextView) getView().findViewById(R.id.countdown_hours);
int hoursVal = (secondsBetween - daysVal * 60 * 60 * 24) / (60 * 60);
hours.setText(formatInt(hoursVal));
TextView minutes = (TextView) getView().findViewById(R.id.countdown_minutes);
int minutesVal = (secondsBetween - daysVal * 60 * 60 * 24 - hoursVal * 60 * 60) / 60;
minutes.setText(formatInt(minutesVal));
TextView seconds = (TextView) getView().findViewById(R.id.countdown_seconds);
int secondsVal = (secondsBetween - daysVal * 60 * 60 * 24 - hoursVal * 60 * 60 - minutesVal * 60);
seconds.setText(formatInt(secondsVal));
}
public String formatInt(int val){
String retVal = Integer.toString(val);
// if(val < 10 && val >= 0){
// retVal = "0" + retVal;
// }
return retVal;
}
@Override
public void onPause() {
//Stop the clock when we navigate away (otherwise it fires and gets a null pointer error)
if(clock != null){
clock.removeCallbacks(updateClockRunnable);
}
super.onPause();
}
}