X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fro%2Fieval%2Funical%2FAddEventActivity.java;h=4c761d69c2f4730e69d605520ddcf56738cf4e1b;hb=1b1953ccc82e7c452c84b09e79e2d8dd434ec90c;hp=512b6895e786523fc597a19e88c6f6ddfc1cdc94;hpb=e4fb15ad7fab87f31ae9af7bcfe2d4f71c150125;p=unical.git diff --git a/src/ro/ieval/unical/AddEventActivity.java b/src/ro/ieval/unical/AddEventActivity.java index 512b689..4c761d6 100644 --- a/src/ro/ieval/unical/AddEventActivity.java +++ b/src/ro/ieval/unical/AddEventActivity.java @@ -1,5 +1,8 @@ package ro.ieval.unical; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Date; import java.util.GregorianCalendar; import android.app.ActionBar; @@ -7,20 +10,73 @@ import android.app.Activity; import android.app.DatePickerDialog.OnDateSetListener; import android.app.Fragment; import android.app.TimePickerDialog.OnTimeSetListener; +import android.content.ContentValues; import android.content.Context; import android.content.Intent; +import android.graphics.Color; +import android.net.Uri; import android.os.Bundle; +import android.provider.CalendarContract; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.*; -//TODO if i want to add a new event after i edit one the fields are being filled with the last event data - public final class AddEventActivity extends Activity implements OnDateSetListener, OnTimeSetListener{ + + private class OnCheckedChangeListener implements android.widget.CompoundButton.OnCheckedChangeListener{ + private final LinearLayout layout; + public OnCheckedChangeListener(final LinearLayout layout){ + this.layout=layout; + } + + private class OnItemSelectedListener implements android.widget.AdapterView.OnItemSelectedListener{ + private final View repeatCount; + private final View repeatUntil; + + public OnItemSelectedListener(final View repeatCount, final View repeatUntil) { + this.repeatCount=repeatCount; + this.repeatUntil=repeatUntil; + } + + @Override + public void onItemSelected(final AdapterView whatever, final View ignored, final int pos, final long id) { + switch(pos){ + case 0: + repeatCount.setVisibility(View.GONE); + repeatUntil.setVisibility(View.GONE); + break; + case 1: + repeatCount.setVisibility(View.GONE); + repeatUntil.setVisibility(View.VISIBLE); + break; + case 2: + repeatCount.setVisibility(View.VISIBLE); + repeatUntil.setVisibility(View.GONE); + break; + default: + } + } + + @Override public void onNothingSelected(final AdapterView arg0) { /* do nothing */ } + } + + @Override + public void onCheckedChanged(final CompoundButton buttonView, final boolean isChecked) { + if(isChecked) { + Utils.setEnabledRecursively(layout, true); + final Spinner repeatType = (Spinner) findViewById(R.id.repeat_type); + repeatType.setOnItemSelectedListener(new OnItemSelectedListener(findViewById(R.id.repeat_count),findViewById(R.id.repeat_until))); + }else { + Utils.setEnabledRecursively(layout, false); + } + } + } + private TextView dateTimeTextView; public static final String EXTRA_EVENT = "event"; + private Event event; public static void editEvent(final Context c, final Event e) { final Intent i = new Intent(c,AddEventActivity.class); @@ -33,38 +89,38 @@ public final class AddEventActivity extends Activity implements OnDateSetListene protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.add_event_title); - final Event event = getIntent().hasExtra(EXTRA_EVENT) ? (Event) getIntent().getParcelableExtra(EXTRA_EVENT) : new Event(); + event = getIntent().hasExtra(EXTRA_EVENT) ? (Event) getIntent().getParcelableExtra(EXTRA_EVENT) : new Event(); final ActionBar actionBar = getActionBar(); - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - final ActionBar.Tab t1 = actionBar.newTab().setText(this.getString(R.string.addevtab1)); - final ActionBar.Tab t2 = actionBar.newTab().setText(this.getString(R.string.addevtab2)); - final ActionBar.Tab t3 = actionBar.newTab().setText(this.getString(R.string.addevtab3)); - - final Fragment f1 = new TrivialFragment(); - final Bundle b1=new Bundle(); - b1.putInt(TrivialFragment.ARGUMENT_LAYOUT, R.layout.add_event_basic_tab); - b1.putParcelable(TrivialFragment.ARGUMENT_EVENT, event); - f1.setArguments(b1); - - final Fragment f2 = new TrivialFragment(); - final Bundle b2=new Bundle(); - b2.putInt(TrivialFragment.ARGUMENT_LAYOUT, R.layout.add_event_details_tab); - b2.putParcelable(TrivialFragment.ARGUMENT_EVENT, event); - f2.setArguments(b2); - - final Fragment f3 = new TrivialFragment(); - final Bundle b3=new Bundle(); - b3.putInt(TrivialFragment.ARGUMENT_LAYOUT, R.layout.add_event_other_tab); - b3.putParcelable(TrivialFragment.ARGUMENT_EVENT, event); - f3.setArguments(b3); - - t1.setTabListener(new AddEventTabListener(f1, event, 0)); - t2.setTabListener(new AddEventTabListener(f2, event, 1)); - t3.setTabListener(new AddEventTabListener(f3, event, 2)); - - actionBar.addTab(t1); - actionBar.addTab(t2); - actionBar.addTab(t3); + setContentView(R.layout.add_event); + + if(getIntent().hasExtra(EXTRA_EVENT)) { + final LinearLayout layout = (LinearLayout) findViewById(R.id.repeat_layout); + final Switch repeatSwitch = (Switch) findViewById(R.id.repeat_switch); + Utils.setEnabledRecursively(layout, false); + + repeatSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener(layout)); + + EditText title = (EditText) findViewById(R.id.eventtitle); + title.setText(event.title); + + TextView tstart = (TextView) findViewById(R.id.time_start); + TextView tend = (TextView) findViewById(R.id.time_end); + SimpleDateFormat sf=new SimpleDateFormat("HH:mm"); + Date d=new Date(event.dtstart); + tstart.setText(sf.format(d).toString()); + d.setTime(event.dtend); + tend.setText(sf.format(d).toString()); + + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); + TextView dstart = (TextView)findViewById(R.id.date_start); + TextView dend = (TextView)findViewById(R.id.date_end); + d.setTime(event.dtstart); + dstart.setText(sd.format(d).toString()); + d.setTime(event.dtend); + dend.setText(sd.format(d).toString()); + EditText description = (EditText) findViewById(R.id.description); + description.setText(event.description); + } } @Override @@ -74,6 +130,30 @@ public final class AddEventActivity extends Activity implements OnDateSetListene return true; } + public void createCalendar() { + Uri calUri,result; + ContentValues cv; + calUri = CalendarContract.Calendars.CONTENT_URI; + cv = new ContentValues(); + cv.put(CalendarContract.Calendars.ACCOUNT_NAME,"unical"); + cv.put(CalendarContract.Calendars.ACCOUNT_TYPE,CalendarContract.ACCOUNT_TYPE_LOCAL); + cv.put(CalendarContract.Calendars.NAME,"unical"); + cv.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, "Unical"); + cv.put(CalendarContract.Calendars.CALENDAR_COLOR, Color.BLACK); + cv.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER); + cv.put(CalendarContract.Calendars.OWNER_ACCOUNT, "unical"); + cv.put(CalendarContract.Calendars.VISIBLE, 1); + cv.put(CalendarContract.Calendars.SYNC_EVENTS, 1); + calUri = calUri.buildUpon() + .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") + .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, "unical") + .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL) + .build(); + + this.getContentResolver().insert(calUri, cv); + Event.calendarCreated=true; + } + @Override public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { @@ -81,7 +161,25 @@ public final class AddEventActivity extends Activity implements OnDateSetListene finish(); return true; case R.id.save: - //TODO Save event + + Event ev=new Event(); + ev.title=((EditText)findViewById(R.id.eventtitle)).getText().toString(); + String start=((TextView)findViewById(R.id.date_start)).getText().toString()+ " " +((TextView)findViewById(R.id.time_start)).getText().toString(); + String end=((TextView)findViewById(R.id.date_end)).getText().toString()+ " "+((TextView)findViewById(R.id.time_end)).getText().toString(); + + try { + Date s=new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(start); + Date e=new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(end); + ev.dtstart=s.getTime(); + ev.dtend=s.getTime(); + } catch (ParseException e) { + e.printStackTrace(); + } + + ev.description=((EditText) findViewById(R.id.description)).getText().toString(); + + if(!Event.calendarCreated) createCalendar(); + Toast toast = Toast.makeText(getApplicationContext(),"Event saved!",Toast.LENGTH_LONG); toast.show(); finish();