]> code.delx.au - comingnext/commitdiff
reworked build process.
authorMichael Prager <michael@pragers.de>
Tue, 23 Feb 2010 01:41:57 +0000 (02:41 +0100)
committerMichael Prager <michael@pragers.de>
Tue, 23 Feb 2010 01:41:57 +0000 (02:41 +0100)
It will now take care of updating the versioning info based on the version number defined in build.pl. You'll now need perl to build this.

Also, there is no need to keep a copy of the code for comingNextB. The build script will make the needed copying on build time. It will also update the panelnum variable which otherwise might be forgotten when releasing a new version.

17 files changed:
build.bat [deleted file]
build.pl [new file with mode: 0644]
comingNextB/Anniversary.png [deleted file]
comingNextB/DayEvent.png [deleted file]
comingNextB/Icon.png [deleted file]
comingNextB/Info.plist [deleted file]
comingNextB/Meeting.png [deleted file]
comingNextB/Reminder.png [deleted file]
comingNextB/ToDo.png [deleted file]
comingNextB/background_landscape.png [deleted file]
comingNextB/background_portrait.png [deleted file]
comingNextB/de.lproj/localizedTextStrings.js [deleted file]
comingNextB/fr.lproj/localizedTextStrings.js [deleted file]
comingNextB/index.html [deleted file]
comingNextB/localizedTextStrings.js [deleted file]
comingNextB/pt-BR.lproj/localizedTextStrings.js [deleted file]
zip.exe [deleted file]

diff --git a/build.bat b/build.bat
deleted file mode 100644 (file)
index 96f35c2..0000000
--- a/build.bat
+++ /dev/null
@@ -1,11 +0,0 @@
-@echo off\r
-\r
-set VERSION=1.25\r
-\r
-del *.wgz\r
-del *.zip\r
-zip -9 -r comingNext.zip comingNext\r
-zip -9 -r comingNextB.zip comingNextB\r
-ren comingNext.zip comingNext.wgz\r
-ren comingNextB.zip comingNextB.wgz\r
-zip -9 comingNext_v%VERSION%.zip comingNext.wgz comingNextB.wgz Readme.txt License.txt ComingNext_SkinFetcher_v1.1.sisx
\ No newline at end of file
diff --git a/build.pl b/build.pl
new file mode 100644 (file)
index 0000000..dadeb28
--- /dev/null
+++ b/build.pl
@@ -0,0 +1,70 @@
+#!/usr/bin/perl\r
+\r
+my $version = "1.25";\r
+\r
+use warnings;\r
+use strict;\r
+use File::Copy;\r
+use File::Find;\r
+use File::Path;\r
+use Archive::Zip qw( :ERROR_CODES );\r
+\r
+# cleanup\r
+unlink <*.wgz>;\r
+unlink <*.zip>;\r
+rmtree("ComingNextB");\r
+\r
+# update version info\r
+sed("comingNext/index.html", 'var version = \"(.*?)\";', 'var version = \"'.$version.'\";');\r
+sed("comingNext/Info.plist", '<key>DisplayName<\/key>(\s*?)<string>Coming Next (.*?)<\/string>', '<key>DisplayName<\/key>$1<string>Coming Next '.$version.'<\/string>');\r
+sed("comingNext/Info.plist", '<key>Version<\/key>(\s*?)<string>(.*?)<\/string>', '<key>Version<\/key>$1<string>'.$version.'<\/string>');\r
+\r
+# add additional widget\r
+copyrecursive("comingNext", "comingNextB");\r
+sed("comingNextB/index.html", 'var panelNum = 0;', 'var panelNum = 1;');\r
+sed("comingNextB/Info.plist", '<key>DisplayName<\/key>(\s*?)<string>Coming Next (.*?)<\/string>', '<key>DisplayName<\/key>$1<string>Coming Next B $2<\/string>');\r
+sed("comingNextB/Info.plist", '<key>Identifier<\/key>(\s*?)<string>(.*?)<\/string>', '<key>Identifier<\/key>$1<string>$2b<\/string>');\r
+\r
+# package release\r
+my $zip = Archive::Zip->new();\r
+$zip->addTree("ComingNext", "ComingNext");\r
+$zip->writeToFileNamed("comingNext.wgz");\r
+\r
+$zip = Archive::Zip->new();\r
+$zip->addTree("ComingNextB", "ComingNextB");\r
+$zip->writeToFileNamed("comingNextB.wgz");\r
+\r
+$zip = Archive::Zip->new();\r
+$zip->addFile("comingNext.wgz");\r
+$zip->addFile("comingNextB.wgz");\r
+$zip->addFile("Readme.txt");\r
+$zip->addFile("License.txt");\r
+$zip->addFile("ComingNext_SkinFetcher_v1.1.sisx");\r
+$zip->writeToFileNamed("comingNext_v$version.zip");\r
+\r
+#########################################\r
+\r
+my $copy_source;\r
+my $copy_target;\r
+sub copyrecursive {\r
+       my ($source, $target) = @_;\r
+       $copy_source = $source;\r
+       $copy_target = $target;\r
+       find({ wanted => \&copy_files, follow => 1, no_chdir => 1 }, $copy_source );\r
+}\r
+sub copy_files {\r
+       my $targetdir = $File::Find::dir;\r
+       $targetdir =~ s/^$copy_source/$copy_target/o;\r
+       mkpath( $targetdir ) if not -e $targetdir;\r
+       my $targetfile = $File::Find::name;\r
+       $targetfile =~ s/^$copy_source/$copy_target/o;\r
+       copy($File::Find::name, $targetfile);\r
+}\r
+\r
+#########################################\r
+\r
+sub sed {\r
+       my ($filename, $search, $replace) = @_;\r
+       system("perl -p -i.bak -e \"s/$search/$replace/;\" $filename");\r
+       unlink <$filename.bak>;\r
+}
\ No newline at end of file
diff --git a/comingNextB/Anniversary.png b/comingNextB/Anniversary.png
deleted file mode 100644 (file)
index f67fcb0..0000000
Binary files a/comingNextB/Anniversary.png and /dev/null differ
diff --git a/comingNextB/DayEvent.png b/comingNextB/DayEvent.png
deleted file mode 100644 (file)
index 5206723..0000000
Binary files a/comingNextB/DayEvent.png and /dev/null differ
diff --git a/comingNextB/Icon.png b/comingNextB/Icon.png
deleted file mode 100644 (file)
index dad6789..0000000
Binary files a/comingNextB/Icon.png and /dev/null differ
diff --git a/comingNextB/Info.plist b/comingNextB/Info.plist
deleted file mode 100644 (file)
index 4949a29..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE plist PUBLIC "-//Nokia//DTD PLIST 1.0//EN" "http://www.nokia.com/NOKIA_COM_1/DTDs/plist-1.0.dtd">\r
-<plist version="1.0">\r
-<dict>\r
-       <key>DisplayName</key>                  <string>Coming Next B 1.25</string>\r
-       <key>Identifier</key>                   <string>ar.com.cochambre.symbian.wrt.comingnextb</string>\r
-       <key>Version</key>                      <string>1.25</string>\r
-       <key>MainHTML</key>                     <string>index.html</string>\r
-       <key>AllowNetworkAccess</key>           <true/>\r
-       <key>MiniViewEnabled</key>              <true/> \r
-</dict>\r
-</plist>\r
diff --git a/comingNextB/Meeting.png b/comingNextB/Meeting.png
deleted file mode 100644 (file)
index 37690b0..0000000
Binary files a/comingNextB/Meeting.png and /dev/null differ
diff --git a/comingNextB/Reminder.png b/comingNextB/Reminder.png
deleted file mode 100644 (file)
index 81cb317..0000000
Binary files a/comingNextB/Reminder.png and /dev/null differ
diff --git a/comingNextB/ToDo.png b/comingNextB/ToDo.png
deleted file mode 100644 (file)
index 75ad1b0..0000000
Binary files a/comingNextB/ToDo.png and /dev/null differ
diff --git a/comingNextB/background_landscape.png b/comingNextB/background_landscape.png
deleted file mode 100644 (file)
index c52b8e9..0000000
Binary files a/comingNextB/background_landscape.png and /dev/null differ
diff --git a/comingNextB/background_portrait.png b/comingNextB/background_portrait.png
deleted file mode 100644 (file)
index 7cedff7..0000000
Binary files a/comingNextB/background_portrait.png and /dev/null differ
diff --git a/comingNextB/de.lproj/localizedTextStrings.js b/comingNextB/de.lproj/localizedTextStrings.js
deleted file mode 100644 (file)
index ce00212..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-var localizedText = new Array();\r
-\r
-localizedText['menu.settings'] = 'Einstellungen';\r
-localizedText['menu.openCalendarApp'] = 'Öffne Kalender';\r
-localizedText['menu.about'] = 'Über';\r
-localizedText['menu.update'] = 'Nach Updates suchen';\r
-\r
-localizedText['softkey.back'] = 'Zurück';\r
-\r
-localizedText['settings.restoreDefaults'] = 'Standardeinstellungen wiederherstellen';\r
-localizedText['settings.help'] = 'Hilfe';\r
-localizedText['settings.save'] = 'Speichern';\r
-localizedText['settings.cancel'] = 'Abbruch';\r
-\r
-localizedText['settings.name.monthRange'] = 'Monatsspanne';\r
-localizedText['settings.info.monthRange'] = 'gibt an, wieviel Monate in der Ereignisliste angezeigt werden sollen';\r
-localizedText['settings.name.includeTodos'] = 'Aufgaben anzeigen';\r
-localizedText['settings.info.includeTodos'] = 'ausschalten, um Aufgaben aus der Ereignisliste zu entfernen';\r
-localizedText['settings.name.useBackgroundImage'] = 'Benutze Hintergrundbild';\r
-localizedText['settings.info.useBackgroundImage'] = 'benutze background_portrait.png und background_landscape.png um Transparenz vorzutäuschen. Um einen einfarbigen Hintergrund zu erzeugen, muss diese Einstellung deaktiviert werden.';\r
-localizedText['settings.name.backgroundImageLocation'] = 'Speicherort des Hinterbrundbildes';\r
-localizedText['settings.info.backgroundImageLocation'] = 'definiert, wo das Hintergrundbild zu finden ist. "intern" benutzt das eingebaute Hintergrundbild, "extern" benutzt das Hintergrundbild unter C:\\Data\\. Falls Sie Hintergrundbilder mit dem "ComingNext Skin Fetcher" Tool generiert haben, sollten Sie diese Einstellung auf "extern" setzen.';\r
-localizedText['settings.validValues.backgroundImageLocation.internal'] = 'intern';\r
-localizedText['settings.validValues.backgroundImageLocation.external'] = 'extern';\r
-localizedText['settings.name.showCombinedDateTime'] = 'Zeige Datum/Uhrzeit kombiniert an';\r
-localizedText['settings.info.showCombinedDateTime'] = 'zeigt nur die Zeit an für Ereignisse, die heute stattfinden. Andernfalls wird nur das Datum angezeigt';\r
-localizedText['settings.name.showLocation'] = 'Zeige Ort';\r
-localizedText['settings.info.showLocation'] = 'zeigt den Ort einer Besprechnung mit an';\r
-localizedText['settings.name.showTodayAsText'] = 'Zeige "Heute" als Text';\r
-localizedText['settings.info.showTodayAsText'] = 'wenn aktiviert, wird anstelle des heutigen Datums (z.B. "31.12") der Text "Heute" angezeigt';\r
-localizedText['settings.name.todayText'] = '"Heute" Text';\r
-localizedText['settings.info.todayText'] = 'Text, der für "Heute" angezeigt wird';\r
-localizedText['settings.default.todayText'] = 'Heute';\r
-localizedText['settings.name.tomorrowText'] = '"Morgen" Text';\r
-localizedText['settings.info.tomorrowText'] = 'Text, der für "Morgen" angezeigt wird';\r
-localizedText['settings.default.tomorrowText'] = 'Morgen';\r
-localizedText['settings.name.showNowAsText'] = 'Zeige "Jetzt" als Text';\r
-localizedText['settings.info.showNowAsText'] = 'wenn aktiviert, wird anstelle der Uhrzeit (z.B. "12:00") einer Besprechung der Text "Jetzt" angezeigt';\r
-localizedText['settings.name.nowText'] = '"Jetzt" Text';\r
-localizedText['settings.info.nowText'] = 'Text, der für "Jetzt" angezeigt wird';\r
-localizedText['settings.default.nowText'] = 'Jetzt';\r
-localizedText['settings.name.dateSeparator'] = 'Datums-Trennzeichen';\r
-localizedText['settings.info.dateSeparator'] = 'Trennzeichen zwischen den einzelnen Ziffern eines Datums, z.B. "31.12" oder "31/12"';\r
-localizedText['settings.default.dateSeparator'] = '.';\r
-localizedText['settings.name.dateFormat'] = 'Datumsformat';\r
-localizedText['settings.info.dateFormat'] = 'legt fest, wie Daten angezeigt werden. \'auto\' übernimmt die Telefoneinstellung. \'MMDD\' stellt den Monat nach vorne, \'DDMM\' den Tag';\r
-localizedText['settings.validValues.dateFormat.auto'] = 'automatisch erkennen';\r
-localizedText['settings.validValues.dateFormat.DDMM'] = 'Tag.Monat.Jahr';\r
-localizedText['settings.validValues.dateFormat.MMDD'] = 'Monat.Tag.Jahr';\r
-localizedText['settings.name.weekDayLength'] = 'Länge des Wochentags';\r
-localizedText['settings.info.weekDayLength'] = 'legt fest, wie viele Buschstaben des Wochentags eingezeigt werden sollen. Z.B. wird bei 2 aus "Freitag" to "Fr"';\r
-localizedText['settings.name.updateDataInterval'] = 'Updateinterval';\r
-localizedText['settings.info.updateDataInterval'] = 'legt fest, wie viele Minuten gewartet werden soll, bevor die Anzeige geupdated wird. Je höher die Zahl, desto länger lebt der Akku';\r
-localizedText['settings.name.calendarApp'] = 'zu startende Kalenderanwendung';\r
-localizedText['settings.info.calendarApp'] = 'UID der Kalenderanwendung, die gestartet werden soll, wenn der Benutzer auf das Widget tippt. 0x10005901 = eingebauter Kalender, 0x20004ec1 = Epocware Handy Kalender';\r
-localizedText['settings.name.eventsPerWidget'] = 'Ereignisse pro Widget';\r
-localizedText['settings.info.eventsPerWidget'] = 'Anzahl der Ereignisse, die pro Widget angezeigt werden sollen. Standardeinstellung ist 4';\r
-localizedText['settings.name.showNothingText'] = 'Zeige "Keine weiteren Ereignisse..." Text';\r
-localizedText['settings.info.showNothingText'] = 'wenn aktiviert, wird ein Text angezeigt, falls keine Ereignisse in der Liste sind';\r
-localizedText['settings.name.nothingText'] = '"Keine weiteren Ereignisse..." Text';\r
-localizedText['settings.info.nothingText'] = 'Text, der gezeigt wird, wenn keine Ereignisse in der Liste sind';\r
-localizedText['settings.default.nothingText'] = 'Keine weiteren Ereignisse in den nächsten %d Monaten';\r
-localizedText['settings.name.enableDaylightSaving'] = 'Aktiviere Zeitumstellung (+1h)';\r
-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';\r
-localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Schließe Widget beim Öffnen des Kalend.';\r
-localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'wenn aktiviert, wird das Widget geschlossen, sobald der Kalender aus dem Widget heraus gestartet wird';\r
-localizedText['settings.name.cssStyle_background'] = '.background';\r
-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.';\r
-localizedText['settings.name.cssStyle_backgroundFullscreen'] = '.backgroundFullscreen';\r
-localizedText['settings.info.cssStyle_backgroundFullscreen'] = 'Selbe Einstellung wie .background, jedoch für die Vollbildversion des Widgets';\r
-localizedText['settings.name.cssStyle_weekDay'] = '.weekDay';\r
-localizedText['settings.info.cssStyle_weekDay'] = 'Definiert das Aussehen der Wochentage';\r
-localizedText['settings.name.cssStyle_date'] = '.date';\r
-localizedText['settings.info.cssStyle_date'] = 'Definiert das Aussehen der Daten';\r
-localizedText['settings.name.cssStyle_today'] = '.today';\r
-localizedText['settings.info.cssStyle_today'] = 'Definiert das Aussehen des "Heute" Texts';\r
-localizedText['settings.name.cssStyle_tomorrow'] = '.tomorrow';\r
-localizedText['settings.info.cssStyle_tomorrow'] = 'Definiert das Aussehen es "Morgen" Texts';\r
-localizedText['settings.name.cssStyle_time'] = '.time';\r
-localizedText['settings.info.cssStyle_time'] = 'Definiert das Aussehen der Uhrzeiten';\r
-localizedText['settings.name.cssStyle_now'] = '.now';\r
-localizedText['settings.info.cssStyle_now'] = 'Definiert das Aussehen des "Jetzt" Texts';\r
-localizedText['settings.name.cssStyle_description'] = '.description';\r
-localizedText['settings.info.cssStyle_description'] = 'Definiert das Aussehen der Ereignistexte';\r
-localizedText['settings.name.cssStyle_icon'] = '.icon';\r
-localizedText['settings.info.cssStyle_icon'] = 'Definiert das Aussehen Icons';\r
-\r
-localizedText['update.current'] = 'Deine Version: ';\r
-localizedText['update.checking'] = 'suche nach Updates...';\r
-localizedText['update.download'] = 'Aktuelle Version: %1<br /><a href=\"%2\">neue Version herunterladen</a>';\r
-localizedText['update.nonewversion'] = 'keine neue Version verfügbar';\r
-localizedText['update.error'] = 'Verbindungsfehler: ';\r
-localizedText['update.checknow'] = 'Jetzt prüfen';\r
diff --git a/comingNextB/fr.lproj/localizedTextStrings.js b/comingNextB/fr.lproj/localizedTextStrings.js
deleted file mode 100644 (file)
index d7eb569..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-var localizedText = new Array();\r
-\r
-localizedText['menu.settings'] = 'Parametres';\r
-localizedText['menu.openCalendarApp'] = 'Ouvrir Calendrier';\r
-localizedText['menu.about'] = 'A propos';\r
-localizedText['menu.update'] = 'Check for new version';\r
-\r
-localizedText['softkey.back'] = 'Back';\r
-\r
-localizedText['settings.restoreDefaults'] = 'Restore Defaults';\r
-localizedText['settings.help'] = 'Aide';\r
-localizedText['settings.save'] = 'Sauver';\r
-localizedText['settings.cancel'] = 'Annuler';\r
-\r
-localizedText['settings.name.monthRange'] = 'Nombre de mois';\r
-localizedText['settings.info.monthRange'] = 'Nombre de mois &agrave; inclure dans la liste d\'&eacute;v&eacute;nements';\r
-localizedText['settings.name.includeTodos'] = 'Ajouter ToDos';\r
-localizedText['settings.info.includeTodos'] = 'D&eacute;cocher pour ne pas afficher ToDos dans la liste d\'&eacute;v&eacute;nements';\r
-localizedText['settings.name.useBackgroundImage'] = 'Utiliser Background Image';\r
-localizedText['settings.info.useBackgroundImage'] = 'Utiliser background_portrait.png et background_landscape.png pour simuler la transparence. D&eacute;cocher pour utiliser une couleur de fond';\r
-localizedText['settings.name.backgroundImageLocation'] = 'Background Image Location';\r
-localizedText['settings.info.backgroundImageLocation'] = 'defines where the image is located that is displayed in the background. "Internal" will use the buildin image, "external" will use the image located in C:\\Data\\. If you\'ve generated images with "ComingNext Skin Fetcher", you should set this to "external".';\r
-localizedText['settings.validValues.backgroundImageLocation.internal'] = 'internal';\r
-localizedText['settings.validValues.backgroundImageLocation.external'] = 'external';\r
-localizedText['settings.name.showCombinedDateTime'] = 'Afficher date & heure';\r
-localizedText['settings.info.showCombinedDateTime'] = 'Afficher seulement l\'heure pour les &eacute;v&eacute;nements de la journ&eacute;e, sinon seulement date';\r
-localizedText['settings.name.showLocation'] = 'Afficher le lieu';\r
-localizedText['settings.info.showLocation'] = 'Afficher les lieux pour les r&eacute;unions';\r
-localizedText['settings.name.showTodayAsText'] = 'Afficher "Aujourd\'hui"';\r
-localizedText['settings.info.showTodayAsText'] = 'Si coch&eacute;, la date du jour sera remplac&eacute; par "Aujourd\'hui" au lieu de "31.12"';\r
-localizedText['settings.name.todayText'] = 'Texte pour "Aujourd\'hui"';\r
-localizedText['settings.info.todayText'] = 'Texte &agrave; afficher pour "Aujourd\'hui"';\r
-localizedText['settings.default.todayText'] = 'Aujour.';\r
-localizedText['settings.name.tomorrowText'] = 'Texte pour "Demain"';\r
-localizedText['settings.info.tomorrowText'] = 'Texte &agrave; afficher pour "Demain"';\r
-localizedText['settings.default.tomorrowText'] = 'Demain';\r
-localizedText['settings.name.showNowAsText'] = 'Afficher "Maintenant"';\r
-localizedText['settings.info.showNowAsText'] = 'Si coch&eacute;, l\'heure de rendez-vous affichera "Maintenant" au lieu de "12:00"';\r
-localizedText['settings.name.nowText'] = 'Texte pour "Maint."';\r
-localizedText['settings.info.nowText'] = 'Texte &agrave; afficher pour "Maintenant"';\r
-localizedText['settings.default.nowText'] = 'Maint.';\r
-localizedText['settings.name.dateSeparator'] = 'S&eacute;parateur pour les dates';\r
-localizedText['settings.info.dateSeparator'] = 'S&eacute;parateur pour les dates. cad "31.12" ou "31/12"';\r
-localizedText['settings.default.dateSeparator'] = '/';\r
-localizedText['settings.name.dateFormat'] = 'Format des dates';\r
-localizedText['settings.info.dateFormat'] = 'Comment les dates doivent &ecirc;tre affich&eacute;es. \'auto\' format de votre t&eacute;l&eacute;phone. \'MMDD\' mois en premier, \'DDMM\' jour en premier';\r
-localizedText['settings.validValues.dateFormat.auto'] = 'autodetect';\r
-localizedText['settings.validValues.dateFormat.DDMM'] = 'day/month/year';\r
-localizedText['settings.validValues.dateFormat.MMDD'] = 'month/day/year';\r
-localizedText['settings.name.weekDayLength'] = 'Nombre de caract&egrave;re pour le jour';\r
-localizedText['settings.info.weekDayLength'] = 'D&eacute;finit le nombre de caract&egrave;res pour afficher le jour de la semaine : 2 coupera "Lundi" &agrave; "Lu"';\r
-localizedText['settings.name.updateDataInterval'] = 'Interval de mise &agrave; jour';\r
-localizedText['settings.info.updateDataInterval'] = 'Combien de minute avant de mettre &agrave; jour les informations. Plus le nombre est grand, moins la batterie sera utilis&eacute;e';\r
-localizedText['settings.name.calendarApp'] = 'Calendar Application To Run';\r
-localizedText['settings.info.calendarApp'] = 'UID of the calendar app to run when clicking the widget. 0x10005901 = buildin calendar, 0x20004ec1 = Epocware Handy Calendar';\r
-localizedText['settings.name.eventsPerWidget'] = 'Ev&eacute;n&eacute;ment par Widget';\r
-localizedText['settings.info.eventsPerWidget'] = 'Nombre d\'&eacute;v&eacute;nement &agrave; afficher par widget. Par d&eacute;faut 4';\r
-localizedText['settings.name.showNothingText'] = 'Afficher un text si vide';\r
-localizedText['settings.info.showNothingText'] = 'Si coch&eacute;, affiche un texte si aucun &eacute;v&eacute;nement n\'est pr&eacute;sent dans la liste';\r
-localizedText['settings.name.nothingText'] = 'Texte pour "Aucun &eacute;v&eacute;nement"';\r
-localizedText['settings.info.nothingText'] = 'Texte &agrave; afficher quand il n\'y a aucun &eacute;v&eacute;nement &agrave; afficher';\r
-localizedText['settings.default.nothingText'] = 'Pas d\'&eacute;v&eacute;nements durant les prochains mois';\r
-localizedText['settings.name.enableDaylightSaving'] = 'Activ&eacute; Daylight Saving';\r
-localizedText['settings.info.enableDaylightSaving'] = 'Permet d\'activer Daylight saving si vous &ecirc;tes dans une fuseau horaire où il y a daylight saving time (+1h)';\r
-localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Hide Widget When Opening Calendar';\r
-localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'enable this if the fullscreen widget should be hidden when clicking on the widget to open the calendar app';\r
-localizedText['settings.name.cssStyle_background'] = '.background';\r
-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&egrave;me par d&eacute;faut, noir, gris, and bleu, les codes sont #292029, #e7dfe7, #009aef';\r
-localizedText['settings.name.cssStyle_backgroundFullscreen'] = '.backgroundFullscreen';\r
-localizedText['settings.info.cssStyle_backgroundFullscreen'] = 'Identique &agrave; background mais pour l\'affichage plein &eacute;cran du widget';\r
-localizedText['settings.name.cssStyle_weekDay'] = '.weekDay';\r
-localizedText['settings.info.cssStyle_weekDay'] = 'D&eacute;finit l\'apparence de l\'affichage des jours de la semaine';\r
-localizedText['settings.name.cssStyle_date'] = '.date';\r
-localizedText['settings.info.cssStyle_date'] = 'D&eacute;finit l\'apparence de l\'affichage des dates';\r
-localizedText['settings.name.cssStyle_today'] = '.today';\r
-localizedText['settings.info.cssStyle_today'] = 'D&eacute;finit l\'apparence de l\'affichage du texte "Aujourd\'hui"';\r
-localizedText['settings.name.cssStyle_tomorrow'] = '.tomorrow';\r
-localizedText['settings.info.cssStyle_tomorrow'] = 'D&eacute;finit l\'apparence de l\'affichage du texte "Demain"';\r
-localizedText['settings.name.cssStyle_time'] = '.time';\r
-localizedText['settings.info.cssStyle_time'] = 'D&eacute;finit l\'apparence de l\'affichage des heures';\r
-localizedText['settings.name.cssStyle_now'] = '.now';\r
-localizedText['settings.info.cssStyle_now'] = 'D&eacute;finit l\'apparence de l\'affichage du texte "Maintenant"';\r
-localizedText['settings.name.cssStyle_description'] = '.description';\r
-localizedText['settings.info.cssStyle_description'] = 'D&eacute;finit l\'apparence de l\'affichage du texte de description des &eacute;v&eacute;nements';\r
-localizedText['settings.name.cssStyle_icon'] = '.icon';\r
-localizedText['settings.info.cssStyle_icon'] = 'D&eacute;finit la taille des icones';\r
-\r
-localizedText['update.current'] = 'Your version: ';\r
-localizedText['update.checking'] = 'checking for updates...';\r
-localizedText['update.download'] = 'Current version: %1<br /><a href=\"%2\">download new version</a>';\r
-localizedText['update.nonewversion'] = 'no new versions available';\r
-localizedText['update.error'] = 'connection error: ';\r
-localizedText['update.checknow'] = 'Check now';\r
diff --git a/comingNextB/index.html b/comingNextB/index.html
deleted file mode 100644 (file)
index cadf329..0000000
+++ /dev/null
@@ -1,1060 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-\r
-<title>Coming Next</title>\r
-\r
-<style type="text/css">\r
-/* The following classes can be modified by widget settings */\r
-.background { }\r
-.backgroundFullscreen { }\r
-.weekDay { }\r
-.date { }\r
-.today { }\r
-.tomorrow { }\r
-.time { }\r
-.now { }\r
-.description { }\r
-.icon { }\r
-</style>\r
-\r
-<script type="text/javascript" src="localizedTextStrings.js" charset="utf-8" />\r
-\r
-<script>\r
-// valid types for the config object are 'Int', 'Bool', 'String', 'Enum', 'UID'\r
-var config = {\r
-       monthRange: { Type: 'Int', Default: 2, Value: 2,},\r
-       includeTodos: { Type: 'Bool', Default: true, Value: true,},\r
-       useBackgroundImage: { Type: 'Bool', Default: true, Value: true,},\r
-       backgroundImageLocation: { Type: 'Enum', Default: 'internal', Value: 'internal', ValidValues: ['internal', 'external']},\r
-       showCombinedDateTime: { Type: 'Bool', Default: false, Value: false,},\r
-       showLocation: { Type: 'Bool', Default: true, Value: true,},\r
-       showTodayAsText: { Type: 'Bool', Default: true, Value: true,},\r
-       todayText: { Type: 'String', Default: getLocalizedText('settings.default.todayText'), Value: getLocalizedText('settings.default.todayText'),},\r
-       tomorrowText: { Type: 'String', Default: getLocalizedText('settings.default.tomorrowText'), Value: getLocalizedText('settings.default.tomorrowText'),},\r
-       showNowAsText: { Type: 'Bool', Default: true, Value: true,},\r
-       nowText: { Type: 'String', Default: getLocalizedText('settings.default.nowText'), Value: getLocalizedText('settings.default.nowText'),},\r
-       dateSeparator: { Type: 'String', Default: getLocalizedText('settings.default.dateSeparator'), Value: getLocalizedText('settings.default.dateSeparator'),},\r
-       dateFormat: { Type: 'Enum', Default: 'auto', Value: 'auto', ValidValues: ['auto', 'DDMM', 'MMDD'],},\r
-       weekDayLength: { Type: 'Int', Default: 2, Value: 2,},\r
-       updateDataInterval: { Type: 'Int', Default: 5, Value: 5,},\r
-       calendarApp: { Type: 'UID', Default: 0x10005901, Value: 0x10005901,},\r
-       eventsPerWidget: { Type: 'Int', Default: 4, Value: 4,},\r
-       showNothingText: { Type: 'Bool', Default: true, Value: true,},\r
-       nothingText: { Type: 'String', Default: getLocalizedText('settings.default.nothingText'), Value: getLocalizedText('settings.default.nothingText'),},\r
-       enableDaylightSaving: { Type: 'Bool', Default: true, Value: true,},\r
-       hideWidgetOnCalendarOpen: { Type: 'Bool', Default: false, Value: false,},\r
-       cssStyle_background: { Type: 'String', Default: 'color:#ffffff; background-color:#000000', Value: 'color:#ffffff; background-color:#000000',},\r
-       cssStyle_backgroundFullscreen: { Type: 'String', Default: 'color:#ffffff; background-color:#000000', Value: 'color:#ffffff; background-color:#000000',},\r
-       cssStyle_weekDay: { Type: 'String', Default: '', Value: '',},\r
-       cssStyle_date: { Type: 'String', Default: '', Value: '',},\r
-       cssStyle_today: { Type: 'String', Default: 'color:#ff0000', Value: 'color:#ff0000',},\r
-       cssStyle_tomorrow: { Type: 'String', Default: 'color:#0000ff', Value: 'color:#0000ff',},\r
-       cssStyle_time: { Type: 'String', Default: '', Value: '',},\r
-       cssStyle_now: { Type: 'String', Default: 'color:#ff00ff', Value: 'color:#ff00ff',},\r
-       cssStyle_description: { Type: 'String', Default: '', Value: '',},\r
-       cssStyle_icon: { Type: 'String', Default: 'width:15px; height:15px', Value: 'width:15px; height:15px',},\r
-}\r
-\r
-\r
-\r
-//-------------------------------------------------------\r
-// Nothing of interest from here on...\r
-//-------------------------------------------------------\r
-var panelNum = 0; // use 1 for second panel\r
-var version = "1.25";\r
-var versionURL = "http://comingnext.sourceforge.net/version.xml";\r
-var calendarService = null;\r
-var cacheEntriesHtml = [];\r
-var months_translated = [];\r
-var orientation = '';\r
-var now = new Date();\r
-var mode = 0; // 0 = homescreen, 1 = fullscreen, 2 = settings, 3 = about, 4 = check for update\r
-var reqV = null; \r
-\r
-// vars for daylight saving time\r
-var daylightsavingWinter = 0;\r
-var daylightsavingSummer = 0;\r
-var summertime = false;\r
-\r
-window.onload = init;\r
-window.onresize = updateScreen;\r
-window.onshow = updateScreen;\r
-\r
-function isLeapYear( year ) {\r
-       if (( year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0 )\r
-               return true;\r
-       else\r
-               return false;\r
-}\r
-         \r
-function calcLeapYear(year, days)\r
-{\r
-       if (isLeapYear(year))\r
-               return ++days;\r
-       else\r
-               return days;\r
-}\r
-         \r
-function subToSunday(myDate, year, days, prevMonthDays)\r
-{\r
-       for (i = myDate.getDay(); i > 0 ;i--)\r
-               days--;\r
-       days -= prevMonthDays;\r
-       days = isLeapYear(year) ? --days : days;\r
-       return days;\r
-}\r
-       \r
-function calcDaylightSaving()\r
-{\r
-       var thisYearS = new Date(now.getFullYear(),  3, 0, 0, 0, 0 );\r
-       var thisYearW = new Date(now.getFullYear(), 10, 0, 0, 0, 0 );\r
-       var nextYearS = new Date(now.getFullYear() + 1,  3, 0, 0, 0, 0 );\r
-       var nextYearW = new Date(now.getFullYear() + 1, 10, 0, 0, 0, 0 );\r
-       var summer = false;\r
-       var winter = false;\r
-       \r
-       thisYearSDays = nextYearSDays = 90;\r
-       thisYearWDays = nextYearWDays = 304;\r
-       \r
-       thisYearSDays = calcLeapYear(now.getFullYear(), thisYearSDays);\r
-       thisYearWDays = calcLeapYear(now.getFullYear(), thisYearWDays);\r
-       nextYearSDays = calcLeapYear(now.getFullYear() + 1, nextYearSDays);\r
-       nextYearWDays = calcLeapYear(now.getFullYear() + 1, nextYearWDays);\r
-       \r
-       thisYearSDays = subToSunday(thisYearS, now.getFullYear(), thisYearSDays, 59);\r
-       thisYearWDays = subToSunday(thisYearW, now.getFullYear(), thisYearWDays, 273);\r
-       nextYearSDays = subToSunday(nextYearS, now.getFullYear() + 1, nextYearSDays, 59);\r
-       nextYearWDays = subToSunday(nextYearW, now.getFullYear() + 1, nextYearWDays, 273);\r
-       \r
-       daylightsavingSummer = new Date (now.getFullYear(), 03-1, thisYearSDays, 2, 0, 0);\r
-       daylightsavingWinter = new Date (now.getFullYear(), 10-1, thisYearWDays, 2, 0, 0);\r
-       if (daylightsavingSummer < now) {\r
-               daylightsavingSummer = new Date (now.getFullYear()+1, 03-1, nextYearSDays, 2, 0, 0);\r
-               var summer = true;\r
-       }\r
-       if (daylightsavingWinter < now) {\r
-               daylightsavingWinter = new Date (now.getFullYear()+1, 10-1, nextYearWDays, 2, 0, 0);\r
-               var winter = true;\r
-       }\r
-       if (summer && !winter)\r
-               summertime = true;\r
-       else\r
-               summertime = false;\r
-}\r
-\r
-function error(message)\r
-{\r
-       console.info('Error: ' + message);\r
-       document.getElementById("calendarList").innerHTML = 'Error: ' + message;\r
-}\r
-\r
-function isToday(date)\r
-{\r
-       if (date.getDate() == now.getDate() && date.getMonth() == now.getMonth())\r
-               return true;\r
-       return false;\r
-}\r
-\r
-function isTomorrow(date)\r
-{\r
-       if ((date.getDate() == now.getDate() + 1 && date.getMonth() == now.getMonth()) ||\r
-           (date.getDate() == 0 && date.getMonth() == now.getMonth() + 1) ||\r
-           (date.getDate() == 0 && date.getMonth() == now.getMonth() + 1 && date.getYear() == now.getYear() + 1))\r
-               return true;\r
-       return false;\r
-}\r
-\r
-function collectLocales()\r
-{\r
-       var tmpyear = ((panelNum == 0) ? 2000 : 2001);\r
-       var month = 0;\r
-\r
-       if (months_translated.length > 0)\r
-               return;\r
-       for (month = 0; month < 12; month++) {\r
-               var startDate = new Date(tmpyear, month, 15);\r
-\r
-               var item = new Object();\r
-               item.Type = "DayEvent";\r
-               item.StartTime = startDate;\r
-               item.Summary = "__temp" + month;\r
-\r
-               var criteria = new Object();\r
-               criteria.Type = "CalendarEntry";\r
-               criteria.Item = item;\r
-\r
-               try {\r
-                       var result = calendarService.IDataSource.Add(criteria);\r
-                       if (result.ErrorCode)\r
-                               error(result.ErrorMessage);\r
-               } catch (e) {\r
-                       error("collectLocales: " + e + ', line ' + e.line);\r
-               }\r
-       }\r
-       try {\r
-               var startTime = new Date(tmpyear,0,1);\r
-               var endTime = new Date(tmpyear,11,31);\r
-               var listFiltering = {\r
-                       Type:'CalendarEntry', \r
-                       Filter:{\r
-                               StartRange: startTime,\r
-                               EndRange: endTime,\r
-                               SearchText: '__temp',\r
-                               Type: 'DayEvent'\r
-                       }\r
-               }\r
-               var result = calendarService.IDataSource.GetList(listFiltering);\r
-               if (result.ErrorCode) {\r
-                       error(result.ErrorMessage);\r
-                       return;\r
-               }\r
-               var list = result.ReturnValue;\r
-       } catch(e) {\r
-               error(e + ', line ' + e.line);\r
-               return;\r
-       }\r
-       var ids = new Array();\r
-       try {\r
-               var entry;\r
-               var counter = 0;\r
-               var dateArr = [];\r
-\r
-               while (list && (entry = list.getNext()) != undefined) {\r
-                       dateArr = entry.StartTime.replace(/,/g,'').replace(/\./g,':').replace(/  /g,' ').split(' ');\r
-                       var day = dateArr[1];\r
-                       var month = dateArr[2];\r
-                       var year = dateArr[3];\r
-\r
-                       // make sure month is set properly\r
-                       if (isNaN(parseInt(day))) {\r
-                               var tmp = day;\r
-                               day = month;\r
-                               month = tmp;\r
-                       } else if (isNaN(parseInt(year))) {\r
-                               var tmp = year;\r
-                               year = month;\r
-                               month = tmp;\r
-                       }\r
-\r
-                       console.info(entry.StartTime + ' -> ' + month + ' ' + counter);\r
-                       ids[counter] = entry.id;\r
-                       months_translated[month] = counter + 1;\r
-                       counter++;\r
-               }\r
-       } catch(e) {\r
-               error(e + ', line ' + e.line);\r
-               return;\r
-       }\r
-       console.info(ids);\r
-       try {\r
-               var criteria = new Object();\r
-               criteria.Type = "CalendarEntry";\r
-               criteria.Data = {\r
-                       IdList: ids\r
-               }\r
-\r
-               var result = calendarService.IDataSource.Delete(criteria);\r
-               if (result.ErrorCode)\r
-                       error(result.ErrorMessage);\r
-       } catch(e) {\r
-               error('deleting temp calendar entries:' + e + ', line ' + e.line);\r
-               return;\r
-       }\r
-}\r
-\r
-function requestNotification()\r
-{\r
-       var criteria = new Object();\r
-       criteria.Type = "CalendarEntry";\r
-\r
-       try {\r
-               var result = calendarService.IDataSource.RequestNotification(criteria, callback);\r
-               if (result.ErrorCode)\r
-                       error('loading Calendar items list');\r
-       } catch (e) {\r
-               error("requestNotification: " + e + ', line ' + e.line);\r
-       }\r
-}\r
-\r
-function callback(transId, eventCode, result)\r
-{\r
-       updateData();\r
-}\r
-\r
-function parseDate(dateString)\r
-{\r
-       /*\r
-       Dates my look very differently. Also keep in mind that the names are localized!!! These are the possibilities depending on the users date format setting:\r
-       Wednesday,  26 August, 2009 24:00:00\r
-       Wednesday,  26 August, 2009 12:00:00 am\r
-       Wednesday,  August 26, 2009 12:00:00 am\r
-       Wednesday,  2009 August, 26 12:00:00 am\r
-       Wednesday,  2009 August, 28 8.00.00 pm\r
-       Wednesday,  2009 August, 28 08:00:00 PM\r
-       */\r
-\r
-       if (dateString == "" || dateString == null)\r
-               return null;\r
-       var dateArr = dateString.replace(/,/g,'').replace(/\./g,':').replace(/  /g,' ').split(' ');\r
-       if (dateArr.length != 5 && dateArr.length != 6)\r
-               return null;\r
-\r
-       // parse date\r
-       var weekDay = dateArr[0];\r
-       var day = dateArr[1];\r
-       var month = dateArr[2];\r
-       var year = dateArr[3];\r
-       // make sure month is set properly\r
-       if (isNaN(parseInt(day))) {\r
-               var tmp = day;\r
-               day = month;\r
-               month = tmp;\r
-       } else if (isNaN(parseInt(year))) {\r
-               var tmp = year;\r
-               year = month;\r
-               month = tmp;\r
-       }\r
-       // make sure day and year are set properly\r
-       if (Number(day) > Number(year)) {\r
-               var tmp = year;\r
-               year = day;\r
-               day = tmp;\r
-       }\r
-       month = months_translated[month];\r
-\r
-       // parse time\r
-       var timeArr = dateArr[4].split(':');\r
-       if (timeArr.length != 3)\r
-               return null;\r
-       var hours = Number(timeArr[0]);\r
-       var minutes = Number(timeArr[1]);\r
-       var seconds = Number(timeArr[2]);\r
-       if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'pm' && hours < 12)\r
-               hours += 12;\r
-       if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'am' && hours == 12)\r
-               hours = 0;\r
-\r
-       console.info('year=' + year + ' month=' + month + ' day=' + day + ' hours=' + hours + ' minutes=' + minutes+ ' seconds=' + seconds);\r
-\r
-       // take care of daylight saving time\r
-       if (config['enableDaylightSaving'].Value) {\r
-               var date = new Date(year, month - 1, day, hours, minutes, seconds);\r
-               if (summertime && date > daylightsavingWinter && date < daylightsavingSummer)\r
-                       hours -= 1;\r
-               else if (!summertime && date > daylightsavingSummer && date < daylightsavingWinter)\r
-                       hours += 1;\r
-       }\r
-\r
-       return new Date(year, month - 1, day, hours, minutes, seconds);\r
-}\r
-\r
-// 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"\r
-function formatDate(date, format)\r
-{\r
-       var day = date.getDate().toString();\r
-       var month = (date.getMonth() + 1).toString();\r
-       while (day.length < 2) { day = '0' + day; }\r
-       while (month.length < 2) { month = '0' + month; }\r
-\r
-       if (config['showTodayAsText'].Value && isToday(date))\r
-               return '<span class="today">' + config['todayText'].Value + '</span>';\r
-       if (config['showTodayAsText'].Value && isTomorrow(date))\r
-               return '<span class="tomorrow">' + config['tomorrowText'].Value + '</span>';\r
-\r
-       var dateArr = format.replace(/,/g,'').replace(/\./g,':').replace(/  /g,' ').split(' ');\r
-       if (dateArr.length != 5 && dateArr.length != 6) {\r
-               // we don't know how to format this\r
-               if (config['dateFormat'].Value == 'auto' || config['dateFormat'].Value == 'DDMM')\r
-                       return day + config['dateSeparator'].Value + month;\r
-               else\r
-                       return month + config['dateSeparator'].Value + day;\r
-       }\r
-\r
-       var dayFirst = true;\r
-       if (config['dateFormat'].Value == 'MMDD')\r
-               dayFirst = false;\r
-       else if (config['dateFormat'].Value == 'DDMM')\r
-               dayFirst = true;\r
-       else {\r
-               // config['dateFormat'].Value == 'auto', try to detect system setting\r
-               // parse date\r
-               var day_ = dateArr[1];\r
-               var month_ = dateArr[2];\r
-               var year_ = dateArr[3];\r
-               // make sure month is set properly\r
-               if (isNaN(parseInt(day_))) {\r
-                       var tmp = day_;\r
-                       day_ = month_;\r
-                       month_ = tmp;\r
-                       dayFirst = false;\r
-               } else if (isNaN(parseInt(year_))) {\r
-                       var tmp = year_;\r
-                       year_ = month_;\r
-                       month_ = tmp;\r
-                       dayFirst = true;\r
-               }\r
-               // make sure day and year are set properly\r
-               if (Number(day_) > Number(year_))\r
-                       dayFirst = false;\r
-       }\r
-\r
-       if (dayFirst)\r
-               return day + config['dateSeparator'].Value + month;\r
-       else\r
-               return month + config['dateSeparator'].Value + day;\r
-}\r
-\r
-function formatTime(date)\r
-{\r
-       // date is a Date() object\r
-       date.setSeconds(0); // we don't care about seconds\r
-       var time = date.toLocaleTimeString().replace(/[\.:]00/, ''); // remove seconds from string\r
-       if (time.replace(/\./, ':').split(':')[0].length < 2)\r
-               time = '0' + time;\r
-       if (config['showNowAsText'].Value && date.getTime() == now.getTime())\r
-               time = '<span class="now">' + config['nowText'].Value + '</span>';\r
-       return time;\r
-}\r
-\r
-function updateData()\r
-{\r
-       console.info('updateData()');\r
-       calcDaylightSaving();\r
-       try {\r
-               // meetings have time\r
-               // 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\r
-               now = new Date();\r
-               var meetingListFiltering = {\r
-                       Type:'CalendarEntry',\r
-                       Filter:{\r
-                               StartRange: (new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0)),\r
-                               EndRange: (new Date(now.getFullYear(), now.getMonth() + config['monthRange'].Value, now.getDate(), 0, 0, 0))\r
-                       }\r
-               }\r
-               var meetingResult = calendarService.IDataSource.GetList(meetingListFiltering);\r
-               if (meetingResult.ErrorCode != 0)\r
-                       throw("Error fetching calendar data: " + meetingResult.ErrorCode + ': ' + meetingResult.ErrorMessage);\r
-               var meetingList = meetingResult.ReturnValue;\r
-\r
-               // todos don't, they start on 00:00 hrs., but should be visible anyway\r
-               // this will generate a list of passed todos. We have to check if they have been marked as "done" yet\r
-               if (config['includeTodos'].Value) {\r
-                       var todayTodoListFiltering = {\r
-                               Type:'CalendarEntry',\r
-                               Filter:{\r
-                                       Type: 'ToDo',\r
-                                       StartRange: (new Date(now.getFullYear() - 1, now.getMonth(), now.getDate(), 0, 0, 0)),\r
-                                       EndRange: (new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 1))\r
-                               }\r
-                       }\r
-                       var todayTodoResult = calendarService.IDataSource.GetList(todayTodoListFiltering);\r
-                       var todayTodoList = todayTodoResult.ReturnValue;\r
-                       var entryLists = [todayTodoList, meetingList];\r
-               } else {\r
-                       var entryLists = [meetingList];\r
-               }\r
-       } catch(e) {\r
-               error('loading Calendar items list:' + e + ', line ' + e.line);\r
-               return;\r
-       }\r
-\r
-       try {\r
-               var entry;\r
-               var counter = 0;\r
-               var entryDate = '';\r
-               var dateArr = [];\r
-               var entriesHtml = '<table>';\r
-               var eventIds = [];\r
-               var max;\r
-               if (mode == 0)\r
-                       max = ((panelNum == 0) ? config['eventsPerWidget'].Value : 2 * config['eventsPerWidget'].Value);\r
-               else\r
-                       max = 30; // we can display a lot more events in fullscreen mode\r
-\r
-               // the first outer loop iteration is for passed ToDos, the second loop is for all upcomming events (may also include ToDos)\r
-               for (var i=0; counter < max && i < entryLists.length; i++) {\r
-                       while (counter < max && (entry = entryLists[i].getNext()) != undefined) {\r
-                               counter++;\r
-\r
-                               // output event info for debugging\r
-                               console.info(\r
-                                       'event: Id=' + entry.id + \r
-                                       ',Type=' + entry.Type + \r
-                                       ',Summary=' + entry.Summary + \r
-                                       ',Location=' + entry.Location + \r
-                                       ',Status=' + entry.Status + \r
-                                       ',StartTime=' + entry.StartTime +\r
-                                       ',EndTime=' + entry.EndTime +\r
-                                       ',InstanceStartTime=' + entry.InstanceStartTime +\r
-                                       ',InstanceEndTime=' + entry.InstanceEndTime\r
-                               );\r
-\r
-                               // we don't want ToDos when includeTodos == false or when they are completed\r
-                               if (entry.Type == 'ToDo' && (entry.Status == "TodoCompleted" || !config['includeTodos'].Value)) {\r
-                                       console.info('skipping ' + entry.id );\r
-                                       counter--;\r
-                                       continue;\r
-                               }\r
-\r
-                               // make sure that we don't include an event twice (useful for ToDos that might come up twice)\r
-                               if (eventIds[entry.id] == 1 && entry.Type == 'ToDo') {\r
-                                       console.info('skipped (already included) ' + entry.id);\r
-                                       counter--;\r
-                                       continue;\r
-                               } else\r
-                                       eventIds[entry.id] = 1;\r
-\r
-                               // summary can be undefined!\r
-                               var Summary = ((entry.Summary == null) ? '' : entry.Summary);\r
-                               if (entry.Type == 'Meeting' && entry.Location != '' && config['showLocation'].Value)\r
-                                       Summary += ', ' + entry.Location;\r
-                               \r
-                               // fix by yves: determine start and end dates/times\r
-                               entryStartTime = ((entry.InstanceStartTime == null) ? entry.StartTime : entry.InstanceStartTime);\r
-                               entryEndTime = ((entry.InstanceEndTime == null) ? entry.EndTime : entry.InstanceEndTime);\r
-\r
-                               // there can be ToDos that have no date at all!\r
-                               if (entry.Type == 'ToDo' && entry.EndTime == null)\r
-                                       entryDate = ""; // this will cause parseDate(entryDate) to return null;\r
-                               else\r
-                                       entryDate = ((entry.Type == 'ToDo') ? entryEndTime : entryStartTime); // ToDo's use their EndTime, the rest use StartTime\r
-\r
-                               // Convert date/time string to Date object\r
-                               var date = parseDate(entryDate);\r
-                               console.info('date: ' + date);\r
-                               var endDate = ((entryEndTime == null) ? null : parseDate(entryEndTime));\r
-                               console.info('endDate: ' + endDate);\r
-\r
-                               // check if meeting event has already passed\r
-                               if (entry.Type == 'Meeting') {\r
-                                       var compareTime = ((endDate == null) ? date.getTime() : endDate.getTime());\r
-                                       if (now.getTime() > compareTime) {\r
-                                               console.info('skipping Meeting (already passed) ' + entry.id);\r
-                                               counter--;\r
-                                               eventIds[entry.id] = 0;\r
-                                               continue;\r
-                                       }\r
-                               }\r
-\r
-                               // check if anniversary passed (not sure why they are in the list, the query was only for today - nokia?)\r
-                               if (entry.Type == 'Anniversary') {\r
-                                       var tmp = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0,0,0);\r
-                                       if (date.getTime() < tmp.getTime()) {\r
-                                               console.info('skipping Anniversary (already passed) ' + entry.id);\r
-                                               counter--;\r
-                                               eventIds[entry.id] = 0;\r
-                                               continue;\r
-                                       }\r
-                               }\r
-\r
-                               // fix DayEvents end time. End times are off by 1 Second. It's possible that the event has already passed\r
-                               if (entry.Type == 'DayEvent' && endDate != null) {\r
-                                       endDate.setMinutes(endDate.getMinutes() - 1);\r
-                                       console.info('fixing DayEvent endDate: ' + endDate);\r
-                                       if (now.getTime() > endDate.getTime()) {\r
-                                               console.info('event already passed ' + entry.id);\r
-                                               counter--;\r
-                                               eventIds[entry.id] = 0;\r
-                                               continue;\r
-                                       }\r
-                               }\r
-\r
-                               // check if the event is currently taking place\r
-                               if (entryStartTime != null && entryEndTime != null && date != null && endDate != null) {\r
-                                       // check if we are between start and endtime\r
-                                       if ((date.getTime() < now.getTime()) && (now.getTime() < endDate.getTime())) {\r
-                                               date = now; // change appointment date/time to now\r
-                                               console.info('event is currently taking place: ' + date);\r
-                                       }\r
-                               }\r
-\r
-                               // skip events for the first panel in case this is the second one and we're not in fullscreen mode\r
-                               if (mode == 0 && panelNum == 1 && counter < config['eventsPerWidget'].Value + 1) {\r
-                                       console.info('skipping (already in first widget) ' + entry.id);\r
-                                       continue;\r
-                               }\r
-\r
-                               // generate html output\r
-                               entriesHtml += '<tr><td><img class="icon" src="' + entry.Type + '.png" /></td>';\r
-                               if(date == null) {\r
-                                       // some languages have very strange locale date formats, can't parse all those. Also some todos don't have dates at all.\r
-                                       entriesHtml += '<td colspan="4"><span class="date">' + entryDate + '</span> ';\r
-                               } else {\r
-                                       var weekDay = date.toLocaleDateString().substr(0,config['weekDayLength'].Value);\r
-                                       var time = formatTime(date);\r
-                                       var dateStr = formatDate(date, entryDate);\r
-                                       if (entry.Type == 'ToDo' || entry.Type == 'Anniversary' || entry.Type == 'DayEvent' || entry.Type == 'Reminder') {\r
-                                               if ((isToday(date) || isTomorrow(date)) && config['showTodayAsText'].Value) // show weekday if the date string is not text. looks odd otherwise\r
-                                                       entriesHtml += '<td colspan="4" width="1px"><span class="date">' + dateStr + '</span> ';\r
-                                               else\r
-                                                       entriesHtml += '<td class="weekDay" width="1px">' + weekDay + '</td><td width="1px" class="date">' + dateStr + '</td><td colspan="2">';\r
-                                       } else if (entry.Type == 'Meeting') {\r
-                                               if (config['showCombinedDateTime'].Value) {\r
-                                                       if (isToday(date))\r
-                                                               entriesHtml += '<td width="1px" colspan="4"><span class="today">' + time + '</span> ';\r
-                                                       else if (isTomorrow(date))\r
-                                                               entriesHtml += '<td width="1px" colspan="4"><span class="tomorrow">' + dateStr + '</span> <span class="time">' + time + '</span> ';\r
-                                                       else\r
-                                                               entriesHtml += '<td width="1px" class="weekDay">' + weekDay + '</td><td width="1px" class="date">' + dateStr + '</td><td colspan="2">';\r
-                                               } else {\r
-                                                       if ((isToday(date) || isTomorrow(date)) && config['showTodayAsText'].Value)\r
-                                                               entriesHtml += '<td colspan="4" width="1px"><span class="today">' + dateStr + '</span> <span class="time">' + time + '</span> ';\r
-                                                       else\r
-                                                               entriesHtml += '<td width="1px" class="weekDay">' + weekDay + '</td><td width="1px" class="date">' + dateStr + '</td><td width="1px" class="time">' + time + '</td><td>';\r
-                                               }\r
-                                       }\r
-                               }\r
-                               entriesHtml += '<span class="description">' + Summary + '</span></td></tr>';\r
-                       }\r
-               }\r
-               entriesHtml += '</table>';\r
-               if (config['showNothingText'].Value && entriesHtml == '<table></table>') {\r
-                       var text = config['nothingText'].Value.replace(/%d/, config['monthRange'].Value);\r
-                       entriesHtml = '<div style="width:295px; height:75px; text-align:center; line-height:75px; overflow:visible;">' + text + '</div>';\r
-               }\r
-               if (cacheEntriesHtml != entriesHtml) {\r
-                       if (mode == 0)\r
-                               document.getElementById('calendarList').innerHTML = entriesHtml;\r
-                       else\r
-                               document.getElementById('fullscreenCalendarList').innerHTML = entriesHtml;\r
-                       cacheEntriesHtml = entriesHtml;\r
-               }\r
-       } catch(e) {\r
-               error('displaying list:' + e + ', line ' + e.line);\r
-               return;\r
-       }\r
-}\r
-\r
-function updateScreen()\r
-{\r
-       // check if opening fullscreen\r
-       if( window.innerHeight > 91 && mode == 0) {\r
-               mode = 1;\r
-               cacheEntriesHtml = '';\r
-               document.getElementById('body').style.backgroundImage = "";\r
-               showFullscreen();\r
-       }\r
-       else if (window.innerHeight <= 91 && mode != 0) {\r
-               mode = 0;\r
-               cacheEntriesHtml = '';\r
-               showHomescreen();\r
-       }\r
-       \r
-       if (mode == 0)\r
-               updateHomescreen();\r
-       else if (mode == 1)\r
-               updateFullscreen();\r
-}\r
-\r
-function launchCalendar()\r
-{\r
-       try {\r
-               widget.openApplication(config['calendarApp'].Value, "");\r
-               if (config['hideWidgetOnCalendarOpen'].Value)\r
-                       window.close();\r
-       } catch(e) {\r
-               error('starting Calendar App');\r
-               return;\r
-       }\r
-}\r
-\r
-function init()\r
-{\r
-       console.info('New widget instance starting up...');\r
-       \r
-       try {\r
-               // call calendar service\r
-               if (device != "undefined")\r
-                       calendarService = device.getServiceObject("Service.Calendar", "IDataSource");\r
-               else\r
-                       throw('device object does not exist');\r
-       } catch(e) {\r
-               error('loading Calendar service: ' + e + ', line ' + e.line);\r
-               return;\r
-       }\r
-\r
-       loadSettings();\r
-       updateCssClasses();\r
-       collectLocales();\r
-       //updateData();\r
-       requestNotification();\r
-       window.setInterval('updateData()', 1000 * 60 * config['updateDataInterval'].Value);\r
-\r
-       mode = 0;\r
-       showHomescreen();\r
-       updateScreen();\r
-       if (config['useBackgroundImage'].Value)\r
-               // check for screen rotation every 1 secs\r
-               window.setInterval('updateScreen()', 1000 * 1);\r
-}\r
-\r
-function createMenu()\r
-{\r
-       window.menu.setLeftSoftkeyLabel("",null);\r
-       window.menu.setRightSoftkeyLabel("",null);\r
-       var id = 0;\r
-       var menuSettings = new MenuItem(getLocalizedText('menu.settings'), id++);\r
-       var menuCallApp = new MenuItem(getLocalizedText('menu.openCalendarApp'), id++);\r
-       var menuUpdate = new MenuItem(getLocalizedText('menu.update'), id++);\r
-       var menuAbout = new MenuItem(getLocalizedText('menu.about'), id++);\r
-       menuSettings.onSelect = showSettings;\r
-       menuAbout.onSelect = showAbout;\r
-       menuCallApp.onSelect = launchCalendar;\r
-       menuUpdate.onSelect = showUpdate;\r
-       window.menu.clear();\r
-       window.menu.append(menuCallApp);\r
-       window.menu.append(menuSettings);\r
-       window.menu.append(menuUpdate);\r
-       window.menu.append(menuAbout);  \r
-}\r
-\r
-function showSettings()\r
-{\r
-       mode = 2;\r
-       hideViews();\r
-       document.getElementById("settingsView").style.display = "block";\r
-       document.onclick = null;\r
-       \r
-       window.menu.setLeftSoftkeyLabel(getLocalizedText('settings.save'), function()\r
-       {\r
-               for (var key in config) {\r
-                       if (config[key].Type == 'String')\r
-                               config[key].Value = document.forms[0].elements["settings." + key].value;\r
-                       else if (config[key].Type == 'Int') {\r
-                               config[key].Value = parseInt(document.forms[0].elements["settings." + key].value);\r
-                               if (config[key].Value < 0)\r
-                                       config[key].Value = config[key].Default;\r
-                       }\r
-                       else if (config[key].Type == 'Bool')\r
-                               config[key].Value = document.forms[0].elements["settings." + key].checked;\r
-                       else if (config[key].Type == 'UID')\r
-                               config[key].Value = parseInt(document.forms[0].elements["settings." + key].value);\r
-                       else if (config[key].Type == 'Enum') {\r
-                               config[key].Value = document.forms[0].elements["settings." + key].value;\r
-                               if (config[key].ValidValues.indexOf(config[key].Value) == -1)\r
-                                       config[key].Value = config[key].Default;\r
-                       }\r
-               }\r
-                               \r
-               updateCssClasses();\r
-               \r
-               saveSettings();\r
-               \r
-               mode = 1;\r
-               showFullscreen();\r
-       });\r
-       window.menu.setRightSoftkeyLabel(getLocalizedText('settings.cancel'), function()\r
-       {\r
-               mode = 1;\r
-               showFullscreen();\r
-       });\r
-       \r
-       var settingsHtml = '<form>';\r
-       for (var key in config) {\r
-               if (config[key].Type == 'String')\r
-                       settingsHtml += '<table><tr><td>' + getLocalizedText('settings.name.' + key) + '<br /><input class="textInput" name="settings.' + key + '" type="text" value="' + config[key].Value + '" /></td>' + printHintBox(getLocalizedText('settings.info.' + key)) + '<hr />';\r
-               else if (config[key].Type == 'Int')\r
-                       settingsHtml += '<table><tr><td>' + getLocalizedText('settings.name.' + key) + '<br /><input class="textInput" name="settings.' + key + '" type="text" value="' + config[key].Value + '" /></td>' + printHintBox(getLocalizedText('settings.info.' + key)) + '<hr />';\r
-               else if (config[key].Type == 'Bool')\r
-                       settingsHtml += '<table><tr><td>' + getLocalizedText('settings.name.' + key) + '<br /><input name="settings.' + key + '" type="checkbox" value="true" ' + (config[key].Value ? 'checked="checked"' : '') + '/></td>' + printHintBox(getLocalizedText('settings.info.' + key)) + '<hr />';\r
-               else if (config[key].Type == 'UID')\r
-                       settingsHtml += '<table><tr><td>' + getLocalizedText('settings.name.' + key) + '<br /><input class="textInput" name="settings.' + key + '" type="text" value="0x' + config[key].Value.toString(16) + '" /></td>' + printHintBox(getLocalizedText('settings.info.' + key)) + '<hr />';\r
-               else if (config[key].Type == 'Enum') {\r
-                       settingsHtml += '<table><tr><td>' + getLocalizedText('settings.name.' + key) + '<br /><select name="settings.' + key + '" size="1">';\r
-                       for(var i = 0; i < config[key].ValidValues.length; i++)\r
-                               settingsHtml += '<option value="' + config[key].ValidValues[i] + '"' + (config[key].Value == config[key].ValidValues[i] ? ' selected="selected"' : '') + '>' + getLocalizedText('settings.validValues.' + key + '.' + config[key].ValidValues[i]) + '</option>';\r
-                       settingsHtml += '</select></div></td>' + printHintBox(getLocalizedText('settings.info.' + key)) + '<hr />';\r
-               }\r
-       }\r
-       settingsHtml += '<input name="reset" type="button" value="' + getLocalizedText('settings.restoreDefaults') + '" onclick="javascript:restoreDefaultSettings();showSettings();" />';\r
-       settingsHtml += '</form>';\r
-       document.getElementById("settingsList").innerHTML = settingsHtml;\r
-}\r
-\r
-function changeCssClass(classname, properties)\r
-{\r
-       for(var i = 0; i < document.styleSheets[0]['cssRules'].length; i++)\r
-       {\r
-               if (document.styleSheets[0]['cssRules'][i].selectorText == classname) {\r
-                       document.styleSheets[0].deleteRule(i);\r
-                       document.styleSheets[0].insertRule(classname + ' { ' + properties + ' }', document.styleSheets[0]['cssRules'].length);\r
-                       break;\r
-               }\r
-       }\r
-}\r
-\r
-function updateCssClasses()\r
-{\r
-       for(var key in config) {\r
-               changeCssClass(getLocalizedText('settings.name.' + key), config[key].Value);\r
-       }\r
-}\r
-\r
-function restoreDefaultSettings()\r
-{\r
-       for (var key in config)\r
-               config[key].Value = config[key].Default;\r
-}\r
-\r
-function loadSettings()\r
-{\r
-       for (var key in config) {\r
-               if (widget.preferenceForKey(key)) {\r
-                       if (config[key].Type == 'Int')\r
-                               config[key].Value = Number(widget.preferenceForKey(key));\r
-                       else if (config[key].Type == 'String')\r
-                               config[key].Value = widget.preferenceForKey(key);\r
-                       else if (config[key].Type == 'Bool')\r
-                               config[key].Value = (widget.preferenceForKey(key) == 'true')\r
-                       else if (config[key].Type == 'Enum')\r
-                               config[key].Value = widget.preferenceForKey(key);\r
-                       else if (config[key].Type == 'UID')\r
-                               config[key].Value = Number(widget.preferenceForKey(key));\r
-               }\r
-               else\r
-                       config[key].Value = config[key].Default;\r
-               console.info('Settings: ' + key + '=\'' + config[key].Value + '\'');\r
-       }\r
-}\r
-\r
-function saveSettings()\r
-{\r
-       for (var key in config) {\r
-               if (config[key].Type == 'Int')\r
-                       widget.setPreferenceForKey(config[key].Value.toString(), key);\r
-               else if (config[key].Type == 'String')\r
-                       widget.setPreferenceForKey(config[key].Value, key);\r
-               else if (config[key].Type == 'Bool')\r
-                       widget.setPreferenceForKey(config[key].Value ? 'true' : 'false', key);\r
-               else if (config[key].Type == 'Enum')\r
-                       widget.setPreferenceForKey(config[key].Value, key);\r
-               else if (config[key].Type == 'UID')\r
-                       widget.setPreferenceForKey(config[key].Value.toString(), key);\r
-       }\r
-}\r
-\r
-function toggleVisibility(elementId)\r
-{\r
-       if (document.getElementById(elementId).style.display == "none")\r
-               document.getElementById(elementId).style.display = "block";\r
-       else\r
-               document.getElementById(elementId).style.display = "none";\r
-}\r
-\r
-var uniqueId = 0;\r
-function printHintBox(text)\r
-{\r
-       uniqueId++;\r
-       return '<td width="1%" align="right" onclick="javascript:toggleVisibility(\'info' + uniqueId + '\')">' + getLocalizedText('settings.help') + '</td></tr></table>'+\r
-              '<div class="settingsInfo" id="info' + uniqueId + '">' + text + '</div>';\r
-}\r
-\r
-function showAbout()\r
-{\r
-       mode = 3;\r
-       hideViews();\r
-       document.getElementById("aboutView").style.display = "block";\r
-       document.onclick = null;\r
-       \r
-       window.menu.setLeftSoftkeyLabel(" ", function(){});\r
-       window.menu.setRightSoftkeyLabel(getLocalizedText('softkey.back'), function()\r
-       {\r
-               mode = 1;\r
-               showFullscreen();\r
-       });\r
-       \r
-       //document.getElementById("aboutView").innerHTML = 'aboutView';\r
-       document.getElementById("name").innerHTML = "Coming Next " + version;\r
-}\r
-\r
-function updateFullscreen()\r
-{\r
-}\r
-\r
-function showFullscreen()\r
-{\r
-       hideViews();\r
-       document.getElementById("fullscreenView").style.display = "block";\r
-       document.getElementById('body').className = "backgroundFullscreen";\r
-       document.onclick = launchCalendar;\r
-       createMenu();\r
-       updateData();\r
-}\r
-\r
-function getBackgroundImage()\r
-{\r
-       var bgImage;\r
-       if (config['backgroundImageLocation'].Value == config['backgroundImageLocation'].ValidValues[0]) // internal\r
-               bgImage = 'background_' + orientation + '.png';\r
-       else\r
-               bgImage = 'C:/Data/background_' + panelNum + '_' + orientation + '.png';\r
-       return bgImage;\r
-}\r
-\r
-function updateHomescreen()\r
-{\r
-       if (config['useBackgroundImage'].Value) {\r
-               // check for screen rotation\r
-               if (orientation != 'portrait' && screen.width == 360 && screen.height == 640) {\r
-                       window.widget.prepareForTransition("fade");\r
-                       orientation = 'portrait';\r
-                       document.getElementById('body').style.backgroundImage = 'url(' + getBackgroundImage() + ')';\r
-                       document.getElementById('body').style.backgroundColor = 'none';\r
-                       window.widget.performTransition();\r
-               } else if (orientation != 'landscape' && screen.width == 640 && screen.height == 360) {\r
-                       window.widget.prepareForTransition("fade");\r
-                       orientation = 'landscape';\r
-                       document.getElementById('body').style.backgroundImage = 'url(' + getBackgroundImage() + ')';\r
-                       document.getElementById('body').style.backgroundColor = 'none';\r
-                       window.widget.performTransition();\r
-               }\r
-               else if (document.getElementById('body').style.backgroundImage == "")\r
-               {\r
-                       document.getElementById('body').style.backgroundImage = 'url(' + getBackgroundImage() + ')';\r
-               }\r
-       }\r
-}\r
-\r
-function showHomescreen()\r
-{\r
-       hideViews();\r
-       document.getElementById("homescreenView").style.display = "block";\r
-       document.getElementById('body').className = "background";\r
-       document.onclick = null;\r
-       updateData();\r
-}\r
-\r
-function getLocalizedText(p_Txt)\r
-{\r
-       if (localizedText[p_Txt])\r
-               return localizedText[p_Txt];\r
-       else \r
-               return 'ERROR: missing translation for ' + p_Txt;\r
-}\r
-\r
-function showUpdate()\r
-{\r
-       mode = 4;\r
-       hideViews();\r
-       document.getElementById("updateView").style.display = "block";\r
-       document.onclick = null;\r
-       \r
-       window.menu.setLeftSoftkeyLabel(getLocalizedText('update.checknow'), function(){\r
-               checkForUpdate();\r
-       });\r
-       window.menu.setRightSoftkeyLabel(getLocalizedText('softkey.back'), function()\r
-       {\r
-               mode = 1;\r
-               showFullscreen();\r
-       });\r
-       \r
-       document.getElementById("currentVersion").innerHTML = getLocalizedText("update.current") + version;\r
-       checkForUpdate();\r
-}\r
-\r
-function checkForUpdate()\r
-{\r
-       // asynch XHR to server url\r
-       reqV = new XMLHttpRequest();\r
-       reqV.onreadystatechange = checkForUpdateCallback;\r
-       document.getElementById("updateDiv").innerHTML = getLocalizedText("update.checking");\r
-       reqV.open("GET", versionURL, true);\r
-       reqV.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" ); // disable caching\r
-       reqV.send(null);\r
-}\r
-\r
-function checkForUpdateCallback()\r
-{ \r
-       if (reqV.readyState == 4) {\r
-               if (reqV.status == 200) {\r
-                       var resultXml = reqV.responseText;\r
-                       if (resultXml) {\r
-                               var div = document.getElementById("tmp");\r
-                               div.innerHTML = resultXml;\r
-                               var newVersion = div.getElementsByTagName('version')[0].innerHTML;\r
-                               var newVersionURL = div.getElementsByTagName('url')[0].innerHTML;\r
-                               div.innerHTML = "";\r
-                               if (version != newVersion) {\r
-                                       document.getElementById("updateDiv").innerHTML = getLocalizedText("update.download").replace(/%1/, newVersion).replace(/%2/, newVersionURL);\r
-                               }\r
-                               else {\r
-                                       document.getElementById("updateDiv").innerHTML = getLocalizedText("update.nonewversion");\r
-                               }\r
-                       }\r
-               }\r
-               else {\r
-                       document.getElementById("updateDiv").innerHTML = getLocalizedText("update.error") + reqV.status + " " + reqV.responseText;\r
-               }\r
-       }\r
-}\r
-\r
-function hideViews()\r
-{\r
-       document.getElementById("homescreenView").style.display = "none";\r
-       document.getElementById("fullscreenView").style.display = "none";\r
-       document.getElementById("aboutView").style.display = "none";\r
-       document.getElementById("settingsView").style.display = "none";\r
-       document.getElementById("updateView").style.display = "none";\r
-}\r
-</script>\r
-\r
-<style type="text/css">\r
-table { margin:0px; padding:0px; border-spacing:0px; }\r
-td { padding:0px 5px 0px 0px; white-space:nowrap; overflow:hidden; }\r
-hr { color:#ffffff; background-color:#ffffff; height:1px; text-align:left; border-style:none; }\r
-.settingsInfo { display:none; font-style:italic; }\r
-.title { font-weight:bold; font-size:14pt; }\r
-.textInput { width:90%; }\r
-.credits { margin-left:40px; text-indent: -20px; margin-bottom:0px; }\r
-#homescreenView { width: 315px; height:91px; overflow:hidden; }\r
-#calendarList { position:absolute; left:10px; top:4px; width:295px; height:75px; overflow:hidden; }\r
-#name { text-align:center; }\r
-#appicon { display: block; margin-left: auto; margin-right: auto; margin-top: 10px; }\r
-#smallappicon { width:22px; height:22px; margin-right:10px; float:left; }\r
-</style>\r
-\r
-</head>\r
-\r
-<body id="body" class="background">\r
-<div id="homescreenView">\r
-       <div id="calendarList"></div>\r
-</div>\r
-<div id="fullscreenView" style="display:none;">\r
-       <img src="Icon.png" id="smallappicon">\r
-       <h1 class="title">Coming Next</h1>\r
-       <hr />\r
-       <div id="fullscreenCalendarList">loading...</div>\r
-</div>\r
-<div id="settingsView" style="display:none">\r
-       <img src="Icon.png" id="smallappicon">\r
-       <h1 class="title">Settings</h1>\r
-       <hr />\r
-       <div id="settingsList"></div>\r
-</div>\r
-<div id="aboutView" style="display:none">\r
-       <img src="Icon.png" id="appicon">\r
-       <h1 id="name">Coming Next</h1>\r
-       <hr />\r
-       <p>Created by Dr. Cochambre and Michael Prager.</p>\r
-       <p>Contributions:</p>\r
-               <p class="credits">Paul Moore (bug fixes, new features and code cleanup)</p>\r
-               <p class="credits">Manfred Hanselmann (DST support)</p>\r
-               <p class="credits">Christophe Milsent (translation support & french translation</p>\r
-               <p class="credits">Flavio Nathan (portuguese-brazilian translation</p>\r
-       <p>This software is open source and licensed under the GPLv3.</p>\r
-       <p>Visit sourceforge.net/projects/comingnext for free updates.</p>\r
-       <hr />\r
-</div>\r
-<div id="updateView" style="display:none">\r
-       <img src="Icon.png" id="smallappicon">\r
-       <h1 class="title">Check for update</h1>\r
-       <hr />\r
-       <div id="currentVersion">Coming Next ??</div>\r
-       <div id="updateDiv"></div>\r
-       <div id="tmp" style="display:none;"></div>\r
-</div>\r
-</body>\r
-\r
-</html>\r
diff --git a/comingNextB/localizedTextStrings.js b/comingNextB/localizedTextStrings.js
deleted file mode 100644 (file)
index 6c93cfc..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-var localizedText = new Array();\r
-\r
-localizedText['menu.settings'] = 'Settings';\r
-localizedText['menu.openCalendarApp'] = 'Open Calendar App';\r
-localizedText['menu.about'] = 'About';\r
-localizedText['menu.update'] = 'Check for new version';\r
-\r
-localizedText['softkey.back'] = 'Back';\r
-\r
-localizedText['settings.restoreDefaults'] = 'Restore Defaults';\r
-localizedText['settings.help'] = 'Help';\r
-localizedText['settings.save'] = 'Save';\r
-localizedText['settings.cancel'] = 'Cancel';\r
-\r
-localizedText['settings.name.monthRange'] = 'Month Range';\r
-localizedText['settings.info.monthRange'] = 'number of months to include in the event list';\r
-localizedText['settings.name.includeTodos'] = 'Include ToDos';\r
-localizedText['settings.info.includeTodos'] = 'disable to remove ToDos from event list';\r
-localizedText['settings.name.useBackgroundImage'] = 'Use Background Image';\r
-localizedText['settings.info.useBackgroundImage'] = 'use background_portrait.png and background_landscape.png to fake transparency. Disable to use a solid background color';\r
-localizedText['settings.name.backgroundImageLocation'] = 'Background Image Location';\r
-localizedText['settings.info.backgroundImageLocation'] = 'defines where the image is located that is displayed in the background. "Internal" will use the buildin image, "external" will use the image located in C:\\Data\\. If you\'ve generated images with "ComingNext Skin Fetcher", you should set this to "external".';\r
-localizedText['settings.validValues.backgroundImageLocation.internal'] = 'internal';\r
-localizedText['settings.validValues.backgroundImageLocation.external'] = 'external';\r
-localizedText['settings.name.showCombinedDateTime'] = 'Show Combined Date/Time';\r
-localizedText['settings.info.showCombinedDateTime'] = 'only show the time for events happening today, otherwise just show the date';\r
-localizedText['settings.name.showLocation'] = 'Show Location';\r
-localizedText['settings.info.showLocation'] = 'show the location for meeting events';\r
-localizedText['settings.name.showTodayAsText'] = 'Show Today as Text';\r
-localizedText['settings.info.showTodayAsText'] = 'if enabled, the current date will be shown as "Today" instead of "31.12"';\r
-localizedText['settings.name.todayText'] = '"Today" Text';\r
-localizedText['settings.info.todayText'] = 'text to display for "Today"';\r
-localizedText['settings.default.todayText'] = 'Today';\r
-localizedText['settings.name.tomorrowText'] = '"Tomorrow" Text';\r
-localizedText['settings.info.tomorrowText'] = 'text to display for "Tomorrow"';\r
-localizedText['settings.default.tomorrowText'] = 'Tomorrow';\r
-localizedText['settings.name.showNowAsText'] = 'Show Now as Text';\r
-localizedText['settings.info.showNowAsText'] = 'if enabled, the appointment time will be shown as "Now" instead of "12:00"';\r
-localizedText['settings.name.nowText'] = '"Now" Text';\r
-localizedText['settings.info.nowText'] = 'text to display for "Now"';\r
-localizedText['settings.default.nowText'] = 'Now';\r
-localizedText['settings.name.dateSeparator'] = 'Date Separator';\r
-localizedText['settings.info.dateSeparator'] = 'separator for dates. e.g. "31.12" or "31/12"';\r
-localizedText['settings.default.dateSeparator'] = '.';\r
-localizedText['settings.name.dateFormat'] = 'Date Format';\r
-localizedText['settings.info.dateFormat'] = 'how dates will be displayed. \'auto\' will autodetect your phone\'s date format setting. \'MMDD\' will write month first, \'DDMM\' will write day first';\r
-localizedText['settings.validValues.dateFormat.auto'] = 'autodetect';\r
-localizedText['settings.validValues.dateFormat.DDMM'] = 'day/month/year';\r
-localizedText['settings.validValues.dateFormat.MMDD'] = 'month/day/year';\r
-localizedText['settings.name.weekDayLength'] = 'Weekday Length';\r
-localizedText['settings.info.weekDayLength'] = 'defines how many characters of the weekday will be shown. E.g. 2 will cut "Friday" to "Fr"';\r
-localizedText['settings.name.updateDataInterval'] = 'Update Data Interval';\r
-localizedText['settings.info.updateDataInterval'] = 'how many minutes to wait before updating the displayed data. The higher the number, the less battery is used';\r
-localizedText['settings.name.calendarApp'] = 'Calendar Application To Run';\r
-localizedText['settings.info.calendarApp'] = 'UID of the calendar app to run when clicking the widget. 0x10005901 = buildin calendar, 0x20004ec1 = Epocware Handy Calendar';\r
-localizedText['settings.name.eventsPerWidget'] = 'Events Per Widget';\r
-localizedText['settings.info.eventsPerWidget'] = 'number of events to show per widget. Default is 4';\r
-localizedText['settings.name.showNothingText'] = 'Show "Nothing" Text';\r
-localizedText['settings.info.showNothingText'] = 'if enabled, show a text if no events are in the list';\r
-localizedText['settings.name.nothingText'] = '"No further events..." Text';\r
-localizedText['settings.info.nothingText'] = 'text to show when no events are in the list';\r
-localizedText['settings.default.nothingText'] = 'No further events within %d months';\r
-localizedText['settings.name.enableDaylightSaving'] = 'Enable Daylight Saving (+1h)';\r
-localizedText['settings.info.enableDaylightSaving'] = 'enable this if you are in a timezone that has daylight saving time (+1h)';\r
-localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Hide Widget When Opening Calendar';\r
-localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'enable this if the fullscreen widget should be hidden when clicking on the widget to open the calendar app';\r
-localizedText['settings.name.cssStyle_background'] = '.background';\r
-localizedText['settings.info.cssStyle_background'] = 'Defines the background of the widget. If you want to use a background image, set useBackgroundImage = true below. For the default themes, black, gray, and light blue, codes are #292029, #e7dfe7, #009aef';\r
-localizedText['settings.name.cssStyle_backgroundFullscreen'] = '.backgroundFullscreen';\r
-localizedText['settings.info.cssStyle_backgroundFullscreen'] = 'Same as background but for the fullscreen version of the widget';\r
-localizedText['settings.name.cssStyle_weekDay'] = '.weekDay';\r
-localizedText['settings.info.cssStyle_weekDay'] = 'Defines the appearance of all week day texts';\r
-localizedText['settings.name.cssStyle_date'] = '.date';\r
-localizedText['settings.info.cssStyle_date'] = 'Defines the appearance of all date texts';\r
-localizedText['settings.name.cssStyle_today'] = '.today';\r
-localizedText['settings.info.cssStyle_today'] = 'Defines the appearance of "Today" text';\r
-localizedText['settings.name.cssStyle_tomorrow'] = '.tomorrow';\r
-localizedText['settings.info.cssStyle_tomorrow'] = 'Defines the appearance of "Tomorrow" text';\r
-localizedText['settings.name.cssStyle_time'] = '.time';\r
-localizedText['settings.info.cssStyle_time'] = 'Defines the appearance of all time texts';\r
-localizedText['settings.name.cssStyle_now'] = '.now';\r
-localizedText['settings.info.cssStyle_now'] = 'Defines the appearance of "Now" text';\r
-localizedText['settings.name.cssStyle_description'] = '.description';\r
-localizedText['settings.info.cssStyle_description'] = 'Defines the appearance of all event descriptions';\r
-localizedText['settings.name.cssStyle_icon'] = '.icon';\r
-localizedText['settings.info.cssStyle_icon'] = 'Defines size and appearance of icons';\r
-\r
-localizedText['update.current'] = 'Your version: ';\r
-localizedText['update.checking'] = 'checking for updates...';\r
-localizedText['update.download'] = 'Current version: %1<br /><a href=\"%2\">download new version</a>';\r
-localizedText['update.nonewversion'] = 'no new versions available';\r
-localizedText['update.error'] = 'connection error: ';\r
-localizedText['update.checknow'] = 'Check now';\r
diff --git a/comingNextB/pt-BR.lproj/localizedTextStrings.js b/comingNextB/pt-BR.lproj/localizedTextStrings.js
deleted file mode 100644 (file)
index 5472e5c..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-var localizedText = new Array();\r
-\r
-localizedText['menu.settings'] = 'Configuração';\r
-localizedText['menu.openCalendarApp'] = 'Abre Calendário';\r
-localizedText['menu.about'] = 'Sobre';\r
-localizedText['menu.update'] = 'Check for new version';\r
-\r
-localizedText['softkey.back'] = 'Back';\r
-\r
-localizedText['settings.restoreDefaults'] = 'Restaura Padrão';\r
-localizedText['settings.help'] = 'Ajuda';\r
-localizedText['settings.save'] = 'Salva';\r
-localizedText['settings.cancel'] = 'Cancela';\r
-\r
-localizedText['settings.name.monthRange'] = 'Faixa do M&ecirc;s';\r
-localizedText['settings.info.monthRange'] = 'N&uacute;mero de meses inclu&iacute;dos na lista de evento';\r
-localizedText['settings.name.includeTodos'] = 'Incluir ToDos';\r
-localizedText['settings.info.includeTodos'] = 'Desativa para remover "ToDos" da lista de eventos';\r
-localizedText['settings.name.useBackgroundImage'] = 'Usa Imagem de Fundo';\r
-localizedText['settings.info.useBackgroundImage'] = 'Use background_portrait.png e background_landscape.png para transpar&ecirc;ncia artificial. Desativa para usar uma imagem s&oacute;lida de fundo';\r
-localizedText['settings.name.backgroundImageLocation'] = 'Background Image Location';\r
-localizedText['settings.info.backgroundImageLocation'] = 'defines where the image is located that is displayed in the background. "Internal" will use the buildin image, "external" will use the image located in C:\\Data\\. If you\'ve generated images with "ComingNext Skin Fetcher", you should set this to "external".';\r
-localizedText['settings.validValues.backgroundImageLocation.internal'] = 'internal';\r
-localizedText['settings.validValues.backgroundImageLocation.external'] = 'external';\r
-localizedText['settings.name.showCombinedDateTime'] = 'Apresenta Combina&ccedil;&atilde;o de Data/Tempo';\r
-localizedText['settings.info.showCombinedDateTime'] = 'somente apresenta o tempo para eventos acontecidos hoje, caso contr&aacute;rio apresenta a data';\r
-localizedText['settings.name.showLocation'] = 'Apresenta Loca&ccedil;&atilde;o';\r
-localizedText['settings.info.showLocation'] = 'apresenta o lugar para eventos de reuni&atilde;o';\r
-localizedText['settings.name.showTodayAsText'] = 'Apresenta Hoje como texto';\r
-localizedText['settings.info.showTodayAsText'] = 'Se ativado, a data atual ser&aacute; apresentada como "Hoje" ao inv&eacute;z de "31.12"';\r
-localizedText['settings.name.todayText'] = 'Texto "Hoje"';\r
-localizedText['settings.info.todayText'] = 'Texto mostrado para "Hoje"';\r
-localizedText['settings.default.todayText'] = 'Hoje';\r
-localizedText['settings.name.tomorrowText'] = 'Texto "Amanh&atilde;"';\r
-localizedText['settings.info.tomorrowText'] = 'Texto mostrado para "Amanh&atilde;"';\r
-localizedText['settings.default.tomorrowText'] = 'Amanh&atilde;';\r
-localizedText['settings.name.showNowAsText'] = 'Apresenta "Agora" como Texto';\r
-localizedText['settings.info.showNowAsText'] = 'Se ativado, a data atual ser&aacute; apresentada como "Agora" ao inv&eacute;z de "12:00"';\r
-localizedText['settings.name.nowText'] = 'Texto "Agora"';\r
-localizedText['settings.info.nowText'] = 'Texto mostrado para "Agora"';\r
-localizedText['settings.default.nowText'] = 'Agora';\r
-localizedText['settings.name.dateSeparator'] = 'Separador da Data';\r
-localizedText['settings.info.dateSeparator'] = 'Separador para datas. ex : "31.12" or "31/12"';\r
-localizedText['settings.default.dateSeparator'] = '/';\r
-localizedText['settings.name.dateFormat'] = 'Formato da Data';\r
-localizedText['settings.info.dateFormat'] = 'como a data dever&aacute; ser mostrada. \'auto\' ir&aacute; autodetectar o formato da data em sua configura&ccedil;&atilde;o no fone. \'MMDD\' escrever&aacute; primeiro o m&ecirc;s, \'DDMM\' escrever&aacute; primeiro o dia ';\r
-localizedText['settings.validValues.dateFormat.auto'] = 'autodetect';\r
-localizedText['settings.validValues.dateFormat.DDMM'] = 'day/month/year';\r
-localizedText['settings.validValues.dateFormat.MMDD'] = 'month/day/year';\r
-localizedText['settings.name.weekDayLength'] = 'Dia da semana - abrevia&ccedil;&atilde;o';\r
-localizedText['settings.info.weekDayLength'] = 'define com quantos caracteres ser&aacute; mostrado o dia da semana. Ex: 3 dever&aacute; limitar "Sexta" to "Sex"';\r
-localizedText['settings.name.updateDataInterval'] = 'Intervalo de atualiza&ccedil;&atilde;o de dados';\r
-localizedText['settings.info.updateDataInterval'] = 'quantos minutos esperar antes de atualizar o mostrador. Quanto maior o n&uacute;mero, menos bateria ser&aacute; utilizada.';\r
-localizedText['settings.name.calendarApp'] = 'Aplica&ccedil;&atilde;o de Calend&aacute;rio a executar.';\r
-localizedText['settings.info.calendarApp'] = 'define qual aplicativo ir&aacute; executar ap&oacute;s clicar no widget. 0x10005901 = Calend&aacute;rio interno, 0x20004ec1 = Calend&aacute;rio Epocware Handy';\r
-localizedText['settings.name.eventsPerWidget'] = 'Eventos por Widget';\r
-localizedText['settings.info.eventsPerWidget'] = 'N&uacute;mero de eventos apresentados por widget. Padr&atilde;o &eacute; 4';\r
-localizedText['settings.name.showNothingText'] = 'Apresenta "Nada" como texto';\r
-localizedText['settings.info.showNothingText'] = 'se ativo, apresenta um texto se n&atilde;o h&aacute; eventos listados';\r
-localizedText['settings.name.nothingText'] = '"N&atilde;o h&aacute; mais eventos..." Texto';\r
-localizedText['settings.info.nothingText'] = 'texto apresentado quando n&atilde;o h&aacute; eventos listados';\r
-localizedText['settings.default.nothingText'] = 'N&atilde;o h&aacute; mais eventos nestes %d meses';\r
-localizedText['settings.name.enableDaylightSaving'] = 'Ativa hor&aacute;rio de ver&atilde;o (+1h)';\r
-localizedText['settings.info.enableDaylightSaving'] = 'ative isto se voc&ecirc; est&aacute; em uma regi&atilde;o que tem hor&aacute;rio de ver&atilde;o (+1h)';\r
-localizedText['settings.name.hideWidgetOnCalendarOpen'] = 'Esconde o Widget quando abrir o Calend&aacute;rio';\r
-localizedText['settings.info.hideWidgetOnCalendarOpen'] = 'ative isto se se o widget em tela cheia dever&aacute; ficar escondido ap&oacute;s clicado para abrir a aplica&ccedil;&atilde;o de calend&aacute;rio';\r
-localizedText['settings.name.cssStyle_background'] = '.background';\r
-localizedText['settings.info.cssStyle_background'] = 'Define o fundo de tela do widget. Se voc&ecirc; quer usar uma imagem de fundo, ponha useBackgroundImage = true abaixo. Para temas padr&atilde;o, preto, cinza, e azul claro, os c&oacute;digos s&atilde;o #292029, #e7dfe7, #009aef';\r
-localizedText['settings.name.cssStyle_backgroundFullscreen'] = '.backgroundFullscreen';\r
-localizedText['settings.info.cssStyle_backgroundFullscreen'] = 'O mesmo que fundo de tela mas para quando o widget estiver em tela cheia';\r
-localizedText['settings.name.cssStyle_weekDay'] = '.weekDay';\r
-localizedText['settings.info.cssStyle_weekDay'] = 'Define a apar&ecirc;ncia dos textos de dia da semana';\r
-localizedText['settings.name.cssStyle_date'] = '.date';\r
-localizedText['settings.info.cssStyle_date'] = 'Define a apar&ecirc;ncia dos textos das datas';\r
-localizedText['settings.name.cssStyle_today'] = '.today';\r
-localizedText['settings.info.cssStyle_today'] = 'Define a apar&ecirc;ncia dos textos do dia de "Hoje"';\r
-localizedText['settings.name.cssStyle_tomorrow'] = '.tomorrow';\r
-localizedText['settings.info.cssStyle_tomorrow'] = 'Define a apar&ecirc;ncia dos textos do dia de "Amanh&atilde;"';\r
-localizedText['settings.name.cssStyle_time'] = '.time';\r
-localizedText['settings.info.cssStyle_time'] = 'Define a apar&ecirc;ncia dos textos de tempo';\r
-localizedText['settings.name.cssStyle_now'] = '.now';\r
-localizedText['settings.info.cssStyle_now'] = 'Define a apar&ecirc;ncia dos textos de "Agora"';\r
-localizedText['settings.name.cssStyle_description'] = '.description';\r
-localizedText['settings.info.cssStyle_description'] = 'Define a apar&ecirc;ncia dos textos de descri&ccedil;&atilde;o de eventos';\r
-localizedText['settings.name.cssStyle_icon'] = '.icon';\r
-localizedText['settings.info.cssStyle_icon'] = 'Define o tamanho e apar&ecirc;ncia dos icons';\r
-\r
-localizedText['update.current'] = 'Your version: ';\r
-localizedText['update.checking'] = 'checking for updates...';\r
-localizedText['update.download'] = 'Current version: %1<br /><a href=\"%2\">download new version</a>';\r
-localizedText['update.nonewversion'] = 'no new versions available';\r
-localizedText['update.error'] = 'connection error: ';\r
-localizedText['update.checknow'] = 'Check now';\r
diff --git a/zip.exe b/zip.exe
deleted file mode 100644 (file)
index 286227a..0000000
Binary files a/zip.exe and /dev/null differ