From 71223161f8c103846079ce5987ecce6a59f04a62 Mon Sep 17 00:00:00 2001 From: liuxinhao Date: Mon, 5 Jun 2023 15:40:41 +0800 Subject: [PATCH 4/4] feat(style app): Adjust the topic configuration to whitelist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 调整主题配置为白名单,默认包括部分需要支持的kiran桌面环境进程名 --- common/data/kiran-qt5-integration.ini | 5 +++-- common/src/kiran-integration-settings.cpp | 26 +++++++++++++++++++---- common/src/kiran-integration-settings.h | 16 ++++++++++++-- platformtheme/kiran-theme.cpp | 4 ++-- style/src/kiran-style-plugin.cpp | 8 +++---- 5 files changed, 45 insertions(+), 14 deletions(-) diff --git a/common/data/kiran-qt5-integration.ini b/common/data/kiran-qt5-integration.ini index 478b608..d0fd969 100644 --- a/common/data/kiran-qt5-integration.ini +++ b/common/data/kiran-qt5-integration.ini @@ -1,2 +1,3 @@ -#[Style] -#disable-kiran-style-apps=Do not load kiranstyle applications, eg: assistant-qt5,qdbusviewer \ No newline at end of file +[Style] +#启用kiran style的应用列表,已内置部分kiran桌面环境的组件,eg: kiran-*,kiran-panel +kiran-style-apps= \ No newline at end of file diff --git a/common/src/kiran-integration-settings.cpp b/common/src/kiran-integration-settings.cpp index 7726fad..a781fd3 100644 --- a/common/src/kiran-integration-settings.cpp +++ b/common/src/kiran-integration-settings.cpp @@ -4,6 +4,7 @@ #include #include #include +#include KiranIntegrationSettings::KiranIntegrationSettings() { @@ -18,8 +19,8 @@ KiranIntegrationSettings::~KiranIntegrationSettings() void KiranIntegrationSettings::init() { QSettings settings("/etc/kiran-qt5-integration/kiran-qt5-integration.ini",QSettings::IniFormat); - QStringList disableStyleApps = settings.value("Style/disable-kiran-style-apps","").toStringList(); - m_disableKiranStyleApps.append(disableStyleApps); + QStringList kiranStyleApps = settings.value("Style/kiran-style-apps","").toStringList(); + m_kiranStyleApps.unite(kiranStyleApps.toSet()); } KiranIntegrationSettings* KiranIntegrationSettings::instance() @@ -39,7 +40,24 @@ KiranIntegrationSettings* KiranIntegrationSettings::instance() return pInst.data(); } -QStringList KiranIntegrationSettings::getDisableKiranStyleApps() +QSet KiranIntegrationSettings::getKiranStyleApps() { - return m_disableKiranStyleApps; + return m_kiranStyleApps; } + +bool KiranIntegrationSettings::appKiranStyleAvailable(const QString& app) +{ + bool matched = false; + QRegExp regExp("",Qt::CaseSensitive,QRegExp::Wildcard); + + auto set = KiranIntegrationSettings::instance()->getKiranStyleApps(); + foreach(auto pattern,set) + { + regExp.setPattern(pattern); + matched = regExp.exactMatch(app); + if( matched ) + break; + } + + return matched; +} \ No newline at end of file diff --git a/common/src/kiran-integration-settings.h b/common/src/kiran-integration-settings.h index e43c1b6..ff99929 100644 --- a/common/src/kiran-integration-settings.h +++ b/common/src/kiran-integration-settings.h @@ -1,6 +1,7 @@ #pragma once #include +#include class KiranIntegrationSettings { @@ -8,12 +9,23 @@ public: static KiranIntegrationSettings* instance(); ~KiranIntegrationSettings(); - QStringList getDisableKiranStyleApps(); + QSet getKiranStyleApps(); + static bool appKiranStyleAvailable(const QString& app); private: KiranIntegrationSettings(); void init(); private: - QStringList m_disableKiranStyleApps = {"lightdm-kiran-greeter","kiran-screensaver"}; + QSet m_kiranStyleApps = { + "kiran-control-panel", + "kiran-cpanel-*", + "kiran-polkit-agent", + "kiran-avatar-editor", + "kiran-calculator", + "kiran-power-status-icon", + "kiran-network-status-icon", + "kiran-audio-status-icon", + "kiran-flameshot" + }; }; \ No newline at end of file diff --git a/platformtheme/kiran-theme.cpp b/platformtheme/kiran-theme.cpp index bf48006..9fec043 100644 --- a/platformtheme/kiran-theme.cpp +++ b/platformtheme/kiran-theme.cpp @@ -100,8 +100,8 @@ const QPalette* KiranTheme::palette(QPlatformTheme::Palette type) const return QGenericUnixTheme::palette(type); } - QStringList blackapps = KiranIntegrationSettings::instance()->getDisableKiranStyleApps(); - if( blackapps.contains(qAppName()) ) + bool enable = KiranIntegrationSettings::appKiranStyleAvailable(qAppName()); + if( !enable ) { return QGenericUnixTheme::palette(type); } diff --git a/style/src/kiran-style-plugin.cpp b/style/src/kiran-style-plugin.cpp index aefbabc..08eaae2 100644 --- a/style/src/kiran-style-plugin.cpp +++ b/style/src/kiran-style-plugin.cpp @@ -28,11 +28,11 @@ QStyle *KiranStylePlugin::create(const QString & key) { if( key.compare("kiran",Qt::CaseInsensitive) == 0 ) { - QStringList disableApps = KiranIntegrationSettings::instance()->getDisableKiranStyleApps(); - QString processName = qAppName(); - if( disableApps.contains(processName) ) + auto processName = qAppName(); + bool enable = KiranIntegrationSettings::appKiranStyleAvailable(processName); + if( !enable ) { - qDebug("%s in black list,create fusion style for it.",processName.toStdString().c_str()); + qDebug("%s not enable kiran style,create fusion style for it.",processName.toStdString().c_str()); return QStyleFactory::create("fusion"); } else -- 2.33.0