bug 272732

rev9 - fixes stuff so the ok button works with events and todos
r=dmose


git-svn-id: svn://10.0.0.236/trunk@167284 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mattwillis%gmail.com 2005-01-05 02:31:47 +00:00
parent bdc3baba79
commit a79dedacb6
2 changed files with 64 additions and 57 deletions

View File

@ -122,7 +122,7 @@ function loadCalendarEventDialog()
// XXX I want to get rid of the use of gEvent
gEvent = args.calendarEvent;
event = args.calendarEvent;
var event = args.calendarEvent;
// Set up dialog as event or todo
var componentType;
@ -254,11 +254,11 @@ function loadCalendarEventDialog()
var priorityInteger = parseInt( event.priority );
if( priorityInteger == 0 ) {
menuListSelectItem("priority-levels", "0"); // not defined
} else if( priorityInteger >= 1 || priorityInteger <= 4 ) {
} else if( priorityInteger >= 1 && priorityInteger <= 4 ) {
menuListSelectItem("priority-levels", "1"); // high priority
} else if( priorityInteger == 5 ) {
menuListSelectItem("priority-levels", "5"); // medium priority
} else if( priorityInteger >= 6 || priorityInteger <= 9 ) {
} else if( priorityInteger >= 6 && priorityInteger <= 9 ) {
menuListSelectItem("priority-levels", "9"); // low priority
} else {
dump("loadCalendarEventDialog: ERROR! Event has invalid priority: " + event.priority +"\n");
@ -266,9 +266,7 @@ function loadCalendarEventDialog()
// ALARMS ------------------------------------------------------------
// XXX Need to handle todo "before task starts/before task is due"
if (!event.hasAlarm) {
// If the event has no alarm
menuListSelectItem("alarm-type", "none");
} else {
setFieldValue("alarm-length-field", event.getProperty("alarmLength"));
@ -422,7 +420,7 @@ function loadCalendarEventDialog()
document.getElementById( "categories-field" ).appendItem(categoriesList[i], categoriesList[i]);
}
document.getElementById( "categories-field" ).selectedIndex = -1;
setFieldValue( "categories-field", gEvent.categories );
menuListSelectItem("categories-field", event.getProperty("categories") );
/* XXX
@ -477,6 +475,7 @@ function loadCalendarEventDialog()
opener.setCursor( "auto" );
self.focus();
return;
}
@ -486,24 +485,27 @@ function loadCalendarEventDialog()
function onOKCommand()
{
event = gEvent;
var event = gEvent;
// if this event isn't mutable, we need to clone it like a sheep
var originalEvent = event;
// get values from the form and put them into the event
var componentType;
// calIEvent properties
if (isEvent(event)) {
if (!event.isMutable)
// I will cut vlad for making me do this QI
componentType = "event";
if (!event.isMutable) // I will cut vlad for making me do this QI
event = originalEvent.clone().QueryInterface(Components.interfaces.calIEvent);
event.startDate.jsDate = gStartDate;
event.endDate.jsDate = gEndDate;
event.isAllDay = getFieldValue( "all-day-event-checkbox", "checked" );
event.isAllDay = getFieldValue("all-day-event-checkbox", "checked");
event.status = getFieldValue("event-status-field");
} else if (isToDo(event)) {
if (!event.isMutable)
// I will cut vlad for making me do this QI
componentType = "todo";
if (!event.isMutable) // I will cut vlad for making me do this QI
event = originalEvent.clone().QueryInterface(Components.interfaces.calITodo);
dump ("this todo is: " + event + "\n");
@ -518,13 +520,25 @@ function onOKCommand()
} else {
event.dueDate.reset();
}
event.status = getFieldValue("todo-status-field");
event.percentComplete = getFieldValue("percent-complete-menulist");
}
// XXX should do an idiot check here to see if duration is negative
// calIItemBase properties
event.title = getFieldValue( "title-field" );
event.title = getFieldValue("title-field");
event.priority = getFieldValue("priority-levels");
// other properties
event.setProperty("categories", getFieldValue("categories-field"));
event.setProperty("description", getFieldValue("description-field"));
event.setProperty("location", getFieldValue("location-field"));
event.setProperty("url", getFieldValue("uri-field"));
// PRIVACY -----------------------------------------------------------
var privacyValue = getFieldValue( "privacy-menulist" );
switch(privacyValue) {
case "PUBLIC":
@ -538,13 +552,23 @@ function onOKCommand()
break;
}
if (getFieldValue( "alarm-type" ) != "" && getFieldValue( "alarm-type" ) != "none") {
event.hasAlarm == 1
alarmLength = getFieldValue( "alarm-length-field" );
alarmUnits = getFieldValue( "alarm-length-units", "value" );
// ALARMS ------------------------------------------------------------
var alarmType = getFieldValue( "alarm-type" );
if (alarmType != "" && alarmType != "none") {
event.hasAlarm = true;
event.setProperty("alarmLength", getFieldValue("alarm-length-field"));
event.setProperty("alarmUnits", getFieldValue("alarm-length-units"));
event.setProperty("alarmRelated", getFieldValue("alarm-trigger-relation"));
//event.alarmTime = ...
}
if (alarmType == "email" )
event.setProperty("alarmEmailAddress", getFieldValue("alarm-email-field"));
else
event.deleteProperty("alarmEmailAddress");
// RECURRENCE --------------------------------------------------------
event.recurrenceInfo = null;
if (getFieldValue("repeat-checkbox", "checked")) {
@ -554,14 +578,14 @@ function onOKCommand()
var recRule = new calRecurrenceRule();
recurUnits = getFieldValue("repeat-length-units", "value");
recurUnits = getFieldValue("repeat-length-units");
recurInterval = getFieldValue("repeat-length-field");
if (getFieldValue("repeat-forever-radio", "selected")) {
recRule.count = -1;
}
else if (getFieldValue("repeat-numberoftimes-radio", "selected")) {
recRule.count = Math.max(1, getFieldValue("repeat-numberoftimes-textbox"))
recRule.count = Math.max(1, getFieldValue("repeat-numberoftimes-textbox"));
}
else if (getFieldValue("repeat-until-radio", "selected")) {
var recurEndDate = document.getElementById("repeat-end-date-picker").value;
@ -581,7 +605,8 @@ function onOKCommand()
"years" : "YEARLY" };
recRule.type = typeMap[recurUnits];
// XXX need to do extra work for weeks here and for months incase extra things are checked
// XXX need to do extra work for weeks here and for months incase
// extra things are checked
recurrenceInfo.appendRecurrenceItem(recRule);
@ -606,30 +631,24 @@ function onOKCommand()
// Finally, set the recurrenceInfo
event.recurrenceInfo = recurrenceInfo;
}
debug("RECURRENCE INFO ON EVENT: " + event.recurrenceInfo );
// other properties
event.setProperty('categories', getFieldValue("categories-field", "value"));
event.setProperty('description', getFieldValue("description-field"));
event.setProperty('location', getFieldValue("location-field"));
event.setProperty('url', getFieldValue("uri-field"));
if (getFieldValue("alarm-type") != "none" )
event.setProperty("alarmRelated", getFieldValue("alarm-trigger-relation", "value"));
if (getFieldValue("alarm-type") == "email" )
event.setProperty('alarmEmailAddress', getFieldValue("alarm-email-field", "value"));
else
event.deleteProperty('alarmEmailAddress');
// INVITEES ----------------------------------------------------------
event.removeAllAttendees();
var attendeeList = document.getElementById("bucketBody").getElementsByTagName("treecell");
for (i = 0; i < attendeeList.length; i++) {
label = attendeeList[i].getAttribute("label");
attendee = createAttendee();
attendee.id = label;
event.addAttendee(attendee);
}
if (getFieldValue("invite-checkbox", "checked"))
event.setProperty('inviteEmailAddress', getFieldValue("invite-email-field", "value"));
event.setProperty('inviteEmailAddress', getFieldValue("invite-email-field"));
else
event.deleteProperty('inviteEmailAddress');
event.priority = getFieldValue( "priority-levels", "value" );
/* File attachments */
/* XXX this could will work when attachments are supported by calItemBase
@ -645,15 +664,6 @@ function onOKCommand()
}
*/
/* wire up attendees */
event.removeAllAttendees();
attendeeList = document.getElementById("bucketBody").getElementsByTagName("treecell");
for (var i = 0; i < attendeeList.length; i++) {
label = attendeeList[i].getAttribute("label");
attendee = createAttendee();
attendee.id = label;
event.addAttendee(attendee);
}
var Server = getFieldValue( "server-field" );
@ -1810,19 +1820,19 @@ function processToDoStatus(status)
switch(status) {
case "":
case "None":
menuListSelectItem("component-type", "None");
menuListSelectItem("todo-status-field", "None");
disableElement( "completed-date-picker" );
disableElement( "percent-complete-menulist" );
disableElement( "percent-complete-label" );
break;
case "CANCELLED":
menuListSelectItem("component-type", "CANCELLED");
menuListSelectItem("todo-status-field", "CANCELLED");
disableElement( "completed-date-picker" );
disableElement( "percent-complete-menulist" );
disableElement( "percent-complete-label" );
break;
case "COMPLETED":
menuListSelectItem("component-type", "COMPLETED");
menuListSelectItem("todo-status-field", "COMPLETED");
enableElement( "completed-date-picker" );
enableElement( "percent-complete-menulist" );
enableElement( "percent-complete-label" );
@ -1830,13 +1840,13 @@ function processToDoStatus(status)
setFieldValue( "percent-complete-menulist", "100" );
break;
case "IN-PROCESS":
menuListSelectItem("component-type", "IN-PROCESS");
menuListSelectItem("todo-status-field", "IN-PROCESS");
enableElement( "completed-date-picker" );
enableElement( "percent-complete-menulist" );
enableElement( "percent-complete-label" );
break;
case "NEEDS-ACTION":
menuListSelectItem("component-type", "NEEDS-ACTION");
menuListSelectItem("todo-status-field", "NEEDS-ACTION");
enableElement( "percent-complete-menulist" );
enableElement( "percent-complete-label" );
break;

View File

@ -157,7 +157,7 @@
<textbox id="description-field"
multiline="true"
rows="1"
cols="60"
cols="65"
flex="1" />
</row>
<row align="center">
@ -283,7 +283,6 @@
<hbox flex="1">
<checkbox id="start-checkbox"
oncommand="onDateTimeCheckbox(this, 'start-datetime')"
persist="checked"
hidden-controller="todo"
hidden="true"/>
<datetimepicker id="start-datetime"
@ -294,7 +293,6 @@
<checkbox id="all-day-event-checkbox"
label="All Day"
oncommand="commandAllDay()"
persist="checked"
hidden-controller="event"
hidden="true"/>
<!-- XXX localize &newevent.alldayevent.label; -->
@ -316,7 +314,6 @@
<hbox flex="1">
<checkbox id="due-checkbox"
oncommand="onDateTimeCheckbox(this, 'due-datetime')"
persist="checked"
hidden-controller="todo"
hidden="true"/>
<datetimepicker id="due-datetime"
@ -455,15 +452,15 @@
labelnumber="label2">
<menupopup>
<menuitem label="minutes"
label1="minute"
label1="minute "
label2="minutes"
value="minutes"/>
<menuitem label="hours"
label1="hour"
label1="hour "
label2="hours"
value="hours"/>
<menuitem label="days"
label1="day"
label1="day "
label2="days"
value="days"/>
<!-- XXX original code for fixing localization