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
parent 64eefc8c3a
commit 8ded529181
2 changed files with 60 additions and 17 deletions

View File

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

View File

@ -70,6 +70,15 @@
<rows>
<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">
<label value="Title" class="label"/>
<textbox id="event-title"/>