From c39cb7828b47533ff7db0357c395466fe308f535 Mon Sep 17 00:00:00 2001 From: mhduiy Date: Sun, 12 Jan 2025 23:17:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=B7=B1=E6=B5=85=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 1 + src/MFloat/Controls/ColorConstants.qml | 21 ++++--- src/MFloat/Controls/MButton.qml | 36 +++++++----- src/MFloat/Controls/MLineEdit.qml | 44 +++++++++------ src/MFloat/Controls/MLoadIndicator.qml | 7 ++- src/MFloat/Controls/MNotificationBox.qml | 1 + src/MFloat/Controls/MSwitchButton.qml | 11 +--- src/MFloat/Controls/MWrapper.qml | 28 ++++++++- src/cpp/app/CMakeLists.txt | 8 +++ src/cpp/app/appglobal.cpp | 72 ++++++++++++++++++++++++ src/cpp/app/appglobal.h | 68 ++++++++++++++++++++++ src/main.cpp | 2 + src/qml/Main.qml | 14 +++-- src/qml/components/LeftBar.qml | 26 ++++++--- src/qml/components/MonitorItem.qml | 11 ++-- src/qml/components/SettingItem.qml | 18 +++++- src/qml/components/TitleBar.qml | 11 +++- src/qml/pages/DeviceAppPage.qml | 13 +++-- src/qml/pages/DeviceControlPage.qml | 6 +- src/qml/pages/DeviceFlashPage.qml | 4 +- src/qml/pages/DeviceImagePage.qml | 24 ++++---- src/qml/pages/DeviceInfoPage.qml | 30 +++++----- src/qml/pages/SettingPage.qml | 9 ++- 23 files changed, 350 insertions(+), 115 deletions(-) create mode 100644 src/cpp/app/CMakeLists.txt create mode 100644 src/cpp/app/appglobal.cpp create mode 100644 src/cpp/app/appglobal.h diff --git a/CMakeLists.txt b/CMakeLists.txt index aa3abfa..13742a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,6 +32,7 @@ add_executable(${EXE_NAME} ) add_subdirectory(${CMAKE_SOURCE_DIR}/src/cpp/adb) +add_subdirectory(${CMAKE_SOURCE_DIR}/src/cpp/app) add_subdirectory(${CMAKE_SOURCE_DIR}/src/cpp/appPageTool) add_subdirectory(${CMAKE_SOURCE_DIR}/src/cpp/components) add_subdirectory(${CMAKE_SOURCE_DIR}/src/cpp/controlPageTool) diff --git a/src/MFloat/Controls/ColorConstants.qml b/src/MFloat/Controls/ColorConstants.qml index a88ae76..e9b8f92 100644 --- a/src/MFloat/Controls/ColorConstants.qml +++ b/src/MFloat/Controls/ColorConstants.qml @@ -2,13 +2,16 @@ import QtQuick import QtQuick.Controls QtObject { - property color suggestBackColor: Qt.rgba(219 / 255,242 / 255,255 / 255, 0.65) - property color suggestHoverColor: Qt.rgba(147 / 255,217 / 255,255 / 255, 0.65) - property color suggestClickedColor: Qt.rgba(0 / 255,165 / 255,255 / 255, 0.65) - property color ordinaryBackColor: Qt.rgba(232 / 255,232 / 255,232 / 255, 0.65) - property color ordinaryHoverColor: Qt.rgba(175 / 255,175 / 255,175 / 255, 0.65) - property color ordinaryClickedColor: Qt.rgba(0 / 255,0 / 255,0 / 255, 0.65) - property color warningBackColor: Qt.rgba(255 / 255,231 / 255,231 / 255, 0.65) - property color warningHoverColor: Qt.rgba(255 / 255,169 / 255,169 / 255, 0.65) - property color warningClickedColor: Qt.rgba(214 / 255,62 / 255,62 / 255, 0.65) + property color suggestBackColor: Qt.rgba(0, 125 / 255, 200 / 255, 0.1) + property color suggestHoverColor: Qt.rgba(0, 125 / 255, 200 / 255, 0.3) + property color suggestClickedColor: Qt.rgba(0, 125 / 255, 200 / 255, 0.8) + property color ordinaryBackColor: Qt.rgba(0, 0, 0, 0.1) + property color ordinaryHoverColor: Qt.rgba(0, 0, 0, 0.3) + property color ordinaryClickedColor: Qt.rgba(0, 0, 0, 0.8) + property color warningBackColor: Qt.rgba(215 / 255, 80 / 255, 80 / 255, 0.1) + property color warningHoverColor: Qt.rgba(215 / 255, 80 / 255, 80 / 255, 0.3) + property color warningClickedColor: Qt.rgba(215 / 255, 80 / 255, 80 / 255, 0.8) + + property color lightTextColor: ordinaryClickedColor + property color darkTextColor: Qt.rgba(1, 1, 1, 0.8) } diff --git a/src/MFloat/Controls/MButton.qml b/src/MFloat/Controls/MButton.qml index 20a9c23..79b4b96 100644 --- a/src/MFloat/Controls/MButton.qml +++ b/src/MFloat/Controls/MButton.qml @@ -1,5 +1,6 @@ import QtQuick import QtQuick.Controls +import App Item { id: root @@ -23,10 +24,6 @@ Item { property int fontSize: 12 signal clicked - ColorConstants { - id: colorConstants - } - Rectangle { id: btnRect width: root.width @@ -38,19 +35,19 @@ Item { property int mouseClickCenterX: 0 property int mouseClickCenterY: 0 property var backgroundColorMap: [ - { key: MButton.FBtnType.Ordinary, value: colorConstants.ordinaryBackColor}, - { key: MButton.FBtnType.Suggest, value: colorConstants.suggestBackColor}, - { key: MButton.FBtnType.Warning, value: colorConstants.warningBackColor} + { key: MButton.FBtnType.Ordinary, value: App.normalColorWeight1 }, + { key: MButton.FBtnType.Suggest, value: App.suggestColorWeight1 }, + { key: MButton.FBtnType.Warning, value: App.warningColorWeight1 } ] property var hoverColorMap: [ - { key: MButton.FBtnType.Ordinary, value: colorConstants.ordinaryHoverColor}, - { key: MButton.FBtnType.Suggest, value: colorConstants.suggestHoverColor}, - { key: MButton.FBtnType.Warning, value: colorConstants.warningHoverColor} + { key: MButton.FBtnType.Ordinary, value: App.normalColorWeight2 }, + { key: MButton.FBtnType.Suggest, value: App.suggestColorWeight2 }, + { key: MButton.FBtnType.Warning, value: App.warningColorWeight2 } ] property var clickedColorMap: [ - { key: MButton.FBtnType.Ordinary, value: colorConstants.ordinaryClickedColor}, - { key: MButton.FBtnType.Suggest, value: colorConstants.suggestClickedColor}, - { key: MButton.FBtnType.Warning, value: colorConstants.warningClickedColor} + { key: MButton.FBtnType.Ordinary, value: App.normalColorWeight3 }, + { key: MButton.FBtnType.Suggest, value: App.suggestColorWeight3 }, + { key: MButton.FBtnType.Warning, value: App.warningColorWeight3 } ] color: { @@ -61,8 +58,12 @@ Item { } } - border.width: 2 - border.color: clickedColorMap[btnType].value + Behavior on color { + ColorAnimation{ + duration: 200 + } + } + radius: 10 Behavior on color { @@ -108,6 +109,11 @@ Item { color: btnRect.clickedColorMap[btnRect.btnType].value horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter + Behavior on color { + ColorAnimation{ + duration: 200 + } + } } Rectangle { diff --git a/src/MFloat/Controls/MLineEdit.qml b/src/MFloat/Controls/MLineEdit.qml index 36ea134..b7e66a2 100644 --- a/src/MFloat/Controls/MLineEdit.qml +++ b/src/MFloat/Controls/MLineEdit.qml @@ -1,5 +1,6 @@ import QtQuick import QtQuick.Controls +import App Item { @@ -11,32 +12,31 @@ Item { property alias editItem: edit property string placeholderText: "" - ColorConstants { - id: colorConstants - } - Rectangle { id: warpper anchors.fill: parent - color: colorConstants.ordinaryBackColor + color: App.normalColorWeight1 radius: 10 - border.width: 2 - border.color: colorConstants.ordinaryClickedColor - state: "unInput" + Behavior on color { + ColorAnimation{ + duration: 200 + } + } + states: [ State { name: "unInput" - PropertyChanges { target: placeholderItemRect; color: edit.length !== 0 ? colorConstants.ordinaryClickedColor: "transparent"; x: edit.length !== 0 ? 15 : 5; y: edit.length !== 0 ? (-((placeholderItem.height + 5) / 2)) : (root.height / 2 - placeholderItemRect.height / 2)} - PropertyChanges { target: placeholderItem; color: edit.length !== 0 ? "white" : "gray"} - PropertyChanges { target: warpper; color: colorConstants.ordinaryBackColor; border.color: colorConstants.ordinaryClickedColor} + PropertyChanges { target: placeholderItemRect; color: edit.length !== 0 ? App.baseColor: "transparent"; x: edit.length !== 0 ? 15 : 5; y: edit.length !== 0 ? (-((placeholderItem.height + 5) / 2)) : (root.height / 2 - placeholderItemRect.height / 2)} + PropertyChanges { target: placeholderItem; color: App.windowTextColor} + PropertyChanges { target: warpper; color: App.normalColorWeight1;} }, State { name: "input" - PropertyChanges { target: placeholderItemRect; color: colorConstants.suggestClickedColor; x: 15; y: -((placeholderItem.height + 5) / 2)} - PropertyChanges { target: placeholderItem; color: "white"} - PropertyChanges { target: warpper; color: colorConstants.suggestBackColor; border.color: colorConstants.suggestClickedColor} + PropertyChanges { target: placeholderItemRect; color: App.suggestColorWeight3; x: 15; y: -((placeholderItem.height + 5) / 2)} + PropertyChanges { target: placeholderItem; color: App.windowTextColor} + PropertyChanges { target: warpper; color: App.suggestColorWeight2;} } ] @@ -61,7 +61,7 @@ Item { id: placeholderItemRect height: placeholderItem.height + 5 width: placeholderItem.width + 5 - color: colorConstants.ordinaryClickedColor + color: App.normalColorWeight3 radius: 5 Text { id: placeholderItem @@ -69,8 +69,14 @@ Item { clip: true text: placeholderText verticalAlignment: Text.AlignVCenter - color: "white" + color: App.windowTextColor font.pixelSize: 10 + + Behavior on color { + ColorAnimation{ + duration: 200 + } + } } } @@ -80,6 +86,12 @@ Item { anchors.margins: 5 clip: true verticalAlignment: Text.AlignVCenter + color: App.windowTextColor + Behavior on color { + ColorAnimation{ + duration: 200 + } + } onFocusChanged: { if (focus) { diff --git a/src/MFloat/Controls/MLoadIndicator.qml b/src/MFloat/Controls/MLoadIndicator.qml index 54723d1..5f64fb5 100644 --- a/src/MFloat/Controls/MLoadIndicator.qml +++ b/src/MFloat/Controls/MLoadIndicator.qml @@ -1,5 +1,6 @@ import QtQuick import QtQuick.Controls +import App Item { width: 30 @@ -18,8 +19,8 @@ Item { opacity: 0.0 onPaint: { var ctx = getContext("2d"); - ctx.strokeStyle = "black"; - ctx.lineWidth = 2; + ctx.strokeStyle = App.normalColorWeight3; + ctx.lineWidth = 1; ctx.imageSmoothingEnabled = true; antialiasing: true @@ -32,7 +33,7 @@ Item { ctx.stroke(); var smallRadius = 4; - ctx.fillStyle = "black"; + ctx.fillStyle = App.normalColorWeight3; ctx.beginPath(); ctx.arc(centerX, 10, smallRadius, 0, 2 * Math.PI); ctx.fill(); diff --git a/src/MFloat/Controls/MNotificationBox.qml b/src/MFloat/Controls/MNotificationBox.qml index 5e6e8e3..cf81aca 100644 --- a/src/MFloat/Controls/MNotificationBox.qml +++ b/src/MFloat/Controls/MNotificationBox.qml @@ -4,6 +4,7 @@ import QtQuick.Layouts import QtQuick.Effects import NotificationController +import App Item { id: root diff --git a/src/MFloat/Controls/MSwitchButton.qml b/src/MFloat/Controls/MSwitchButton.qml index e266ade..69471e1 100644 --- a/src/MFloat/Controls/MSwitchButton.qml +++ b/src/MFloat/Controls/MSwitchButton.qml @@ -1,4 +1,5 @@ import QtQuick +import App Item { id: root @@ -7,15 +8,9 @@ Item { property bool status: false - ColorConstants { - id: colorConstants - } - Rectangle { anchors.fill: parent - color: status ? colorConstants.suggestBackColor : colorConstants.ordinaryBackColor - border.width: 2 - border.color: status ? colorConstants.suggestClickedColor : colorConstants.ordinaryClickedColor + color: status ? App.suggestColorWeight1 : App.normalColorWeight1 radius: width / 2 Behavior on color { @@ -37,7 +32,7 @@ Item { width: height radius: width / 2 scale: 1.0 - color: status ? colorConstants.suggestClickedColor : colorConstants.ordinaryClickedColor + color: status ? App.suggestColorWeight3 : App.adjustColorOpacity(App.normalColorWeight3, 0.6) Component.onCompleted: { x = status ? parent.width - width - 3 : 3 diff --git a/src/MFloat/Controls/MWrapper.qml b/src/MFloat/Controls/MWrapper.qml index 3919206..d3a89db 100644 --- a/src/MFloat/Controls/MWrapper.qml +++ b/src/MFloat/Controls/MWrapper.qml @@ -2,6 +2,7 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts import OtherSettingsHandler +import App Control { id: control @@ -24,9 +25,15 @@ Control { visible: active Layout.alignment: Qt.AlignTop sourceComponent: Text { + color: App.windowTextColor text: control.title font.bold: true font.pixelSize: 18 + Behavior on color { + ColorAnimation{ + duration: 200 + } + } } } @@ -35,9 +42,14 @@ Control { visible: active Layout.alignment: Qt.AlignTop sourceComponent: Text { + color: App.windowTextAssitColor text: control.description font.pixelSize: 12 - opacity: 0.6 + Behavior on color { + ColorAnimation{ + duration: 200 + } + } } } } @@ -60,8 +72,18 @@ Control { background: Rectangle { radius: 10 - color: Qt.rgba(255, 255, 255, alpha) - border.color: colorConstants.ordinaryHoverColor + color: Qt.rgba(255, 255, 255, control.alpha) + border.color: App.borderColor border.width: 1 + Behavior on color { + ColorAnimation{ + duration: 200 + } + } + Behavior on border.color { + ColorAnimation{ + duration: 200 + } + } } } diff --git a/src/cpp/app/CMakeLists.txt b/src/cpp/app/CMakeLists.txt new file mode 100644 index 0000000..fe33370 --- /dev/null +++ b/src/cpp/app/CMakeLists.txt @@ -0,0 +1,8 @@ +set(APP_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/appglobal.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/appglobal.h +) + +target_sources(${EXE_NAME} PRIVATE ${APP_SRC}) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) \ No newline at end of file diff --git a/src/cpp/app/appglobal.cpp b/src/cpp/app/appglobal.cpp new file mode 100644 index 0000000..a07c4b5 --- /dev/null +++ b/src/cpp/app/appglobal.cpp @@ -0,0 +1,72 @@ +#include "appglobal.h" +#include "src/cpp/utils/globalsetting.h" +#include + +static auto constexpr Other_Section = "other"; +static auto constexpr Theme_Type_Key = "themeType"; + +const QColor SuggestBackColor = QColor(0, 125, 200, 0.1 * 255); +const QColor SuggestHoverColor = QColor(0, 125, 200, 0.3 * 255); +const QColor SuggestClickedColor = QColor(0, 125, 200, 0.8 * 255); +const QColor OrdinaryBackColor = QColor(0, 0, 0, 0.1 * 255); +const QColor OrdinaryHoverColor = QColor(0, 0, 0, 0.3 * 255); +const QColor OrdinaryClickedColor = QColor(0, 0, 0, 0.8 * 255); +const QColor WarningBackColor = QColor(215, 80, 80, 0.1 * 255); +const QColor WarningHoverColor = QColor(215, 80, 80, 0.3 * 255);; +const QColor WarningClickedColor = QColor(215, 80, 80, 0.8 * 255); + +const QColor LightTextColor = OrdinaryClickedColor; +const QColor DarkTextColor = QColor(255, 255, 255, 0.8 * 255); + +const QColor LightBase = Qt::white; +const QColor DarkBase = Qt::black; + +const QColor LightMid = QColor(255, 255, 255, 0.4 * 255); +const QColor DarkMid = QColor(0, 0, 0, 0.4 * 255); + +const QColor LightBorderColor = QColor(0, 0, 0, 0.2 * 255); +const QColor DarkBorderColor = QColor(255, 255, 255, 0.2 * 255); + +AppGlobal::AppGlobal(QObject *parent) + : QObject(parent) +{ + m_themeType = (ThemeType)AppSettings->readConfig(Other_Section, Theme_Type_Key, ThemeType::Light).toInt(); + reload(); +} + +QColor AppGlobal::adjustColorOpacity(const QColor &color, float opacity) +{ + QColor _color(color); + _color.setAlpha(opacity * 255); + return _color; +} + +void AppGlobal::reload() +{ + m_windowTextColor = m_themeType == ThemeType::Light ? LightTextColor : DarkTextColor; + m_windowTextAssitColor = adjustColorOpacity(m_windowTextColor, 0.5); + m_baseColor = m_themeType == ThemeType::Light ? LightBase : DarkBase; + m_midColor = m_themeType == ThemeType::Light ? LightMid : DarkMid; + m_borderColor = m_themeType == ThemeType::Light ? LightBorderColor : DarkBorderColor; + + m_suggestColorWeight1 = m_themeType == ThemeType::Light ? SuggestBackColor : SuggestBackColor; + m_suggestColorWeight2 = m_themeType == ThemeType::Light ? SuggestHoverColor : SuggestHoverColor; + m_suggestColorWeight3 = m_themeType == ThemeType::Light ? SuggestClickedColor : SuggestClickedColor; + m_warningColorWeight1 = m_themeType == ThemeType::Light ? WarningBackColor : WarningBackColor; + m_warningColorWeight2 = m_themeType == ThemeType::Light ? WarningHoverColor : WarningHoverColor; + m_warningColorWeight3 = m_themeType == ThemeType::Light ? WarningClickedColor : WarningClickedColor; + m_normalColorWeight1 = m_themeType == ThemeType::Light ? OrdinaryBackColor : OrdinaryBackColor; + m_normalColorWeight2 = m_themeType == ThemeType::Light ? OrdinaryHoverColor : OrdinaryHoverColor; + m_normalColorWeight3 = m_themeType == ThemeType::Light ? LightTextColor : adjustColorOpacity(DarkTextColor, 0.5); +} + +void AppGlobal::setThemeType(ThemeType type) +{ + if (m_themeType != type) { + qInfo() << "set themeType: " << type; + m_themeType = type; + AppSettings->writeConfig(Other_Section, Theme_Type_Key, type); + reload(); + Q_EMIT themeTypeChanged(); + } +} \ No newline at end of file diff --git a/src/cpp/app/appglobal.h b/src/cpp/app/appglobal.h new file mode 100644 index 0000000..e08bd49 --- /dev/null +++ b/src/cpp/app/appglobal.h @@ -0,0 +1,68 @@ +#pragma once + +#include "src/cpp/utils/singleton.hpp" +#include +#include + +#define App AppGlobal::instance() + +class AppGlobal : public QObject +{ + Q_OBJECT + SINGLETON(AppGlobal) + Q_PROPERTY(QColor windowTextColor MEMBER m_windowTextColor NOTIFY themeTypeChanged) + Q_PROPERTY(QColor windowTextAssitColor MEMBER m_windowTextAssitColor NOTIFY themeTypeChanged) + Q_PROPERTY(QColor baseColor MEMBER m_baseColor NOTIFY themeTypeChanged) + Q_PROPERTY(QColor midColor MEMBER m_midColor NOTIFY themeTypeChanged) + Q_PROPERTY(QColor borderColor MEMBER m_borderColor NOTIFY themeTypeChanged) + Q_PROPERTY(QColor suggestColorWeight1 MEMBER m_suggestColorWeight1 NOTIFY themeTypeChanged) + Q_PROPERTY(QColor suggestColorWeight2 MEMBER m_suggestColorWeight2 NOTIFY themeTypeChanged) + Q_PROPERTY(QColor suggestColorWeight3 MEMBER m_suggestColorWeight3 NOTIFY themeTypeChanged) + Q_PROPERTY(QColor warningColorWeight1 MEMBER m_warningColorWeight1 NOTIFY themeTypeChanged) + Q_PROPERTY(QColor warningColorWeight2 MEMBER m_warningColorWeight2 NOTIFY themeTypeChanged) + Q_PROPERTY(QColor warningColorWeight3 MEMBER m_warningColorWeight3 NOTIFY themeTypeChanged) + Q_PROPERTY(QColor normalColorWeight1 MEMBER m_normalColorWeight1 NOTIFY themeTypeChanged) + Q_PROPERTY(QColor normalColorWeight2 MEMBER m_normalColorWeight2 NOTIFY themeTypeChanged) + Q_PROPERTY(QColor normalColorWeight3 MEMBER m_normalColorWeight3 NOTIFY themeTypeChanged) + + Q_PROPERTY(ThemeType themeType READ themeType WRITE setThemeType NOTIFY themeTypeChanged) + +public: + enum ThemeType{ + Light, + Dark + }; + Q_ENUM(ThemeType) + + Q_INVOKABLE static QColor adjustColorOpacity(const QColor &color, float opacity); + + ThemeType themeType() const { return m_themeType; }; + Q_INVOKABLE void setThemeType(ThemeType type); + +signals: + void themeTypeChanged(); + +private: + void reload(); + +private: + QColor m_windowTextColor; + QColor m_windowTextAssitColor; + QColor m_baseColor; + QColor m_midColor; + QColor m_borderColor; + + QColor m_suggestColorWeight1; + QColor m_suggestColorWeight2; + QColor m_suggestColorWeight3; + + QColor m_warningColorWeight1; + QColor m_warningColorWeight2; + QColor m_warningColorWeight3; + + QColor m_normalColorWeight1; + QColor m_normalColorWeight2; + QColor m_normalColorWeight3; + + ThemeType m_themeType = ThemeType::Light; +}; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index ac0212d..555a82b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,6 +19,7 @@ #include "cpp/utils/notificationcontroller.h" #include "cpp/components/fpsitem.h" #include "cpp/utils/globalsetting.h" +#include "cpp/app/appglobal.h" bool checkADB() { QProcess process; @@ -114,6 +115,7 @@ int main(int argc, char *argv[]) qInfo() << "load8" << loaderTimer.elapsed(); qmlRegisterType( "FpsItem", 1, 0, "FpsItem"); + qmlRegisterSingletonInstance("App", 1, 0, "App", App); AppSettings->checkConfig("other", "useOpenGL", QVariant::fromValue(false)); bool useOpenGL = GlobalSetting::instance()->readConfig("other", "useOpenGL").toBool(); diff --git a/src/qml/Main.qml b/src/qml/Main.qml index 717c700..6a172ac 100644 --- a/src/qml/Main.qml +++ b/src/qml/Main.qml @@ -9,6 +9,7 @@ import "./pages/" import ADBControl 1.0 import WallpaperHelper 1.0 import FpsItem 1.0 +import App ApplicationWindow { id: root @@ -19,10 +20,6 @@ ApplicationWindow { flags: Qt.Window | Qt.FramelessWindowHint | Qt.WindowMinimizeButtonHint color: "transparent" - ColorConstants { - id: colorConstants - } - MNotificationBox { id: notificationBox blurTarget: rootRect @@ -32,6 +29,8 @@ ApplicationWindow { id: fpsItem } + palette.windowText: App.windowTextColor + Text { z: 1000 anchors.right: parent.right @@ -92,7 +91,14 @@ ApplicationWindow { Rectangle{ anchors.fill: parent radius: 10 + color: App.baseColor opacity: WallpaperHelper.opacity + + Behavior on color { + ColorAnimation { + duration: 200 + } + } } } diff --git a/src/qml/components/LeftBar.qml b/src/qml/components/LeftBar.qml index da582bd..faa96b5 100644 --- a/src/qml/components/LeftBar.qml +++ b/src/qml/components/LeftBar.qml @@ -5,6 +5,7 @@ import MFloat import ADBControl import QtQuick.Effects import Qt5Compat.GraphicalEffects +import App Item { id: sideBar @@ -59,8 +60,14 @@ Item { anchors.margins: 10 anchors.fill: parent radius: sideBar.radius - color: Qt.rgba(255, 255, 255, 0.4) - border.color: Qt.rgba(0, 0, 0, 0.2) + color: App.midColor + border.color: App.borderColor + + Behavior on color { + ColorAnimation { + duration: 200 + } + } ColumnLayout { anchors.fill: parent @@ -197,9 +204,14 @@ Item { id: markRect anchors.fill: parent radius: 12 - color: Qt.rgba(255, 255, 255, 0.3) - border.color: Qt.darker("white", 1.8) + color: App.midColor + border.color: App.borderColor layer.enabled: true + Behavior on color { + ColorAnimation { + duration: 200 + } + } } } @@ -221,12 +233,12 @@ Item { } } - Text { + Label { text: "1. 打开开发者模式中的无线调试" font.family: "黑体" font.pixelSize: 16 } - Text { + Label { text: "2. 点击使用配对码配对设备,并填写IP和配对码" wrapMode: Text.WrapAnywhere font.family: "黑体" @@ -252,7 +264,7 @@ Item { } } } - Text { + Label { text: "3. 返回上一级,查看IP和端口,并填写" font.family: "黑体" font.pixelSize: 16 diff --git a/src/qml/components/MonitorItem.qml b/src/qml/components/MonitorItem.qml index 19e6ec5..f6c4db9 100644 --- a/src/qml/components/MonitorItem.qml +++ b/src/qml/components/MonitorItem.qml @@ -3,6 +3,7 @@ import QtQuick.Controls import QtQuick.Layouts import QtCharts import MFloat +import App MWrapper { id: root @@ -47,8 +48,8 @@ MWrapper { max: root.maxX labelsVisible: false gridVisible: false - color: Qt.rgba(0, 0, 0, 0.4) - labelsColor: color + color: App.windowTextColor + labelsColor: App.windowTextColor labelsFont.bold: true titleVisible: false lineVisible: false @@ -59,9 +60,9 @@ MWrapper { min: root.minY max: root.maxY tickCount: 5 - gridLineColor: Qt.rgba(0, 0, 0, 0.1) - color: Qt.rgba(0, 0, 0, 0.4) - labelsColor: color + gridLineColor: App.borderColor + color: App.windowTextColor + labelsColor: App.windowTextColor labelsFont.bold: true } SplineSeries { diff --git a/src/qml/components/SettingItem.qml b/src/qml/components/SettingItem.qml index 5d7a527..ab167b3 100644 --- a/src/qml/components/SettingItem.qml +++ b/src/qml/components/SettingItem.qml @@ -2,6 +2,7 @@ import QtQuick import QtQuick.Controls import QtQuick.Layouts import MFloat +import App MWrapper { id: root @@ -13,16 +14,27 @@ MWrapper { RowLayout { id: mainControlLayout ColumnLayout { - Label { + Text { id: titleLabel font.pixelSize: 16 + color: App.windowTextColor text: root.title + Behavior on color { + ColorAnimation{ + duration: 200 + } + } } - Label { + Text { id: desLabel font.pixelSize: 12 - color: "gray" + color: App.windowTextAssitColor text: root.description + Behavior on color { + ColorAnimation{ + duration: 200 + } + } } } diff --git a/src/qml/components/TitleBar.qml b/src/qml/components/TitleBar.qml index e492571..5d09ac2 100644 --- a/src/qml/components/TitleBar.qml +++ b/src/qml/components/TitleBar.qml @@ -1,5 +1,6 @@ import QtQuick import QtQuick.Layouts +import App Rectangle { id: titleBar @@ -16,6 +17,12 @@ Rectangle { property int leftMargin: 0 property real lettleSpace: 0 text: "AndroidTools" + color: App.windowTextColor + Behavior on color { + ColorAnimation{ + duration: 200 + } + } Layout.leftMargin: leftMargin horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter @@ -130,7 +137,7 @@ Rectangle { anchors.fill: parent onPaint: { var ctx = getContext("2d"); - ctx.strokeStyle = colorConstants.ordinaryClickedColor + ctx.strokeStyle = App.normalColorWeight3 ctx.lineWidth = 4; ctx.beginPath(); ctx.moveTo(10, 15); @@ -167,7 +174,7 @@ Rectangle { anchors.fill: parent onPaint: { var ctx = getContext("2d"); - ctx.strokeStyle = colorConstants.warningClickedColor + ctx.strokeStyle = App.warningColorWeight3 ctx.lineWidth = 4; ctx.beginPath(); ctx.moveTo(10, 20); diff --git a/src/qml/pages/DeviceAppPage.qml b/src/qml/pages/DeviceAppPage.qml index 85efa8d..d11da43 100644 --- a/src/qml/pages/DeviceAppPage.qml +++ b/src/qml/pages/DeviceAppPage.qml @@ -5,6 +5,7 @@ import QtQuick.Dialogs import MFloat import SoftListModel 1.0 import AppDetailControl 1.0 +import App ItemPage { id: root @@ -169,7 +170,7 @@ ItemPage { Layout.fillHeight: true Layout.fillWidth: true spacing: 5 - Text { + Label { text: AppDetailControl.packageName === "" ? "请选择应用" : AppDetailControl.packageName font.pixelSize: 16 horizontalAlignment: Text.AlignRight @@ -177,16 +178,16 @@ ItemPage { Repeater { model: softDetailInfoModel RowLayout { - Text { + Label { text: model.name font.pixelSize: 12 horizontalAlignment: Text.AlignRight - color: "gray" + color: App.windowTextAssitColor } - Text { + Label { text: model.info font.pixelSize: 12 - color: "gray" + color: App.windowTextAssitColor } } } @@ -299,7 +300,7 @@ ItemPage { Layout.fillWidth: true Layout.preferredWidth: 30 spacing: 10 - Text { + Label { text: model.name font.pixelSize: 12 horizontalAlignment: Text.AlignHCenter diff --git a/src/qml/pages/DeviceControlPage.qml b/src/qml/pages/DeviceControlPage.qml index c847a95..cff976d 100644 --- a/src/qml/pages/DeviceControlPage.qml +++ b/src/qml/pages/DeviceControlPage.qml @@ -184,7 +184,7 @@ ItemPage { ColumnLayout { RowLayout { Layout.fillWidth: true - Text { + Label { text: "分辨率" } Item { @@ -196,7 +196,7 @@ ItemPage { placeholderText: "width" editItem.text: ResolutionControl.screenWidth } - Text { + Label { horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter Layout.preferredWidth: 20 @@ -211,7 +211,7 @@ ItemPage { } RowLayout { Layout.fillWidth: true - Text { + Label { text: "DPI" } Item { diff --git a/src/qml/pages/DeviceFlashPage.qml b/src/qml/pages/DeviceFlashPage.qml index c2c3e75..f2d15b3 100644 --- a/src/qml/pages/DeviceFlashPage.qml +++ b/src/qml/pages/DeviceFlashPage.qml @@ -31,10 +31,10 @@ ItemPage { Layout.fillWidth: true padding: 0 RowLayout { - Text { + Label { text: "请将设备重启到FASTBOOT模式,当前设备: " } - Text { + Label { text: FastBootDeviceManager.currentDeviceCode === "" ? "无设备连接" : FastBootDeviceManager.currentDeviceCode } diff --git a/src/qml/pages/DeviceImagePage.qml b/src/qml/pages/DeviceImagePage.qml index 3f29768..af27f2d 100644 --- a/src/qml/pages/DeviceImagePage.qml +++ b/src/qml/pages/DeviceImagePage.qml @@ -7,6 +7,7 @@ import DeviceControl 1.0 import MirrorScene 1.0 import Resource 1.0 import ScrcpyConfig 1.0 +import App ItemPage { id: root @@ -23,6 +24,7 @@ ItemPage { Layout.minimumWidth: 270 radius: 10 color: "black" + border.color: App.borderColor MirrorScene { id: video @@ -92,7 +94,7 @@ ItemPage { Layout.fillWidth: true } - Text { + Label { Layout.preferredWidth: 100 text: "123Mbps" } @@ -108,7 +110,7 @@ ItemPage { Item { Layout.fillWidth: true } - Text { + Label { Layout.preferredWidth: 100 text: "60fps" } @@ -124,7 +126,7 @@ ItemPage { Item { Layout.fillWidth: true } - Text { + Label { Layout.preferredWidth: 100 text: "1920, 1080" } @@ -206,7 +208,7 @@ ItemPage { RowLayout { Layout.fillWidth: true Layout.preferredHeight: 30 - Text { + Label { text: "帧率限制" } Item { @@ -234,7 +236,7 @@ ItemPage { RowLayout { Layout.fillWidth: true Layout.preferredHeight: 30 - Text { + Label { text: "码率限制" } Item { @@ -262,7 +264,7 @@ ItemPage { RowLayout { Layout.fillWidth: true Layout.preferredHeight: 30 - Text { + Label { text: "屏幕截图" } Item { @@ -287,7 +289,7 @@ ItemPage { RowLayout { Layout.fillWidth: true Layout.preferredHeight: 30 - Text { + Label { text: "屏幕录制" } Item { @@ -315,7 +317,7 @@ ItemPage { RowLayout { Layout.fillWidth: true Layout.preferredHeight: 30 - Text { + Label { text: "按键宏录制" } Item { @@ -336,7 +338,7 @@ ItemPage { RowLayout { Layout.fillWidth: true Layout.preferredHeight: 30 - Text { + Label { text: "执行宏" } Item { @@ -357,7 +359,7 @@ ItemPage { RowLayout { Layout.fillWidth: true Layout.preferredHeight: 30 - Text { + Label { text: "宏重复执行" } Item { @@ -371,7 +373,7 @@ ItemPage { RowLayout { Layout.fillWidth: true Layout.preferredHeight: 30 - Text { + Label { text: "宏执行间隔" } Item { diff --git a/src/qml/pages/DeviceInfoPage.qml b/src/qml/pages/DeviceInfoPage.qml index a24d12a..90590ad 100644 --- a/src/qml/pages/DeviceInfoPage.qml +++ b/src/qml/pages/DeviceInfoPage.qml @@ -11,6 +11,7 @@ import DetailInfoControl 1.0 import NotificationController 1.0 import DeviceControl 1.0 import RealTimeInfoHelper 1.0 +import App ItemPage { id: root @@ -53,7 +54,7 @@ ItemPage { Layout.fillWidth: true Layout.fillHeight: true Layout.alignment: Qt.AlignLeft - Text { + Label { text: { let title = DetailInfoControl.info[DetailInfoControl.DETA_MANUFACTURER]; if (title === "" || title === undefined) { @@ -94,13 +95,13 @@ ItemPage { }, ] RowLayout { - Text { + Label { text: modelData.key - color: "#008c8c" + color: App.windowTextAssitColor } - Text { + Label { text: modelData.value - color: "gray" + color: App.windowTextAssitColor } } } @@ -169,11 +170,11 @@ ItemPage { property var titles: ["设备信息", "处理器", "系统信息", "屏幕", "其他信息"] model: texts.length ColumnLayout { - Text { + Label { text: deviceDetailInfoRep.titles[index] font.bold: true font.pixelSize: 18 - color: colorConstants.ordinaryClickedColor + color: App.windowTextColor } Repeater { id: rep @@ -194,19 +195,18 @@ ItemPage { Layout.preferredHeight: 30 } - Text { + Label { text: deviceDetailInfoRep.texts[rep.repIndex][index] - opacity: 0.4 font.pixelSize: 14 } Rectangle { Layout.fillWidth: true - Layout.preferredHeight: 2 - color: Qt.rgba(255, 255, 255, 0.7) + Layout.preferredHeight: 1 + color: App.windowTextAssitColor } - Text { + Label { visible: deviceDetailInfoRep.values[rep.repIndex][index] !== undefined text: deviceDetailInfoRep.values[rep.repIndex][index] } @@ -253,7 +253,7 @@ ItemPage { RowLayout { Layout.fillWidth: true Layout.preferredHeight: 30 - Text { + Label { font.bold: true font.pixelSize: 20 text: "前台应用" @@ -281,7 +281,7 @@ ItemPage { rectColor: colorConstants.suggestClickedColor text: "窗口标识符" } - Text { + Label { Layout.fillWidth: true text: CutActivityControl.identifier } @@ -290,7 +290,7 @@ ItemPage { rectColor: colorConstants.suggestClickedColor text: "前台包名" } - Text { + Label { Layout.fillWidth: true text: CutActivityControl.cutPackageName } diff --git a/src/qml/pages/SettingPage.qml b/src/qml/pages/SettingPage.qml index 1a7c67d..66a92e6 100644 --- a/src/qml/pages/SettingPage.qml +++ b/src/qml/pages/SettingPage.qml @@ -9,6 +9,7 @@ import WallPaperModel 1.0 import WallpaperHelper 1.0 import OtherSettingsHandler 1.0 import ADBControl 1.0 +import App ItemPage { ScrollView { @@ -193,7 +194,6 @@ ItemPage { controlItem: MSwitchButton { status: OtherSettingsHandler.useOpenGL onStatusChanged: { - console.warn("=======", status) OtherSettingsHandler.useOpenGL = status } } @@ -212,9 +212,12 @@ ItemPage { SettingItem { title: "夜间模式" - description: "将所有控件设置为深色主题, 此功能开发中..." + description: "将所有控件设置为深色主题" controlItem: MSwitchButton { - + status: App.themeType + onStatusChanged: { + App.themeType = status + } } } }