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 += '
' + getLocalizedText('settings.name.' + key) + '
| ' + 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";
+}