mirror of
				https://github.com/Swordfish90/cool-retro-term.git
				synced 2025-10-31 07:04:20 +00:00 
			
		
		
		
	Settings are now stored, and reloaded at each execution
This commit is contained in:
		| @@ -47,5 +47,5 @@ OTHER_FILES += \ | |||||||
|     qml/cool-old-term/frames/images/black-frame.png \ |     qml/cool-old-term/frames/images/black-frame.png \ | ||||||
|     qml/cool-old-term/frames/images/black-frame-normals.png \ |     qml/cool-old-term/frames/images/black-frame-normals.png \ | ||||||
|     qml/cool-old-term/frames/NoFrame.qml \ |     qml/cool-old-term/frames/NoFrame.qml \ | ||||||
|     qml/cool-old-term/MainContainer.qml \ |     qml/cool-old-term/TerminalWindow.qml \ | ||||||
|     qml/cool-old-term/TerminalWindow.qml |     qml/cool-old-term/Storage.qml | ||||||
|   | |||||||
| @@ -3,8 +3,8 @@ import QtQuick 2.1 | |||||||
| Item{ | Item{ | ||||||
|     property real ambient_light: 0.2 |     property real ambient_light: 0.2 | ||||||
|  |  | ||||||
|     property color background_color: "#002200" |     property string background_color: "#002200" | ||||||
|     property color font_color: "#00ff00" |     property string font_color: "#00ff00" | ||||||
|  |  | ||||||
|     property real screen_flickering: 0.1 |     property real screen_flickering: 0.1 | ||||||
|     property real noise_strength: 0.1 |     property real noise_strength: 0.1 | ||||||
| @@ -23,6 +23,7 @@ Item{ | |||||||
|     property var fonts_list: fontlist |     property var fonts_list: fontlist | ||||||
|  |  | ||||||
|     onFont_indexChanged: { |     onFont_indexChanged: { | ||||||
|  |         //Reload the window to avoid ugly glitches | ||||||
|         terminalwindowloader.source = ""; |         terminalwindowloader.source = ""; | ||||||
|         terminalwindowloader.source = "TerminalWindow.qml"; |         terminalwindowloader.source = "TerminalWindow.qml"; | ||||||
|     } |     } | ||||||
| @@ -63,4 +64,52 @@ Item{ | |||||||
|             pixelSize: 25 |             pixelSize: 25 | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     Storage{id: storage} | ||||||
|  |  | ||||||
|  |     function retrieveFromDB(){ | ||||||
|  |         var settings = storage.getSetting("CURRENT_SETTINGS"); | ||||||
|  |         if(!settings) return; | ||||||
|  |  | ||||||
|  |         settings = JSON.parse(settings); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         ambient_light = settings.ambient_light ? settings.ambient_light : ambient_light; | ||||||
|  |         background_color = settings.background_color ? settings.background_color : background_color; | ||||||
|  |         font_color = settings.font_color ? settings.font_color : font_color; | ||||||
|  |  | ||||||
|  |         screen_flickering = settings.screen_flickering ? settings.screen_flickering : screen_flickering; | ||||||
|  |         noise_strength = settings.noise_strength ? settings.noise_strength : noise_strength; | ||||||
|  |         screen_distortion = settings.screen_distortion ? settings.screen_distortion : screen_distortion; | ||||||
|  |         glowing_line_strength = settings.glowing_line_strength ? settings.glowing_line_strength : glowing_line_strength; | ||||||
|  |         scanlines = settings.scanlines ? settings.scanlines : scanlines; | ||||||
|  |  | ||||||
|  |         frames_index = settings.frames_index ? settings.frames_index : frames_index; | ||||||
|  |         font_index = settings.font_index ? settings.font_index : font_index; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function storeToDb(){ | ||||||
|  |         var settings = { | ||||||
|  |             ambient_light : ambient_light, | ||||||
|  |             background_color: background_color, | ||||||
|  |             font_color: font_color, | ||||||
|  |             screen_flickering: screen_flickering, | ||||||
|  |             noise_strength: noise_strength, | ||||||
|  |             screen_distortion: screen_distortion, | ||||||
|  |             glowing_line_strength: glowing_line_strength, | ||||||
|  |             scanlines: scanlines, | ||||||
|  |             frames_index: frames_index, | ||||||
|  |             font_index: font_index | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         storage.setSetting("CURRENT_SETTINGS", JSON.stringify(settings)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     Component.onCompleted: { | ||||||
|  |         retrieveFromDB(); | ||||||
|  |     } | ||||||
|  |     Component.onDestruction: { | ||||||
|  |         storeToDb(); | ||||||
|  |         //storage.dropSettings(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										70
									
								
								qml/cool-old-term/Storage.qml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								qml/cool-old-term/Storage.qml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | |||||||
|  | import QtQuick 2.1 | ||||||
|  | import QtQuick.LocalStorage 2.0 | ||||||
|  |  | ||||||
|  | Item { | ||||||
|  |     property bool initialized: false | ||||||
|  |  | ||||||
|  |     function getDatabase() { | ||||||
|  |          return LocalStorage.openDatabaseSync("coololdterm", "1.0", "StorageDatabase", 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)'); | ||||||
|  |           }); | ||||||
|  |  | ||||||
|  |         initialized = true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // This function is used to write a setting into the database | ||||||
|  |     function setSetting(setting, value) { | ||||||
|  |        if(!initialized) initialize(); | ||||||
|  |  | ||||||
|  |        // 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) { | ||||||
|  |        if(!initialized) initialize(); | ||||||
|  |        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 = undefined; | ||||||
|  |          } | ||||||
|  |       }) | ||||||
|  |       // 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 | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function dropSettings(){ | ||||||
|  |         var db = getDatabase(); | ||||||
|  |         db.transaction( | ||||||
|  |             function(tx) { | ||||||
|  |                 tx.executeSql('DROP TABLE settings'); | ||||||
|  |           }); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -27,8 +27,6 @@ ApplicationWindow{ | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     visible: true |     visible: true | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user