From 89a23bad575ac9da49e3843d92ab5d724ca17af3 Mon Sep 17 00:00:00 2001 From: Michael Prager Date: Wed, 13 Oct 2010 15:44:57 +0200 Subject: [PATCH 01/16] updated changelog for upcoming release --- Readme.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Readme.txt b/Readme.txt index 2b55fb6..3a22c3b 100644 --- a/Readme.txt +++ b/Readme.txt @@ -215,6 +215,8 @@ Changelog: - new app icon - updated "ComingNext Skin Fetcher" tool to version v1.3 (supports all 6 panel positions) -1.29 () by Michael Prager +1.29 (2010-10-13) by Michael Prager - fixed events showing as "undefined" on Symbian^3 - startup performance improvements + - stylish default background image + - first release available on Ovi Store -- 2.39.2 From 2de56af5f6389b2bf02d40ff58cfd2f2be40188e Mon Sep 17 00:00:00 2001 From: Michael Prager Date: Sun, 31 Oct 2010 19:29:08 +0100 Subject: [PATCH 02/16] * fixed daylight saving times not being applied properly resulting in events being off by 1 day or hour * added option to change daylight saving offset --- Readme.txt | 5 + comingNext/de.lproj/localizedTextStrings.js | 4 +- comingNext/fr.lproj/localizedTextStrings.js | 2 + comingNext/index.html | 99 +++++++++++-------- comingNext/localizedTextStrings.js | 6 +- .../pt-BR.lproj/localizedTextStrings.js | 6 +- comingNext/ru.lproj/localizedTextStrings.js | 6 +- 7 files changed, 78 insertions(+), 50 deletions(-) diff --git a/Readme.txt b/Readme.txt index 3a22c3b..2472134 100644 --- a/Readme.txt +++ b/Readme.txt @@ -220,3 +220,8 @@ Changelog: - startup performance improvements - stylish default background image - first release available on Ovi Store +1.30 () by Michael Prager + - fixed an issue with daylight saving time not being used properly resulting + in events around time shifts to be off by one day or hour + - added option to change daylight saving offset (for time zones which have + more than a +1h time shift) diff --git a/comingNext/de.lproj/localizedTextStrings.js b/comingNext/de.lproj/localizedTextStrings.js index d20dc0e..50393be 100644 --- a/comingNext/de.lproj/localizedTextStrings.js +++ b/comingNext/de.lproj/localizedTextStrings.js @@ -65,8 +65,10 @@ localizedText['settings.info.showNothingText'] = 'wenn aktiviert, wird ein Text localizedText['settings.name.nothingText'] = '"Keine weiteren Ereignisse..." Text'; localizedText['settings.info.nothingText'] = 'Text, der gezeigt wird, wenn keine Ereignisse in der Liste sind'; localizedText['settings.default.nothingText'] = 'Keine weiteren Ereignisse in den nächsten %d Monaten'; -localizedText['settings.name.enableDaylightSaving'] = 'Aktiviere Zeitumstellung (+1h)'; +localizedText['settings.name.enableDaylightSaving'] = 'Aktiviere Zeitumstellung'; localizedText['settings.info.enableDaylightSaving'] = 'diese Einstellung sollte aktiviert werden, falls Sie in einer Zeitzone leben, in der die Uhren zwischen Sommer und Winter umgestellt werden'; +localizedText['settings.name.daylightSavingOffset'] = 'Zeitumstellungsoffset (in Stunden)'; +localizedText['settings.info.daylightSavingOffset'] = 'Anzahl der Stunden, um die die Uhr bei der Umstellung von Sommer- auf Winterzeit zurückgestellt wird. Diese Einstellung ist nur von Belang, falls die Zeitumstellung aktiviert ist. In Europa werden die Uhren in der Regel um 1 Stunde zurückgestellt.'; localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Schließe Widget beim Öffnen des Kalend.'; localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'wenn aktiviert, wird das Widget geschlossen, sobald der Kalender aus dem Widget heraus gestartet wird'; localizedText['settings.name.cssStyle_background'] = '.background'; diff --git a/comingNext/fr.lproj/localizedTextStrings.js b/comingNext/fr.lproj/localizedTextStrings.js index f69ea3a..a39d582 100644 --- a/comingNext/fr.lproj/localizedTextStrings.js +++ b/comingNext/fr.lproj/localizedTextStrings.js @@ -67,6 +67,8 @@ localizedText['settings.info.nothingText'] = 'Texte à afficher quand il n localizedText['settings.default.nothingText'] = 'Pas d\'événements durant les prochains mois'; localizedText['settings.name.enableDaylightSaving'] = 'Activé Daylight Saving'; localizedText['settings.info.enableDaylightSaving'] = 'Permet d\'activer Daylight saving si vous êtes dans une fuseau horaire où il y a daylight saving time (+1h)'; +localizedText['settings.name.daylightSavingOffset'] = 'Daylight Saving Offset (hours)'; +localizedText['settings.info.daylightSavingOffset'] = 'Number of hours your clock is shifted by daylight saving time. This setting is only relevant if daylight saving has been enabled. The default offset in europe is 1 hour.'; localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Hide Widget When Opening Calendar'; localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'enable this if the fullscreen widget should be hidden when clicking on the widget to open the calendar app'; localizedText['settings.name.cssStyle_background'] = '.background'; diff --git a/comingNext/index.html b/comingNext/index.html index 372489b..d66fd29 100644 --- a/comingNext/index.html +++ b/comingNext/index.html @@ -47,6 +47,7 @@ var config = { showNothingText: { Type: 'Bool', Default: true, Value: true,}, nothingText: { Type: 'String', Default: getLocalizedText('settings.default.nothingText'), Value: getLocalizedText('settings.default.nothingText'),}, enableDaylightSaving: { Type: 'Bool', Default: true, Value: true,}, + daylightSavingOffset: { Type: 'Int', Default: 1, Value: 1,}, hideWidgetOnCalendarOpen: { Type: 'Bool', Default: false, Value: false,}, cssStyle_background: { Type: 'String', Default: 'color:#ffffff; background-color:#000000', Value: 'color:#ffffff; background-color:#000000',}, cssStyle_backgroundFullscreen: { Type: 'String', Default: 'color:#ffffff; background-color:#000000', Value: 'color:#ffffff; background-color:#000000',}, @@ -83,9 +84,8 @@ var notificationRequest2; var calendarList = []; // vars for daylight saving time -var daylightsavingWinter = 0; -var daylightsavingSummer = 0; -var summertime = false; +var summertime = false; // true, if current date is in summer, false if in winter +var daylightSavingDates = new Object(); // caches calculated DST winter and summer time shift dates // this is a list of data fields a calendar event can have var entryFields = [ @@ -127,43 +127,48 @@ function subToSunday(myDate, year, days, prevMonthDays) days = isLeapYear(year) ? --days : days; return days; } - -function calcDaylightSaving() + +function isSummertime(curDate) { - var thisYearS = new Date(now.getFullYear(), 3, 0, 0, 0, 0 ); - var thisYearW = new Date(now.getFullYear(), 10, 0, 0, 0, 0 ); - var nextYearS = new Date(now.getFullYear() + 1, 3, 0, 0, 0, 0 ); - var nextYearW = new Date(now.getFullYear() + 1, 10, 0, 0, 0, 0 ); var summer = false; var winter = false; - - thisYearSDays = nextYearSDays = 90; - thisYearWDays = nextYearWDays = 304; - - thisYearSDays = calcLeapYear(now.getFullYear(), thisYearSDays); - thisYearWDays = calcLeapYear(now.getFullYear(), thisYearWDays); - nextYearSDays = calcLeapYear(now.getFullYear() + 1, nextYearSDays); - nextYearWDays = calcLeapYear(now.getFullYear() + 1, nextYearWDays); - - thisYearSDays = subToSunday(thisYearS, now.getFullYear(), thisYearSDays, 59); - thisYearWDays = subToSunday(thisYearW, now.getFullYear(), thisYearWDays, 273); - nextYearSDays = subToSunday(nextYearS, now.getFullYear() + 1, nextYearSDays, 59); - nextYearWDays = subToSunday(nextYearW, now.getFullYear() + 1, nextYearWDays, 273); - - daylightsavingSummer = new Date (now.getFullYear(), 03-1, thisYearSDays, 2, 0, 0); - daylightsavingWinter = new Date (now.getFullYear(), 10-1, thisYearWDays, 2, 0, 0); - if (daylightsavingSummer < now) { - daylightsavingSummer = new Date (now.getFullYear()+1, 03-1, nextYearSDays, 2, 0, 0); - var summer = true; - } - if (daylightsavingWinter < now) { - daylightsavingWinter = new Date (now.getFullYear()+1, 10-1, nextYearWDays, 2, 0, 0); - var winter = true; + + // if we already calculated DST summer and winter time dates for this year, use cached values + var dst = daylightSavingDates[curDate.getFullYear()]; + if (!dst) { + var thisYearS = new Date(curDate.getFullYear(), 3, 0, 0, 0, 0 ); + var thisYearW = new Date(curDate.getFullYear(), 10, 0, 0, 0, 0 ); + var nextYearS = new Date(curDate.getFullYear() + 1, 3, 0, 0, 0, 0 ); + var nextYearW = new Date(curDate.getFullYear() + 1, 10, 0, 0, 0, 0 ); + + thisYearSDays = nextYearSDays = 90; + thisYearWDays = nextYearWDays = 304; + + thisYearSDays = calcLeapYear(curDate.getFullYear(), thisYearSDays); + thisYearWDays = calcLeapYear(curDate.getFullYear(), thisYearWDays); + nextYearSDays = calcLeapYear(curDate.getFullYear() + 1, nextYearSDays); + nextYearWDays = calcLeapYear(curDate.getFullYear() + 1, nextYearWDays); + + thisYearSDays = subToSunday(thisYearS, curDate.getFullYear(), thisYearSDays, 59); + thisYearWDays = subToSunday(thisYearW, curDate.getFullYear(), thisYearWDays, 273); + nextYearSDays = subToSunday(nextYearS, curDate.getFullYear() + 1, nextYearSDays, 59); + nextYearWDays = subToSunday(nextYearW, curDate.getFullYear() + 1, nextYearWDays, 273); + + dst = { + Summer: new Date (curDate.getFullYear(), 03-1, thisYearSDays, 2, 0, 0), + Winter: new Date (curDate.getFullYear(), 10-1, thisYearWDays, 2, 0, 0), + } + daylightSavingDates[curDate.getFullYear()] = dst; } + + if (dst.Summer < curDate) + summer = true; + if (dst.Winter < curDate) + winter = true; if (summer && !winter) - summertime = true; + return true; else - summertime = false; + return false; } function error(message) @@ -382,18 +387,26 @@ function parseDate(dateString) if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'am' && hours == 12) hours = 0; - console.info('year=' + year + ' month=' + month + ' day=' + day + ' hours=' + hours + ' minutes=' + minutes+ ' seconds=' + seconds); - + var result = new Date(year, month - 1, day, hours, minutes, seconds); + // take care of daylight saving time if (config['enableDaylightSaving'].Value) { - var date = new Date(year, month - 1, day, hours, minutes, seconds); - if (summertime && date > daylightsavingWinter && date < daylightsavingSummer) - hours -= 1; - else if (!summertime && date > daylightsavingSummer && date < daylightsavingWinter) - hours += 1; + + // determine if date is in summer or winter time + var dateSummerTime = isSummertime(result); + + // work around bug in Nokias calendar api resulting in dates within a different DST to be off by 1 hour + if (summertime && !dateSummerTime) { + result = new Date(result.getTime() - 1000 * 60 * 60 * config['daylightSavingOffset'].Value); // -1 hour + console.info('parseDate(): fixing time -1h: ' + result); + } + else if (!summertime && dateSummerTime) { + result = new Date(result.getTime() + 1000 * 60 * 60 * config['daylightSavingOffset'].Value); // +1 hour + console.info('parseDate(): fixing time +1h: ' + result); + } } - return new Date(year, month - 1, day, hours, minutes, seconds); + return result; } // returns a short date as string ("31.12" or "12.31") based on the format string which should look like "Wednesday, 26 August, 2009 12:00:00 am" @@ -467,11 +480,11 @@ function formatTime(date) function updateData() { console.info('updateData()'); - calcDaylightSaving(); try { // meetings have time // note: anniveraries have a start time of 12:00am. So since we want to include them, we have to query the whole day and check if events have passed later now = new Date(); + summertime = isSummertime(now); // cache summer time info for today var meetingList = []; for(var i=0; i < calendarList.length; i++) { var meetingListFiltering = { diff --git a/comingNext/localizedTextStrings.js b/comingNext/localizedTextStrings.js index c22111d..ef221f9 100644 --- a/comingNext/localizedTextStrings.js +++ b/comingNext/localizedTextStrings.js @@ -65,8 +65,10 @@ localizedText['settings.info.showNothingText'] = 'if enabled, show a text if no localizedText['settings.name.nothingText'] = '"No further events..." Text'; localizedText['settings.info.nothingText'] = 'text to show when no events are in the list'; localizedText['settings.default.nothingText'] = 'No further events within %d months'; -localizedText['settings.name.enableDaylightSaving'] = 'Enable Daylight Saving (+1h)'; -localizedText['settings.info.enableDaylightSaving'] = 'enable this if you are in a timezone that has daylight saving time (+1h)'; +localizedText['settings.name.enableDaylightSaving'] = 'Enable Daylight Saving'; +localizedText['settings.info.enableDaylightSaving'] = 'enable this if you are in a timezone that has daylight saving time'; +localizedText['settings.name.daylightSavingOffset'] = 'Daylight Saving Offset (hours)'; +localizedText['settings.info.daylightSavingOffset'] = 'Number of hours your clock is shifted by daylight saving time. This setting is only relevant if daylight saving has been enabled. The default offset in europe is 1 hour.'; localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Hide Widget When Opening Calendar'; localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'enable this if the fullscreen widget should be hidden when clicking on the widget to open the calendar app'; localizedText['settings.name.cssStyle_background'] = '.background'; diff --git a/comingNext/pt-BR.lproj/localizedTextStrings.js b/comingNext/pt-BR.lproj/localizedTextStrings.js index 634baae..67e7908 100644 --- a/comingNext/pt-BR.lproj/localizedTextStrings.js +++ b/comingNext/pt-BR.lproj/localizedTextStrings.js @@ -65,8 +65,10 @@ localizedText['settings.info.showNothingText'] = 'se ativo, apresenta um texto s localizedText['settings.name.nothingText'] = '"Não há mais eventos..." Texto'; localizedText['settings.info.nothingText'] = 'texto apresentado quando não há eventos listados'; localizedText['settings.default.nothingText'] = 'Não há mais eventos nestes %d meses'; -localizedText['settings.name.enableDaylightSaving'] = 'Ativa horário de verão (+1h)'; -localizedText['settings.info.enableDaylightSaving'] = 'ative isto se você está em uma região que tem horário de verão (+1h)'; +localizedText['settings.name.enableDaylightSaving'] = 'Ativa horário de verão'; +localizedText['settings.info.enableDaylightSaving'] = 'ative isto se você está em uma região que tem horário de verão'; +localizedText['settings.name.daylightSavingOffset'] = 'Daylight Saving Offset (hours)'; +localizedText['settings.info.daylightSavingOffset'] = 'Number of hours your clock is shifted by daylight saving time. This setting is only relevant if daylight saving has been enabled. The default offset in europe is 1 hour.'; localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Esconde o Widget quando abrir o Calendário'; localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'ative isto se se o widget em tela cheia deverá ficar escondido após clicado para abrir a aplicação de calendário'; localizedText['settings.name.cssStyle_background'] = '.background'; diff --git a/comingNext/ru.lproj/localizedTextStrings.js b/comingNext/ru.lproj/localizedTextStrings.js index 8f6b9bc..238bfc9 100644 --- a/comingNext/ru.lproj/localizedTextStrings.js +++ b/comingNext/ru.lproj/localizedTextStrings.js @@ -65,8 +65,10 @@ localizedText['settings.info.showNothingText'] = 'показывает текс localizedText['settings.name.nothingText'] = 'Текст "Нет будущих событий..."'; localizedText['settings.info.nothingText'] = 'показывает текст когда нет записей в календаре'; localizedText['settings.default.nothingText'] = 'Нет будущих событий в %d месяце'; -localizedText['settings.name.enableDaylightSaving'] = 'Включить летнее время (+1ч)'; -localizedText['settings.info.enableDaylightSaving'] = 'задает летнее время (+1ч), иначе зимнее время'; +localizedText['settings.name.enableDaylightSaving'] = 'Включить летнее время'; +localizedText['settings.info.enableDaylightSaving'] = 'задает летнее время, иначе зимнее время'; +localizedText['settings.name.daylightSavingOffset'] = 'Daylight Saving Offset (hours)'; +localizedText['settings.info.daylightSavingOffset'] = 'Number of hours your clock is shifted by daylight saving time. This setting is only relevant if daylight saving has been enabled. The default offset in europe is 1 hour.'; localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Скрывать виджет когда запущен календарь'; localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'виджет будет скрыт при запуске календаря, иначе выводиться всегда'; localizedText['settings.name.cssStyle_background'] = '.background'; -- 2.39.2 From 32b1c2f4a166147927720ce7f92e1f9011693b1a Mon Sep 17 00:00:00 2001 From: Michael Prager Date: Mon, 15 Nov 2010 10:11:31 +0100 Subject: [PATCH 03/16] fixed notifications not working for calendars other than default calendar --- comingNext/index.html | 51 ++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/comingNext/index.html b/comingNext/index.html index d66fd29..1afd1a0 100644 --- a/comingNext/index.html +++ b/comingNext/index.html @@ -79,8 +79,7 @@ var mode = 0; // 0 = homescreen, 1 = fullscreen, 2 = settings, 3 = about, 4 = ch var reqV = null; var settingsCalEntryId = null; var settingsCache = null; -var notificationRequest1; -var notificationRequest2; +var notificationRequests = new Array(); var calendarList = []; // vars for daylight saving time @@ -298,13 +297,17 @@ function requestNotification() { var criteria = new Object(); criteria.Type = "CalendarEntry"; - - try { - notificationRequest1 = calendarService.IDataSource.RequestNotification(criteria, callback); - if (notificationRequest1.ErrorCode) - error('requestNotification failed with error code ' + notificationRequest1.ErrorCode); - } catch (e) { - error("requestNotification: " + e + ', line ' + e.line); + criteria.Filter = new Object(); + for(var i=0; i < calendarList.length; i++) { + criteria.Filter.CalendarName = calendarList[i]; + try { + var notificationRequest = calendarService.IDataSource.RequestNotification(criteria, callback); + if (notificationRequest.ErrorCode) + error('requestNotification failed with error code ' + notificationRequest.ErrorCode); + notificationRequests.push(notificationRequest); + } catch (e) { + error("requestNotification: " + e + ', line ' + e.line); + } } var criteria2 = new Object(); @@ -312,16 +315,29 @@ function requestNotification() criteria2.Filter = new Object(); criteria2.Filter.LocalIdList = new Array(); criteria2.Filter.LocalIdList[0] = settingsCalEntryId; - try { - notificationRequest2 = calendarService.IDataSource.RequestNotification(criteria2, settingsCallback); - if (notificationRequest2.ErrorCode) - error('requestNotification failed with error code ' + notificationRequest2.ErrorCode); + var notificationRequest = calendarService.IDataSource.RequestNotification(criteria2, settingsCallback); + if (notificationRequest.ErrorCode) + error('requestNotification failed with error code ' + notificationRequest.ErrorCode); + notificationRequests.push(notificationRequest); } catch (e) { error("requestNotification: " + e + ', line ' + e.line); } } +function cancelNotification() +{ + for(var i=0; i < notificationRequests.length; i++) { + try { + var result = calendarService.IDataSource.Cancel(notificationRequests[i]); + if (result.ErrorCode) + error('requestNotification failed with error code ' + result.ErrorCode); + } catch (e) { + error("requestNotification: " + e + ', line ' + e.line); + } + } +} + function callback(transId, eventCode, result) { console.info("callback(): panelNum: %d transId: %d eventCode: %d result.ErrorCode: %d", panelNum, transId, eventCode, result.ErrorCode); @@ -480,6 +496,15 @@ function formatTime(date) function updateData() { console.info('updateData()'); + + // check if we got additional or less calendars since our last update + var newCalendarList = listCalendars(); + if (newCalendarList.length != calendarList.length) { + calendarList = newCalendarList; + cancelNotification(); + requestNotification(); + } + try { // meetings have time // note: anniveraries have a start time of 12:00am. So since we want to include them, we have to query the whole day and check if events have passed later -- 2.39.2 From 75550f5f7cfdc18ccda9dc69c8d510f6c077e86f Mon Sep 17 00:00:00 2001 From: Michael Prager Date: Mon, 15 Nov 2010 11:21:52 +0100 Subject: [PATCH 04/16] * made link to homepage clickable * fixed error description for cancelNotification --- comingNext/de.lproj/localizedTextStrings.js | 14 ++++++++ comingNext/fr.lproj/localizedTextStrings.js | 14 ++++++++ comingNext/index.html | 34 ++++++++++++++++--- comingNext/localizedTextStrings.js | 14 ++++++++ .../pt-BR.lproj/localizedTextStrings.js | 14 ++++++++ comingNext/ru.lproj/localizedTextStrings.js | 14 ++++++++ 6 files changed, 100 insertions(+), 4 deletions(-) diff --git a/comingNext/de.lproj/localizedTextStrings.js b/comingNext/de.lproj/localizedTextStrings.js index 50393be..64448ac 100644 --- a/comingNext/de.lproj/localizedTextStrings.js +++ b/comingNext/de.lproj/localizedTextStrings.js @@ -71,6 +71,8 @@ localizedText['settings.name.daylightSavingOffset'] = 'Zeitumstellungsoffset (in localizedText['settings.info.daylightSavingOffset'] = 'Anzahl der Stunden, um die die Uhr bei der Umstellung von Sommer- auf Winterzeit zurückgestellt wird. Diese Einstellung ist nur von Belang, falls die Zeitumstellung aktiviert ist. In Europa werden die Uhren in der Regel um 1 Stunde zurückgestellt.'; localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Schließe Widget beim Öffnen des Kalend.'; localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'wenn aktiviert, wird das Widget geschlossen, sobald der Kalender aus dem Widget heraus gestartet wird'; +localizedText['settings.name.showCalendarIndicator'] = 'Zeige Farbindikator für zugehörigen Kalender'; +localizedText['settings.info.showCalendarIndicator'] = 'falls mehrere Kalender benutzt werden, wird mit Hilfe eines Farbbalkens angezeigt, zu welchem Kalender ein Ereignis gehört'; localizedText['settings.name.cssStyle_background'] = '.background'; localizedText['settings.info.cssStyle_background'] = 'Definiert den Hintergrund des Widgets. Falls Sie ein Hintergrundbild verwenden möchten, aktivieren Sie die Einstellung "Benutze Hintergrundbild". Für die Standardthemes des N97 ("schwarz", "grau" und "helles Blau") lauten die Farbcodes #292029, #e7dfe7 und #009aef.'; localizedText['settings.name.cssStyle_backgroundFullscreen'] = '.backgroundFullscreen'; @@ -93,6 +95,18 @@ localizedText['settings.name.cssStyle_icon'] = '.icon'; localizedText['settings.info.cssStyle_icon'] = 'Definiert das Aussehen Icons'; localizedText['settings.name.cssStyle_overdue'] = '.overdue'; localizedText['settings.info.cssStyle_overdue'] = 'Definiert das Aussehen des "Überfällig" Textes'; +localizedText['settings.name.cssStyle_calendar1'] = '.calendar1'; +localizedText['settings.info.cssStyle_calendar1'] = 'Definiert die Farbe für Ereignisse von Kalender 1'; +localizedText['settings.name.cssStyle_calendar2'] = '.calendar2'; +localizedText['settings.info.cssStyle_calendar2'] = 'Definiert die Farbe für Ereignisse von Kalender 2'; +localizedText['settings.name.cssStyle_calendar3'] = '.calendar3'; +localizedText['settings.info.cssStyle_calendar3'] = 'Definiert die Farbe für Ereignisse von Kalender 3'; +localizedText['settings.name.cssStyle_calendar4'] = '.calendar4'; +localizedText['settings.info.cssStyle_calendar4'] = 'Definiert die Farbe für Ereignisse von Kalender 4'; +localizedText['settings.name.cssStyle_calendar5'] = '.calendar5'; +localizedText['settings.info.cssStyle_calendar5'] = 'Definiert die Farbe für Ereignisse von Kalender 5'; +localizedText['settings.name.cssStyle_calendar6'] = '.calendar6'; +localizedText['settings.info.cssStyle_calendar6'] = 'Definiert die Farbe für Ereignisse von Kalender 6'; localizedText['settings.cssStyle_prefix'] = 'CSS Stil für '; localizedText['update.current'] = 'Deine Version: '; diff --git a/comingNext/fr.lproj/localizedTextStrings.js b/comingNext/fr.lproj/localizedTextStrings.js index a39d582..ef20243 100644 --- a/comingNext/fr.lproj/localizedTextStrings.js +++ b/comingNext/fr.lproj/localizedTextStrings.js @@ -71,6 +71,8 @@ localizedText['settings.name.daylightSavingOffset'] = 'Daylight Saving Offset (h localizedText['settings.info.daylightSavingOffset'] = 'Number of hours your clock is shifted by daylight saving time. This setting is only relevant if daylight saving has been enabled. The default offset in europe is 1 hour.'; localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Hide Widget When Opening Calendar'; localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'enable this if the fullscreen widget should be hidden when clicking on the widget to open the calendar app'; +localizedText['settings.name.showCalendarIndicator'] = 'Show Calendar Indicator'; +localizedText['settings.info.showCalendarIndicator'] = 'if multiple calendars are used, a small color bar will be shown to indicate to which calendar an event belongs'; localizedText['settings.name.cssStyle_background'] = '.background'; localizedText['settings.info.cssStyle_background'] = 'Definit le style CSS du fond du widget. Si vous voulez mettre une image de fond, cocher "Utiliser Background Image". Pour le thème par défaut, noir, gris, and bleu, les codes sont #292029, #e7dfe7, #009aef'; localizedText['settings.name.cssStyle_backgroundFullscreen'] = '.backgroundFullscreen'; @@ -93,6 +95,18 @@ localizedText['settings.name.cssStyle_icon'] = '.icon'; localizedText['settings.info.cssStyle_icon'] = 'Définit la taille des icones'; localizedText['settings.name.cssStyle_overdue'] = '.overdue'; localizedText['settings.info.cssStyle_overdue'] = 'Defines the appearance of the "Overdue" text'; +localizedText['settings.name.cssStyle_calendar1'] = '.calendar1'; +localizedText['settings.info.cssStyle_calendar1'] = 'Defines the color indicator for events from calendar 1'; +localizedText['settings.name.cssStyle_calendar2'] = '.calendar2'; +localizedText['settings.info.cssStyle_calendar2'] = 'Defines the color indicator for events from calendar 2'; +localizedText['settings.name.cssStyle_calendar3'] = '.calendar3'; +localizedText['settings.info.cssStyle_calendar3'] = 'Defines the color indicator for events from calendar 3'; +localizedText['settings.name.cssStyle_calendar4'] = '.calendar4'; +localizedText['settings.info.cssStyle_calendar4'] = 'Defines the color indicator for events from calendar 4'; +localizedText['settings.name.cssStyle_calendar5'] = '.calendar5'; +localizedText['settings.info.cssStyle_calendar5'] = 'Defines the color indicator for events from calendar 5'; +localizedText['settings.name.cssStyle_calendar6'] = '.calendar6'; +localizedText['settings.info.cssStyle_calendar6'] = 'Defines the color indicator for events from calendar 6'; localizedText['settings.cssStyle_prefix'] = 'CSS Style for '; localizedText['update.current'] = 'Your version: '; diff --git a/comingNext/index.html b/comingNext/index.html index 1afd1a0..e8a4840 100644 --- a/comingNext/index.html +++ b/comingNext/index.html @@ -49,6 +49,7 @@ var config = { enableDaylightSaving: { Type: 'Bool', Default: true, Value: true,}, daylightSavingOffset: { Type: 'Int', Default: 1, Value: 1,}, hideWidgetOnCalendarOpen: { Type: 'Bool', Default: false, Value: false,}, + showCalendarIndicator: { Type: 'Bool', Default: true, Value: true,}, cssStyle_background: { Type: 'String', Default: 'color:#ffffff; background-color:#000000', Value: 'color:#ffffff; background-color:#000000',}, cssStyle_backgroundFullscreen: { Type: 'String', Default: 'color:#ffffff; background-color:#000000', Value: 'color:#ffffff; background-color:#000000',}, cssStyle_weekDay: { Type: 'String', Default: '', Value: '',}, @@ -60,6 +61,12 @@ var config = { cssStyle_description: { Type: 'String', Default: '', Value: '',}, cssStyle_icon: { Type: 'String', Default: 'width:15px; height:15px', Value: 'width:15px; height:15px',}, cssStyle_overdue: { Type: 'String', Default: 'color:#ffff00', Value: 'color:#ffff00',}, + cssStyle_calendar1: { Type: 'String', Default: 'background-color:#800000', Value: 'background-color:#800000',}, + cssStyle_calendar2: { Type: 'String', Default: 'background-color:#ff0000', Value: 'background-color:#ff0000',}, + cssStyle_calendar3: { Type: 'String', Default: 'background-color:#808000', Value: 'background-color:#808000',}, + cssStyle_calendar4: { Type: 'String', Default: 'background-color:#ffff00', Value: 'background-color:#ffff00',}, + cssStyle_calendar5: { Type: 'String', Default: 'background-color:#008000', Value: 'background-color:#008000',}, + cssStyle_calendar6: { Type: 'String', Default: 'background-color:#008080', Value: 'background-color:#008080',}, } @@ -81,6 +88,7 @@ var settingsCalEntryId = null; var settingsCache = null; var notificationRequests = new Array(); var calendarList = []; +var calendarColors = []; // vars for daylight saving time var summertime = false; // true, if current date is in summer, false if in winter @@ -90,6 +98,7 @@ var daylightSavingDates = new Object(); // caches calculated DST winter and summ var entryFields = [ "id", "Type", + "CalendarName", "Summary", "Location", "Status", @@ -331,9 +340,9 @@ function cancelNotification() try { var result = calendarService.IDataSource.Cancel(notificationRequests[i]); if (result.ErrorCode) - error('requestNotification failed with error code ' + result.ErrorCode); + error('cancelNotification failed with error code ' + result.ErrorCode); } catch (e) { - error("requestNotification: " + e + ', line ' + e.line); + error("cancelNotification: " + e + ', line ' + e.line); } } } @@ -501,6 +510,7 @@ function updateData() var newCalendarList = listCalendars(); if (newCalendarList.length != calendarList.length) { calendarList = newCalendarList; + updateCalendarColors(); cancelNotification(); requestNotification(); } @@ -710,7 +720,11 @@ function updateData() } // generate html output - entriesHtml += ''; + entriesHtml += ''; + if (config['showCalendarIndicator'].Value && calendarList.length > 1) { + entriesHtml += ' '; + } + entriesHtml += ''; if(date == null) { // some languages have very strange locale date formats, can't parse all those. Also some todos don't have dates at all. entriesHtml += '' + entryDate + ' '; @@ -813,6 +827,7 @@ function init() calendarList = listCalendars(); loadSettings(); + updateCalendarColors(); collectLocales(); //updateData(); requestNotification(); @@ -1359,6 +1374,17 @@ function sortCalendarEntries(a, b) return 0; } +function updateCalendarColors() +{ + calendarColors = []; + if (calendarList.length > 6) { + console.info("updateCalendarColors(): Warning: more calendars than available indicator colors"); + } + for(var i=0; i < calendarList.length; i++) { + calendarColors[calendarList[i]] = (i % 6) + 1; + } +} +