1
0
mirror of https://github.com/Swordfish90/cool-retro-term.git synced 2025-01-31 02:01:19 +00:00

Handle db upgrades and prepare work for old profiles deprecation.

This commit is contained in:
Filippo Scognamiglio 2018-11-18 23:24:42 +01:00
parent 8124d101ad
commit 6fb8ceb501
2 changed files with 42 additions and 3 deletions

View File

@ -24,7 +24,9 @@ import QtQuick.Controls 1.0
import "utils.js" as Utils
QtObject{
property string version: "1.0.1"
readonly property string version: "1.0.1"
readonly property int profileVersion: 2
// STATIC CONSTANTS ////////////////////////////////////////////////////////
@ -109,6 +111,8 @@ QtObject{
signal initializedSettings()
signal showErrorMessage(string message)
property Loader fontManager: Loader{
states: [
State { when: rasterization == no_rasterization
@ -331,6 +335,17 @@ QtObject{
burnInQuality = settings.burnInQuality !== undefined ? settings.burnInQuality : burnInQuality;
}
function userLoadProfileString(profileString) {
var profile = JSON.parse(profileString);
var version = profile.version !== undefined ? profile.version : 1;
if (version === profileVersion) {
loadProfileString(profileString);
} else {
showErrorMessage("This profile is not supported on this version of CRT.")
}
}
function loadProfileString(profileString){
var settings = JSON.parse(profileString);

View File

@ -23,9 +23,20 @@ import QtQuick.LocalStorage 2.0
QtObject {
property bool initialized: false
property string dbVersion: "1.1"
function getDatabase() {
return LocalStorage.openDatabaseSync("coolretroterm", "1.0", "StorageDatabase", 100000);
try {
return _getDatabase(dbVersion);
} catch (error) {
console.log("Error while reading from settings database:", error);
updateAndResetDatabase(_getDatabase(""));
return _getDatabase(dbVersion);
}
}
function _getDatabase(version) {
return LocalStorage.openDatabaseSync("coolretroterm", version, "StorageDatabase", 100000);
}
function initialize() {
@ -74,9 +85,22 @@ QtObject {
function dropSettings(){
var db = getDatabase();
dropSettingsFromDB(db);
}
function updateAndResetDatabase(db) {
console.log("Updating and resetting database.");
db.changeVersion(db.version, dbVersion);
try {
dropSettingsFromDB(db);
} catch (error) {}
}
function dropSettingsFromDB(db) {
db.transaction(
function(tx) {
tx.executeSql('DROP TABLE settings');
});
});
}
}