Added gui-apps/qt6ct-kde-0.11-r2
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
AUX qt6ct-shenanigans.patch 28824 BLAKE2B abd51a72a85178004949bc5cb644856cf258c5778a1b5d24a277f18f8f26009b795fffa29de2bd19cf9492c9a96b00dc55c335cb81cd56b173e3d4d0638b1e63 SHA512 4156f5b3abec2409ad005892b7905bfb58b089a413f6417007c02d4cc622603641b21dfc5b504758f7c815e56b6e834352ae8dd5233dd1f40a97573281f06680
|
||||||
DIST qt6ct-kde-0.11.tar.gz 154383 BLAKE2B 0baa02ae6b2a0bc6681e9f65a7c09ebc0ba267a72e0bb40294907f8c33adea005bef912660eda7e7108d5e0afc3a399184480121bde158cdb840c1427ed6ebdc SHA512 58d00f658360e7a7dd8d09a6a873bd9b21f112e596a72ce3ca9caeaba2a4336fbba18c93a8bdb1560f2875f40de1991d9500c5c52a8d8621c060f3bcc8d5545f
|
DIST qt6ct-kde-0.11.tar.gz 154383 BLAKE2B 0baa02ae6b2a0bc6681e9f65a7c09ebc0ba267a72e0bb40294907f8c33adea005bef912660eda7e7108d5e0afc3a399184480121bde158cdb840c1427ed6ebdc SHA512 58d00f658360e7a7dd8d09a6a873bd9b21f112e596a72ce3ca9caeaba2a4336fbba18c93a8bdb1560f2875f40de1991d9500c5c52a8d8621c060f3bcc8d5545f
|
||||||
EBUILD qt6ct-kde-0.11.ebuild 1348 BLAKE2B efa5d963ecc09b495f887d87587af0d55f8cfef9576435ea8a3f4cdf82d9a7e75bdf395594d4a5df8d112a872335ffb4c8f9955cd92a5cae9c97bba968d8c230 SHA512 14278db85541239ee47d9c754b74a5bb9ac0ee21a5f6640329edff911c20c039c71870a60c7625ac4a021c371cd82ba87614b3104d192d1e2acf24c4095f22a4
|
EBUILD qt6ct-kde-0.11.ebuild 1348 BLAKE2B efa5d963ecc09b495f887d87587af0d55f8cfef9576435ea8a3f4cdf82d9a7e75bdf395594d4a5df8d112a872335ffb4c8f9955cd92a5cae9c97bba968d8c230 SHA512 14278db85541239ee47d9c754b74a5bb9ac0ee21a5f6640329edff911c20c039c71870a60c7625ac4a021c371cd82ba87614b3104d192d1e2acf24c4095f22a4
|
||||||
|
EBUILD qt6ct-kde-0.11-r2.ebuild 1400 BLAKE2B 82e31fa5f1c5e9d8c0782a20f006ac4ed7875282818b107b8a5c05754707dbab173bacc3b92e1cfe57c3ff4530b0c1119c9cf76243ced0b691631794501d1f43 SHA512 1199b51898e7aae2ef36a25fddd409afb8f57a1b92ae6c0f8b26907d20684ea98d8b41c8218147643e345c6324b64ff07a1f2d815b8d92d6d3c86d20fd30141f
|
||||||
MISC metadata.xml 471 BLAKE2B a2021714574ce0ac3cf571ed8038d5fcbc0e5fdba8575396ef9220d870672da076b1b18ddc6a44f553304aa683208f284f9afd0db9effe387d810284d70a883c SHA512 24ab0e19b9d3c0f202d44f94cff971c4dac2331c927e52af5fda5b44826d0ba4d8d13b20470cd2b0952f3a192708321a867fa9197f62992f066b11b121e295eb
|
MISC metadata.xml 471 BLAKE2B a2021714574ce0ac3cf571ed8038d5fcbc0e5fdba8575396ef9220d870672da076b1b18ddc6a44f553304aa683208f284f9afd0db9effe387d810284d70a883c SHA512 24ab0e19b9d3c0f202d44f94cff971c4dac2331c927e52af5fda5b44826d0ba4d8d13b20470cd2b0952f3a192708321a867fa9197f62992f066b11b121e295eb
|
||||||
|
|||||||
747
gui-apps/qt6ct-kde/files/qt6ct-shenanigans.patch
Normal file
747
gui-apps/qt6ct-kde/files/qt6ct-shenanigans.patch
Normal file
@@ -0,0 +1,747 @@
|
|||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 475a47f..d4950b3 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -28,15 +28,19 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
set(CMAKE_BUILD_RPATH_USE_ORIGIN ON)
|
||||||
|
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||||
|
|
||||||
|
-add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060200 -DUSE_WIDGETS -DQT_DEPRECATED_WARNINGS -DQT_MESSAGELOGCONTEXT)
|
||||||
|
+add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060200 -DQT_DEPRECATED_WARNINGS -DQT_MESSAGELOGCONTEXT)
|
||||||
|
add_compile_options(-Wall -Wextra)
|
||||||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||||
|
|
||||||
|
-find_package(Qt6 6.2 CONFIG REQUIRED COMPONENTS BuildInternals Core Widgets OPTIONAL_COMPONENTS LinguistTools)
|
||||||
|
+find_package(Qt6 6.2 CONFIG REQUIRED COMPONENTS BuildInternals Core OPTIONAL_COMPONENTS Widgets QuickControls2 LinguistTools)
|
||||||
|
if(Qt6_VERSION VERSION_GREATER_EQUAL 6.10)
|
||||||
|
- find_package(Qt6 6.10 CONFIG REQUIRED COMPONENTS WidgetsPrivate GuiPrivate)
|
||||||
|
+ find_package(Qt6 6.10 CONFIG REQUIRED COMPONENTS GuiPrivate OPTIONAL_COMPONENTS WidgetsPrivate)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
+find_package(KF6Config)
|
||||||
|
+find_package(KF6ColorScheme)
|
||||||
|
+find_package(KF6IconThemes)
|
||||||
|
+
|
||||||
|
get_target_property(QT_QTPATHS_EXECUTABLE Qt6::qtpaths IMPORTED_LOCATION)
|
||||||
|
|
||||||
|
if(Qt6LinguistTools_FOUND)
|
||||||
|
@@ -80,10 +84,12 @@ endif()
|
||||||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/qt6ct-common)
|
||||||
|
|
||||||
|
add_link_options(-Wl,--no-undefined)
|
||||||
|
-add_subdirectory(src/qt6ct)
|
||||||
|
add_subdirectory(src/qt6ct-common)
|
||||||
|
add_subdirectory(src/qt6ct-qtplugin)
|
||||||
|
-add_subdirectory(src/qt6ct-style)
|
||||||
|
+if(Qt6Widgets_FOUND)
|
||||||
|
+ add_subdirectory(src/qt6ct-style)
|
||||||
|
+ add_subdirectory(src/qt6ct)
|
||||||
|
+endif()
|
||||||
|
|
||||||
|
install(DIRECTORY qss DESTINATION ${CMAKE_INSTALL_DATADIR}/qt6ct)
|
||||||
|
install(DIRECTORY colors DESTINATION ${CMAKE_INSTALL_DATADIR}/qt6ct)
|
||||||
|
diff --git a/src/qt6ct-common/CMakeLists.txt b/src/qt6ct-common/CMakeLists.txt
|
||||||
|
index 3b9f0b9..2afce8d 100644
|
||||||
|
--- a/src/qt6ct-common/CMakeLists.txt
|
||||||
|
+++ b/src/qt6ct-common/CMakeLists.txt
|
||||||
|
@@ -24,5 +24,6 @@ set(app_SRCS
|
||||||
|
|
||||||
|
add_library(qt6ct-common SHARED ${app_SRCS})
|
||||||
|
set_target_properties(qt6ct-common PROPERTIES VERSION ${QT6CT_VERSION})
|
||||||
|
-target_link_libraries(qt6ct-common PRIVATE Qt6::Gui)
|
||||||
|
+target_link_libraries(qt6ct-common PRIVATE Qt6::Gui $<TARGET_NAME_IF_EXISTS:KF6::ConfigCore> $<TARGET_NAME_IF_EXISTS:KF6::ColorScheme>)
|
||||||
|
+target_compile_definitions(qt6ct-common PRIVATE $<$<TARGET_EXISTS:KF6::ConfigCore>:KF_CONFIGCORE_LIB> $<$<TARGET_EXISTS:KF6::ColorScheme>:KF_COLORSCHEME_LIB>)
|
||||||
|
install(TARGETS qt6ct-common DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
diff --git a/src/qt6ct-common/qt6ct.cpp b/src/qt6ct-common/qt6ct.cpp
|
||||||
|
index 616440b..250987d 100644
|
||||||
|
--- a/src/qt6ct-common/qt6ct.cpp
|
||||||
|
+++ b/src/qt6ct-common/qt6ct.cpp
|
||||||
|
@@ -34,6 +34,10 @@
|
||||||
|
#include <QFile>
|
||||||
|
#include <QSettings>
|
||||||
|
#include <QtDebug>
|
||||||
|
+#if defined KF_CONFIGCORE_LIB && defined KF_COLORSCHEME_LIB
|
||||||
|
+#include <KSharedConfig>
|
||||||
|
+#include <KColorScheme>
|
||||||
|
+#endif
|
||||||
|
#include "qt6ct.h"
|
||||||
|
|
||||||
|
#ifndef QT6CT_DATADIR
|
||||||
|
@@ -121,6 +125,9 @@ QStringList Qt6CT::sharedColorSchemePaths()
|
||||||
|
for(const QString &p : QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation))
|
||||||
|
{
|
||||||
|
paths << (p + QStringLiteral("/qt6ct/colors"));
|
||||||
|
+#if defined KF_CONFIGCORE_LIB && defined KF_COLORSCHEME_LIB
|
||||||
|
+ paths << (p + QStringLiteral("/color-schemes"));
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
paths << QStringLiteral(QT6CT_DATADIR"/qt6ct/colors");
|
||||||
|
paths.removeDuplicates();
|
||||||
|
@@ -129,6 +136,9 @@ QStringList Qt6CT::sharedColorSchemePaths()
|
||||||
|
|
||||||
|
QString Qt6CT::resolvePath(const QString &path)
|
||||||
|
{
|
||||||
|
+ if(path.isEmpty())
|
||||||
|
+ return path;
|
||||||
|
+
|
||||||
|
QString tmp = path;
|
||||||
|
tmp.replace(QLatin1Char('~'), QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
|
||||||
|
if(!tmp.contains(QLatin1Char('$')))
|
||||||
|
@@ -148,9 +158,21 @@ QString Qt6CT::resolvePath(const QString &path)
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
-QPalette Qt6CT::loadColorScheme(const QString &filePath, const QPalette &fallback)
|
||||||
|
+bool Qt6CT::isKColorScheme(const QString &filePath)
|
||||||
|
{
|
||||||
|
- QPalette customPalette;
|
||||||
|
+ return filePath.toLower().endsWith(".colors");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+std::optional<QPalette> Qt6CT::loadColorScheme(const QString &filePath)
|
||||||
|
+{
|
||||||
|
+ if(filePath.isEmpty())
|
||||||
|
+ return std::nullopt;
|
||||||
|
+
|
||||||
|
+#if defined KF_CONFIGCORE_LIB && defined KF_COLORSCHEME_LIB
|
||||||
|
+ if(isKColorScheme(filePath))
|
||||||
|
+ return KColorScheme::createApplicationPalette(KSharedConfig::openConfig(filePath));
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
QSettings settings(filePath, QSettings::IniFormat);
|
||||||
|
settings.beginGroup("ColorScheme"_L1);
|
||||||
|
QStringList activeColors = settings.value("active_colors"_L1).toStringList();
|
||||||
|
@@ -158,7 +180,6 @@ QPalette Qt6CT::loadColorScheme(const QString &filePath, const QPalette &fallbac
|
||||||
|
QStringList disabledColors = settings.value("disabled_colors"_L1).toStringList();
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
-
|
||||||
|
#if (QT_VERSION >= QT_VERSION_CHECK(6,6,0))
|
||||||
|
if(activeColors.count() == QPalette::Accent)
|
||||||
|
activeColors << activeColors.at(QPalette::Highlight);
|
||||||
|
@@ -168,24 +189,19 @@ QPalette Qt6CT::loadColorScheme(const QString &filePath, const QPalette &fallbac
|
||||||
|
disabledColors << disabledColors.at(QPalette::Highlight);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ if(activeColors.count() < QPalette::NColorRoles ||
|
||||||
|
+ inactiveColors.count() < QPalette::NColorRoles ||
|
||||||
|
+ disabledColors.count() < QPalette::NColorRoles)
|
||||||
|
+ return std::nullopt;
|
||||||
|
|
||||||
|
- if(activeColors.count() >= QPalette::NColorRoles &&
|
||||||
|
- inactiveColors.count() >= QPalette::NColorRoles &&
|
||||||
|
- disabledColors.count() >= QPalette::NColorRoles)
|
||||||
|
- {
|
||||||
|
- for (int i = 0; i < QPalette::NColorRoles; i++)
|
||||||
|
- {
|
||||||
|
- QPalette::ColorRole role = QPalette::ColorRole(i);
|
||||||
|
- customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i)));
|
||||||
|
- customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i)));
|
||||||
|
- customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i)));
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- else
|
||||||
|
+ QPalette customPalette;
|
||||||
|
+ for (int i = 0; i < QPalette::NColorRoles; i++)
|
||||||
|
{
|
||||||
|
- customPalette = fallback; //load fallback palette
|
||||||
|
+ QPalette::ColorRole role = QPalette::ColorRole(i);
|
||||||
|
+ customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i)));
|
||||||
|
+ customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i)));
|
||||||
|
+ customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i)));
|
||||||
|
}
|
||||||
|
-
|
||||||
|
return customPalette;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/qt6ct-common/qt6ct.h b/src/qt6ct-common/qt6ct.h
|
||||||
|
index f253987..06ea440 100644
|
||||||
|
--- a/src/qt6ct-common/qt6ct.h
|
||||||
|
+++ b/src/qt6ct-common/qt6ct.h
|
||||||
|
@@ -101,7 +101,8 @@ public:
|
||||||
|
static QString styleColorSchemeFile();
|
||||||
|
static QStringList sharedColorSchemePaths();
|
||||||
|
static QString resolvePath(const QString &path);
|
||||||
|
- static QPalette loadColorScheme(const QString &filePath, const QPalette &fallback);
|
||||||
|
+ static bool isKColorScheme(const QString &filePath);
|
||||||
|
+ static std::optional<QPalette> loadColorScheme(const QString &filePath);
|
||||||
|
|
||||||
|
static void registerStyleInstance(StyleInstance *instance);
|
||||||
|
static void unregisterStyleInstance(StyleInstance *instance);
|
||||||
|
diff --git a/src/qt6ct-qtplugin/CMakeLists.txt b/src/qt6ct-qtplugin/CMakeLists.txt
|
||||||
|
index 93a2b84..5e170c5 100644
|
||||||
|
--- a/src/qt6ct-qtplugin/CMakeLists.txt
|
||||||
|
+++ b/src/qt6ct-qtplugin/CMakeLists.txt
|
||||||
|
@@ -7,5 +7,6 @@ set(app_SRCS
|
||||||
|
|
||||||
|
add_library(qt6ct-qtplugin MODULE ${app_SRCS})
|
||||||
|
set_target_properties(qt6ct-qtplugin PROPERTIES OUTPUT_NAME qt6ct)
|
||||||
|
-target_link_libraries(qt6ct-qtplugin PRIVATE Qt6::Widgets Qt6::GuiPrivate qt6ct-common)
|
||||||
|
+target_link_libraries(qt6ct-qtplugin PRIVATE $<TARGET_NAME_IF_EXISTS:Qt6::WidgetsPrivate> Qt6::GuiPrivate $<TARGET_NAME_IF_EXISTS:Qt6::QuickControls2> $<TARGET_NAME_IF_EXISTS:KF6::IconThemes> qt6ct-common)
|
||||||
|
+target_compile_definitions(qt6ct-qtplugin PRIVATE $<$<TARGET_EXISTS:KF6::IconThemes>:KF_ICONTHEMES_LIB>)
|
||||||
|
install(TARGETS qt6ct-qtplugin DESTINATION ${PLUGINDIR}/platformthemes)
|
||||||
|
diff --git a/src/qt6ct-qtplugin/qt6ct-qtplugin.pro b/src/qt6ct-qtplugin/qt6ct-qtplugin.pro
|
||||||
|
index f3e9ef6..a05a9b7 100644
|
||||||
|
--- a/src/qt6ct-qtplugin/qt6ct-qtplugin.pro
|
||||||
|
+++ b/src/qt6ct-qtplugin/qt6ct-qtplugin.pro
|
||||||
|
@@ -11,7 +11,7 @@ SOURCES += \
|
||||||
|
qt6ctplatformtheme.cpp
|
||||||
|
|
||||||
|
!equals(DISABLE_WIDGETS,1) {
|
||||||
|
- QT += widgets
|
||||||
|
+ QT += widgets widgets-private
|
||||||
|
}
|
||||||
|
|
||||||
|
OTHER_FILES += qt6ct.json
|
||||||
|
diff --git a/src/qt6ct-qtplugin/qt6ctplatformtheme.cpp b/src/qt6ct-qtplugin/qt6ctplatformtheme.cpp
|
||||||
|
index 569b13f..3969621 100644
|
||||||
|
--- a/src/qt6ct-qtplugin/qt6ctplatformtheme.cpp
|
||||||
|
+++ b/src/qt6ct-qtplugin/qt6ctplatformtheme.cpp
|
||||||
|
@@ -41,38 +41,59 @@
|
||||||
|
#include <QStyleFactory>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QWidget>
|
||||||
|
+#if QT_CONFIG(graphicsview)
|
||||||
|
+#include <QGraphicsScene>
|
||||||
|
+#endif
|
||||||
|
+#include <private/qapplication_p.h>
|
||||||
|
#endif
|
||||||
|
#include <QFile>
|
||||||
|
#include <QFileSystemWatcher>
|
||||||
|
-#include <private/qiconloader_p.h>
|
||||||
|
+#ifdef QT_QUICKCONTROLS2_LIB
|
||||||
|
+#include <QQuickStyle>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#include "qt6ct.h"
|
||||||
|
#include "qt6ctplatformtheme.h"
|
||||||
|
|
||||||
|
#include <QStringList>
|
||||||
|
#include <qpa/qplatformthemefactory_p.h>
|
||||||
|
+#include <qpa/qwindowsysteminterface.h>
|
||||||
|
+
|
||||||
|
+#ifdef KF_ICONTHEMES_LIB
|
||||||
|
+#include <KIconEngine>
|
||||||
|
+#include <KIconLoader>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
Q_LOGGING_CATEGORY(lqt6ct, "qt6ct", QtWarningMsg)
|
||||||
|
|
||||||
|
//QT_QPA_PLATFORMTHEME=qt6ct
|
||||||
|
|
||||||
|
-Qt6CTPlatformTheme::Qt6CTPlatformTheme()
|
||||||
|
+Qt6CTPlatformTheme::Qt6CTPlatformTheme() :
|
||||||
|
+ m_generalFont(*QGenericUnixTheme::font(QPlatformTheme::SystemFont)),
|
||||||
|
+ m_fixedFont(*QGenericUnixTheme::font(QPlatformTheme::FixedFont))
|
||||||
|
{
|
||||||
|
Qt6CT::initConfig();
|
||||||
|
if(QGuiApplication::desktopSettingsAware())
|
||||||
|
{
|
||||||
|
readSettings();
|
||||||
|
QMetaObject::invokeMethod(this, &Qt6CTPlatformTheme::applySettings, Qt::QueuedConnection);
|
||||||
|
-#ifdef QT_WIDGETS_LIB
|
||||||
|
QMetaObject::invokeMethod(this, &Qt6CTPlatformTheme::createFSWatcher, Qt::QueuedConnection);
|
||||||
|
+ //must be applied before Q_COREAPP_STARTUP_FUNCTION execution
|
||||||
|
+ if(Qt6CT::isKColorScheme(m_schemePath))
|
||||||
|
+ qApp->setProperty("KDE_COLOR_SCHEME_PATH", m_schemePath);
|
||||||
|
+#if defined QT_WIDGETS_LIB && defined QT_QUICKCONTROLS2_LIB
|
||||||
|
+ if(hasWidgets())
|
||||||
|
+ //don't override the value explicitly set by the user
|
||||||
|
+ if(QQuickStyle::name().isEmpty() || QQuickStyle::name() == QLatin1String("Fusion"))
|
||||||
|
+ QQuickStyle::setStyle(QLatin1String("org.kde.desktop"));
|
||||||
|
#endif
|
||||||
|
- QGuiApplication::setFont(m_generalFont);
|
||||||
|
}
|
||||||
|
qCDebug(lqt6ct) << "using qt6ct plugin";
|
||||||
|
#ifdef QT_WIDGETS_LIB
|
||||||
|
if(!QStyleFactory::keys().contains(u"qt6ct-style"_s))
|
||||||
|
qCCritical(lqt6ct) << "unable to find qt6ct proxy style";
|
||||||
|
#endif
|
||||||
|
+ QCoreApplication::instance()->installEventFilter(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
Qt6CTPlatformTheme::~Qt6CTPlatformTheme()
|
||||||
|
@@ -92,8 +113,8 @@ QPlatformDialogHelper *Qt6CTPlatformTheme::createPlatformDialogHelper(DialogType
|
||||||
|
|
||||||
|
const QPalette *Qt6CTPlatformTheme::palette(QPlatformTheme::Palette type) const
|
||||||
|
{
|
||||||
|
- if (type == QPlatformTheme::SystemPalette && !m_isIgnored)
|
||||||
|
- return &m_palette;
|
||||||
|
+ if (type == QPlatformTheme::SystemPalette && m_palette)
|
||||||
|
+ return &*m_palette;
|
||||||
|
return QGenericUnixTheme::palette(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -148,6 +169,13 @@ QIcon Qt6CTPlatformTheme::fileIcon(const QFileInfo &fileInfo, QPlatformTheme::Ic
|
||||||
|
return QIcon::fromTheme(type.iconName());
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef KF_ICONTHEMES_LIB
|
||||||
|
+QIconEngine *Qt6CTPlatformTheme::createIconEngine(const QString &iconName) const
|
||||||
|
+{
|
||||||
|
+ return new KIconEngine(iconName, KIconLoader::global());
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
void Qt6CTPlatformTheme::applySettings()
|
||||||
|
{
|
||||||
|
if(!QGuiApplication::desktopSettingsAware() || m_isIgnored)
|
||||||
|
@@ -156,18 +184,18 @@ void Qt6CTPlatformTheme::applySettings()
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- QGuiApplication::setFont(m_generalFont); //apply font
|
||||||
|
+ if(Qt6CT::isKColorScheme(m_schemePath))
|
||||||
|
+ qApp->setProperty("KDE_COLOR_SCHEME_PATH", m_schemePath);
|
||||||
|
+ else if(m_update)
|
||||||
|
+ qApp->setProperty("KDE_COLOR_SCHEME_PATH", QVariant());
|
||||||
|
|
||||||
|
#ifdef QT_WIDGETS_LIB
|
||||||
|
if(hasWidgets())
|
||||||
|
{
|
||||||
|
- qApp->setFont(m_generalFont);
|
||||||
|
-
|
||||||
|
- //Qt 5.6 or higher should be use themeHint function on application startup.
|
||||||
|
- //So, there is no need to call this function first time.
|
||||||
|
if(m_update)
|
||||||
|
{
|
||||||
|
- qApp->setWheelScrollLines(m_wheelScrollLines);
|
||||||
|
+ if(FontHash *hash = qt_app_fonts_hash(); hash && hash->size())
|
||||||
|
+ hash->clear();
|
||||||
|
Qt6CT::reloadStyleInstanceSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -193,25 +221,26 @@ void Qt6CTPlatformTheme::applySettings()
|
||||||
|
|
||||||
|
if(m_update)
|
||||||
|
{
|
||||||
|
- QIconLoader::instance()->updateSystemTheme(); //apply icons
|
||||||
|
- QGuiApplication::setPalette(QGuiApplication::palette()); //apply palette
|
||||||
|
+ QWindowSystemInterface::handleThemeChange();
|
||||||
|
+ QCoreApplication::postEvent(qGuiApp, new QEvent(QEvent::ApplicationFontChange));
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef QT_WIDGETS_LIB
|
||||||
|
if(hasWidgets() && m_update)
|
||||||
|
{
|
||||||
|
- for(QWidget *w : qApp->allWidgets())
|
||||||
|
- {
|
||||||
|
- QEvent e(QEvent::ThemeChange);
|
||||||
|
- QApplication::sendEvent(w, &e);
|
||||||
|
- }
|
||||||
|
+#if QT_CONFIG(graphicsview)
|
||||||
|
+ for(auto scene : std::as_const(QApplicationPrivate::instance()->scene_list))
|
||||||
|
+ QCoreApplication::postEvent(scene, new QEvent(QEvent::ApplicationFontChange));
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ for(QWidget *w : QApplication::allWidgets())
|
||||||
|
+ QCoreApplication::postEvent(w, new QEvent(QEvent::ThemeChange));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
m_update = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef QT_WIDGETS_LIB
|
||||||
|
void Qt6CTPlatformTheme::createFSWatcher()
|
||||||
|
{
|
||||||
|
QFileSystemWatcher *watcher = new QFileSystemWatcher(this);
|
||||||
|
@@ -230,7 +259,6 @@ void Qt6CTPlatformTheme::updateSettings()
|
||||||
|
readSettings();
|
||||||
|
applySettings();
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
void Qt6CTPlatformTheme::readSettings()
|
||||||
|
{
|
||||||
|
@@ -238,13 +266,10 @@ void Qt6CTPlatformTheme::readSettings()
|
||||||
|
|
||||||
|
settings.beginGroup("Appearance"_L1);
|
||||||
|
m_style = settings.value("style"_L1, u"Fusion"_s).toString();
|
||||||
|
- m_palette = *QGenericUnixTheme::palette(SystemPalette);
|
||||||
|
- QString schemePath = settings.value("color_scheme_path"_L1).toString();
|
||||||
|
- if(!schemePath.isEmpty() && settings.value("custom_palette"_L1, false).toBool())
|
||||||
|
- {
|
||||||
|
- schemePath = Qt6CT::resolvePath(schemePath); //replace environment variables
|
||||||
|
- m_palette = Qt6CT::loadColorScheme(schemePath, m_palette);
|
||||||
|
- }
|
||||||
|
+ m_schemePath = !m_isIgnored && settings.value("custom_palette"_L1, false).toBool()
|
||||||
|
+ ? Qt6CT::resolvePath(settings.value("color_scheme_path"_L1).toString()) //replace environment variables
|
||||||
|
+ : QString();
|
||||||
|
+ m_palette = Qt6CT::loadColorScheme(m_schemePath);
|
||||||
|
m_iconTheme = settings.value("icon_theme"_L1).toString();
|
||||||
|
//load dialogs
|
||||||
|
if(!m_update)
|
||||||
|
@@ -262,10 +287,10 @@ void Qt6CTPlatformTheme::readSettings()
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
settings.beginGroup("Fonts"_L1);
|
||||||
|
- m_generalFont = QGuiApplication::font();
|
||||||
|
- m_generalFont.fromString(settings.value("general"_L1, QGuiApplication::font()).toString());
|
||||||
|
- m_fixedFont = QGuiApplication::font();
|
||||||
|
- m_fixedFont.fromString(settings.value("fixed"_L1, QGuiApplication::font()).toString());
|
||||||
|
+ m_generalFont = *QGenericUnixTheme::font(QPlatformTheme::SystemFont);
|
||||||
|
+ m_generalFont.fromString(settings.value("general"_L1).toString());
|
||||||
|
+ m_fixedFont = *QGenericUnixTheme::font(QPlatformTheme::FixedFont);
|
||||||
|
+ m_fixedFont.fromString(settings.value("fixed_L1").toString());
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
settings.beginGroup("Interface"_L1);
|
||||||
|
@@ -354,3 +379,17 @@ QString Qt6CTPlatformTheme::loadStyleSheets(const QStringList &paths)
|
||||||
|
content.replace(regExp, u"\n"_s);
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+//There's such a thing as KColorSchemeManager that lets the user to change the color scheme
|
||||||
|
+//application-wide and we should re-apply the color scheme if KCSM resets it to the default
|
||||||
|
+//which leads KColorScheme to get the color scheme from kdeglobals which won't help us.
|
||||||
|
+bool Qt6CTPlatformTheme::eventFilter(QObject *obj, QEvent *e)
|
||||||
|
+{
|
||||||
|
+ if(obj == qApp &&
|
||||||
|
+ e->type() == QEvent::DynamicPropertyChange &&
|
||||||
|
+ static_cast<QDynamicPropertyChangeEvent*>(e)->propertyName() == "KDE_COLOR_SCHEME_PATH" &&
|
||||||
|
+ qApp->property("KDE_COLOR_SCHEME_PATH").toString().isEmpty() &&
|
||||||
|
+ Qt6CT::isKColorScheme(m_schemePath))
|
||||||
|
+ applySettings();
|
||||||
|
+ return QObject::eventFilter(obj, e);
|
||||||
|
+}
|
||||||
|
diff --git a/src/qt6ct-qtplugin/qt6ctplatformtheme.h b/src/qt6ct-qtplugin/qt6ctplatformtheme.h
|
||||||
|
index b2a7bcf..e8cf68a 100644
|
||||||
|
--- a/src/qt6ct-qtplugin/qt6ctplatformtheme.h
|
||||||
|
+++ b/src/qt6ct-qtplugin/qt6ctplatformtheme.h
|
||||||
|
@@ -66,16 +66,19 @@ public:
|
||||||
|
//virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size,
|
||||||
|
// QPlatformTheme::IconOptions iconOptions = 0) const;
|
||||||
|
|
||||||
|
- //virtual QIconEngine *createIconEngine(const QString &iconName) const;
|
||||||
|
+#ifdef KF_ICONTHEMES_LIB
|
||||||
|
+ virtual QIconEngine *createIconEngine(const QString &iconName) const override;
|
||||||
|
+#endif
|
||||||
|
//virtual QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const;
|
||||||
|
//virtual QString standardButtonText(int button) const;
|
||||||
|
|
||||||
|
+protected:
|
||||||
|
+ bool eventFilter(QObject *obj, QEvent *e) override;
|
||||||
|
+
|
||||||
|
private slots:
|
||||||
|
void applySettings();
|
||||||
|
-#ifdef QT_WIDGETS_LIB
|
||||||
|
void createFSWatcher();
|
||||||
|
void updateSettings();
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
private:
|
||||||
|
void readSettings();
|
||||||
|
@@ -83,8 +86,8 @@ private:
|
||||||
|
bool hasWidgets();
|
||||||
|
#endif
|
||||||
|
QString loadStyleSheets(const QStringList &paths);
|
||||||
|
- QString m_style, m_iconTheme, m_userStyleSheet, m_prevStyleSheet;
|
||||||
|
- QPalette m_palette;
|
||||||
|
+ QString m_style, m_schemePath, m_iconTheme, m_userStyleSheet, m_prevStyleSheet;
|
||||||
|
+ std::optional<QPalette> m_palette;
|
||||||
|
QFont m_generalFont, m_fixedFont;
|
||||||
|
int m_doubleClickInterval;
|
||||||
|
int m_cursorFlashTime;
|
||||||
|
diff --git a/src/qt6ct-style/CMakeLists.txt b/src/qt6ct-style/CMakeLists.txt
|
||||||
|
index 5ab1c21..c8870b3 100644
|
||||||
|
--- a/src/qt6ct-style/CMakeLists.txt
|
||||||
|
+++ b/src/qt6ct-style/CMakeLists.txt
|
||||||
|
@@ -1,7 +1,5 @@
|
||||||
|
project(qt6ct-style)
|
||||||
|
|
||||||
|
-add_definitions(-DUSE_WIDGETS)
|
||||||
|
-
|
||||||
|
set(app_SRCS
|
||||||
|
plugin.cpp
|
||||||
|
qt6ctproxystyle.cpp
|
||||||
|
diff --git a/src/qt6ct/CMakeLists.txt b/src/qt6ct/CMakeLists.txt
|
||||||
|
index fb0e1f7..f11071f 100644
|
||||||
|
--- a/src/qt6ct/CMakeLists.txt
|
||||||
|
+++ b/src/qt6ct/CMakeLists.txt
|
||||||
|
@@ -31,6 +31,7 @@ if(Qt6LinguistTools_FOUND)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_executable(qt6ct ${app_SRCS})
|
||||||
|
-target_link_libraries(qt6ct PRIVATE Qt6::Widgets Qt6::WidgetsPrivate qt6ct-common)
|
||||||
|
+target_link_libraries(qt6ct PRIVATE Qt6::Widgets Qt6::GuiPrivate $<TARGET_NAME_IF_EXISTS:KF6::ConfigCore> qt6ct-common)
|
||||||
|
+target_compile_definitions(qt6ct PRIVATE USE_WIDGETS $<$<TARGET_EXISTS:KF6::ConfigCore>:KF_CONFIGCORE_LIB> $<$<TARGET_EXISTS:KF6::ColorScheme>:KF_COLORSCHEME_LIB>)
|
||||||
|
install(TARGETS qt6ct DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
install(FILES qt6ct.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||||
|
diff --git a/src/qt6ct/appearancepage.cpp b/src/qt6ct/appearancepage.cpp
|
||||||
|
index 2f1faf8..0c01d4a 100644
|
||||||
|
--- a/src/qt6ct/appearancepage.cpp
|
||||||
|
+++ b/src/qt6ct/appearancepage.cpp
|
||||||
|
@@ -35,6 +35,9 @@
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QIcon>
|
||||||
|
#include <QStringList>
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+#include <KConfigGroup>
|
||||||
|
+#endif
|
||||||
|
#include <qpa/qplatformthemefactory_p.h>
|
||||||
|
#include <qpa/qplatformtheme.h>
|
||||||
|
#include "qt6ct.h"
|
||||||
|
@@ -70,7 +73,7 @@ AppearancePage::AppearancePage(QWidget *parent) :
|
||||||
|
QMenu *menu = new QMenu(this);
|
||||||
|
menu->addAction(QIcon::fromTheme(u"document-new"_s), tr("Create"), this, qOverload<>(&AppearancePage::createColorScheme));
|
||||||
|
m_changeColorSchemeAction = menu->addAction(QIcon::fromTheme(u"accessories-text-editor"_s), tr("Edit"), this, &AppearancePage::changeColorScheme);
|
||||||
|
- menu->addAction(QIcon::fromTheme(u"edit-copy"_s), tr("Create a Copy"), this, &AppearancePage::copyColorScheme);
|
||||||
|
+ m_copyColorSchemeAction = menu->addAction(QIcon::fromTheme(u"edit-copy"_s), tr("Create a Copy"), this, &AppearancePage::copyColorScheme);
|
||||||
|
m_renameColorSchemeAction = menu->addAction(tr("Rename"), this, &AppearancePage::renameColorScheme);
|
||||||
|
menu->addSeparator();
|
||||||
|
m_removeColorSchemeAction = menu->addAction(QIcon::fromTheme(u"edit-delete"_s), tr("Remove"), this, &AppearancePage::removeColorScheme);
|
||||||
|
@@ -126,6 +129,15 @@ void AppearancePage::writeSettings(QSettings *settings)
|
||||||
|
settings->endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+void AppearancePage::writeSettings(KSharedConfigPtr config)
|
||||||
|
+{
|
||||||
|
+ KConfigGroup group(config, "KDE");
|
||||||
|
+ group.writeEntry("widgetStyle", "qt6ct-style");
|
||||||
|
+ group.sync();
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
void AppearancePage::on_styleComboBox_textActivated(const QString &text)
|
||||||
|
{
|
||||||
|
QStyle *style = QStyleFactory::create(text);
|
||||||
|
@@ -157,7 +169,7 @@ void AppearancePage::on_colorSchemeComboBox_activated(int)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- m_customPalette = Qt6CT::loadColorScheme(data, palette());
|
||||||
|
+ m_customPalette = Qt6CT::loadColorScheme(data).value_or(palette());
|
||||||
|
}
|
||||||
|
updatePalette();
|
||||||
|
}
|
||||||
|
@@ -333,6 +345,7 @@ void AppearancePage::setPreviewPalette(const QPalette &p)
|
||||||
|
|
||||||
|
void AppearancePage::updateActions()
|
||||||
|
{
|
||||||
|
+ m_copyColorSchemeAction->setVisible(!Qt6CT::isKColorScheme(m_ui->colorSchemeComboBox->currentData().toString()));
|
||||||
|
if(m_ui->colorSchemeComboBox->count() == 0 ||
|
||||||
|
!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable())
|
||||||
|
{
|
||||||
|
@@ -364,8 +377,7 @@ void AppearancePage::readSettings()
|
||||||
|
QString style = settings.value("style"_L1, u"Fusion"_s).toString();
|
||||||
|
m_ui->styleComboBox->setCurrentText(style);
|
||||||
|
|
||||||
|
- QString colorSchemePath = settings.value("color_scheme_path"_L1).toString();
|
||||||
|
- colorSchemePath = Qt6CT::resolvePath(colorSchemePath); //replace environment variables
|
||||||
|
+ QString colorSchemePath = Qt6CT::resolvePath(settings.value("color_scheme_path").toString()); //replace environment variables
|
||||||
|
|
||||||
|
m_ui->colorSchemeComboBox->addItem(tr("Default"), u"system"_s);
|
||||||
|
m_ui->colorSchemeComboBox->addItem(tr("Style's colors"), u"style"_s);
|
||||||
|
@@ -382,7 +394,7 @@ void AppearancePage::readSettings()
|
||||||
|
index = m_ui->colorSchemeComboBox->findData(u"style"_s);
|
||||||
|
|
||||||
|
m_ui->colorSchemeComboBox->setCurrentIndex(index);
|
||||||
|
- m_customPalette = Qt6CT::loadColorScheme(colorSchemePath, palette());
|
||||||
|
+ m_customPalette = Qt6CT::loadColorScheme(colorSchemePath).value_or(palette());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@@ -428,11 +440,26 @@ void AppearancePage::findColorSchemes(const QString &path)
|
||||||
|
{
|
||||||
|
QDir dir(path);
|
||||||
|
dir.setFilter(QDir::Files);
|
||||||
|
- dir.setNameFilters({ u"*.conf"_s });
|
||||||
|
+ QStringList nameFilters;
|
||||||
|
+ nameFilters << u"*.conf"_s;
|
||||||
|
+#if defined KF_CONFIGCORE_LIB && defined KF_COLORSCHEME_LIB
|
||||||
|
+ nameFilters << u"*.colors"_s;
|
||||||
|
+#endif
|
||||||
|
+ dir.setNameFilters(nameFilters);
|
||||||
|
|
||||||
|
for(const QFileInfo &info : dir.entryInfoList())
|
||||||
|
{
|
||||||
|
- m_ui->colorSchemeComboBox->addItem(info.baseName(), info.filePath());
|
||||||
|
+ QString name = info.baseName();
|
||||||
|
+ QString path = info.filePath();
|
||||||
|
+#if defined KF_CONFIGCORE_LIB && defined KF_COLORSCHEME_LIB
|
||||||
|
+ if(Qt6CT::isKColorScheme(path))
|
||||||
|
+ {
|
||||||
|
+ KSharedConfigPtr config = KSharedConfig::openConfig(path, KConfig::SimpleConfig);
|
||||||
|
+ KConfigGroup group(config, "General");
|
||||||
|
+ name = group.readEntry("Name", name) + " (KColorScheme)";
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+ m_ui->colorSchemeComboBox->addItem(name, path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/qt6ct/appearancepage.h b/src/qt6ct/appearancepage.h
|
||||||
|
index e196b62..8e4902e 100644
|
||||||
|
--- a/src/qt6ct/appearancepage.h
|
||||||
|
+++ b/src/qt6ct/appearancepage.h
|
||||||
|
@@ -49,6 +49,10 @@ public:
|
||||||
|
|
||||||
|
void writeSettings(QSettings *settings) override;
|
||||||
|
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+ void writeSettings(KSharedConfigPtr config) override;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
private slots:
|
||||||
|
void on_styleComboBox_textActivated(const QString &text);
|
||||||
|
void on_colorSchemeComboBox_activated(int);
|
||||||
|
@@ -73,7 +77,7 @@ private:
|
||||||
|
QStyle *m_selectedStyle = nullptr;
|
||||||
|
QPalette m_customPalette;
|
||||||
|
QWidget *m_previewWidget;
|
||||||
|
- QAction *m_changeColorSchemeAction, *m_renameColorSchemeAction, *m_removeColorSchemeAction;
|
||||||
|
+ QAction *m_changeColorSchemeAction, *m_copyColorSchemeAction, *m_renameColorSchemeAction, *m_removeColorSchemeAction;
|
||||||
|
Ui::PreviewForm *m_previewUi;
|
||||||
|
};
|
||||||
|
|
||||||
|
diff --git a/src/qt6ct/fontspage.cpp b/src/qt6ct/fontspage.cpp
|
||||||
|
index 75de0fd..ae0f091 100644
|
||||||
|
--- a/src/qt6ct/fontspage.cpp
|
||||||
|
+++ b/src/qt6ct/fontspage.cpp
|
||||||
|
@@ -29,6 +29,7 @@
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QSettings>
|
||||||
|
#include <QApplication>
|
||||||
|
+#include <QFontDatabase>
|
||||||
|
#include <QFontDialog>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QFile>
|
||||||
|
@@ -70,12 +71,19 @@ void FontsPage::onFontChangeRequested(QWidget *widget)
|
||||||
|
{
|
||||||
|
bool ok = false;
|
||||||
|
QFont font = QFontDialog::getFont (&ok, widget->font(), this);
|
||||||
|
- if(ok)
|
||||||
|
- {
|
||||||
|
- widget->setProperty("value", font.toString());
|
||||||
|
- widget->setFont(font);
|
||||||
|
- qobject_cast<QLabel*>(widget)->setText(font.family () + QChar::Space + QString::number(font.pointSize ()));
|
||||||
|
- }
|
||||||
|
+ if(!ok)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ if(font.weight() == QFont::Normal
|
||||||
|
+ && (font.styleName() == "Regular"_L1
|
||||||
|
+ || font.styleName() == "Normal"_L1
|
||||||
|
+ || font.styleName() == "Book"_L1
|
||||||
|
+ || font.styleName() == "Roman"_L1))
|
||||||
|
+ font.setStyleName(QString());
|
||||||
|
+
|
||||||
|
+ widget->setProperty("value", font.toString());
|
||||||
|
+ widget->setFont(font);
|
||||||
|
+ qobject_cast<QLabel*>(widget)->setText(font.family () + QChar::Space + QString::number(font.pointSize ()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void FontsPage::readSettings()
|
||||||
|
@@ -89,8 +97,9 @@ void FontsPage::readSettings()
|
||||||
|
|
||||||
|
void FontsPage::loadFont(QSettings *settings, QLabel *label, const QString &key)
|
||||||
|
{
|
||||||
|
- QFont font = QApplication::font();
|
||||||
|
- font.fromString(settings->value(key, QApplication::font().toString()).toString());
|
||||||
|
+ QFont font = settings->value(key, key == "fixed"_L1
|
||||||
|
+ ? QFontDatabase::systemFont(QFontDatabase::FixedFont)
|
||||||
|
+ : QFontDatabase::systemFont(QFontDatabase::GeneralFont)).value<QFont>();
|
||||||
|
label->setText(font.family() + QChar::Space + QString::number(font.pointSize()));
|
||||||
|
label->setFont(font);
|
||||||
|
label->setProperty("value", font.toString());
|
||||||
|
diff --git a/src/qt6ct/iconthemepage.cpp b/src/qt6ct/iconthemepage.cpp
|
||||||
|
index 37960f9..9156116 100644
|
||||||
|
--- a/src/qt6ct/iconthemepage.cpp
|
||||||
|
+++ b/src/qt6ct/iconthemepage.cpp
|
||||||
|
@@ -34,6 +34,9 @@
|
||||||
|
#include <QProgressBar>
|
||||||
|
#include <QMetaObject>
|
||||||
|
#include <QThread>
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+#include <KConfigGroup>
|
||||||
|
+#endif
|
||||||
|
#include "qt6ct.h"
|
||||||
|
#include "iconthemepage.h"
|
||||||
|
#include "ui_iconthemepage.h"
|
||||||
|
@@ -71,6 +74,19 @@ void IconThemePage::writeSettings(QSettings *settings)
|
||||||
|
settings->setValue("Appearance/icon_theme"_L1, item->data(3, Qt::UserRole));
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+void IconThemePage::writeSettings(KSharedConfigPtr config)
|
||||||
|
+{
|
||||||
|
+ QTreeWidgetItem *item = m_ui->treeWidget->currentItem();
|
||||||
|
+ if(!item)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ KConfigGroup group(config, "Icons");
|
||||||
|
+ group.writeEntry("Theme", item->data(3, Qt::UserRole));
|
||||||
|
+ group.sync();
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
void IconThemePage::onFinished()
|
||||||
|
{
|
||||||
|
m_ui->treeWidget->addTopLevelItems(m_items);
|
||||||
|
diff --git a/src/qt6ct/iconthemepage.h b/src/qt6ct/iconthemepage.h
|
||||||
|
index 8938671..9ad3580 100644
|
||||||
|
--- a/src/qt6ct/iconthemepage.h
|
||||||
|
+++ b/src/qt6ct/iconthemepage.h
|
||||||
|
@@ -51,6 +51,10 @@ public:
|
||||||
|
|
||||||
|
void writeSettings(QSettings *settings) override;
|
||||||
|
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+ void writeSettings(KSharedConfigPtr config) override;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
private slots:
|
||||||
|
void onFinished();
|
||||||
|
|
||||||
|
diff --git a/src/qt6ct/mainwindow.cpp b/src/qt6ct/mainwindow.cpp
|
||||||
|
index 122dff2..10296a4 100644
|
||||||
|
--- a/src/qt6ct/mainwindow.cpp
|
||||||
|
+++ b/src/qt6ct/mainwindow.cpp
|
||||||
|
@@ -91,11 +91,19 @@ void MainWindow::on_buttonBox_clicked(QAbstractButton *button)
|
||||||
|
if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Apply)
|
||||||
|
{
|
||||||
|
QSettings settings(Qt6CT::configFile(), QSettings::IniFormat);
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+ KSharedConfigPtr config = KSharedConfig::openConfig("kdeglobals");
|
||||||
|
+#endif
|
||||||
|
for(int i = 0; i < m_ui->tabWidget->count(); ++i)
|
||||||
|
{
|
||||||
|
TabPage *p = qobject_cast<TabPage*>(m_ui->tabWidget->widget(i));
|
||||||
|
if(p)
|
||||||
|
+ {
|
||||||
|
p->writeSettings(&settings);
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+ p->writeSettings(config);
|
||||||
|
+#endif
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/qt6ct/tabpage.h b/src/qt6ct/tabpage.h
|
||||||
|
index c77b5a7..4e46ddd 100644
|
||||||
|
--- a/src/qt6ct/tabpage.h
|
||||||
|
+++ b/src/qt6ct/tabpage.h
|
||||||
|
@@ -32,6 +32,10 @@
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+#include <KSharedConfig>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
class TabPage : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
@@ -39,6 +43,10 @@ public:
|
||||||
|
explicit TabPage(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
virtual void writeSettings(QSettings *settings) = 0;
|
||||||
|
+
|
||||||
|
+#ifdef KF_CONFIGCORE_LIB
|
||||||
|
+ virtual void writeSettings(KSharedConfigPtr config) {}
|
||||||
|
+#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TABPAGE_H
|
||||||
57
gui-apps/qt6ct-kde/qt6ct-kde-0.11-r2.ebuild
Normal file
57
gui-apps/qt6ct-kde/qt6ct-kde-0.11-r2.ebuild
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Copyright 2023-2025 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
inherit cmake
|
||||||
|
|
||||||
|
DESCRIPTION="Qt 6 Configuration Utility, patched to work correctly with KDE applications"
|
||||||
|
HOMEPAGE="https://www.opencode.net/trialuser/qt6ct"
|
||||||
|
SRC_URI="https://www.opencode.net/trialuser/qt6ct/-/archive/${PV}/qt6ct-${PV}.tar.gz -> ${P}.tar.gz"
|
||||||
|
S="${WORKDIR}/qt6ct-${PV}"
|
||||||
|
|
||||||
|
LICENSE="BSD-2"
|
||||||
|
SLOT="0"
|
||||||
|
KEYWORDS="amd64"
|
||||||
|
|
||||||
|
# uses Qt private APIs wrt :=
|
||||||
|
# dlopen: qtsvg
|
||||||
|
DEPEND="
|
||||||
|
dev-qt/qtbase:6=[gui,widgets]
|
||||||
|
"
|
||||||
|
RDEPEND="
|
||||||
|
${DEPEND}
|
||||||
|
dev-qt/qtsvg:6
|
||||||
|
"
|
||||||
|
BDEPEND="
|
||||||
|
dev-qt/qtbase:6
|
||||||
|
dev-qt/qttools:6[linguist]
|
||||||
|
"
|
||||||
|
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}/qt6ct-shenanigans.patch"
|
||||||
|
)
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
cmake_src_install
|
||||||
|
|
||||||
|
# can replace after qt5ct is gone
|
||||||
|
# newenvd - 98${PN} <<<'QT_QPA_PLATFORMTHEME=qt6ct'
|
||||||
|
newenvd - 98${PN} <<-EOF
|
||||||
|
# 'qt5ct' is recognized by both qt5ct and qt6ct to allow simultaneous usage
|
||||||
|
QT_QPA_PLATFORMTHEME=qt5ct
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
if [[ ! ${REPLACING_VERSIONS} ]]; then
|
||||||
|
elog
|
||||||
|
elog "QT_QPA_PLATFORMTHEME has been set to enable ${PN} usage by"
|
||||||
|
elog "default. This will only come into effect after re-login into"
|
||||||
|
elog "the current desktop session(s)."
|
||||||
|
elog
|
||||||
|
elog "Note that ${PN} should typically not be used with DEs that do"
|
||||||
|
elog "their own integration (e.g. Plasma/KDE). Qt also has special"
|
||||||
|
elog "handling for Gnome which may or may not be better."
|
||||||
|
fi
|
||||||
|
}
|
||||||
14
metadata/md5-cache/gui-apps/qt6ct-kde-0.11-r2
Normal file
14
metadata/md5-cache/gui-apps/qt6ct-kde-0.11-r2
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
BDEPEND=dev-qt/qtbase:6 dev-qt/qttools:6[linguist] app-alternatives/ninja >=dev-build/cmake-3.28.5
|
||||||
|
DEFINED_PHASES=compile configure install postinst prepare test
|
||||||
|
DEPEND=dev-qt/qtbase:6=[gui,widgets]
|
||||||
|
DESCRIPTION=Qt 6 Configuration Utility, patched to work correctly with KDE applications
|
||||||
|
EAPI=8
|
||||||
|
HOMEPAGE=https://www.opencode.net/trialuser/qt6ct
|
||||||
|
INHERIT=cmake
|
||||||
|
KEYWORDS=amd64
|
||||||
|
LICENSE=BSD-2
|
||||||
|
RDEPEND=dev-qt/qtbase:6=[gui,widgets] dev-qt/qtsvg:6
|
||||||
|
SLOT=0
|
||||||
|
SRC_URI=https://www.opencode.net/trialuser/qt6ct/-/archive/0.11/qt6ct-0.11.tar.gz -> qt6ct-kde-0.11.tar.gz
|
||||||
|
_eclasses_=toolchain-funcs 98d9f464d912ae6b7316fb8a3721f5db flag-o-matic a7afe42e95fb46ce9691605acfb24672 multiprocessing 1e32df7deee68372153dca65f4a7c21f ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 xdg-utils 42869b3c8d86a70ef3cf75165a395e09 cmake 3d9a5fc17dadea162813d5d8918328b4
|
||||||
|
_md5_=8411b0fc56f26a5c5e15a6e5834c7b51
|
||||||
Reference in New Issue
Block a user