adding prefs api for calendars. bug 279189 r=vlad

This commit is contained in:
pavlov%pavlov.net 2005-02-23 21:50:36 +00:00
Родитель 55480a9b6f
Коммит f713b3e877
2 изменённых файлов: 72 добавлений и 5 удалений

Просмотреть файл

@ -62,4 +62,9 @@ interface calICalendarManager : nsISupports
/* return a list of all calendars currently registered */
void getCalendars(out PRUint32 count,
[array, size_is(count), retval] out calICalendar aCalendars);
AUTF8String getCalendarPref(in calICalendar aCalendar, in AUTF8String aName);
void setCalendarPref(in calICalendar aCalendar, in AUTF8String aName, in AUTF8String aValue);
void deleteCalendarPref(in calICalendar aCalendar, in AUTF8String aName);
};

Просмотреть файл

@ -74,14 +74,20 @@ calCalendarManager.prototype = {
},
initDB: function() {
var calendarTable = "id INTEGER PRIMARY KEY, name STRING, type STRING, uri STRING";
var sqlTables = { cal_calendars: "id INTEGER PRIMARY KEY, name STRING, type STRING, uri STRING",
cal_calendars_prefs: "id INTEGER PRIMARY KEY, calendar INTERGER, name STRING, value STRING"
};
var dbService = Components.classes[kStorageServiceContractID].getService(kStorageServiceIID);
this.mDB = dbService.getProfileStorage("profile");
try {
this.mDB.createTable("cal_calendars", calendarTable);
} catch (e) {
dump("error creating table cal_calendars -- probably already exists\n");
for (table in sqlTables) {
try {
this.mDB.createTable(table, sqlTables[table]);
} catch (ex) {
dump("error creating table " + table + " -- probably already exists\n");
}
}
this.mSelectCalendars = createStatement (
@ -103,6 +109,19 @@ calCalendarManager.prototype = {
"DELETE FROM cal_calendars WHERE id = :id"
);
this.mGetPref = createStatement (
this.mDB,
"SELECT value FROM cal_calendars_prefs WHERE calendar = :calendar AND name = :name");
this.mDeletePref = createStatement (
this.mDB,
"DELETE FROM cal_calendars_prefs WHERE calendar = :calendar AND name = :name");
this.mInsertPref = createStatement (
this.mDB,
"INSERT INTO cal_calendars_prefs (calendar, name, value) " +
"VALUES (:calendar, :name, :value)"
},
@ -183,4 +202,47 @@ calCalendarManager.prototype = {
return calendars;
},
getCalendarPref: function(calendar, name) {
var stmt = this.mGetPref;
stmt.reset();
var pp = stmt.params;
pp.calendar = this.findCalendarID(calendar);
pp.name = name;
var value = null;
if (stmt.step()) {
value = stmt.row.value;
}
stmt.reset();
return value;
},
setCalendarPref: function(calendar, name, value) {
var calendarID = this.findCalendarID(calendar);
this.mDB.beginTransaction();
var pp = this.mDeletePref.params;
pp.calendar = calendarID;
this.mDeletePref.step();
this.mDeletePref.reset();
pp = this.mInsertPref.params;
pp.calendar = calendarID;
pp.name = name;
pp.value = value;
this.mInsertPref.step();
this.mInsertPref.reset();
this.mDB.commitTransaction();
}
deleteCalendarPref: function(calendar, name) {
var calendarID = this.findCalendarID(calendar);
var pp = this.mDeletePref.params;
pp.calendar = calendarID;
this.mDeletePref.step();
this.mDeletePref.reset();
}
};