Removes repeat layout. Format date now works correctly
[unical.git] / src / ro / ieval / unical / AddEventActivity.java
1 package ro.ieval.unical;
2 import java.text.ParseException;
3 import java.text.SimpleDateFormat;
4 import java.util.Calendar;
5 import java.util.Date;
6 import java.util.GregorianCalendar;
7 import java.util.TimeZone;
8
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.*;
26
27 public final class AddEventActivity extends Activity implements OnDateSetListener, OnTimeSetListener{
28
29 private TextView dateTimeTextView;
30 public static final String EXTRA_EVENT = "event";
31 private static Event event=new Event();
32
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);
36 event=e;
37 c.startActivity(i);
38 }
39
40
41 @Override
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);
48
49 final EditText title = (EditText) findViewById(R.id.eventtitle);
50 title.requestFocus();
51 title.setText(event.title);
52
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());
60
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);
70 }
71
72 @Override
73 public boolean onCreateOptionsMenu(final Menu menu) {
74 final MenuInflater inflater = getMenuInflater();
75 inflater.inflate(R.menu.add_event, menu);
76 return true;
77 }
78
79 public void createCalendar() {
80 Uri calUri,result;
81 ContentValues cv;
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)
98 .build();
99
100 this.getContentResolver().delete(calUri, CalendarContract.Calendars.ACCOUNT_NAME + " = 'unical'", new String[0]);
101 this.getContentResolver().insert(calUri, cv);
102 Event.calendarCreated=true;
103 }
104
105 @Override
106 public boolean onOptionsItemSelected(final MenuItem item) {
107 switch (item.getItemId()) {
108 case R.id.cancel:
109 finish();
110 return true;
111 case R.id.save:
112 boolean edit=false;
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();
117
118 try {
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) {
124 e.printStackTrace();
125 }
126
127 event.description=((EditText) findViewById(R.id.description)).getText().toString();
128
129 if(!Event.calendarCreated)createCalendar();
130 if(event.calendarID!=Event.getUnicalId(this)) {
131 edit=false;
132 event.delete(this);
133 }
134 event.calendarID=Event.getUnicalId(this);
135 if(!edit) event.insert(this);
136 else event.edit(this);
137
138 Toast toast = Toast.makeText(getApplicationContext(),"Event saved!",Toast.LENGTH_LONG);
139 toast.show();
140 finish();
141 return true;
142 default:
143 return false;
144 }
145 }
146
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");
158 } else {
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");
166 }
167 }
168
169 @Override
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));
174 }
175
176 @Override
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)));
183 }
184 }
This page took 0.026623 seconds and 4 git commands to generate.