Settings dialog infrastructure
[quicknewsreader] / qml / QuickNewsReader / content / js / SettingsStorage.js
diff --git a/qml/QuickNewsReader/content/js/SettingsStorage.js b/qml/QuickNewsReader/content/js/SettingsStorage.js
new file mode 100644 (file)
index 0000000..76a9a15
--- /dev/null
@@ -0,0 +1,56 @@
+//SettingsStorage.js
+.pragma library
+
+// First, let's create a short helper function to get the database connection
+function getDatabase() {
+     return openDatabaseSync("QuickNewsReader", "1.0", "SettingsStorageDatabase", 100000);
+}
+
+// At the start of the application, we can initialize the tables we need if they haven't been created yet
+function initialize() {
+    var db = getDatabase();
+    db.transaction(
+        function(tx) {
+            // Create the settings table if it doesn't already exist
+            // If the table exists, this is skipped
+            tx.executeSql('CREATE TABLE IF NOT EXISTS settings(setting TEXT UNIQUE, value TEXT)');
+      });
+}
+
+// This function is used to write a setting into the database
+function setSetting(setting, value) {
+   // setting: string representing the setting name (eg: “username”)
+   // value: string representing the value of the setting (eg: “myUsername”)
+   var db = getDatabase();
+   var res = "";
+   db.transaction(function(tx) {
+        var rs = tx.executeSql('INSERT OR REPLACE INTO settings VALUES (?,?);', [setting,value]);
+              //console.log(rs.rowsAffected)
+              if (rs.rowsAffected > 0) {
+                res = "OK";
+              } else {
+                res = "Error";
+              }
+        }
+  );
+  // The function returns “OK” if it was successful, or “Error” if it wasn't
+  return res;
+}
+
+// This function is used to retrieve a setting from the database
+function getSetting(setting) {
+   var db = getDatabase();
+   var res="";
+   db.transaction(function(tx) {
+     var rs = tx.executeSql('SELECT value FROM settings WHERE setting=?;', [setting]);
+     if (rs.rows.length > 0) {
+          res = rs.rows.item(0).value;
+     } else {
+         res = "Unknown";
+     }
+  })
+  // The function returns “Unknown” if the setting was not found in the database
+  // For more advanced projects, this should probably be handled through error codes
+  return res
+}
+