52 lines
2.7 KiB
QML
52 lines
2.7 KiB
QML
// SPDX-FileCopyrightText: 2026 Jokul
|
|
//
|
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
// 独立窗口公共主题色提供者
|
|
// 消除 AboutWindow / SettingsWindow / TrafficChartWindow 三个独立顶层窗口之间的
|
|
// 主题颜色样板重复(此前各窗口各持一份 isDarkMode ? 深 : 浅 的颜色定义,
|
|
// 改一处需同步多处)。现集中到本文件,各窗口实例化 WindowTheme { id: theme } 后
|
|
// 统一经 theme.xxx 访问,仅需向 theme.isDarkMode 传入深色模式标记。
|
|
// 设计原因:
|
|
// - 深/浅主题由 networkview.qml 依据 DockPalette 检测任务栏深浅后通过 isDarkMode 传入,
|
|
// 浅色取值与原各窗口硬编码完全一致,保证独立预览时视觉不变。
|
|
// - 个别窗口存在差异值(如 SettingsWindow 的 winBg 浅色为 #F5F5F5、lineColor 为
|
|
// #E0E0E0),因此每个颜色拆成 light/dark 一对可覆盖属性,派生色由它们计算,
|
|
// 差异窗口仅需覆盖对应浅/深值即可,无需整体重写。
|
|
import QtQuick 2.15
|
|
|
|
QtObject {
|
|
id: theme
|
|
|
|
// 输入:深色模式标记,由父窗口从 networkview.qml 传入
|
|
property bool isDarkMode: false
|
|
|
|
// ---- 浅色/深色取色对(默认值与 AboutWindow/TrafficChartWindow 一致,个别窗口可覆盖差异值)----
|
|
property color lightWinBg: "#FFFFFF"
|
|
property color darkWinBg: "#202020"
|
|
property color lightCardBg: "#FFFFFF"
|
|
property color darkCardBg: "#2A2A2A"
|
|
property color lightLineColor: "#E8E8E8"
|
|
property color darkLineColor: "#383838"
|
|
property color lightTextPrimary: "#333333"
|
|
property color darkTextPrimary: "#E0E0E0"
|
|
property color lightTextSecondary: "#666666"
|
|
property color darkTextSecondary: "#AAAAAA"
|
|
property color lightTextTertiary: "#999999"
|
|
property color darkTextTertiary: "#888888"
|
|
property color lightIconGray: "#777777"
|
|
property color darkIconGray: "#AAAAAA"
|
|
property color lightHoverBg: "#F0F0F0"
|
|
property color darkHoverBg: "#353535"
|
|
|
|
// ---- 派生主题色:isDarkMode 为 false 时取值与原浅色硬编码完全一致 ----
|
|
readonly property color winBg: isDarkMode ? darkWinBg : lightWinBg
|
|
readonly property color cardBg: isDarkMode ? darkCardBg : lightCardBg
|
|
readonly property color lineColor: isDarkMode ? darkLineColor : lightLineColor
|
|
readonly property color textPrimary: isDarkMode ? darkTextPrimary : lightTextPrimary
|
|
readonly property color textSecondary: isDarkMode ? darkTextSecondary : lightTextSecondary
|
|
readonly property color textTertiary: isDarkMode ? darkTextTertiary : lightTextTertiary
|
|
readonly property color iconGray: isDarkMode ? darkIconGray : lightIconGray
|
|
readonly property color hoverBg: isDarkMode ? darkHoverBg : lightHoverBg
|
|
}
|