adding support for editing all occurrences vs editing a single occurence

This commit is contained in:
pavlov%pavlov.net 2005-06-13 22:49:03 +00:00
Родитель 64eefc8c3a
Коммит 8ded529181
2 изменённых файлов: 60 добавлений и 17 удалений

Просмотреть файл

@ -56,6 +56,9 @@ function onLoad()
loadDialog(); loadDialog();
// update edit type (all occurrences vs single occurence)
updateEditing();
// update datetime pickers // update datetime pickers
updateAllDay(); updateAllDay();
@ -78,11 +81,10 @@ function onAccept()
var originalEvent = window.calendarEvent; var originalEvent = window.calendarEvent;
var event = originalEvent; var event = originalEvent;
if (!event.isMutable) { if (document.getElementById("event-edit-type").selectedItem.getAttribute("value") == "all")
event = event.clone(); event = event.parentItem;
} else {
dump ("#### modifyEvent is mutable already?\n"); event = (event.isMutable) ? event : event.clone();
}
saveDialog(event); saveDialog(event);
@ -100,7 +102,7 @@ function onCancel()
function loadDialog() function loadDialog()
{ {
const kDefaultTimezone = calendarDefaultTimezone(); var kDefaultTimezone = calendarDefaultTimezone();
var event = window.calendarEvent; var event = window.calendarEvent;
@ -145,12 +147,12 @@ function loadDialog()
* - Setting recurrence on the item * - Setting recurrence on the item
* - changing the calendar * - changing the calendar
*/ */
if (event.parentItem != event) { if (event.parentItem != event)
setElementValue("event-recurrence", "true", "disabled"); setElementValue("event-edit-type", "single");
setElementValue("set-recurrence", "true", "disabled"); else {
setElementValue("event-calendar", "true", "disabled"); setElementValue("event-edit-type", "true", "disabled");
} else if (event.recurrenceInfo) { if (event.recurrenceInfo)
setElementValue("event-recurrence", "true", "checked"); setElementValue("event-recurrence", "true", "checked");
} }
/* alarms */ /* alarms */
@ -189,9 +191,11 @@ function saveDialog(event)
var attendees = getElementValue("event-attendees"); var attendees = getElementValue("event-attendees");
if (attendees != "") { if (attendees != "") {
for each (var addr in attendees.split(",")) { for each (var addr in attendees.split(",")) {
var attendee = createAttendee(); if (addr != "") {
attendee.id = "mailto:" + addr; var attendee = createAttendee();
event.addAttendee(attendee); attendee.id = "mailto:" + addr;
event.addAttendee(attendee);
}
} }
} }
@ -244,6 +248,36 @@ function saveDialog(event)
event.alarmTime = alarmTime; event.alarmTime = alarmTime;
} }
//dump(event.icalString + "\n");
}
function updateEditing()
{
var event = window.calendarEvent;
var handleRecurrence = (event.parentItem != event);
if (handleRecurrence) {
var editType = document.getElementById("event-edit-type").selectedItem.getAttribute("value");
switch (editType) {
case "single":
setElementValue("event-recurrence", "true", "disabled");
setElementValue("set-recurrence", "true", "disabled");
setElementValue("event-calendar", "true", "disabled");
setElementValue("event-recurrence", false, "checked");
break;
case "all":
if (event.parentItem.recurrenceInfo || window.recurrenceInfo) {
setElementValue("event-recurrence", "true", "checked");
setElementValue("event-recurrence", false, "disabled");
setElementValue("set-recurrence", false, "disabled");
setElementValue("event-calendar", false, "disabled");
}
break;
}
}
} }
@ -310,8 +344,8 @@ function updateAlarm()
function editRecurrence() function editRecurrence()
{ {
var args = new Object(); var args = new Object();
args.calendarEvent = window.calendarEvent; args.calendarEvent = window.calendarEvent.parentItem;
args.recurrenceInfo = (window.recurrenceInfo) ? window.recurrenceInfo : window.calendarEvent.recurrenceInfo; args.recurrenceInfo = (window.recurrenceInfo) ? window.recurrenceInfo : args.calendarEvent.recurrenceInfo;
var savedWindow = window; var savedWindow = window;
args.onOk = function(recurrenceInfo) { args.onOk = function(recurrenceInfo) {

Просмотреть файл

@ -70,6 +70,15 @@
<rows> <rows>
<rows equalsize="always"> <rows equalsize="always">
<row id="row-edit-occurrence" align="center">
<label value="Edit" class="label"/>
<menulist id="event-edit-type" oncommand="updateEditing()">
<menupopup>
<menuitem label="This occurrence" value="single"/>
<menuitem label="All occurrences" value="all" selected="true"/>
</menupopup>
</menulist>
</row>
<row align="center"> <row align="center">
<label value="Title" class="label"/> <label value="Title" class="label"/>
<textbox id="event-title"/> <textbox id="event-title"/>