diff --git a/calendar/resources/content/calendar.js b/calendar/resources/content/calendar.js index 088e247ed54a..7520445953f5 100644 --- a/calendar/resources/content/calendar.js +++ b/calendar/resources/content/calendar.js @@ -174,8 +174,6 @@ function calendarInit() // XXX remove this eventually gICalLib = new Object(); - gCalendar = createCalendar(); - // set up the CalendarWindow instance gCalendarWindow = new CalendarWindow(); @@ -739,32 +737,17 @@ function makeURL(uriString) return ioservice.newURI(uriString, null, null); } -function createCalendar() +function getCalendar() { - var prefobj = prefService.getBranch("calendar."); - var caltype = getCharPref(prefobj, "default-calendar.type", "memory"); - var calendar = Components.classes["@mozilla.org/calendar/calendar;1?type=" + caltype].getService(Components.interfaces.calICalendar); - if (calendar.uri || caltype == "memory") - return calendar; - - var uri = null; - if (caltype == "caldav" || caltype == "ics") { - var uriString = getCharPref(prefobj, "default-calendar.uri", null); - uri = makeURL(uriString); - } else if (caltype == "storage") { - var pathString = getCharPref(prefobj, "default-calendar.path", null); - var dbFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); - dbFile.initWithPath(pathString); - var ioservice = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService); - uri = ioservice.newFileURI(dbFile); - } - - if (!uri) { - throw "Calendar type " + caltype + - " requires that default-calendar.uri pref be set!"; - } - calendar.uri = uri; - return calendar; + var calendarList = document.getElementById("list-calendars-listbox"); + try { + var selectedCalendar = calendarList.currentItem.calendar; + return selectedCalendar; + } catch(e) { + newCalendarDialog(); + var selectedCalendar = calendarList.currentItem.calendar; + return selectedCalendar; + } } function isEvent(aObject) @@ -1032,11 +1015,13 @@ function saveItem( calendarEvent, Server, functionToRun, originalEvent ) { dump(functionToRun + " " + calendarEvent.title + "\n"); + var calendar = getCalendar(); + if (functionToRun == 'addEvent') - gCalendar.addItem(calendarEvent, null); + calendar.addItem(calendarEvent, null); else if (functionToRun == 'modifyEvent') - gCalendar.modifyItem(calendarEvent, null); + calendar.modifyItem(calendarEvent, null); @@ -1133,7 +1118,7 @@ function deleteItems( SelectedItems, DoNotConfirm ) } } - ccalendar = createCalendar(); + ccalendar = getCalendar(); for (i in SelectedItems) { ccalendar.deleteItem(SelectedItems[i], null); @@ -1388,16 +1373,16 @@ function print() args.selectedDate=gNewDateVariable = gCalendarWindow.getSelectedDate(); var Offset = getIntPref(gCalendarWindow.calendarPreferences.calendarPref, - "week.start", - gCalendarBundle.getString("defaultWeekStart" ) ); + "week.start", + gCalendarBundle.getString("defaultWeekStart" ) ); var WeeksInView = getIntPref(gCalendarWindow.calendarPreferences.calendarPref, - "weeks.inview", - gCalendarBundle.getString("defaultWeeksInView" ) ); + "weeks.inview", + gCalendarBundle.getString("defaultWeeksInView" ) ); WeeksInView = ( WeeksInView >= 6 ) ? 6 : WeeksInView ; var PreviousWeeksInView = getIntPref(gCalendarWindow.calendarPreferences.calendarPref, - "previousweeks.inview", - gCalendarBundle.getString("defaultPreviousWeeksInView" ) ); + "previousweeks.inview", + gCalendarBundle.getString("defaultPreviousWeeksInView" ) ); PreviousWeeksInView = ( PreviousWeeksInView >= WeeksInView - 1 ) ? WeeksInView - 1 : PreviousWeeksInView ; args.startOfWeek=Offset; @@ -1701,7 +1686,20 @@ function doCreateWizardFinish() } calManager.registerCalendar(newCalendar); - addCalendarToUI(newCalendar); + addCalendarToUI(window.opener.document, newCalendar); return true; } + +function addCalendarToUI(doc, calendar) +{ + var listItem = doc.createElement("listitem"); + var listCell = doc.createElement("listcell"); + listCell.setAttribute("label", calendar.name); + listItem.appendChild(listCell); + listItem.calendar = calendar; + var calendarList = doc.getElementById("list-calendars-listbox"); + calendarList.appendChild(listItem); + if (calendarList.selectedIndex == -1) + calendarList.selectedIndex = 0; +} diff --git a/calendar/resources/content/calendarWindow.js b/calendar/resources/content/calendarWindow.js index d15c011ee166..b3ee65dd0cb4 100644 --- a/calendar/resources/content/calendarWindow.js +++ b/calendar/resources/content/calendarWindow.js @@ -138,6 +138,13 @@ function CalendarWindow( ) var calendarWindow = this; + // fill in the calendars list + dump("\n\n\nlooking for calendars!!\n\n\n"); + var calendars = getCalendarManager().getCalendars({}); + for (var i = 0; i < calendars.length; i++) { + dump(calendars[i]); + addCalendarToUI(document, calendars[i]); + } var savedThis = this; var calendarObserver = { @@ -150,21 +157,13 @@ function CalendarWindow( ) onAlarm: function(aAlarmItem) {}, onError: function(aErrNo, aMessage) { } } - var calendar = createCalendar(); + var calendar = getCalendar(); calendar.addObserver(calendarObserver, calendar.ITEM_FILTER_TYPE_ALL); - // fill in the calendars list - dump("\n\n\nlooking for calendars!!\n\n\n"); - var calendars = getCalendarManager().getCalendars({}); - for (var i = 0; i < calendars.length; i++) { - dump(calendars[i]); - addCalendarToUI(calendars[i]); - } - /* @@ -246,20 +245,6 @@ function CalendarWindow( ) */ } - -function addCalendarToUI(calendar) -{ - var listItem = document.createElement("listitem"); - var listCell = document.createElement("listcell"); - listCell.setAttribute("label", calendar.name); - listItem.appendChild(listCell); - listItem.calendar = calendar; - var calendarList = document.getElementById("list-calendars-listbox"); - calendarList.appendChild(listItem); -} - - - /** PUBLIC * * You must call this when you have finished with the CalendarWindow. diff --git a/calendar/resources/content/dayView.js b/calendar/resources/content/dayView.js index 8511165132be..981d11e7092e 100644 --- a/calendar/resources/content/dayView.js +++ b/calendar/resources/content/dayView.js @@ -132,7 +132,7 @@ DayView.prototype.refreshEvents = function() } }; - var ccalendar = createCalendar(); // XXX Should get the composite calendar here + var ccalendar = getCalendar(); // XXX Should get the composite calendar here dump("Fetching events from " + startDate.toString() + " to " + endDate.toString() + "\n"); diff --git a/calendar/resources/content/monthView.js b/calendar/resources/content/monthView.js index 393a8a6a4ec5..4e0260b9cf10 100644 --- a/calendar/resources/content/monthView.js +++ b/calendar/resources/content/monthView.js @@ -250,7 +250,7 @@ MonthView.prototype.refreshEvents = function() } }; - var ccalendar = createCalendar(); // XXX Should get the composite calendar here + var ccalendar = getCalendar(); // XXX Should get the composite calendar here dump("Fetching events from " + startDate.toString() + " to " + endDate.toString() + "\n"); diff --git a/calendar/resources/content/multiweekView.js b/calendar/resources/content/multiweekView.js index 7b7268ab286c..849c11ffeabf 100644 --- a/calendar/resources/content/multiweekView.js +++ b/calendar/resources/content/multiweekView.js @@ -258,7 +258,7 @@ MultiweekView.prototype.refreshEvents = function multiweekView_refreshEvents( ) } }; - var ccalendar = createCalendar(); + var ccalendar = getCalendar(); ccalendar.getItems(ccalendar.ITEM_FILTER_TYPE_EVENT | ccalendar.ITEM_FILTER_CLASS_OCCURRENCES, 0, jsDateToDateTime(startDate), jsDateToDateTime(endDate), diff --git a/calendar/resources/content/unifinder.js b/calendar/resources/content/unifinder.js index 3e7f164f2ebd..40773814c2b1 100644 --- a/calendar/resources/content/unifinder.js +++ b/calendar/resources/content/unifinder.js @@ -589,7 +589,7 @@ function refreshEventTree( eventArray ) var StartDate = new Date( Today.getFullYear(), Today.getMonth(), Today.getDate(), 0, 0, 0 ); var EndDate; - var calendar = createCalendar(); + var calendar = getCalendar(); var filter = 0; filter |= calendar.ITEM_FILTER_TYPE_EVENT; diff --git a/calendar/resources/content/unifinderToDo.js b/calendar/resources/content/unifinderToDo.js index 13217aad9367..3ba5a46b7de2 100644 --- a/calendar/resources/content/unifinderToDo.js +++ b/calendar/resources/content/unifinderToDo.js @@ -94,7 +94,7 @@ var unifinderToDoDataSourceObserver = function prepareCalendarToDoUnifinder() { - var calendar = createCalendar(); + var calendar = getCalendar(); calendar.addObserver(unifinderToDoDataSourceObserver, calendar.ITEM_FILTER_TYPE_TODO); toDoUnifinderRefresh(); } @@ -143,7 +143,7 @@ function toDoUnifinderRefresh() } }; - var calendar = createCalendar(); + var calendar = getCalendar(); var filter = 0; if (hideCompleted) filter |= calendar.ITEM_FILTER_COMPLETED_NO; @@ -232,7 +232,7 @@ function checkboxClick(thisTodo, completed) newTodo.percentComplete = 0; } - var calendar = createCalendar(); + var calendar = getCalendar(); calendar.modifyItem (newTodo, null); } @@ -542,7 +542,7 @@ function contextChangeProgress( event, Progress ) { var newItem = todoItem.clone().QueryInterface(Components.interfaces.calITodo); newItem.percentComplete = Progress; - var calendar = createCalendar(); + var calendar = getCalendar(); calendar.modifyItem (newItem, null); } } @@ -560,7 +560,7 @@ function contextChangePriority( event, Priority ) { var newItem = todoItem.clone().QueryInterface(Components.interfaces.calITodo); newItem.priority = Priority; - var calendar = createCalendar(); + var calendar = getCalendar(); calendar.modifyItem (newItem, null); } } diff --git a/calendar/resources/content/weekView.js b/calendar/resources/content/weekView.js index e3d5d931649a..ac373775863f 100644 --- a/calendar/resources/content/weekView.js +++ b/calendar/resources/content/weekView.js @@ -153,7 +153,7 @@ WeekView.prototype.refreshEvents = function() } }; - var ccalendar = createCalendar(); // XXX Should get the composite calendar here + var ccalendar = getCalendar(); // XXX Should get the composite calendar here debug("Fetching events from " + this.displayStartDate.toString() + " to " + this.displayEndDate.toString() + "\n");