From 53659cea38e8408d298fc024c466ccc4c0dcf4a6 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Thu, 16 May 2024 15:55:23 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D1=85=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=81=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=BE=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 10 +++++- MenuBackButton.qml | 79 ---------------------------------------------- main.qml | 73 +++++++++++++++--------------------------- qml.qrc | 1 - 4 files changed, 34 insertions(+), 129 deletions(-) delete mode 100644 MenuBackButton.qml diff --git a/CMakeLists.txt b/CMakeLists.txt index d10ddd9..d330c3b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,14 @@ if (ANDROID) ${CMAKE_CURRENT_SOURCE_DIR}/android) endif() +include(FetchContent) +FetchContent_Declare( + components + GIT_REPOSITORY https://gogs.dended.keenetic.pro/ded/components.git + GIT_TAG master +) + +FetchContent_MakeAvailable(components) # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. # If you are developing for iOS or macOS you should consider setting an @@ -37,7 +45,7 @@ set_target_properties(appnooLight PROPERTIES ) target_link_libraries(appnooLight - PRIVATE Qt6::Quick + PRIVATE Qt6::Quick componentsplugin ) include(GNUInstallDirs) diff --git a/MenuBackButton.qml b/MenuBackButton.qml deleted file mode 100644 index 9e435c7..0000000 --- a/MenuBackButton.qml +++ /dev/null @@ -1,79 +0,0 @@ -import QtQuick 2.0 - -Item { - id: root - signal clicked() - signal back() - - SystemPalette { - id: palette - } - - MouseArea { - id: ma - - anchors.fill: parent - anchors.margins: -8 - } - - Rectangle { - id: bar1 - x: 0 - y: root.height / 6 - width: root.height - height: root.height / 9 - antialiasing: true - - color: palette.button - } - - Rectangle { - id: bar2 - x: 0 - y: root.height / 2 - height / 2 - width: root.height - height: root.height / 9 - antialiasing: true - - color: palette.button - } - - Rectangle { - id: bar3 - x: 0 - y: root.height / 2 + height * 2 - width: root.height - height: root.height / 9 - antialiasing: true - - color: palette.button - } - - property int animationDuration: 450 - - state: "menu" - states: [ - State { - name: "menu" - PropertyChanges { target: ma; onClicked: root.clicked() } - }, - - State { - name: "back" - PropertyChanges { target: root; rotation: 180 } - PropertyChanges { target: bar1; rotation: 45; width: root.height / 3 * 2; x: root.height / 2; y: root.height / 4 } - PropertyChanges { target: bar2; width: root.height / 6 * 5 + 1; x: root.height / 9 } - PropertyChanges { target: bar3; rotation: -45; width: root.height / 3 * 2; x: root.height / 2; y: root.height / 3 * 2 } - PropertyChanges { target: ma; onClicked: root.back() } - } - ] - - transitions: [ - Transition { - RotationAnimation { target: root; direction: RotationAnimation.Clockwise; duration: animationDuration; easing.type: Easing.InOutQuad } - PropertyAnimation { target: bar1; properties: "rotation, width, x, y"; duration: animationDuration; easing.type: Easing.InOutQuad } - PropertyAnimation { target: bar2; properties: "rotation, width, x, y"; duration: animationDuration; easing.type: Easing.InOutQuad } - PropertyAnimation { target: bar3; properties: "rotation, width, x, y"; duration: animationDuration; easing.type: Easing.InOutQuad } - } - ] -} diff --git a/main.qml b/main.qml index d35e07e..90965b0 100644 --- a/main.qml +++ b/main.qml @@ -2,6 +2,8 @@ import QtQuick 2.9 import QtQuick.Controls 2.2 import Qt.labs.settings 1.0 +import ru.ded.components 1.0 + ApplicationWindow { id: window @@ -34,13 +36,10 @@ ApplicationWindow { anchors.left: parent.left anchors.leftMargin: 8 - width: 24 - height: 24 - state: stackView.depth > 1 ? "back" : "menu" onClicked: { - drawer.open() + mainMenu.open() } onBack: { @@ -54,56 +53,34 @@ ApplicationWindow { } } - Drawer { - id: drawer - width: window.width * 0.66 - height: window.height + MainMenu { + id: mainMenu - Column { - anchors.fill: parent + readonly property var actions: { + "service": () => { stackView.openPage("ServiceForm.qml") }, + "settings": () => { stackView.openPage("SettingsForm.qml") }, + "quit": () => { Qt.quit() } + } - Row { - width: parent.width - height: 100 + logo: "qrc:/lamp.png" + appName: qsTr("nooLight v1.0") - Image { - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.margins: 10 - source: "lamp.png" - } - - Label { - anchors.verticalCenter: parent.verticalCenter - font.pointSize: 20 - text: qsTr("nooLight v0.1") - } + model: ListModel { + ListElement { + title: qsTr("Service") + action: "service" } - - ItemDelegate { - text: qsTr("Service") - width: parent.width - onClicked: { - stackView.openPage("ServiceForm.qml") - } + ListElement { + title: qsTr("Settings") + action: "settings" } - - ItemDelegate { - text: qsTr("Settings") - width: parent.width - onClicked: { - stackView.openPage("SettingsForm.qml") - } - } - - ItemDelegate { - text: qsTr("Quit") - width: parent.width - onClicked: { - Qt.quit() - } + ListElement { + title: qsTr("Quit") + action: "quit" } } + + onActionSelected: (action) => actions[action]() } StackView { @@ -117,7 +94,7 @@ ApplicationWindow { } push(page) - drawer.close() + mainMenu.close() } function showError(text) { diff --git a/qml.qrc b/qml.qrc index 4f7dd5b..4ce6009 100644 --- a/qml.qrc +++ b/qml.qrc @@ -4,7 +4,6 @@ qtquickcontrols2.conf HomeForm.qml SettingsForm.qml - MenuBackButton.qml SubtitledItemDelegate.qml LightsModel.qml LightGroup.qml