From: <es...@us...> - 2011-09-26 22:45:02
|
Revision: 459 http://columba.svn.sourceforge.net/columba/?rev=459&view=rev Author: eschman Date: 2011-09-26 22:44:56 +0000 (Mon, 26 Sep 2011) Log Message: ----------- [bug] make sure the end of an event does not occur before the start fix a bug in allday events because seconds must also be 0 for allday events do not show 00:00 of the next day but 24:00 of the day before correctly update the view again after modifying an event Modified Paths: -------------- columba/trunk/calendar/src/main/java/org/columba/calendar/store/StoreEventDelegator.java columba/trunk/calendar/src/main/java/org/columba/calendar/ui/base/CalendarHelper.java columba/trunk/calendar/src/main/java/org/columba/calendar/ui/dialog/EditEventDialog.java Modified: columba/trunk/calendar/src/main/java/org/columba/calendar/store/StoreEventDelegator.java =================================================================== --- columba/trunk/calendar/src/main/java/org/columba/calendar/store/StoreEventDelegator.java 2011-07-17 04:11:18 UTC (rev 458) +++ columba/trunk/calendar/src/main/java/org/columba/calendar/store/StoreEventDelegator.java 2011-09-26 22:44:56 UTC (rev 459) @@ -38,7 +38,7 @@ import com.miginfocom.calendar.activity.Activity; import com.miginfocom.calendar.activity.ActivityDepository; -import com.miginfocom.calendar.category.CategoryStructureEvent; +import com.miginfocom.util.dates.TimeSpanListEvent; /** * StoreEventDelegator class @@ -121,7 +121,7 @@ .createActivity((IEventInfo) model, store); ActivityDepository.getInstance().addBrokedActivity(act, - this, CategoryStructureEvent.ADDED_CREATED); + this, TimeSpanListEvent.ADDED_CREATED); } } catch (StoreException e) { // TODO Auto-generated catch block @@ -156,7 +156,7 @@ // we only update changes for events currently if (model.getType() == IComponent.TYPE.EVENT) { - String activityId = model.getId(); + String activityId = CalendarHelper.getActivityId(model, store); // remove old activity ActivityDepository.getInstance() .removeBrokedActivityById(activityId); @@ -165,7 +165,7 @@ Activity act = CalendarHelper .createActivity((IEventInfo) model, store); ActivityDepository.getInstance().addBrokedActivity(act, - this, CategoryStructureEvent.ADDED_CREATED); + this, TimeSpanListEvent.ADDED_CREATED); } } catch (StoreException e) { // TODO Auto-generated catch block Modified: columba/trunk/calendar/src/main/java/org/columba/calendar/ui/base/CalendarHelper.java =================================================================== --- columba/trunk/calendar/src/main/java/org/columba/calendar/ui/base/CalendarHelper.java 2011-07-17 04:11:18 UTC (rev 458) +++ columba/trunk/calendar/src/main/java/org/columba/calendar/ui/base/CalendarHelper.java 2011-09-26 22:44:56 UTC (rev 459) @@ -19,6 +19,7 @@ import org.columba.calendar.model.DateRange; import org.columba.calendar.model.Recurrence; +import org.columba.calendar.model.api.IComponentInfo; import org.columba.calendar.model.api.IEvent; import org.columba.calendar.model.api.IEventInfo; import org.columba.calendar.model.api.IRecurrence; @@ -32,6 +33,10 @@ public class CalendarHelper { + public static String getActivityId(IComponentInfo model, ICalendarStore store) { + return store.getId() + ':' + model.getId(); + } + public static Activity createActivity(IEventInfo model, ICalendarStore store) { long startMillis = model.getEvent().getDtStart().getTimeInMillis(); @@ -41,7 +46,7 @@ false, null, null); // A recurring event - Activity act = new DefaultActivity(dr, store.getId() + ':' + model.getId()); + Activity act = new DefaultActivity(dr, getActivityId(model, store)); act.setSummary(model.getEvent().getSummary()); act.setLocation(model.getEvent().getLocation()); act.setDescription(model.getEvent().getDescription()); Modified: columba/trunk/calendar/src/main/java/org/columba/calendar/ui/dialog/EditEventDialog.java =================================================================== --- columba/trunk/calendar/src/main/java/org/columba/calendar/ui/dialog/EditEventDialog.java 2011-07-17 04:11:18 UTC (rev 458) +++ columba/trunk/calendar/src/main/java/org/columba/calendar/ui/dialog/EditEventDialog.java 2011-09-26 22:44:56 UTC (rev 459) @@ -371,24 +371,29 @@ locationTextField.setText(model.getEvent().getLocation()); categoriesTextField.setText(model.getEvent().getCategories()); descriptionTextArea.setText(model.getEvent().getDescription()); - + + Calendar start = model.getEvent().getDtStart(); + startDayDatePicker.setDate(start); + startTimePicker.setTime(start.get(Calendar.HOUR_OF_DAY), start.get(Calendar.MINUTE)); + + Calendar end = model.getEvent().getDtEnd(); if (model.getEvent().isAllDayEvent()) { + // use 24:00 on the previous day instead of 00:00 on the next day + endTimePicker.setTime(24, 0); + end.roll(Calendar.DAY_OF_MONTH, false); + // disable time pickers startTimePicker.setEnabled(false); endTimePicker.setEnabled(false); } else { + endTimePicker.setTime(end.get(Calendar.HOUR_OF_DAY), end.get(Calendar.MINUTE)); + // enable time pickers startTimePicker.setEnabled(true); endTimePicker.setEnabled(true); } + endDayDatePicker.setDate(end); - Calendar start = model.getEvent().getDtStart(); - startDayDatePicker.setDate(start); - startTimePicker.setTime(start.get(Calendar.HOUR_OF_DAY), start.get(Calendar.MINUTE)); - Calendar end = model.getEvent().getDtEnd(); - endDayDatePicker.setDate(end); - endTimePicker.setTime(end.get(Calendar.HOUR_OF_DAY), end.get(Calendar.MINUTE)); - allDayCheckBox.setSelected(model.getEvent().isAllDayEvent()); ICalendarItem calendar = CalendarList.getInstance().get(model.getCalendar()); @@ -412,42 +417,44 @@ Calendar start = startDayDatePicker.getDate(); Calendar end = endDayDatePicker.getDate(); - int startHour = 0; - int startMinutes = 0; - int endHour = 0; - int endMinutes = 0; + start.set(Calendar.SECOND, 0); + start.set(Calendar.MILLISECOND, 0); + end.set(Calendar.SECOND, 0); + end.set(Calendar.MILLISECOND, 0); + + int rollfield; if (allDayCheckBox.isSelected()) { - // disable time pickers startTimePicker.setEnabled(false); endTimePicker.setEnabled(false); - startHour = 0; - startMinutes = 0; - start.set(Calendar.HOUR_OF_DAY, startHour); - start.set(Calendar.MINUTE, startMinutes); + start.set(Calendar.HOUR_OF_DAY, 0); + start.set(Calendar.MINUTE, 0); - endHour = 0; - endMinutes = 0; - end.set(Calendar.HOUR_OF_DAY, endHour); - end.set(Calendar.MINUTE, endMinutes); + end.set(Calendar.HOUR_OF_DAY, 24); + end.set(Calendar.MINUTE, 0); + rollfield = Calendar.DAY_OF_MONTH; } else { // enable time pickers startTimePicker.setEnabled(true); endTimePicker.setEnabled(true); - startHour = startTimePicker.getHour(); - startMinutes = startTimePicker.getMinutes(); - start.set(Calendar.HOUR_OF_DAY, startHour); - start.set(Calendar.MINUTE, startMinutes); + start.set(Calendar.HOUR_OF_DAY, startTimePicker.getHour()); + start.set(Calendar.MINUTE, startTimePicker.getMinutes()); - endHour = endTimePicker.getHour(); - endMinutes = endTimePicker.getMinutes(); - end.set(Calendar.HOUR_OF_DAY, endHour); - end.set(Calendar.MINUTE, endMinutes); + end.set(Calendar.HOUR_OF_DAY, endTimePicker.getHour()); + end.set(Calendar.MINUTE, endTimePicker.getHour()); + + rollfield = Calendar.HOUR_OF_DAY; } + + // make sure end occurs after start + if (end.compareTo(start) <= 0) { + end = (Calendar)start.clone(); + end.roll(rollfield, true); + } model.getEvent().setDtStart(start); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |