package com.tyczj.extendedcalendarview;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
import java.util.Set;
import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
import android.content.Context;
import android.database.Cursor;
import android.os.AsyncTask;
import android.text.format.Time;
import android.widget.BaseAdapter;
public class Day{
int startDay;
int monthEndDay;
int day;
int year;
int month;
Context context;
BaseAdapter adapter;
ArrayList<Event> events = new ArrayList<Event>();
public Day(Context context,int day, int year, int month){
this.day = day;
this.year = year;
this.month = month;
this.context = context;
Calendar cal = Calendar.getInstance();
cal.set(year, month-1, day);
int end = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(year, month, end);
TimeZone tz = TimeZone.getDefault();
monthEndDay = Time.getJulianDay(cal.getTimeInMillis(), TimeUnit.MILLISECONDS.toSeconds(tz.getOffset(cal.getTimeInMillis())));
}
// public long getStartTime(){
// return startTime;
// }
//
// public long getEndTime(){
// return endTime;
// }
public int getMonth(){
return month;
}
public int getYear(){
return year;
}
public void setDay(int day){
this.day = day;
}
public int getDay(){
return day;
}
/**
* Add an event to the day
*
* @param event
*/
public void addEvent(Event event){
events.add(event);
}
/**
* Set the start day
*
* @param startDay
*/
public void setStartDay(int startDay){
this.startDay = startDay;
new GetEvents().execute();
}
public int getStartDay(){
return startDay;
}
public int getNumOfEvenets(){
return events.size();
}
/**
* Returns a list of all the colors on a day
*
* @return list of colors
*/
public Set<Integer> getColors(){
Set<Integer> colors = new HashSet<Integer>();
for(Event event : events){
colors.add(event.getColor());
}
return colors;
}
/**
* Get all the events on the day
*
* @return list of events
*/
public ArrayList<Event> getEvents(){
return events;
}
public void setAdapter(BaseAdapter adapter){
this.adapter = adapter;
}
private class GetEvents extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
Cursor c = context.getContentResolver().query(CalendarProvider.CONTENT_URI,new String[] {CalendarProvider.ID,CalendarProvider.EVENT,
CalendarProvider.DESCRIPTION,CalendarProvider.LOCATION,CalendarProvider.START,CalendarProvider.END,CalendarProvider.COLOR},"?>="+CalendarProvider.START_DAY+" AND "+ CalendarProvider.END_DAY+">=?",
new String[] {String.valueOf(startDay),String.valueOf(startDay)}, null);
if(c != null && c.moveToFirst()){
do{
Event event = new Event(c.getLong(0),c.getLong(4),c.getLong(5));
event.setName(c.getString(1));
event.setDescription(c.getString(2));
event.setLocation(c.getString(3));
event.setColor(c.getInt(6));
events.add(event);
}while(c.moveToNext());
}
c.close();
return null;
}
protected void onPostExecute(Void par){
adapter.notifyDataSetChanged();
}
}
}