rename DB to avoid collisions; implement key handling (for normal keyboard as well...
[lantea.git] / js / ui.js
index f2501cf507501a2fb5566c3b6402d8257aaf755a..b9c0519d0fe2740f7b6cfc4c970967997f3c407a 100644 (file)
--- a/js/ui.js
+++ b/js/ui.js
@@ -8,8 +8,12 @@ var mainDB;
 
 var gUIHideCountdown = 0;
 var gWaitCounter = 0;
+var gAction, gActionLabel;
 
 window.onload = function() {
+  gAction = document.getElementById("action");
+  gActionLabel = document.getElementById("actionlabel");
+
   var mSel = document.getElementById("mapSelector");
   for (var mapStyle in gMapStyles) {
     var opt = document.createElement("option");
@@ -32,6 +36,8 @@ window.onload = function() {
     areas[i].addEventListener("touchleave", uiEvHandler, false);
   }
 
+  document.getElementById("body").addEventListener("keydown", uiEvHandler, false);
+
   if (navigator.platform.length == "") {
     // For Firefox OS, don't display the "save" button.
     // Do this by setting the debugHide class for testing in debug mode.
@@ -47,10 +53,12 @@ window.onload = function() {
       if (gWaitCounter <= 0)
         gWaitCounter = 0;
       else
-        document.getElementById("debug").textContent = "Loading failed (waiting for init).";
+        console.log("Loading failed (waiting for init).");
 
       gMapPrefsLoaded = true;
       resizeAndDraw();
+      gActionLabel.textContent = "";
+      gAction.style.display = "none";
       setTracking(document.getElementById("trackCheckbox"));
     }
     else
@@ -66,28 +74,30 @@ window.onresize = function() {
 
 function initDB() {
   // Open DB.
-  var request = window.indexedDB.open("MainDB", 4);
+  var request = window.indexedDB.open("MainDB-lantea", 2);
   request.onerror = function(event) {
     // Errors can be handled here. Error codes explain in:
     // https://developer.mozilla.org/en/IndexedDB/IDBDatabaseException#Constants
-    //document.getElementById("debug").textContent =
-    //  "error opening mainDB: " + event.target.errorCode;
+    if (gDebug)
+      console.log("error opening mainDB: " + event.target.errorCode);
   };
   request.onsuccess = function(event) {
-    //document.getElementById("debug").textContent = "mainDB opened.";
     mainDB = request.result;
   };
   request.onupgradeneeded = function(event) {
     mainDB = request.result;
-    //document.getElementById("debug").textContent = "mainDB upgraded.";
     var ver = mainDB.version || 0; // version is empty string for a new DB
-    if (ver <= 1) {
+    if (gDebug)
+      console.log("mainDB has version " + ver + ", upgrade needed.");
+    if (!mainDB.objectStoreNames.contains("prefs")) {
       // Create a "prefs" objectStore.
       var prefsStore = mainDB.createObjectStore("prefs");
+    }
+    if (!mainDB.objectStoreNames.contains("track")) {
       // Create a "track" objectStore.
       var trackStore = mainDB.createObjectStore("track", {autoIncrement: true});
     }
-    if (ver <= 4) {
+    if (!mainDB.objectStoreNames.contains("tilecache")) {
       // Create a "tilecache" objectStore.
       var tilecacheStore = mainDB.createObjectStore("tilecache");
     }
@@ -180,6 +190,7 @@ var uiEvHandler = {
       case "touchmove":
       case "mouseup":
       case "touchend":
+      case "keydown":
         showUI();
         break;
     }