import QtCore import QtQuick import QtQuick.Controls import QtQuick.Controls.Basic import QtQuick.Dialogs import QtQuick.Layouts import QtQuick.Window import Qt.labs.platform as LabsPlatform import Qt.labs.folderlistmodel as LabsFolderlistmodel import PageEnum 1.0 import PageType 1.0 import "Controls" import "Pages" import "Pages/Protocols" import "Pages/Share" import "Pages/ClientInfo" import "Config" Window { property var pages: ({}) property var protocolPages: ({}) property var sharePages: ({}) property var clientInfoPages: ({}) id: root visible: true width: GC.screenWidth height: GC.screenHeight minimumWidth: GC.isDesktop() ? 360 : 0 minimumHeight: GC.isDesktop() ? 640 : 0 onClosing: function() { console.debug("QML onClosing signal") UiLogic.onCloseWindow() } title: "AmneziaVPN" function gotoPage(type, page, reset, slide) { let p_obj; if (type === PageType.Basic) p_obj = pages[page] else if (type === PageType.Proto) p_obj = protocolPages[page] else if (type === PageType.ShareProto) p_obj = sharePages[page] else if (type === PageType.ClientInfo) p_obj = clientInfoPages[page] else return //console.debug("QML gotoPage " + type + " " + page + " " + p_obj) if (pageLoader.depth > 0) { pageLoader.currentItem.deactivated() } if (slide) { pageLoader.push(p_obj, {}, StackView.PushTransition) } else { pageLoader.push(p_obj, {}, StackView.Immediate) } if (reset) { p_obj.logic.onUpdatePage(); } p_obj.activated(reset) } function close_page() { if (pageLoader.depth <= 1) { if (GC.isMobile()) { root.close() } return } pageLoader.currentItem.deactivated() pageLoader.pop() } function set_start_page(page, slide) { if (pageLoader.depth > 0) { pageLoader.currentItem.deactivated() } pageLoader.clear() if (slide) { pageLoader.push(pages[page], {}, StackView.PushTransition) } else { pageLoader.push(pages[page], {}, StackView.Immediate) } if (page === PageEnum.Start) { UiLogic.pushButtonBackFromStartVisible = !pageLoader.empty UiLogic.onUpdatePage(); } } Rectangle { anchors.fill: parent color: "white" } StackView { id: pageLoader y: 0 anchors.fill: parent focus: true onCurrentItemChanged: function() { UiLogic.currentPageValue = currentItem.page } onDepthChanged: function() { UiLogic.pagesStackDepth = depth } Keys.onPressed: function(event) { UiLogic.keyPressEvent(event.key) event.accepted = true } } LabsFolderlistmodel.FolderListModel { id: folderModelPages folder: "qrc:/ui/qml/Pages/" nameFilters: ["*.qml"] showDirs: false onStatusChanged: if (status == LabsFolderlistmodel.FolderListModel.Ready) { for (var i=0; i