From 958fbdc5c0f94114485fccb8da34a0b5a6c73a05 Mon Sep 17 00:00:00 2001 From: liuxinhao Date: Mon, 11 Jul 2022 14:37:54 +0800 Subject: [PATCH 2/2] feat(style): new file interface that can disable Kiran Style for specified applications MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增能针对指定应用禁用kiran-style的文件接口 --- common/CMakeLists.txt | 10 ++++- common/data/kiran-qt5-integration.ini | 2 + common/src/kiran-integration-settings.cpp | 45 +++++++++++++++++++++++ common/src/kiran-integration-settings.h | 19 ++++++++++ platformtheme/kiran-theme.cpp | 7 ++++ style/src/kiran-style-plugin.cpp | 9 ++--- 6 files changed, 85 insertions(+), 7 deletions(-) create mode 100644 common/data/kiran-qt5-integration.ini create mode 100644 common/src/kiran-integration-settings.cpp create mode 100644 common/src/kiran-integration-settings.h diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 1ee647d..db8b5ad 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -6,6 +6,7 @@ find_package(KiranDBusGenerate REQUIRED) pkg_search_module(KIRAN_CC_DAEMON REQUIRED kiran-cc-daemon) pkg_search_module(KLOG_QT5 REQUIRED klog-qt5) +pkg_search_module(GSETTINGS_QT REQUIRED gsettings-qt) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) @@ -38,12 +39,17 @@ add_library(${TARGET_NAME} STATIC ${ALL_FILES}) target_link_libraries(${TARGET_NAME} Qt5::Gui Qt5::DBus - ${QGSETTINGS_LIBRARIES}) + ${QGSETTINGS_LIBRARIES} + ${GSETTINGS_QT_LIBRARIES}) target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${QGSETTINGS_INCLUDE_DIRS} - ${KIRAN_CC_DAEMON_INCLUDE_DIRS}) + ${KIRAN_CC_DAEMON_INCLUDE_DIRS} + ${GSETTINGS_QT_INCLUDE_DIRS}) target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src) + +install(FILES data/kiran-qt5-integration.ini + DESTINATION /${CMAKE_INSTALL_SYSCONFDIR}/kiran-qt5-integration/ ) \ No newline at end of file diff --git a/common/data/kiran-qt5-integration.ini b/common/data/kiran-qt5-integration.ini new file mode 100644 index 0000000..478b608 --- /dev/null +++ b/common/data/kiran-qt5-integration.ini @@ -0,0 +1,2 @@ +#[Style] +#disable-kiran-style-apps=Do not load kiranstyle applications, eg: assistant-qt5,qdbusviewer \ No newline at end of file diff --git a/common/src/kiran-integration-settings.cpp b/common/src/kiran-integration-settings.cpp new file mode 100644 index 0000000..7726fad --- /dev/null +++ b/common/src/kiran-integration-settings.cpp @@ -0,0 +1,45 @@ +#include "kiran-integration-settings.h" + +#include +#include +#include +#include + +KiranIntegrationSettings::KiranIntegrationSettings() +{ + init(); +} + +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); +} + +KiranIntegrationSettings* KiranIntegrationSettings::instance() +{ + static QMutex mutex; + static QScopedPointer pInst; + + if (Q_UNLIKELY(!pInst)) + { + QMutexLocker locker(&mutex); + if (pInst.isNull()) + { + pInst.reset(new KiranIntegrationSettings); + } + } + + return pInst.data(); +} + +QStringList KiranIntegrationSettings::getDisableKiranStyleApps() +{ + return m_disableKiranStyleApps; +} diff --git a/common/src/kiran-integration-settings.h b/common/src/kiran-integration-settings.h new file mode 100644 index 0000000..e43c1b6 --- /dev/null +++ b/common/src/kiran-integration-settings.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +class KiranIntegrationSettings +{ +public: + static KiranIntegrationSettings* instance(); + ~KiranIntegrationSettings(); + + QStringList getDisableKiranStyleApps(); + +private: + KiranIntegrationSettings(); + void init(); + +private: + QStringList m_disableKiranStyleApps = {"lightdm-kiran-greeter","kiran-screensaver"}; +}; \ No newline at end of file diff --git a/platformtheme/kiran-theme.cpp b/platformtheme/kiran-theme.cpp index 4636030..1955fc4 100644 --- a/platformtheme/kiran-theme.cpp +++ b/platformtheme/kiran-theme.cpp @@ -15,6 +15,7 @@ #include "kiran-theme.h" #include "kiran-appearance-monitor.h" #include "logging-category.h" +#include "kiran-integration-settings.h" #include #include @@ -99,6 +100,12 @@ const QPalette* KiranTheme::palette(QPlatformTheme::Palette type) const return QGenericUnixTheme::palette(type); } + QStringList blackapps = KiranIntegrationSettings::instance()->getDisableKiranStyleApps(); + if( blackapps.contains(qAppName()) ) + { + return QGenericUnixTheme::palette(type); + } + static QPalette kiranThemePalette; StylePalette::instance()->polishPalette(&kiranThemePalette); return &kiranThemePalette; diff --git a/style/src/kiran-style-plugin.cpp b/style/src/kiran-style-plugin.cpp index bb3df1f..ee5f33e 100644 --- a/style/src/kiran-style-plugin.cpp +++ b/style/src/kiran-style-plugin.cpp @@ -13,6 +13,7 @@ */ #include "kiran-style-plugin.h" #include "style.h" +#include "kiran-integration-settings.h" #include #include @@ -25,11 +26,9 @@ KiranStylePlugin::KiranStylePlugin(QObject *parent) : QStylePlugin(parent) QStyle *KiranStylePlugin::create(const QString & key) { - QList blackApps = { - "kiran-screensaver", - "lightdm-kiran-greeter" - }; - if( blackApps.contains(qAppName()) ) + QStringList disableApps = KiranIntegrationSettings::instance()->getDisableKiranStyleApps(); + QString processName = qAppName(); + if( disableApps.contains(processName) ) { return QStyleFactory::create("fusion"); } -- 2.33.0