1 package ro
.ieval
.unical
;
2 import java
.text
.ParseException
;
3 import java
.text
.SimpleDateFormat
;
4 import java
.util
.Calendar
;
6 import java
.util
.GregorianCalendar
;
7 import java
.util
.TimeZone
;
9 import android
.app
.ActionBar
;
10 import android
.app
.Activity
;
11 import android
.app
.DatePickerDialog
.OnDateSetListener
;
12 import android
.app
.Fragment
;
13 import android
.app
.TimePickerDialog
.OnTimeSetListener
;
14 import android
.content
.ContentValues
;
15 import android
.content
.Context
;
16 import android
.content
.Intent
;
17 import android
.graphics
.Color
;
18 import android
.net
.Uri
;
19 import android
.os
.Bundle
;
20 import android
.provider
.CalendarContract
;
21 import android
.view
.Menu
;
22 import android
.view
.MenuInflater
;
23 import android
.view
.MenuItem
;
24 import android
.view
.View
;
25 import android
.widget
.*;
27 public final class AddEventActivity
extends Activity
implements OnDateSetListener
, OnTimeSetListener
{
29 private TextView dateTimeTextView
;
30 public static final String EXTRA_EVENT
= "event";
31 private static Event event
=new Event();
33 public static void editEvent(final Context c
, final Event e
) {
34 final Intent i
= new Intent(c
,AddEventActivity
.class);
35 i
.putExtra(AddEventActivity
.EXTRA_EVENT
,e
);
42 protected void onCreate(final Bundle savedInstanceState
) {
43 super.onCreate(savedInstanceState
);
44 setTitle(R
.string
.add_event_title
);
45 event
= getIntent().hasExtra(EXTRA_EVENT
) ?
(Event
) getIntent().getParcelableExtra(EXTRA_EVENT
) : new Event();
46 final ActionBar actionBar
= getActionBar();
47 setContentView(R
.layout
.add_event
);
49 final EditText title
= (EditText
) findViewById(R
.id
.eventtitle
);
51 title
.setText(event
.title
);
53 final TextView tstart
= (TextView
) findViewById(R
.id
.time_start
);
54 final TextView tend
= (TextView
) findViewById(R
.id
.time_end
);
55 final SimpleDateFormat sf
=new SimpleDateFormat("HH:mm");
56 final Date d
=new Date(event
.dtstart
);
57 tstart
.setText(sf
.format(d
).toString());
58 d
.setTime(event
.dtend
);
59 tend
.setText(sf
.format(d
).toString());
61 final SimpleDateFormat sd
= new SimpleDateFormat("yyyy-MM-dd");
62 final TextView dstart
= (TextView
)findViewById(R
.id
.date_start
);
63 final TextView dend
= (TextView
)findViewById(R
.id
.date_end
);
64 d
.setTime(event
.dtstart
);
65 dstart
.setText(sd
.format(d
).toString());
66 d
.setTime(event
.dtend
);
67 dend
.setText(sd
.format(d
).toString());
68 final EditText description
= (EditText
) findViewById(R
.id
.description
);
69 description
.setText(event
.description
);
73 public boolean onCreateOptionsMenu(final Menu menu
) {
74 final MenuInflater inflater
= getMenuInflater();
75 inflater
.inflate(R
.menu
.add_event
, menu
);
79 public void createCalendar() {
82 calUri
= CalendarContract
.Calendars
.CONTENT_URI
;
83 cv
= new ContentValues();
84 cv
.put(CalendarContract
.Calendars
.ACCOUNT_NAME
,"unical");
85 cv
.put(CalendarContract
.Calendars
.ACCOUNT_TYPE
,CalendarContract
.ACCOUNT_TYPE_LOCAL
);
86 cv
.put(CalendarContract
.Calendars
.NAME
,"unical");
87 cv
.put(CalendarContract
.Calendars
.CALENDAR_DISPLAY_NAME
, "Unical");
88 cv
.put(CalendarContract
.Calendars
.CALENDAR_COLOR
, Color
.BLACK
);
89 cv
.put(CalendarContract
.Calendars
.CALENDAR_ACCESS_LEVEL
, CalendarContract
.Calendars
.CAL_ACCESS_OWNER
);
90 cv
.put(CalendarContract
.Calendars
.OWNER_ACCOUNT
, "unical");
91 cv
.put(CalendarContract
.Calendars
.VISIBLE
, 1);
92 cv
.put(CalendarContract
.Calendars
.SYNC_EVENTS
, 1);
93 cv
.put(CalendarContract
.Calendars
.CALENDAR_TIME_ZONE
, TimeZone
.getDefault().getID());
94 calUri
= calUri
.buildUpon()
95 .appendQueryParameter(CalendarContract
.CALLER_IS_SYNCADAPTER
, "true")
96 .appendQueryParameter(CalendarContract
.Calendars
.ACCOUNT_NAME
, "unical")
97 .appendQueryParameter(CalendarContract
.Calendars
.ACCOUNT_TYPE
, CalendarContract
.ACCOUNT_TYPE_LOCAL
)
100 this.getContentResolver().delete(calUri
, CalendarContract
.Calendars
.ACCOUNT_NAME
+ " = 'unical'", new String
[0]);
101 this.getContentResolver().insert(calUri
, cv
);
102 Event
.calendarCreated
=true;
106 public boolean onOptionsItemSelected(final MenuItem item
) {
107 switch (item
.getItemId()) {
113 if(event
.title
!=null) edit
=true;
114 event
.title
=((EditText
)findViewById(R
.id
.eventtitle
)).getText().toString();
115 String start
=((TextView
)findViewById(R
.id
.date_start
)).getText().toString()+ " " +((TextView
)findViewById(R
.id
.time_start
)).getText().toString();
116 String end
=((TextView
)findViewById(R
.id
.date_end
)).getText().toString()+ " "+((TextView
)findViewById(R
.id
.time_end
)).getText().toString();
119 Date s
=new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(start
);
120 Date e
=new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(end
);
121 event
.dtstart
=s
.getTime();
122 event
.dtend
=e
.getTime();
123 } catch (ParseException e
) {
127 event
.description
=((EditText
) findViewById(R
.id
.description
)).getText().toString();
129 if(!Event
.calendarCreated
)createCalendar();
130 if(event
.calendarID
!=Event
.getUnicalId(this)) {
134 event
.calendarID
=Event
.getUnicalId(this);
135 if(!edit
) event
.insert(this);
136 else event
.edit(this);
138 Toast toast
= Toast
.makeText(getApplicationContext(),"Event saved!",Toast
.LENGTH_LONG
);
147 public void showDateTimePickerDialog(final View v
) {
148 dateTimeTextView
=(TextView
) v
;
149 if(v
.getId()==R
.id
.date_start
|| v
.getId()==R
.id
.date_end
){
150 final String
[] parts
= dateTimeTextView
.getText().toString().split("-");
151 final DatePickerFragment fragment
= new DatePickerFragment();
152 final Bundle args
= new Bundle();
153 args
.putInt(DatePickerFragment
.ARGUMENT_YEAR
, Integer
.parseInt(parts
[0]));
154 args
.putInt(DatePickerFragment
.ARGUMENT_MONTH
, Integer
.parseInt(parts
[1]));
155 args
.putInt(DatePickerFragment
.ARGUMENT_DAY
, Integer
.parseInt(parts
[2]));
156 fragment
.setArguments(args
);
157 fragment
.show(getFragmentManager(), "datePicker");
159 final String
[] parts
= dateTimeTextView
.getText().toString().split(":");
160 final TimePickerFragment fragment
= new TimePickerFragment();
161 final Bundle args
= new Bundle();
162 args
.putInt(TimePickerFragment
.ARGUMENT_HOUR
, Integer
.parseInt(parts
[0]));
163 args
.putInt(TimePickerFragment
.ARGUMENT_MINUTE
, Integer
.parseInt(parts
[1]));
164 fragment
.setArguments(args
);
165 fragment
.show(getFragmentManager(), "timePicker");
170 public void onTimeSet(final TimePicker picker
, final int hour
, final int minute
) {
171 dateTimeTextView
.setText(String
.format("%02d:%02d",hour
,minute
));
172 if(dateTimeTextView
.getId() == R
.id
.time_start
)
173 ((TextView
)findViewById(R
.id
.time_end
)).setText(String
.format("%02d:%02d",hour
,minute
));
177 public void onDateSet(final DatePicker picker
, final int year
, final int monthOfYear
, final int dayOfMonth
) {
178 final Calendar calendar
=new GregorianCalendar(year
, monthOfYear
, dayOfMonth
);
179 dateTimeTextView
.setText(Utils
.formatDate(year
, monthOfYear
, dayOfMonth
));
180 //calendar.add(Calendar.DAY_OF_MONTH, 1);
181 if(dateTimeTextView
.getId() == R
.id
.date_start
)
182 ((TextView
)findViewById(R
.id
.date_end
)).setText(Utils
.formatDate(calendar
.get(Calendar
.YEAR
), calendar
.get(Calendar
.MONTH
), calendar
.get(Calendar
.DAY_OF_MONTH
)));