qml refactoring

This commit is contained in:
pokamest 2021-09-14 00:39:07 +03:00
parent e920d9cdf3
commit 12b079df65
24 changed files with 163 additions and 233 deletions

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
PageBase {
id: root
page: PageEnum.AppSettings
logic: AppSettingsLogic
BackButton {
id: back
}

View file

@ -1,11 +1,14 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
Item {
id: root
property int page: PageEnum.Start
property var logic: null
// width: GC.screenWidth
// height: GC.screenHeight

View file

@ -5,8 +5,11 @@ import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.GeneralSettings
logic: GeneralSettingsLogic
BackButton {
id: back
}

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.NetworkSettings
logic: NetworkSettingsLogic
BackButton {
id: back
}

View file

@ -5,8 +5,11 @@ import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.NewServer
//logic: {}
BackButton {
id: back_from_new_server
}

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.ServerConfiguring
logic: NewServerConfiguringLogic
enabled: NewServerConfiguringLogic.pageEnabled
Caption {
text: qsTr("Configuring...")

View file

@ -1,13 +1,17 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.3
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
import "InstallSettings"
Item {
PageBase {
id: root
page: PageEnum.NewServerProtocols
logic: NewServerProtocolsLogic
BackButton {
id: back
}

View file

@ -1,12 +1,16 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
import "InstallSettings"
Item {
PageBase {
id: root
page: PageEnum.ServerContainers
logic: ServerContainersLogic
enabled: ServerContainersLogic.pageEnabled
BackButton {
id: back

View file

@ -6,8 +6,11 @@ import "../Controls"
import "./"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.ServersList
logic: ServerListLogic
BackButton {
id: back
}

View file

@ -5,8 +5,11 @@ import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.ServerSettings
logic: ServerSettingsLogic
enabled: ServerSettingsLogic.pageEnabled
BackButton {

View file

@ -5,8 +5,11 @@ import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.Wizard
logic: WizardLogic
BackButton {
id: back_from_setup_wizard
}

View file

@ -5,8 +5,11 @@ import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.WizardHigh
logic: WizardLogic
BackButton {
id: back_from_setup_wizard
}

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.WizardLow
logic: WizardLogic
BackButton {
id: back_from_setup_wizard
}

View file

@ -5,8 +5,11 @@ import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.WizardMedium
logic: WizardLogic
BackButton {
id: back_from_setup_wizard
}

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.WizardVpnMode
logic: WizardLogic
BackButton {
id: back_from_setup_wizard
}

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.ShareConnection
logic: ShareConnectionLogic
BackButton {
id: back
}

View file

@ -2,12 +2,16 @@ import QtQuick 2.12
import QtQuick.Controls 2.12
import Qt.labs.platform 1.0
import QtQuick.Dialogs 1.0
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.Sites
logic: SitesLogic
BackButton {
id: back
}

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import PageEnum 1.0
import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.Start
logic: StartPageLogic
BackButton {
id: back_from_start
}

View file

@ -5,8 +5,10 @@ import "./"
import "../Controls"
import "../Config"
Item {
PageBase {
id: root
page: PageEnum.Vpn
logic: VpnLogic
Image {
anchors.horizontalCenter: parent.horizontalCenter

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import "./"
import PageEnum 1.0
import "../"
import "../../Controls"
import "../../Config"
Item {
PageBase {
id: root
page: PageEnum.CloakSettings
logic: CloakLogic
enabled: CloakLogic.pageProtoCloakEnabled
BackButton {
id: back

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import "./"
import PageEnum 1.0
import "../"
import "../../Controls"
import "../../Config"
Item {
PageBase {
id: root
page: PageEnum.OpenVpnSettings
logic: OpenVpnLogic
enabled: OpenVpnLogic.pageProtoOpenVpnEnabled
BackButton {
id: back

View file

@ -1,11 +1,15 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import "./"
import PageEnum 1.0
import "../"
import "../../Controls"
import "../../Config"
Item {
PageBase {
id: root
page: PageEnum.ShadowSocksSettings
logic: ShadowSocksLogic
enabled: ShadowSocksLogic.pageProtoShadowSocksEnabled
BackButton {
id: back

View file

@ -4,6 +4,7 @@ import QtQuick.Controls 2.12
import QtQuick.Controls.Material 2.12
import PageEnum 1.0
import Qt.labs.platform 1.1
import Qt.labs.folderlistmodel 2.12
import QtQuick.Dialogs 1.1
import "./"
import "Pages"
@ -11,8 +12,7 @@ import "Pages/Protocols"
import "Config"
Window {
Material.theme: Material.Dark
Material.accent: Material.Purple
property var pages: ({})
id: root
visible: true
@ -26,124 +26,8 @@ Window {
//flags: Qt.FramelessWindowHint
title: "AmneziaVPN"
function getPageComponent(page) {
switch (page) {
case PageEnum.Start:
return page_start;
case PageEnum.NewServer:
return page_new_server
case PageEnum.NewServerProtocols:
return page_new_server_protocols
case PageEnum.Wizard:
return page_setup_wizard
case PageEnum.WizardHigh:
return page_setup_wizard_high_level
case PageEnum.WizardLow:
return page_setup_wizard_low_level
case PageEnum.WizardMedium:
return page_setup_wizard_medium_level
case PageEnum.WizardVpnMode:
return page_setup_wizard_vpn_mode
case PageEnum.ServerConfiguring:
return page_new_server_configuring
case PageEnum.Vpn:
return page_vpn
case PageEnum.GeneralSettings:
return page_general_settings
case PageEnum.AppSettings:
return page_app_settings
case PageEnum.NetworkSettings:
return page_network_settings
case PageEnum.ServerSettings:
return page_server_settings
case PageEnum.ServerContainers:
return page_server_containers
case PageEnum.ServersList:
return page_servers
case PageEnum.ShareConnection:
return page_share_connection
case PageEnum.Sites:
return page_sites
case PageEnum.OpenVpnSettings:
return page_proto_openvpn
case PageEnum.ShadowSocksSettings:
return page_proto_shadowsocks
case PageEnum.CloakSettings:
return page_proto_cloak
}
return undefined;
}
function getPageEnum(item) {
if (item instanceof PageStart) {
return PageEnum.Start
}
if (item instanceof PageNewServer) {
return PageEnum.NewServer
}
if (item instanceof PageNewServerProtocols) {
return PageEnum.NewServerProtocols
}
if (item instanceof PageSetupWizard) {
return PageEnum.Wizard
}
if (item instanceof PageSetupWizardHighLevel) {
return PageEnum.WizardHigh
}
if (item instanceof PageSetupWizardLowLevel) {
return PageEnum.WizardLow
}
if (item instanceof PageSetupWizardMediumLevel) {
return PageEnum.WizardMedium
}
if (item instanceof PageSetupWizardVPNMode) {
return PageEnum.WizardVpnMode
}
if (item instanceof PageNewServerConfiguring) {
return PageEnum.ServerConfiguring
}
if (item instanceof PageVPN) {
return PageEnum.Vpn
}
if (item instanceof PageGeneralSettings) {
return PageEnum.GeneralSettings
}
if (item instanceof PageAppSetting) {
return PageEnum.AppSettings
}
if (item instanceof PageNetworkSetting) {
return PageEnum.NetworkSettings
}
if (item instanceof PageServerSettings) {
return PageEnum.ServerSettings
}
if (item instanceof PageServerContainers) {
return PageEnum.ServerContainers
}
if (item instanceof PageServerList) {
return PageEnum.ServersList
}
if (item instanceof PageShareConnection) {
return PageEnum.ShareConnection
}
if (item instanceof PageSites) {
return PageEnum.Sites
}
if (item instanceof PageProtoOpenVPN) {
return PageEnum.OpenVpnSettings
}
if (item instanceof PageProtoShadowSocks) {
return PageEnum.ShadowSocksSettings
}
if (item instanceof PageProtoCloak) {
return PageEnum.CloakSettings
}
return PageEnum.Start
}
function gotoPage(page, reset, slide) {
let pageComponent = getPageComponent(page)
console.debug(pageComponent)
if (reset) {
if (page === PageEnum.ServerSettings) {
ServerSettingsLogic.updatePage();
@ -189,9 +73,9 @@ Window {
}
}
if (slide) {
pageLoader.push(pageComponent, {}, StackView.PushTransition)
pageLoader.push(pages[page], {}, StackView.PushTransition)
} else {
pageLoader.push(pageComponent, {}, StackView.Immediate)
pageLoader.push(pages[page], {}, StackView.Immediate)
}
}
@ -204,11 +88,10 @@ Window {
function set_start_page(page, slide) {
pageLoader.clear()
let pageComponent = getPageComponent(page)
if (slide) {
pageLoader.push(pageComponent, {}, StackView.PushTransition)
pageLoader.push(pages[page], {}, StackView.PushTransition)
} else {
pageLoader.push(pageComponent, {}, StackView.Immediate)
pageLoader.push(pages[page], {}, StackView.Immediate)
}
if (page === PageEnum.Start) {
UiLogic.pushButtonBackFromStartVisible = !pageLoader.empty
@ -253,8 +136,7 @@ Window {
// initialItem: page_servers
onCurrentItemChanged: {
let pageEnum = root.getPageEnum(currentItem)
UiLogic.currentPageValue = pageEnum
UiLogic.currentPageValue = currentItem.page
}
Keys.onReleased: {
@ -277,95 +159,64 @@ Window {
}
}
Component {
id: page_start
PageStart {}
}
Component {
id: page_new_server
PageNewServer {}
}
Component {
id: page_setup_wizard
PageSetupWizard {}
}
Component {
id: page_setup_wizard_high_level
PageSetupWizardHighLevel {}
}
Component {
id: page_setup_wizard_vpn_mode
PageSetupWizardVPNMode {}
}
Component {
id: page_setup_wizard_medium_level
PageSetupWizardMediumLevel {}
}
Component {
id: page_setup_wizard_low_level
PageSetupWizardLowLevel {}
}
Component {
id: page_new_server_protocols
PageNewServerProtocols {}
}
Component {
id: page_vpn
PageVPN {}
}
Component {
id: page_sites
PageSites {}
}
Component {
id: page_general_settings
PageGeneralSettings {}
}
Component {
id: page_servers
PageServerList {}
}
Component {
id: page_app_settings
PageAppSetting {}
}
Component {
id: page_network_settings
PageNetworkSetting {}
}
Component {
id: page_server_settings
PageServerSettings {}
}
Component {
id: page_server_containers
PageServerContainers {}
}
Component {
id: page_share_connection
PageShareConnection {}
}
Component {
id: page_proto_openvpn
PageProtoOpenVPN {}
}
Component {
id: page_proto_shadowsocks
PageProtoShadowSocks {}
}
Component {
id: page_proto_cloak
PageProtoCloak {}
}
Component {
id: page_new_server_configuring
PageNewServerConfiguring {}
FolderListModel {
id: folderModelPages
folder: "qrc:/ui/qml/Pages/"
nameFilters: ["*.qml"]
showDirs: false
onStatusChanged: if (status == FolderListModel.Ready) {
for (var i=0; i<folderModelPages.count; i++) {
createPagesObjects(folderModelPages.get(i, "filePath"));
}
UiLogic.initalizeUiLogic()
}
}
Component.onCompleted: {
UiLogic.initalizeUiLogic()
FolderListModel {
id: folderModelProtocols
folder: "qrc:/ui/qml/Pages/Protocols/"
nameFilters: ["*.qml"]
showDirs: false
onStatusChanged: if (status == FolderListModel.Ready) {
for (var i=0; i<folderModelProtocols.count; i++) {
createPagesObjects(folderModelProtocols.get(i, "filePath"));
}
}
}
function createPagesObjects(file) {
var c = Qt.createComponent("qrc" + file);
var finishCreation = function (component){
if (component.status == Component.Ready) {
var obj = component.createObject(root);
if (obj == null) {
console.debug("Error creating object " + component.url);
}
else {
obj.visible = false
pages[obj.page] = obj
}
} else if (component.status == Component.Error) {
console.debug("Error loading component:", component.errorString());
}
}
var lambdaFunc = function(){
finishCreation(c)
}
if (c.status == Component.Ready)
finishCreation(c);
else {
console.debug("Warning: Pages components are not ready");
c.statusChanged.connect(lambdaFunc);
}
}
Connections {
target: UiLogic

View file

@ -98,6 +98,7 @@ UiLogic::UiLogic(QObject *parent) :
void UiLogic::initalizeUiLogic()
{
qDebug() << "UiLogic::initalizeUiLogic()";
setupTray();