/*
* rchip remote - android application for RCHIP interface
* Copyright (C) 2012 Kevin Anthony
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
*(at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.nosideracing.rchipremote;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Locale;
import com.nosideracing.rchipremote.Consts;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;
public class UpcomingShowList extends ListActivity {
private ArrayList<UpcomingShowInfo> upcoming;
private ListAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.upcomingshows);
upcoming = JSON.getInstance().getUpcomingShows();
Collections.sort(upcoming);
mAdapter = new MyListAdapter(this);
setListAdapter(mAdapter);
Notifications.clearAllNotifications(getApplicationContext());
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu_child, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.settings:
startActivity(new Intent(this, Preferences.class));
return true;
case R.id.quit:
quit();
return true;
}
return false;
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
}
private void quit() {
setResult(Consts.QUITREMOTE);
this.finish();
}
public class MyListAdapter extends BaseAdapter {
private Context fContext;
private LayoutInflater mInflater;
public MyListAdapter(Context context) {
fContext = context;
mInflater = LayoutInflater.from(fContext);
}
public int getCount() {
return upcoming.size();
}
public Object getItem(int position) {
return upcoming.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder info;
convertView = mInflater.inflate(R.layout.upcomingshows_listview,
null);
info = new ViewHolder();
info.ShowNameView = (TextView) convertView
.findViewById(R.id.show_name);
info.EpisodeNameView = (TextView) convertView
.findViewById(R.id.episode_name);
info.EpisodeNumberView = (TextView) convertView
.findViewById(R.id.episode_number);
info.AirDateView = (TextView) convertView
.findViewById(R.id.show_date);
convertView.setTag(info);
info.ShowNameView.setText(upcoming.get(position).ShowName);
info.EpisodeNameView.setText(upcoming.get(position).EpisodeName);
info.EpisodeNumberView
.setText(upcoming.get(position).EpisodeNumber);
Date date = upcoming.get(position).AirDate;
int air_time = upcoming.get(position).AirTime - (date.getTimezoneOffset()/60*100);
Log.d(Consts.LOG_TAG,upcoming.get(position).ShowName);
Log.d(Consts.LOG_TAG,"offset = "+date.getTimezoneOffset()/60*100);
Log.d(Consts.LOG_TAG,"Air_time " + air_time/100);
Log.e(Consts.LOG_TAG,"Date:"+date);
int hours = date.getHours()+(air_time/100);
int minutes = date.getMinutes()+(air_time%100);
date.setHours(hours);
date.setMinutes(minutes);
String date_str = new SimpleDateFormat("hh:mm aa LLL dd yyyy",
Locale.US).format(date);
info.AirDateView.setText(date_str);
return convertView;
}
class ViewHolder {
TextView ShowNameView;
TextView EpisodeNameView;
TextView EpisodeNumberView;
TextView AirDateView;
}
}
}
class UpcomingShowInfo implements Comparable<Object> {
public String ShowName;
public String EpisodeName;
public String EpisodeNumber;
public Date AirDate;
public int AirTime;
public int compareTo(Object incomingObject) {
if (!(incomingObject instanceof UpcomingShowInfo))
throw new ClassCastException();
UpcomingShowInfo incomingClass = (UpcomingShowInfo) incomingObject;
return AirDate.compareTo(incomingClass.AirDate);
}
}