X-Git-Url: https://code.delx.au/comingnext/blobdiff_plain/75ded6d7bb4defcb5a019e3555696bff0cff40fc..3043a3bc7b12ab1781ee20a0a07d3daf3ed2a6b2:/comingNextB/index.html diff --git a/comingNextB/index.html b/comingNextB/index.html index e743a65..cadf329 100644 --- a/comingNextB/index.html +++ b/comingNextB/index.html @@ -27,6 +27,7 @@ var config = { monthRange: { Type: 'Int', Default: 2, Value: 2,}, includeTodos: { Type: 'Bool', Default: true, Value: true,}, useBackgroundImage: { Type: 'Bool', Default: true, Value: true,}, + backgroundImageLocation: { Type: 'Enum', Default: 'internal', Value: 'internal', ValidValues: ['internal', 'external']}, showCombinedDateTime: { Type: 'Bool', Default: false, Value: false,}, showLocation: { Type: 'Bool', Default: true, Value: true,}, showTodayAsText: { Type: 'Bool', Default: true, Value: true,}, @@ -57,17 +58,20 @@ var config = { } + //------------------------------------------------------- // Nothing of interest from here on... //------------------------------------------------------- -var panelNum = 1; // use 1 for second panel +var panelNum = 0; // use 1 for second panel var version = "1.25"; +var versionURL = "http://comingnext.sourceforge.net/version.xml"; var calendarService = null; var cacheEntriesHtml = []; var months_translated = []; var orientation = ''; var now = new Date(); -var mode = 0; // 0 = homescreen, 1 = fullscreen, 2 = settings, 3 = about +var mode = 0; // 0 = homescreen, 1 = fullscreen, 2 = settings, 3 = about, 4 = check for update +var reqV = null; // vars for daylight saving time var daylightsavingWinter = 0; @@ -662,7 +666,10 @@ function init() try { // call calendar service - calendarService = device.getServiceObject("Service.Calendar", "IDataSource"); + if (device != "undefined") + calendarService = device.getServiceObject("Service.Calendar", "IDataSource"); + else + throw('device object does not exist'); } catch(e) { error('loading Calendar service: ' + e + ', line ' + e.line); return; @@ -690,22 +697,23 @@ function createMenu() var id = 0; var menuSettings = new MenuItem(getLocalizedText('menu.settings'), id++); var menuCallApp = new MenuItem(getLocalizedText('menu.openCalendarApp'), id++); + var menuUpdate = new MenuItem(getLocalizedText('menu.update'), id++); var menuAbout = new MenuItem(getLocalizedText('menu.about'), id++); menuSettings.onSelect = showSettings; menuAbout.onSelect = showAbout; menuCallApp.onSelect = launchCalendar; + menuUpdate.onSelect = showUpdate; window.menu.clear(); window.menu.append(menuCallApp); window.menu.append(menuSettings); + window.menu.append(menuUpdate); window.menu.append(menuAbout); } function showSettings() { mode = 2; - document.getElementById("homescreenView").style.display = "none"; - document.getElementById("fullscreenView").style.display = "none"; - document.getElementById("aboutView").style.display = "none"; + hideViews(); document.getElementById("settingsView").style.display = "block"; document.onclick = null; @@ -756,7 +764,7 @@ function showSettings() else if (config[key].Type == 'Enum') { settingsHtml += '' + printHintBox(getLocalizedText('settings.info.' + key)) + '
'; } } @@ -846,14 +854,12 @@ function printHintBox(text) function showAbout() { mode = 3; - document.getElementById("homescreenView").style.display = "none"; - document.getElementById("fullscreenView").style.display = "none"; + hideViews(); document.getElementById("aboutView").style.display = "block"; - document.getElementById("settingsView").style.display = "none"; document.onclick = null; window.menu.setLeftSoftkeyLabel(" ", function(){}); - window.menu.setRightSoftkeyLabel("Back", function() + window.menu.setRightSoftkeyLabel(getLocalizedText('softkey.back'), function() { mode = 1; showFullscreen(); @@ -869,16 +875,24 @@ function updateFullscreen() function showFullscreen() { - document.getElementById("homescreenView").style.display = "none"; + hideViews(); document.getElementById("fullscreenView").style.display = "block"; - document.getElementById("aboutView").style.display = "none"; - document.getElementById("settingsView").style.display = "none"; document.getElementById('body').className = "backgroundFullscreen"; document.onclick = launchCalendar; createMenu(); updateData(); } +function getBackgroundImage() +{ + var bgImage; + if (config['backgroundImageLocation'].Value == config['backgroundImageLocation'].ValidValues[0]) // internal + bgImage = 'background_' + orientation + '.png'; + else + bgImage = 'C:/Data/background_' + panelNum + '_' + orientation + '.png'; + return bgImage; +} + function updateHomescreen() { if (config['useBackgroundImage'].Value) { @@ -886,29 +900,27 @@ function updateHomescreen() if (orientation != 'portrait' && screen.width == 360 && screen.height == 640) { window.widget.prepareForTransition("fade"); orientation = 'portrait'; - document.getElementById('body').style.backgroundImage = 'url(background_' + orientation + '.png)'; + document.getElementById('body').style.backgroundImage = 'url(' + getBackgroundImage() + ')'; document.getElementById('body').style.backgroundColor = 'none'; window.widget.performTransition(); } else if (orientation != 'landscape' && screen.width == 640 && screen.height == 360) { window.widget.prepareForTransition("fade"); orientation = 'landscape'; - document.getElementById('body').style.backgroundImage = 'url(background_' + orientation + '.png)'; + document.getElementById('body').style.backgroundImage = 'url(' + getBackgroundImage() + ')'; document.getElementById('body').style.backgroundColor = 'none'; window.widget.performTransition(); } else if (document.getElementById('body').style.backgroundImage == "") { - document.getElementById('body').style.backgroundImage = 'url(background_' + orientation + '.png)'; + document.getElementById('body').style.backgroundImage = 'url(' + getBackgroundImage() + ')'; } } } function showHomescreen() { + hideViews(); document.getElementById("homescreenView").style.display = "block"; - document.getElementById("fullscreenView").style.display = "none"; - document.getElementById("aboutView").style.display = "none"; - document.getElementById("settingsView").style.display = "none"; document.getElementById('body').className = "background"; document.onclick = null; updateData(); @@ -921,6 +933,71 @@ function getLocalizedText(p_Txt) else return 'ERROR: missing translation for ' + p_Txt; } + +function showUpdate() +{ + mode = 4; + hideViews(); + document.getElementById("updateView").style.display = "block"; + document.onclick = null; + + window.menu.setLeftSoftkeyLabel(getLocalizedText('update.checknow'), function(){ + checkForUpdate(); + }); + window.menu.setRightSoftkeyLabel(getLocalizedText('softkey.back'), function() + { + mode = 1; + showFullscreen(); + }); + + document.getElementById("currentVersion").innerHTML = getLocalizedText("update.current") + version; + checkForUpdate(); +} + +function checkForUpdate() +{ + // asynch XHR to server url + reqV = new XMLHttpRequest(); + reqV.onreadystatechange = checkForUpdateCallback; + document.getElementById("updateDiv").innerHTML = getLocalizedText("update.checking"); + reqV.open("GET", versionURL, true); + reqV.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" ); // disable caching + reqV.send(null); +} + +function checkForUpdateCallback() +{ + if (reqV.readyState == 4) { + if (reqV.status == 200) { + var resultXml = reqV.responseText; + if (resultXml) { + var div = document.getElementById("tmp"); + div.innerHTML = resultXml; + var newVersion = div.getElementsByTagName('version')[0].innerHTML; + var newVersionURL = div.getElementsByTagName('url')[0].innerHTML; + div.innerHTML = ""; + if (version != newVersion) { + document.getElementById("updateDiv").innerHTML = getLocalizedText("update.download").replace(/%1/, newVersion).replace(/%2/, newVersionURL); + } + else { + document.getElementById("updateDiv").innerHTML = getLocalizedText("update.nonewversion"); + } + } + } + else { + document.getElementById("updateDiv").innerHTML = getLocalizedText("update.error") + reqV.status + " " + reqV.responseText; + } + } +} + +function hideViews() +{ + document.getElementById("homescreenView").style.display = "none"; + document.getElementById("fullscreenView").style.display = "none"; + document.getElementById("aboutView").style.display = "none"; + document.getElementById("settingsView").style.display = "none"; + document.getElementById("updateView").style.display = "none"; +}
' + getLocalizedText('settings.name.' + key) + '