// Nothing of interest from here on...\r
//-------------------------------------------------------\r
var panelNum = 0; // use 1 for second panel\r
-var version = "1.32";\r
+var version = "1.33";\r
var versionURL = "http://comingnext.sourceforge.net/version.xml";\r
var calendarService = null;\r
var cacheEntriesHtml = [];\r
var reloadInterval = 6 * 60 * 60 * 1000; // = 6 hours; time interval for reloading calendar data\r
var errorOccured = false;\r
var entryLists = null; // stores all fetched calendar entries until data is refreshed\r
+var statupSuccessful = false; // indicates if everything started up wihtout errors. If we detect an error after that, it might just be a temporary problem e.g. by a backup process.\r
\r
// vars for daylight saving time\r
var summertime = false; // true, if current date is in summer, false if in winter\r
try {\r
var result = calendarService.IDataSource.Add(criteria);\r
if (result.ErrorCode)\r
- error(result.ErrorMessage);\r
+ throw(result.ErrorMessage);\r
} catch (e) {\r
error("collectLocales: " + e + ', line ' + e.line);\r
}\r
}\r
}\r
var result = calendarService.IDataSource.GetList(listFiltering);\r
- if (result.ErrorCode) {\r
- error(result.ErrorMessage);\r
- return;\r
- }\r
+ if (result.ErrorCode)\r
+ throw(result.ErrorMessage);\r
var list = result.ReturnValue;\r
} catch(e) {\r
- error(e + ', line ' + e.line);\r
+ error("collectLocales: " + e + ', line ' + e.line);\r
return;\r
}\r
var ids = new Array();\r
var dateArr = [];\r
\r
while (list && (entry = list.getNext()) != undefined) {\r
- dateArr = entry.StartTime.replace(/,/g,'').replace(/\./g,':').replace(/ /g,' ').split(' ');\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
counter++;\r
}\r
} catch(e) {\r
- error(e + ', line ' + e.line);\r
+ error("collectLocales: " + e + ', line ' + e.line);\r
return;\r
}\r
log(ids);\r
\r
var result = calendarService.IDataSource.Delete(criteria);\r
if (result.ErrorCode)\r
- error(result.ErrorMessage);\r
+ throw(result.ErrorMessage);\r
} catch(e) {\r
error('deleting temp calendar entries:' + e + ', line ' + e.line);\r
return;\r
Wednesday, 2009 August, 28 8.00.00 pm\r
Wednesday, 2009 August, 28 08:00:00 PM\r
*/\r
+ var result = null;\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
+ if (dateString == "" || dateString == null || dateString == undefined)\r
+ return result;\r
+ if (dateString instanceof Date) {\r
+ // we already have a date object, no need to parse string here\r
+ result = dateString;\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
+ else {\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
+ }\r
+ else \r
+ 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
+ result = new Date(year, month - 1, day, hours, minutes, seconds);\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
- var result = new Date(year, month - 1, day, hours, minutes, seconds);\r
\r
// take care of daylight saving time\r
if (config['enableDaylightSaving'].Value) {\r
if (config['showTodayAsText'].Value && isTomorrow(date))\r
return '<span class="tomorrow">' + config['tomorrowText'].Value + '</span>';\r
\r
+ if (format instanceof Date) {\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
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
\r
// check if we got additional or less calendars since our last update\r
var newCalendarList = listCalendars();\r
+ if (newCalendarList == null) {\r
+ // Something went wrong fetching the calendars list.\r
+ // This usually happens when a backup is being made.\r
+ // Retry the next time updateData() is called by \r
+ // resetting errorOccured\r
+ log('updateData(): listCalendars() failed, trying again laster...');\r
+ cacheEntriesHtml = ''; // make sure we replace the currently shown error message on the next update\r
+ errorOccured = false;\r
+ return;\r
+ }\r
if (newCalendarList.length != calendarList.length) {\r
calendarList = newCalendarList;\r
updateCalendarColors();\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
+ if (entry.Location != '' && entry.Location != undefined && config['showLocation'].Value)\r
Summary += ', ' + entry.Location;\r
\r
// fix by yves: determine start and end dates/times\r
window.widget.onshow = handleOnShow;\r
\r
log("init(): finished...");\r
+ if (!errorOccured)\r
+ statupSuccessful = true;\r
}\r
\r
function checkOrientation()\r
Type: 'DayEvent'\r
}\r
}\r
- var result = calendarService.IDataSource.GetList(listFiltering);\r
- if (result.ErrorCode) {\r
- error(result.ErrorMessage);\r
+ var result = null;\r
+ try {\r
+ result = calendarService.IDataSource.GetList(listFiltering);\r
+ if (result.ErrorCode)\r
+ throw(result.ErrorMessage);\r
+ }\r
+ catch (e) {\r
+ error("getSettingsCalEntryId: GetList() failed: " + e + ', line ' + e.line);\r
return;\r
}\r
var list = result.ReturnValue;\r
try {\r
var result = calendarService.IDataSource.Add(criteria);\r
if (result.ErrorCode)\r
- error(result.ErrorMessage);\r
+ throw(result.ErrorMessage);\r
} catch (e) {\r
error("getSettingsCalEntryId: " + e + ', line ' + e.line);\r
}\r
LocalId: settingsCalEntryId\r
}\r
}\r
- var result = calendarService.IDataSource.GetList(listFiltering);\r
- if (result.ErrorCode) {\r
- error(result.ErrorMessage);\r
+ var result = null;\r
+ try {\r
+ result = calendarService.IDataSource.GetList(listFiltering);\r
+ if (result.ErrorCode)\r
+ throw(result.ErrorMessage);\r
+ }\r
+ catch (e) {\r
+ error("loadSettings: GetList() failed: " + e + ', line ' + e.line);\r
return;\r
}\r
var entry = result.ReturnValue.getNext();\r
try {\r
var result = calendarService.IDataSource.Add(criteria);\r
if (result.ErrorCode)\r
- error(result.ErrorMessage);\r
+ throw(result.ErrorMessage);\r
} catch (e) {\r
error("saveSettings: " + e + ', line ' + e.line);\r
}\r
function updateHomescreen()\r
{\r
if (config['useBackgroundImage'].Value) {\r
+ // check if we have a completely unknown screen resolution\r
+ var screenHeight = screen.height;\r
+ var screenWidth = screen.width;\r
+ if (screenHeight != 640 && screenHeight != 480 && screenHeight != 360)\r
+ screenHeight = 360; // we can only assume we're in portrait mode, so we set the screen dims as needed for the following code\r
+ if (screenWidth != 640 && screenWidth != 480 && screenWidth != 360)\r
+ screenWidth = 640; // we can only assume we're in portrait mode, so we set the screen dims as needed for the following code\r
+ \r
// check for screen rotation\r
- if (orientation != 'portrait' && screen.width == 360 && screen.height == 640) {\r
+ if (orientation != 'portrait' && ((screenWidth == 360 && screenHeight == 640) || (screenWidth == 640 && screenHeight == 480))) {\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
+ } else if (orientation != 'landscape' && ((screenWidth == 640 && screenHeight == 360) || (screenWidth == 480 && screenHeight == 640))) {\r
window.widget.prepareForTransition("fade");\r
orientation = 'landscape';\r
document.getElementById('body').style.backgroundImage = 'url(' + getBackgroundImage() + ')';\r
}\r
}\r
\r
-function log(message) {\r
+function log(message)\r
+{\r
if (config['enableLogging'].Value) {\r
console.info(message);\r
}\r