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:
jminta%gmail.com
2006-03-23 03:56:13 +00:00
parent febfae1f78
commit 6415bbc075
6 changed files with 79 additions and 36 deletions

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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);

View File

@@ -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();

View File

@@ -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);
}
}
}

View File

@@ -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();