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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user