From e4867581fd47c3f2f5ed7e9ad7379e21bf38e8f4 Mon Sep 17 00:00:00 2001 From: "shaver%mozilla.org" Date: Wed, 22 Jun 2005 17:02:23 +0000 Subject: [PATCH] Bug 298357: maintain style rules to set the colour of entries (foreground, for month view) based on the user's preferences. r=vlad. --- .../lightning/content/calendar-management.js | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/calendar/lightning/content/calendar-management.js b/calendar/lightning/content/calendar-management.js index 7018b09ba04..72c6584124e 100644 --- a/calendar/lightning/content/calendar-management.js +++ b/calendar/lightning/content/calendar-management.js @@ -2,10 +2,53 @@ // calendar-management.js // +var calendarPrefStyleSheet = null; +for (var i = 0; i < document.styleSheets.length; i++) { + if (document.styleSheets[i].href == "about:blank?calendar-dynamic-style-sheet") { + calendarPrefStyleSheet = document.styleSheets[i]; + break; + } +} +if (!calendarPrefStyleSheet) + Components.reportError("Couldn't find our magic empty style sheet.") + +function updateStyleSheetForCalendar(aCalendar) +{ + var spec = aCalendar.uri.spec; + var cpss = calendarPrefStyleSheet; + function selectorForCalendar(spec) + { + return '*[item-calendar="' + spec + '"]'; + } + + function getRuleForCalendar(spec) + { + for (var i = 0; i < cpss.cssRules.length; i++) { + var rule = cpss.cssRules[i]; + if (rule.selectorText == selectorForCalendar(spec)) + return rule; + } + return null; + } + + var rule = getRuleForCalendar(spec); + if (!rule) { + cpss.insertRule(selectorForCalendar(spec) + ' { }', 0); + rule = cpss.cssRules[0]; + } + + var color = getCalendarManager().getCalendarPref(aCalendar, 'color'); + if (!color) + color = "black"; + + rule.style.color = color; +} + function addCalendarToTree(aCalendar) { var boxobj = document.getElementById("calendarTree").treeBoxObject; boxobj.rowCountChanged(getCalendars().indexOf(aCalendar), 1); + updateStyleSheetForCalendar(aCalendar); } function removeCalendarFromTree(aCalendar) @@ -37,6 +80,7 @@ var ltnCalendarManagerObserver = { }, onCalendarPrefSet: function(aCalendar, aName, aValue) { + updateStyleSheetForCalendar(aCalendar); }, onCalendarPrefDeleting: function(aCalendar, aName) {