197 lines
6.1 KiB
Diff
197 lines
6.1 KiB
Diff
From 958fbdc5c0f94114485fccb8da34a0b5a6c73a05 Mon Sep 17 00:00:00 2001
|
|
From: liuxinhao <liuxinhao@kylinsec.com.cn>
|
|
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 <QMutex>
|
|
+#include <QMutexLocker>
|
|
+#include <QScopedPointer>
|
|
+#include <QSettings>
|
|
+
|
|
+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<KiranIntegrationSettings> 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 <QStringList>
|
|
+
|
|
+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 <private/qguiapplication_p.h>
|
|
#include <private/qiconloader_p.h>
|
|
@@ -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 <QCoreApplication>
|
|
#include <QDebug>
|
|
@@ -25,11 +26,9 @@ KiranStylePlugin::KiranStylePlugin(QObject *parent) : QStylePlugin(parent)
|
|
|
|
QStyle *KiranStylePlugin::create(const QString & key)
|
|
{
|
|
- QList<QString> 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
|
|
|