use the calendar manager to create a calendar. use the selected calendar as the current calendar for displaying events.

This commit is contained in:
pavlov%pavlov.net 2005-02-16 23:14:48 +00:00
parent 628c60a44d
commit c70d38362d
8 changed files with 53 additions and 70 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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