/******************************************************************************* * Copyright (c) 2013 "Filippo Scognamiglio" * https://github.com/Swordifish90/cool-old-term * * This file is part of cool-old-term. * * cool-old-term is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. *******************************************************************************/ import QtQuick 2.1 Item{ property bool fullscreen: false property real ambient_light: 0.2 property string background_color: "#002200" property string font_color: "#00ff00" property real screen_flickering: 0.05 property real noise_strength: 0.1 property real screen_distortion: 0.15 property real glowing_line_strength: 0.4 property bool scanlines: true property string frame_source: frames_list.get(frames_index).source property int frames_index: 2 property var frames_list: framelist property real font_scaling: 1.0 property var font: currentfont property real fontSize: currentfont.pixelSize * font_scaling property int font_index: 0 property var fonts_list: fontlist property var profiles_list: profileslist onFont_indexChanged: handleFontChanged(); onFont_scalingChanged: handleFontChanged(); function handleFontChanged(){ terminalwindowloader.source = ""; currentfont.source = fontlist.get(font_index).source; currentfont.pixelSize = fontlist.get(font_index).pixelSize; terminalwindowloader.source = "TerminalWindow.qml"; } FontLoader{ property int pixelSize: fontlist.get(font_index).pixelSize id: currentfont source: fontlist.get(font_index).source } ListModel{ id: framelist ListElement{text: "No frame"; source: "./frames/NoFrame.qml"} ListElement{text: "Simple white frame"; source: "./frames/WhiteSimpleFrame.qml"} ListElement{text: "Rough black frame"; source: "./frames/BlackRoughFrame.qml"} } ListModel{ id: fontlist ListElement{ text: "Commodore PET (1977)" source: "fonts/CommodorePET/COMMODORE_PET.ttf" pixelSize: 20 } ListElement{ text: "Atari 8bit (1979)" source: "./fonts/Atari8bit/ATARI400800_original.TTF" pixelSize: 20 } ListElement{ text: "Commodore 64 (1982)" source: "./fonts/Commodore64/C64_User_Mono_v1.0-STYLE.ttf" pixelSize: 20 } ListElement{ text: "IBM DOS (1985)" source: "./fonts/Dos/Perfect DOS VGA 437.ttf" pixelSize: 32 } } Storage{id: storage} function loadProfile(profilename){ var settings = storage.getSetting(profilename); 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; font_scaling = settings.font_scaling ? settings.font_scaling: font_scaling; } function storeCurrentSettings(){ 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, font_scaling: font_scaling } console.log(JSON.stringify(settings)); storage.setSetting("CURRENT_SETTINGS", JSON.stringify(settings)); } Component.onCompleted: { //Save all the profiles into local storage for(var i=0; i<profileslist.count; i++){ var temp = profileslist.get(i); storage.setSetting(temp.obj_name, temp.obj_string); } loadProfile("CURRENT_SETTINGS"); } Component.onDestruction: { storeCurrentSettings(); storage.dropSettings(); } ListModel{ id: profileslist ListElement{ text: "Default" obj_name: "DEFAULT" obj_string: '{"ambient_light":0.3,"background_color":"#000000","font_color":"#00ff3b","font_index":0,"font_scaling":1,"frames_index":2,"glowing_line_strength":0.4,"noise_strength":0.1,"scanlines":true,"screen_distortion":0.15,"screen_flickering":0.07}' } ListElement{ text: "Commodore 64" obj_name: "COMMODORE64" obj_string: '{"ambient_light":0.2,"background_color":"#5048b2","font_color":"#8bcad1","font_index":2,"font_scaling":1,"frames_index":1,"glowing_line_strength":0.2,"noise_strength":0.05,"scanlines":false,"screen_distortion":0.1,"screen_flickering":0.03}' } ListElement{ text: "IBM Dos" obj_name: "IBMDOS" obj_string: '{"ambient_light":0.4,"background_color":"#000000","font_color":"#ffffff","font_index":3,"font_scaling":1,"frames_index":1,"glowing_line_strength":0,"noise_strength":0,"scanlines":false,"screen_distortion":0.05,"screen_flickering":0.00}' } } }