/******************************************************************************* * Copyright (c) 2013-2021 "Filippo Scognamiglio" * https://github.com/Swordfish90/cool-retro-term * * This file is part of cool-retro-term. * * cool-retro-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 . *******************************************************************************/ import QtQuick 2.2 QtObject { id: appRoot property ApplicationSettings appSettings: ApplicationSettings { onInitializedSettings: appRoot.createWindow() } property TimeManager timeManager: TimeManager { enableTimer: windowsModel.count > 0 } property SettingsWindow settingsWindow: SettingsWindow { visible: false } property AboutDialog aboutWindow: AboutDialog { visible: false } property ListModel windowsModel: ListModel { } function createWindow() { var component = Qt.createComponent("TerminalWindow.qml") if (component.status === Component.Error) { console.error(component.errorString()) return } var window = component.createObject(null) if (!window) return windowsModel.append({ window: window }) window.show() window.requestActivate() } function closeWindow(window) { for (var i = 0; i < windowsModel.count; i++) { if (windowsModel.get(i).window === window) { windowsModel.remove(i) break } } window.destroy() if (windowsModel.count === 0) { settingsWindow.close() aboutWindow.close() appSettings.close() } } }