From 77517b550486ccabb8778f9a4f52ed43d05d0a23 Mon Sep 17 00:00:00 2001 From: Oleg Solovyov Date: Thu, 11 Nov 2021 10:31:03 +0300 Subject: [PATCH] Port from KNS3::QtQuickDialogWrapper to KNSWidgets::Button --- CMakeLists.txt | 2 +- src/CMakeLists.txt | 2 +- src/kgthemeselector.cpp | 46 +++++++++++++++++------------------------ 3 files changed, 21 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cba96b9b..c6405b0f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(KDEGAMES_SOVERSION 7) project(libkdegames VERSION ${KDEGAMES_VERSION}) set (QT_MIN_VERSION "5.15.0") -set (KF_MIN_VERSION "5.89.0") +set (KF_MIN_VERSION "5.91.0") find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${ECM_MODULE_PATH}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d97f5af4..ba08033e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -111,7 +111,7 @@ target_link_libraries(KF5KDEGames Qt${QT_MAJOR_VERSION}::Svg Qt${QT_MAJOR_VERSION}::Quick KF5::Declarative - KF5::NewStuff + KF5::NewStuffWidgets KF5::IconThemes KF5::XmlGui KF5::GuiAddons diff --git a/src/kgthemeselector.cpp b/src/kgthemeselector.cpp index 108e7764..eba866ad 100644 --- a/src/kgthemeselector.cpp +++ b/src/kgthemeselector.cpp @@ -9,7 +9,7 @@ // KF #include -#include +#include // Qt #include #include @@ -41,7 +41,7 @@ class KgThemeSelectorPrivate KgThemeProvider* m_provider; KgThemeSelector::Options m_options; QListWidget* m_list; - QPushButton* m_knsButton; + KNSWidgets::Button *m_knsButton; QString m_configFileName; void fillList(); @@ -55,7 +55,6 @@ class KgThemeSelectorPrivate void _k_updateListSelection(const KgTheme* theme); void _k_updateProviderSelection(); - void _k_showNewStuffDialog(); }; KgThemeSelector::KgThemeSelector(KgThemeProvider* provider, Options options, QWidget* parent) @@ -98,15 +97,24 @@ KgThemeSelector::KgThemeSelector(KgThemeProvider* provider, Options options, QWi //setup KNS button if (options & EnableNewStuffDownload) { - d->m_knsButton = new QPushButton(QIcon::fromTheme(QStringLiteral("get-hot-new-stuff")), - i18n("Get New Themes..."), this); - QHBoxLayout * hLayout = new QHBoxLayout(); - hLayout->addStretch( 1 ); - hLayout->addWidget( d->m_knsButton ); + QString name = QCoreApplication::applicationName() + QStringLiteral(".knsrc"); + d->m_knsButton = new KNSWidgets::Button( + i18n("Get New Themes..."), name, this); + QHBoxLayout *hLayout = new QHBoxLayout(); + hLayout->addStretch(1); + hLayout->addWidget( d->m_knsButton ); layout->addLayout( hLayout ); - connect(d->m_knsButton, &QAbstractButton::clicked, - this, [this]() { d->_k_showNewStuffDialog(); }); - } + connect(d->m_knsButton, &KNSWidgets::Button::dialogFinished, + [this](const QList &changedEntries) { + if (!changedEntries.isEmpty()) { + d->m_provider->rediscoverThemes(); + d->fillList(); + } + // restore previous selection + d->_k_updateListSelection( + d->m_provider->currentTheme()); + }); + } } void KgThemeSelector::setNewStuffConfigFileName(const QString &configName) @@ -169,22 +177,6 @@ void KgThemeSelectorPrivate::_k_updateProviderSelection() } } -void KgThemeSelectorPrivate::_k_showNewStuffDialog() -{ - if (m_configFileName.isEmpty()) { - return; - } - KNS3::QtQuickDialogWrapper dialog(m_configFileName, q); - const QList entries = dialog.exec(); - if ( entries.size() > 0 ){ - m_provider->rediscoverThemes(); - fillList(); - } - - //restore previous selection - _k_updateListSelection(m_provider->currentTheme()); -} - class KgThemeSelector::Dialog : public QDialog { public: -- GitLab