harbour-anchor/qml/js/settings.js
2025-05-31 09:58:34 +02:00

135 lines
3.9 KiB
JavaScript

var db = undefined;
function settings_db_open() {
if (db == undefined)
db = LocalStorage.openDatabaseSync("harbour-anchor", "1.0", "StorageDatabase", 100000);
return db;
}
/// GAME SETTINGS
function getValue(setting,def) {
var db = settings_db_open();
var res=def;
try {
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 = def;
}
})
} catch (err) {
console.log("*** getValue ERROR ")
res = def
};
console.log("*** getValue: "+res+" setting: "+setting)
return res
}
// insert anchor in db
function setAnchor(name, description, icon, latitude, longitude) {
var db = settings_db_open();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS anchors(name TEXT UNIQUE, description TEXT, icon TEXT, latitude REAL, longitude REAL)');
var rs = tx.executeSql('INSERT OR REPLACE INTO anchors VALUES (?,?,?,?,?);', [name, description, icon, latitude, longitude]);
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
function setValue(setting, value) {
var db = settings_db_open();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS settings(setting TEXT UNIQUE, value TEXT)');
var rs = tx.executeSql('INSERT OR REPLACE INTO settings VALUES (?,?);', [setting,value]);
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
console.log("*** setValue: "+res+" setting: "+setting+" = "+value)
return res;
}
/// GET ANCHORS
function getAnchors(model) {
model.clear()
var db = settings_db_open();
var res="OK";
try {
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT * FROM anchors;');
for (var i = 0; i < rs.rows.length; i++)
{
model.append({"name" : rs.rows.item(i).name,"description" : rs.rows.item(i).description,"icon" : rs.rows.item(i).icon,"latitude" : rs.rows.item(i).latitude,"longitude" : rs.rows.item(i).longitude})
}
})
} catch (err) {
res = "ERROR"
};
return res
}
function delAnchor(name) {
var db = settings_db_open();
var res = "";
db.transaction(function(tx) {
//tx.executeSql('CREATE TABLE IF NOT EXISTS settings(savegame TEXT UNIQUE, value TEXT)'); //tx.executeSql('DELETE FROM channels WHERE source=?', [source])
var rs = tx.executeSql('DELETE FROM anchors where name=?', [name]);
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}
/// LOAD/SAVE GAME
function getSave(setting,def) {
var db = settings_db_open();
var res=def;
try {
db.transaction(function(tx) {
var rs = tx.executeSql('SELECT value FROM savegame WHERE setting=?;', [setting]);
if (rs.rows.length > 0) {
res = rs.rows.item(0).value;
} else {
res = def;
}
})
} catch (err) {
res = def
};
return res
}
function setSave(setting, value) {
var db = settings_db_open();
var res = "";
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS settings(savegame TEXT UNIQUE, value TEXT)');
var rs = tx.executeSql('INSERT OR REPLACE INTO savegame VALUES (?,?);', [setting,value]);
if (rs.rowsAffected > 0) {
res = "OK";
} else {
res = "Error";
}
}
);
return res;
}