import QtQuick import QtQuick.Window import QtQuick.Controls import QtQuick.Layouts import PageEnum 1.0 import PageType 1.0 import Qt.labs.platform import Qt.labs.folderlistmodel import QtQuick.Dialogs import QtQuick.Controls.Basic import "Controls" import "Pages" import "Pages/Protocols" import "Pages/Share" import "Config" Window { property var pages: ({}) property var protocolPages: ({}) property var sharePages: ({}) 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 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) { 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 { y: 0 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 } } FolderListModel { id: folderModelPages folder: "qrc:/ui/qml/Pages/" nameFilters: ["*.qml"] showDirs: false onStatusChanged: if (status == FolderListModel.Ready) { for (var i=0; i