From 6415bbc075d36373e375ec7f17f477a6bcc78a5d Mon Sep 17 00:00:00 2001 From: "jminta%gmail.com" Date: Thu, 23 Mar 2006 03:56:13 +0000 Subject: [PATCH] Bug 329855 Add Lightning support for default alarm settings for new events/tasks. patch by ssitter, r=jminta git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_8_BRANCH@192833 18797224-902f-48f8-a5cc-f745e15eee43 --- .../base/content/calendar-item-editing.js | 4 ++ .../lightning/content/calendar-management.js | 2 + .../calendar/lightning/content/lightning.js | 13 +++++ .../calendar/resources/content/calendar.js | 38 +------------ .../resources/content/calendarUtils.js | 56 +++++++++++++++++++ .../resources/content/calendarWindow.js | 2 + 6 files changed, 79 insertions(+), 36 deletions(-) diff --git a/mozilla/calendar/base/content/calendar-item-editing.js b/mozilla/calendar/base/content/calendar-item-editing.js index 987e7d043b1..76b96e91b97 100644 --- a/mozilla/calendar/base/content/calendar-item-editing.js +++ b/mozilla/calendar/base/content/calendar-item-editing.js @@ -95,6 +95,8 @@ function createEventWithDialog(calendar, startDate, endDate, summary, event) if (summary) event.title = summary; + setDefaultAlarmValues(event); + openEventDialog(event, calendar, "new", onNewEvent); } @@ -127,6 +129,8 @@ function createTodoWithDialog(calendar, dueDate, summary, todo) calendar.addItem(item, null); } + setDefaultAlarmValues(todo); + openEventDialog(todo, calendar, "new", onNewItem); } diff --git a/mozilla/calendar/lightning/content/calendar-management.js b/mozilla/calendar/lightning/content/calendar-management.js index 29734847de5..08f117dd17a 100644 --- a/mozilla/calendar/lightning/content/calendar-management.js +++ b/mozilla/calendar/lightning/content/calendar-management.js @@ -194,10 +194,12 @@ var ltnCalendarViewController = { .getService(Components.interfaces.nsIStringBundleService); var props = sbs.createBundle("chrome://calendar/locale/calendar.properties"); event.title = props.GetStringFromName("newEvent"); + setDefaultAlarmValues(event); aCalendar.addItem(event, null); } else if (aStartTime && aStartTime.isDate) { var event = createEvent(); event.startDate = aStartTime; + setDefaultAlarmValues(event); aCalendar.addItem(event, null); } else { // default pop up the dialog diff --git a/mozilla/calendar/lightning/content/lightning.js b/mozilla/calendar/lightning/content/lightning.js index 5d34898eb3b..a6a43c21bd1 100644 --- a/mozilla/calendar/lightning/content/lightning.js +++ b/mozilla/calendar/lightning/content/lightning.js @@ -36,9 +36,22 @@ // This file contains all of the default preference values for Lightning +// alarm settings pref("calendar.alarms.playsound", false); pref("calendar.alarms.soundURL", ""); pref("calendar.alarms.defaultsnoozelength", 5); + +// default alarm settings for new event +pref("calendar.alarms.onforevents", 0); +pref("calendar.alarms.eventalarmlen", 15); +pref("calendar.alarms.eventalarmunit", "minutes"); + +// default alarm settings for new task +pref("calendar.alarms.onfortodos", 0); +pref("calendar.alarms.todoalarmlen", 15); +pref("calendar.alarms.todoalarmunit", "minutes"); + +// start and end hour for day and week view pref("calendar.view.defaultstarthour", 8); pref("calendar.view.defaultendhour", 17); diff --git a/mozilla/calendar/resources/content/calendar.js b/mozilla/calendar/resources/content/calendar.js index 6ba506c5e40..cac1889f81a 100644 --- a/mozilla/calendar/resources/content/calendar.js +++ b/mozilla/calendar/resources/content/calendar.js @@ -283,22 +283,7 @@ function newEvent(startDate, endDate, allDay) calendarEvent.endDate.jsDate = endDate - var prefService = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefService); - var alarmsBranch = prefService.getBranch("calendar.alarms."); - - if (alarmsBranch.getIntPref("onforevents") == 1) { - var alarmOffset = Components.classes["@mozilla.org/calendar/duration;1"] - .createInstance(Components.interfaces.calIDuration); - try { - var units = alarmsBranch.getCharPref("eventalarmunit"); - alarmOffset[units] = alarmsBranch.getIntPref("eventalarmlen"); - } catch(ex) { - alarmOffset.minutes = 15; - } - calendarEvent.alarmOffset = alarmOffset; - calendarEvent.alarmRelated = calendarEvent.ALARM_RELATED_START; - } + setDefaultAlarmValues(calendarEvent); if (allDay) calendarEvent.startDate.isDate = true; @@ -324,26 +309,7 @@ function newToDo ( startDate, dueDate ) if (dueDate) calendarToDo.dueDate = jsDateToDateTime(startDate); - var prefService = Components.classes["@mozilla.org/preferences-service;1"] - .getService(Components.interfaces.nsIPrefService); - var alarmsBranch = prefService.getBranch("calendar.alarms."); - - if (alarmsBranch.getIntPref("onfortodos") == 1) { - // You can't have an alarm if the entryDate doesn't exist. - if (!calendarToDo.entryDate) - calendarToDo.entryDate = jsDateToDateTime( - gCalendarWindow.currentView.getNewEventDate()); - var alarmOffset = Components.classes["@mozilla.org/calendar/duration;1"] - .createInstance(Components.interfaces.calIDuration); - try { - var units = alarmsBranch.getCharPref("todoalarmunit"); - alarmOffset[units] = alarmsBranch.getIntPref("todoalarmlen"); - } catch(ex) { - alarmOffset.minutes = 15; - } - calendarToDo.alarmOffset = alarmOffset; - calendarToDo.alarmRelated = calendarToDo.ALARM_RELATED_START; - } + setDefaultAlarmValues(calendarToDo); var calendar = getSelectedCalendarOrNull(); diff --git a/mozilla/calendar/resources/content/calendarUtils.js b/mozilla/calendar/resources/content/calendarUtils.js index c5f1ff02c24..153029cab43 100644 --- a/mozilla/calendar/resources/content/calendarUtils.js +++ b/mozilla/calendar/resources/content/calendarUtils.js @@ -373,3 +373,59 @@ function getContrastingTextColor(bgColor) return "black"; } + +/** + * Read default alarm settings from user preferences and apply them to + * the event/todo passed in. + * + * @param aItem The event or todo the settings should be applied to. + */ +function setDefaultAlarmValues(aItem) +{ + var prefService = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefService); + var alarmsBranch = prefService.getBranch("calendar.alarms."); + + if (isEvent(aItem)) { + try { + if (alarmsBranch.getIntPref("onforevents") == 1) { + var alarmOffset = Components.classes["@mozilla.org/calendar/duration;1"] + .createInstance(Components.interfaces.calIDuration); + try { + var units = alarmsBranch.getCharPref("eventalarmunit"); + alarmOffset[units] = alarmsBranch.getIntPref("eventalarmlen"); + } catch(ex) { + alarmOffset.minutes = 15; + } + aItem.alarmOffset = alarmOffset; + aItem.alarmRelated = aItem.ALARM_RELATED_START; + } + } catch (ex) { + Components.utils.reportError( + "Failed to apply default alarm settings to event: " + ex); + } + } else if (isToDo(aItem)) { + try { + if (alarmsBranch.getIntPref("onfortodos") == 1) { + // You can't have an alarm if the entryDate doesn't exist. + if (!aItem.entryDate) { + // XXX We should use the selected day from view instead + aItem.entryDate = now(); + } + var alarmOffset = Components.classes["@mozilla.org/calendar/duration;1"] + .createInstance(Components.interfaces.calIDuration); + try { + var units = alarmsBranch.getCharPref("todoalarmunit"); + alarmOffset[units] = alarmsBranch.getIntPref("todoalarmlen"); + } catch(ex) { + alarmOffset.minutes = 15; + } + aItem.alarmOffset = alarmOffset; + aItem.alarmRelated = aItem.ALARM_RELATED_START; + } + } catch (ex) { + Components.utils.reportError( + "Failed to apply default alarm settings to task: " + ex); + } + } +} diff --git a/mozilla/calendar/resources/content/calendarWindow.js b/mozilla/calendar/resources/content/calendarWindow.js index 5b8ad1d0b5b..5a613d4e1f8 100644 --- a/mozilla/calendar/resources/content/calendarWindow.js +++ b/mozilla/calendar/resources/content/calendarWindow.js @@ -59,10 +59,12 @@ calViewController.prototype.createNewEvent = function (aCalendar, aStartTime, aE .getService(Components.interfaces.nsIStringBundleService); var props = sbs.createBundle("chrome://calendar/locale/calendar.properties"); event.title = props.GetStringFromName("newEvent"); + setDefaultAlarmValues(event); doTransaction('add', event, aCalendar, null, null); } else if (aStartTime && aStartTime.isDate) { var event = createEvent(); event.startDate = aStartTime; + setDefaultAlarmValues(event); doTransaction('add', event, aCalendar, null, null); } else { newEvent();