diff options
Diffstat (limited to 'src/settings')
24 files changed, 139 insertions, 368 deletions
diff --git a/src/settings/contextmenu/contextmenusettingspage.cpp b/src/settings/contextmenu/contextmenusettingspage.cpp index 23ddfba31..1c83e477e 100644 --- a/src/settings/contextmenu/contextmenusettingspage.cpp +++ b/src/settings/contextmenu/contextmenusettingspage.cpp @@ -9,7 +9,6 @@ #include "dolphin_contextmenusettings.h" #include "dolphin_versioncontrolsettings.h" #include "global.h" -#include "settings/serviceitemdelegate.h" #include "settings/servicemodel.h" #include <KDesktopFile> @@ -19,8 +18,6 @@ #include <KMessageBox> #include <KPluginMetaData> #include <KService> -#include <KServiceTypeTrader> -#include <kio_version.h> #include <kiocore_export.h> #include <kservice_export.h> #include <kwidgetsaddons_version.h> @@ -73,7 +70,6 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC m_listView = new QListView(this); QScroller::grabGesture(m_listView->viewport(), QScroller::TouchGesture); - auto *delegate = new ServiceItemDelegate(m_listView, m_listView); m_serviceModel = new ServiceModel(this); m_sortModel = new QSortFilterProxyModel(this); m_sortModel->setSourceModel(m_serviceModel); @@ -82,7 +78,6 @@ ContextMenuSettingsPage::ContextMenuSettingsPage(QWidget *parent, const KActionC m_sortModel->setFilterRole(Qt::DisplayRole); m_sortModel->setFilterCaseSensitivity(Qt::CaseInsensitive); m_listView->setModel(m_sortModel); - m_listView->setItemDelegate(delegate); m_listView->setVerticalScrollMode(QListView::ScrollPerPixel); connect(m_listView, &QListView::clicked, this, &ContextMenuSettingsPage::changed); @@ -180,7 +175,7 @@ void ContextMenuSettingsPage::applySettings() for (int i = 0; i < model->rowCount(); ++i) { const QModelIndex index = model->index(i, 0); const QString service = model->data(index, ServiceModel::DesktopEntryNameRole).toString(); - const bool checked = model->data(index, Qt::CheckStateRole).toBool(); + const bool checked = model->data(index, Qt::CheckStateRole).value<Qt::CheckState>() == Qt::Checked; if (service.startsWith(VersionControlServicePrefix)) { if (checked) { @@ -236,7 +231,7 @@ void ContextMenuSettingsPage::restoreDefaults() const bool checked = !service.startsWith(VersionControlServicePrefix) && service != QLatin1String(DeleteService) && service != QLatin1String(CopyToMoveToService); - model->setData(index, checked, Qt::CheckStateRole); + model->setData(index, checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole); } } @@ -263,7 +258,7 @@ void ContextMenuSettingsPage::showEvent(QShowEvent *event) for (const QString &id : m_actionIds) { const QAction *action = m_actions->action(id); if (action) { - addRow(action->icon().name(), action->text(), id, entryVisible(id)); + addRow(action->icon().name(), KLocalizedString::removeAcceleratorMarker(action->text()), id, entryVisible(id)); } } } @@ -284,14 +279,7 @@ void ContextMenuSettingsPage::loadServices() const auto locations = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("kio/servicemenus"), QStandardPaths::LocateDirectory); QStringList files = KFileUtils::findAllUniqueFiles(locations); -#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 90) - const KService::List services = KServiceTypeTrader::self()->query(QStringLiteral("KonqPopupMenu/Plugin")); - for (const KService::Ptr &service : services) { - files << QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath()); - } -#endif - - for (const auto &file : qAsConst(files)) { + for (const auto &file : std::as_const(files)) { const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(KService(file), true); const KDesktopFile desktopFile(file); @@ -309,20 +297,8 @@ void ContextMenuSettingsPage::loadServices() } } - // Load service plugins, this is deprecated in KIO 5.82 -#if KIOCORE_BUILD_DEPRECATED_SINCE(5, 82) - const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("KFileItemAction/Plugin")); - for (const KService::Ptr &service : pluginServices) { - const QString desktopEntryName = service->desktopEntryName(); - if (!isInServicesList(desktopEntryName)) { - const bool checked = showGroup.readEntry(desktopEntryName, true); - addRow(service->icon(), service->name(), desktopEntryName, checked); - } - } -#endif - // Load JSON-based plugins that implement the KFileItemActionPlugin interface - const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf" QT_STRINGIFY(QT_VERSION_MAJOR)) + QStringLiteral("/kfileitemaction")); + const auto jsonPlugins = KPluginMetaData::findPlugins(QStringLiteral("kf6/kfileitemaction")); for (const auto &jsonMetadata : jsonPlugins) { const QString desktopEntryName = jsonMetadata.pluginId(); @@ -372,7 +348,7 @@ void ContextMenuSettingsPage::addRow(const QString &icon, const QString &text, c m_serviceModel->setData(index, icon, Qt::DecorationRole); m_serviceModel->setData(index, text, Qt::DisplayRole); m_serviceModel->setData(index, value, ServiceModel::DesktopEntryNameRole); - m_serviceModel->setData(index, checked, Qt::CheckStateRole); + m_serviceModel->setData(index, checked ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole); } #include "moc_contextmenusettingspage.cpp" diff --git a/src/settings/contextmenu/servicemenuinstaller/CMakeLists.txt b/src/settings/contextmenu/servicemenuinstaller/CMakeLists.txt index 74576ad20..603e5c2e5 100644 --- a/src/settings/contextmenu/servicemenuinstaller/CMakeLists.txt +++ b/src/settings/contextmenu/servicemenuinstaller/CMakeLists.txt @@ -5,8 +5,8 @@ add_executable(servicemenuinstaller servicemenuinstaller.cpp) target_link_libraries(servicemenuinstaller PRIVATE Qt${QT_MAJOR_VERSION}::Core Qt${QT_MAJOR_VERSION}::Gui - KF5::I18n - KF5::CoreAddons + KF6::I18n + KF6::CoreAddons ) if(HAVE_PACKAGEKIT) diff --git a/src/settings/contextmenu/servicemenuinstaller/servicemenuinstaller.cpp b/src/settings/contextmenu/servicemenuinstaller/servicemenuinstaller.cpp index acee97cf1..fa7369e06 100644 --- a/src/settings/contextmenu/servicemenuinstaller/servicemenuinstaller.cpp +++ b/src/settings/contextmenu/servicemenuinstaller/servicemenuinstaller.cpp @@ -172,7 +172,7 @@ void runUncompress(const QString &inputPath, const QString &outputPath) const auto mime = QMimeDatabase().mimeTypeForFile(inputPath).name(); UncompressCommand command{}; - for (const auto &pair : qAsConst(mimeTypeToCommand)) { + for (const auto &pair : std::as_const(mimeTypeToCommand)) { if (pair.first.contains(mime)) { command = pair.second; break; diff --git a/src/settings/dolphinsettingsdialog.cpp b/src/settings/dolphinsettingsdialog.cpp index d05d5a814..8c41794e9 100644 --- a/src/settings/dolphinsettingsdialog.cpp +++ b/src/settings/dolphinsettingsdialog.cpp @@ -130,7 +130,7 @@ void DolphinSettingsDialog::enableApply() void DolphinSettingsDialog::applySettings() { - for (SettingsPageBase *page : qAsConst(m_pages)) { + for (SettingsPageBase *page : std::as_const(m_pages)) { page->applySettings(); } @@ -149,7 +149,7 @@ void DolphinSettingsDialog::applySettings() void DolphinSettingsDialog::restoreDefaults() { - for (SettingsPageBase *page : qAsConst(m_pages)) { + for (SettingsPageBase *page : std::as_const(m_pages)) { page->restoreDefaults(); } } diff --git a/src/settings/interface/configurepreviewplugindialog.cpp b/src/settings/interface/configurepreviewplugindialog.cpp deleted file mode 100644 index 8846d8261..000000000 --- a/src/settings/interface/configurepreviewplugindialog.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2011 Peter Penz <[email protected]> - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "configurepreviewplugindialog.h" - -#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87) - -#include <KIO/DeleteJob> -#include <KIO/JobUiDelegate> -#include <KIO/ThumbCreator> -#include <KJobWidgets> -#include <KLocalizedString> -#include <QPluginLoader> - -#include <QDialogButtonBox> -#include <QPushButton> -#include <QStandardPaths> -#include <QUrl> -#include <QVBoxLayout> - -ConfigurePreviewPluginDialog::ConfigurePreviewPluginDialog(const QString &pluginName, const QString &desktopEntryName, QWidget *parent) - : QDialog(parent) -{ - QSharedPointer<ThumbCreator> previewPlugin; - const QString pluginPath = QPluginLoader(desktopEntryName).fileName(); - if (!pluginPath.isEmpty()) { - newCreator create = (newCreator)QLibrary::resolve(pluginPath, "new_creator"); - if (create) { - previewPlugin.reset(dynamic_cast<ThumbCreator *>(create())); - } - } - - setWindowTitle(i18nc("@title:window", "Configure Preview for %1", pluginName)); - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - setMinimumWidth(400); - - auto layout = new QVBoxLayout(this); - - if (previewPlugin) { - auto configurationWidget = previewPlugin->createConfigurationWidget(); - configurationWidget->setParent(this); - layout->addWidget(configurationWidget); - - layout->addStretch(); - - connect(this, &ConfigurePreviewPluginDialog::accepted, this, [=] { - // TODO: It would be great having a mechanism to tell PreviewJob that only previews - // for a specific MIME-type should be regenerated. As this is not available yet we - // delete the whole thumbnails directory. - previewPlugin->writeConfiguration(configurationWidget); - - // https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY - const QString thumbnailsPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QLatin1String("/thumbnails/"); - KIO::del(QUrl::fromLocalFile(thumbnailsPath), KIO::HideProgressInfo); - }); - } - - auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); - connect(buttonBox, &QDialogButtonBox::accepted, this, &ConfigurePreviewPluginDialog::accept); - connect(buttonBox, &QDialogButtonBox::rejected, this, &ConfigurePreviewPluginDialog::reject); - layout->addWidget(buttonBox); - - auto okButton = buttonBox->button(QDialogButtonBox::Ok); - okButton->setShortcut(Qt::CTRL | Qt::Key_Return); - okButton->setDefault(true); -} - -#include "moc_configurepreviewplugindialog.cpp" - -#endif // KIO_VERSION diff --git a/src/settings/interface/configurepreviewplugindialog.h b/src/settings/interface/configurepreviewplugindialog.h deleted file mode 100644 index 66504cce2..000000000 --- a/src/settings/interface/configurepreviewplugindialog.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2011 Peter Penz <[email protected]> - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#ifndef CONFIGUREPREVIEWPLUGINDIALOG_H -#define CONFIGUREPREVIEWPLUGINDIALOG_H - -#include <kiowidgets_export.h> - -#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87) - -#include <QDialog> - -/** - * @brief Dialog for configuring preview-plugins. - */ -class ConfigurePreviewPluginDialog : public QDialog -{ - Q_OBJECT - -public: - /** - * @param pluginName User visible name of the plugin - * @param desktopEntryName The name of the plugin that is noted in the desktopentry. - * Is used to instantiate the plugin to get the configuration - * widget. - * @param parent Parent widget. - */ - ConfigurePreviewPluginDialog(const QString &pluginName, const QString &desktopEntryName, QWidget *parent); - ~ConfigurePreviewPluginDialog() override = default; -}; -#endif // KIOWIDGETS_BUILD_DEPRECATED_SINCE - -#endif diff --git a/src/settings/interface/folderstabssettingspage.cpp b/src/settings/interface/folderstabssettingspage.cpp index d71ad2d96..85a0e8e13 100644 --- a/src/settings/interface/folderstabssettingspage.cpp +++ b/src/settings/interface/folderstabssettingspage.cpp @@ -160,7 +160,7 @@ void FoldersTabsSettingsPage::applySettings() settings->setCloseActiveSplitView(m_closeActiveSplitView->isChecked()); const QUrl url(QUrl::fromUserInput(m_homeUrl->text(), QString(), QUrl::AssumeLocalFile)); if (url.isValid() && KProtocolManager::supportsListing(url)) { - KIO::StatJob *job = KIO::statDetails(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo); + KIO::StatJob *job = KIO::stat(url, KIO::StatJob::SourceSide, KIO::StatDetail::StatBasic, KIO::JobFlag::HideProgressInfo); connect(job, &KJob::result, this, [this, settings, url](KJob *job) { if (job->error() == 0 && qobject_cast<KIO::StatJob *>(job)->statResult().isDir()) { settings->setHomeUrl(url.toDisplayString(QUrl::PreferLocalFile)); diff --git a/src/settings/interface/interfacesettingspage.cpp b/src/settings/interface/interfacesettingspage.cpp index e941cf467..6a3fc8c90 100644 --- a/src/settings/interface/interfacesettingspage.cpp +++ b/src/settings/interface/interfacesettingspage.cpp @@ -59,14 +59,14 @@ InterfaceSettingsPage::~InterfaceSettingsPage() void InterfaceSettingsPage::applySettings() { - for (SettingsPageBase *page : qAsConst(m_pages)) { + for (SettingsPageBase *page : std::as_const(m_pages)) { page->applySettings(); } } void InterfaceSettingsPage::restoreDefaults() { - for (SettingsPageBase *page : qAsConst(m_pages)) { + for (SettingsPageBase *page : std::as_const(m_pages)) { page->restoreDefaults(); } } diff --git a/src/settings/interface/previewssettingspage.cpp b/src/settings/interface/previewssettingspage.cpp index ef98d0f8d..dd1ce942e 100644 --- a/src/settings/interface/previewssettingspage.cpp +++ b/src/settings/interface/previewssettingspage.cpp @@ -6,9 +6,7 @@ #include "previewssettingspage.h" -#include "configurepreviewplugindialog.h" #include "dolphin_generalsettings.h" -#include "settings/serviceitemdelegate.h" #include "settings/servicemodel.h" #include <KIO/PreviewJob> @@ -45,12 +43,6 @@ PreviewsSettingsPage::PreviewsSettingsPage(QWidget *parent) m_listView = new QListView(this); QScroller::grabGesture(m_listView->viewport(), QScroller::TouchGesture); -#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87) - ServiceItemDelegate *delegate = new ServiceItemDelegate(m_listView, m_listView); - connect(delegate, &ServiceItemDelegate::requestServiceConfiguration, this, &PreviewsSettingsPage::configureService); - m_listView->setItemDelegate(delegate); -#endif - ServiceModel *serviceModel = new ServiceModel(this); QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this); proxyModel->setSourceModel(serviceModel); @@ -111,7 +103,7 @@ void PreviewsSettingsPage::applySettings() m_enabledPreviewPlugins.clear(); for (int i = 0; i < rowCount; ++i) { const QModelIndex index = model->index(i, 0); - const bool checked = model->data(index, Qt::CheckStateRole).toBool(); + const bool checked = model->data(index, Qt::CheckStateRole).value<Qt::CheckState>() == Qt::Checked; if (checked) { const QString enabledPlugin = model->data(index, Qt::UserRole).toString(); m_enabledPreviewPlugins.append(enabledPlugin); @@ -150,19 +142,6 @@ void PreviewsSettingsPage::showEvent(QShowEvent *event) SettingsPageBase::showEvent(event); } -#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87) -void PreviewsSettingsPage::configureService(const QModelIndex &index) -{ - const QAbstractItemModel *model = index.model(); - const QString pluginName = model->data(index).toString(); - const QString desktopEntryName = model->data(index, ServiceModel::DesktopEntryNameRole).toString(); - - ConfigurePreviewPluginDialog *dialog = new ConfigurePreviewPluginDialog(pluginName, desktopEntryName, this); - dialog->setAttribute(Qt::WA_DeleteOnClose); - dialog->show(); -} -#endif - void PreviewsSettingsPage::loadPreviewPlugins() { QAbstractItemModel *model = m_listView->model(); @@ -173,14 +152,9 @@ void PreviewsSettingsPage::loadPreviewPlugins() model->insertRow(0); const QModelIndex index = model->index(0, 0); - model->setData(index, show, Qt::CheckStateRole); + model->setData(index, show ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole); model->setData(index, plugin.name(), Qt::DisplayRole); model->setData(index, plugin.pluginId(), ServiceModel::DesktopEntryNameRole); - -#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87) - const bool configurable = plugin.value(QStringLiteral("Configurable"), false); - model->setData(index, configurable, ServiceModel::ConfigurableRole); -#endif } model->sort(Qt::DisplayRole); diff --git a/src/settings/interface/previewssettingspage.h b/src/settings/interface/previewssettingspage.h index 2c3e4dfef..d6d22ae21 100644 --- a/src/settings/interface/previewssettingspage.h +++ b/src/settings/interface/previewssettingspage.h @@ -40,9 +40,6 @@ protected: void showEvent(QShowEvent *event) override; private Q_SLOTS: -#if KIOWIDGETS_BUILD_DEPRECATED_SINCE(5, 87) - void configureService(const QModelIndex &index); -#endif private: void loadPreviewPlugins(); diff --git a/src/settings/kcm/kcmdolphingeneral.cpp b/src/settings/kcm/kcmdolphingeneral.cpp index 32241d112..b98eb86a1 100644 --- a/src/settings/kcm/kcmdolphingeneral.cpp +++ b/src/settings/kcm/kcmdolphingeneral.cpp @@ -20,16 +20,16 @@ K_PLUGIN_CLASS_WITH_JSON(DolphinGeneralConfigModule, "kcmdolphingeneral.json") -DolphinGeneralConfigModule::DolphinGeneralConfigModule(QWidget *parent, const QVariantList &args) - : KCModule(parent, args) +DolphinGeneralConfigModule::DolphinGeneralConfigModule(QObject *parent, const KPluginMetaData &data) + : KCModule(parent, data) , m_pages() { setButtons(KCModule::Default | KCModule::Help | KCModule::Apply); - QVBoxLayout *topLayout = new QVBoxLayout(this); + QVBoxLayout *topLayout = new QVBoxLayout(widget()); topLayout->setContentsMargins(0, 0, 0, 0); - QTabWidget *tabWidget = new QTabWidget(this); + QTabWidget *tabWidget = new QTabWidget(widget()); // initialize 'Folders & Tabs' tab FoldersTabsSettingsPage *foldersTabsPage = new FoldersTabsSettingsPage(tabWidget); @@ -58,14 +58,14 @@ DolphinGeneralConfigModule::~DolphinGeneralConfigModule() void DolphinGeneralConfigModule::save() { - for (SettingsPageBase *page : qAsConst(m_pages)) { + for (SettingsPageBase *page : std::as_const(m_pages)) { page->applySettings(); } } void DolphinGeneralConfigModule::defaults() { - for (SettingsPageBase *page : qAsConst(m_pages)) { + for (SettingsPageBase *page : std::as_const(m_pages)) { page->applySettings(); } } diff --git a/src/settings/kcm/kcmdolphingeneral.h b/src/settings/kcm/kcmdolphingeneral.h index 889317738..828332539 100644 --- a/src/settings/kcm/kcmdolphingeneral.h +++ b/src/settings/kcm/kcmdolphingeneral.h @@ -21,7 +21,7 @@ class DolphinGeneralConfigModule : public KCModule Q_OBJECT public: - DolphinGeneralConfigModule(QWidget *parent, const QVariantList &args); + DolphinGeneralConfigModule(QObject *parent, const KPluginMetaData &data); ~DolphinGeneralConfigModule() override; void save() override; diff --git a/src/settings/kcm/kcmdolphinnavigation.cpp b/src/settings/kcm/kcmdolphinnavigation.cpp new file mode 100644 index 000000000..6f699f82d --- /dev/null +++ b/src/settings/kcm/kcmdolphinnavigation.cpp @@ -0,0 +1,48 @@ +/* + * SPDX-FileCopyrightText: 2009 Peter Penz <[email protected]> + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "kcmdolphinnavigation.h" + +#include "settings/navigation/navigationsettingspage.h" +#include <kconfigwidgets_version.h> + +#include <KPluginFactory> + +#include <QVBoxLayout> + +K_PLUGIN_CLASS_WITH_JSON(DolphinNavigationConfigModule, "kcmdolphinnavigation.json") + +DolphinNavigationConfigModule::DolphinNavigationConfigModule(QObject *parent) + : KCModule(parent) + , m_navigation(nullptr) +{ + setButtons(KCModule::Default | KCModule::Help | KCModule::Apply); + + QVBoxLayout *topLayout = new QVBoxLayout(widget()); + topLayout->setContentsMargins(0, 0, 0, 0); + + m_navigation = new NavigationSettingsPage(widget()); + connect(m_navigation, &NavigationSettingsPage::changed, this, &DolphinNavigationConfigModule::markAsChanged); + topLayout->addWidget(m_navigation, 0, {}); +} + +DolphinNavigationConfigModule::~DolphinNavigationConfigModule() +{ +} + +void DolphinNavigationConfigModule::save() +{ + m_navigation->applySettings(); +} + +void DolphinNavigationConfigModule::defaults() +{ + m_navigation->restoreDefaults(); +} + +#include "kcmdolphinnavigation.moc" + +#include "moc_kcmdolphinnavigation.cpp" diff --git a/src/settings/kcm/kcmdolphinnavigation.h b/src/settings/kcm/kcmdolphinnavigation.h new file mode 100644 index 000000000..a25405155 --- /dev/null +++ b/src/settings/kcm/kcmdolphinnavigation.h @@ -0,0 +1,32 @@ +/* + * SPDX-FileCopyrightText: 2009 Peter Penz <[email protected]> + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef KCMDOLPHINNAVIGATION_H +#define KCMDOLPHINNAVIGATION_H + +#include <KCModule> + +class NavigationSettingsPage; + +/** + * @brief Allow to configure the Dolphin navigation. + */ +class DolphinNavigationConfigModule : public KCModule +{ + Q_OBJECT + +public: + DolphinNavigationConfigModule(QObject *parent); + ~DolphinNavigationConfigModule() override; + + void save() override; + void defaults() override; + +private: + NavigationSettingsPage *m_navigation; +}; + +#endif diff --git a/src/settings/kcm/kcmdolphinviewmodes.cpp b/src/settings/kcm/kcmdolphinviewmodes.cpp index 962f0f112..e4755a1c5 100644 --- a/src/settings/kcm/kcmdolphinviewmodes.cpp +++ b/src/settings/kcm/kcmdolphinviewmodes.cpp @@ -8,6 +8,7 @@ #include "settings/viewmodes/viewsettingstab.h" +#include <KCModule> #include <KLocalizedString> #include <KPluginFactory> @@ -19,16 +20,16 @@ K_PLUGIN_CLASS_WITH_JSON(DolphinViewModesConfigModule, "kcmdolphinviewmodes.json") -DolphinViewModesConfigModule::DolphinViewModesConfigModule(QWidget *parent, const QVariantList &args) - : KCModule(parent, args) +DolphinViewModesConfigModule::DolphinViewModesConfigModule(QObject *parent, const KPluginMetaData &data) + : KCModule(parent, data) , m_tabs() { setButtons(KCModule::Default | KCModule::Help | KCModule::Apply); - QVBoxLayout *topLayout = new QVBoxLayout(this); + QVBoxLayout *topLayout = new QVBoxLayout(widget()); topLayout->setContentsMargins(0, 0, 0, 0); - QTabWidget *tabWidget = new QTabWidget(this); + QTabWidget *tabWidget = new QTabWidget(widget()); // Initialize 'Icons' tab ViewSettingsTab *iconsTab = new ViewSettingsTab(ViewSettingsTab::IconsMode, tabWidget); @@ -58,7 +59,7 @@ DolphinViewModesConfigModule::~DolphinViewModesConfigModule() void DolphinViewModesConfigModule::save() { - for (ViewSettingsTab *tab : qAsConst(m_tabs)) { + for (ViewSettingsTab *tab : std::as_const(m_tabs)) { tab->applySettings(); } reparseConfiguration(); @@ -66,7 +67,7 @@ void DolphinViewModesConfigModule::save() void DolphinViewModesConfigModule::defaults() { - for (ViewSettingsTab *tab : qAsConst(m_tabs)) { + for (ViewSettingsTab *tab : std::as_const(m_tabs)) { tab->restoreDefaults(); } reparseConfiguration(); diff --git a/src/settings/kcm/kcmdolphinviewmodes.h b/src/settings/kcm/kcmdolphinviewmodes.h index 33c0b77a5..59cbca314 100644 --- a/src/settings/kcm/kcmdolphinviewmodes.h +++ b/src/settings/kcm/kcmdolphinviewmodes.h @@ -19,7 +19,7 @@ class DolphinViewModesConfigModule : public KCModule Q_OBJECT public: - DolphinViewModesConfigModule(QWidget *parent, const QVariantList &args); + DolphinViewModesConfigModule(QObject *parent, const KPluginMetaData &data); ~DolphinViewModesConfigModule() override; void save() override; diff --git a/src/settings/serviceitemdelegate.cpp b/src/settings/serviceitemdelegate.cpp deleted file mode 100644 index ea3a5fe52..000000000 --- a/src/settings/serviceitemdelegate.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2011 Peter Penz <[email protected]> - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "serviceitemdelegate.h" - -#include "servicemodel.h" - -#include <QAbstractItemView> -#include <QCheckBox> -#include <QPainter> -#include <QPushButton> - -ServiceItemDelegate::ServiceItemDelegate(QAbstractItemView *itemView, QObject *parent) - : KWidgetItemDelegate(itemView, parent) -{ -} - -ServiceItemDelegate::~ServiceItemDelegate() -{ -} - -QSize ServiceItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(index) - - const QStyle *style = itemView()->style(); - const int buttonHeight = style->pixelMetric(QStyle::PM_ButtonMargin) * 2 + style->pixelMetric(QStyle::PM_ButtonIconSize); - const int fontHeight = option.fontMetrics.height(); - return QSize(100, qMax(buttonHeight, fontHeight)); -} - -void ServiceItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(index) - painter->save(); - - itemView()->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter); - - if (option.state & QStyle::State_Selected) { - painter->setPen(option.palette.highlightedText().color()); - } - - painter->restore(); -} - -QList<QWidget *> ServiceItemDelegate::createItemWidgets(const QModelIndex &) const -{ - QCheckBox *checkBox = new QCheckBox(); - QPalette palette = checkBox->palette(); - palette.setColor(QPalette::WindowText, palette.color(QPalette::Text)); - checkBox->setPalette(palette); - connect(checkBox, &QCheckBox::clicked, this, &ServiceItemDelegate::slotCheckBoxClicked); - - QPushButton *configureButton = new QPushButton(); - connect(configureButton, &QPushButton::clicked, this, &ServiceItemDelegate::slotConfigureButtonClicked); - - return {checkBox, configureButton}; -} - -void ServiceItemDelegate::updateItemWidgets(const QList<QWidget *> widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const -{ - QCheckBox *checkBox = static_cast<QCheckBox *>(widgets[0]); - QPushButton *configureButton = static_cast<QPushButton *>(widgets[1]); - - const int itemHeight = sizeHint(option, index).height(); - - // Update the checkbox showing the service name and icon - const QAbstractItemModel *model = index.model(); - checkBox->setText(model->data(index).toString()); - const QString iconName = model->data(index, Qt::DecorationRole).toString(); - if (!iconName.isEmpty()) { - checkBox->setIcon(QIcon::fromTheme(iconName)); - } - checkBox->setChecked(model->data(index, Qt::CheckStateRole).toBool()); - - const bool configurable = model->data(index, ServiceModel::ConfigurableRole).toBool(); - - int checkBoxWidth = option.rect.width(); - if (configurable) { - checkBoxWidth -= configureButton->sizeHint().width(); - } - checkBox->resize(checkBoxWidth, checkBox->sizeHint().height()); - checkBox->move(0, (itemHeight - checkBox->height()) / 2); - - // Update the configuration button - if (configurable) { - configureButton->setEnabled(checkBox->isChecked()); - configureButton->setIcon(QIcon::fromTheme(QStringLiteral("configure"))); - configureButton->resize(configureButton->sizeHint()); - configureButton->move(option.rect.right() - configureButton->width(), (itemHeight - configureButton->height()) / 2); - } - configureButton->setVisible(configurable); -} - -void ServiceItemDelegate::slotCheckBoxClicked(bool checked) -{ - QAbstractItemModel *model = const_cast<QAbstractItemModel *>(focusedIndex().model()); - model->setData(focusedIndex(), checked, Qt::CheckStateRole); -} - -void ServiceItemDelegate::slotConfigureButtonClicked() -{ - Q_EMIT requestServiceConfiguration(focusedIndex()); -} - -#include "moc_serviceitemdelegate.cpp" diff --git a/src/settings/serviceitemdelegate.h b/src/settings/serviceitemdelegate.h deleted file mode 100644 index 74f7dfd6a..000000000 --- a/src/settings/serviceitemdelegate.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2011 Peter Penz <[email protected]> - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#ifndef SERVICEITEMDELEGATE_H -#define SERVICEITEMDELEGATE_H - -#include <KWidgetItemDelegate> - -/** - * @brief Widget item delegate for a service that can be enabled or disabled. - * - * Additionally it is possible to configure a service. - * @see ServiceModel - */ -class ServiceItemDelegate : public KWidgetItemDelegate -{ - Q_OBJECT - -public: - explicit ServiceItemDelegate(QAbstractItemView *itemView, QObject *parent = nullptr); - ~ServiceItemDelegate() override; - - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; - - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - - QList<QWidget *> createItemWidgets(const QModelIndex &) const override; - - void updateItemWidgets(const QList<QWidget *> widgets, const QStyleOptionViewItem &option, const QPersistentModelIndex &index) const override; - -Q_SIGNALS: - void requestServiceConfiguration(const QModelIndex &index); - -private Q_SLOTS: - void slotCheckBoxClicked(bool checked); - void slotConfigureButtonClicked(); -}; - -#endif diff --git a/src/settings/servicemodel.cpp b/src/settings/servicemodel.cpp index 07a804e33..c2ebda7c1 100644 --- a/src/settings/servicemodel.cpp +++ b/src/settings/servicemodel.cpp @@ -6,6 +6,8 @@ #include "servicemodel.h" +#include <QIcon> + ServiceModel::ServiceModel(QObject *parent) : QAbstractListModel(parent) , m_items() @@ -29,8 +31,7 @@ bool ServiceModel::insertRows(int row, int count, const QModelIndex &parent) beginInsertRows(parent, row, row + count - 1); for (int i = 0; i < count; ++i) { ServiceItem item; - item.checked = false; - item.configurable = false; + item.checked = Qt::Unchecked; m_items.insert(row, item); } endInsertRows(); @@ -47,10 +48,7 @@ bool ServiceModel::setData(const QModelIndex &index, const QVariant &value, int switch (role) { case Qt::CheckStateRole: - m_items[row].checked = value.toBool(); - break; - case ConfigurableRole: - m_items[row].configurable = value.toBool(); + m_items[row].checked = value.value<Qt::CheckState>(); break; case Qt::DecorationRole: m_items[row].icon = value.toString(); @@ -74,12 +72,10 @@ QVariant ServiceModel::data(const QModelIndex &index, int role) const const int row = index.row(); if (row < rowCount()) { switch (role) { - case ConfigurableRole: - return m_items[row].configurable; case Qt::CheckStateRole: return m_items[row].checked; case Qt::DecorationRole: - return m_items[row].icon; + return QIcon::fromTheme(m_items[row].icon); case Qt::DisplayRole: return m_items[row].text; case DesktopEntryNameRole: @@ -105,4 +101,9 @@ void ServiceModel::clear() endRemoveRows(); } +Qt::ItemFlags ServiceModel::flags(const QModelIndex &index) const +{ + return QAbstractListModel::flags(index) | Qt::ItemIsUserCheckable; +} + #include "moc_servicemodel.cpp" diff --git a/src/settings/servicemodel.h b/src/settings/servicemodel.h index 23c752e93..0abe1fe46 100644 --- a/src/settings/servicemodel.h +++ b/src/settings/servicemodel.h @@ -25,7 +25,7 @@ class ServiceModel : public QAbstractListModel Q_OBJECT public: - enum Role { DesktopEntryNameRole = Qt::UserRole, ConfigurableRole }; + enum Role { DesktopEntryNameRole = Qt::UserRole }; explicit ServiceModel(QObject *parent = nullptr); ~ServiceModel() override; @@ -35,11 +35,11 @@ public: QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override; void clear(); + Qt::ItemFlags flags(const QModelIndex &index) const override; private: struct ServiceItem { - bool checked; - bool configurable; + Qt::CheckState checked; QString icon; QString text; QString desktopEntryName; diff --git a/src/settings/trash/trashsettingspage.cpp b/src/settings/trash/trashsettingspage.cpp index 1920cd904..38a3d0865 100644 --- a/src/settings/trash/trashsettingspage.cpp +++ b/src/settings/trash/trashsettingspage.cpp @@ -6,7 +6,8 @@ #include "trashsettingspage.h" -#include <KCModuleProxy> +#include <KCModuleLoader> +#include <KCModule> #include <KPluginMetaData> #include <QFormLayout> @@ -16,12 +17,13 @@ TrashSettingsPage::TrashSettingsPage(QWidget *parent) { QFormLayout *topLayout = new QFormLayout(this); - m_proxy = new KCModuleProxy(KPluginMetaData(QStringLiteral("kcm_trash"))); - topLayout->addRow(m_proxy); + m_kcm = KCModuleLoader::loadModule(KPluginMetaData(QStringLiteral("kcm_trash"))); + + topLayout->addRow(m_kcm->widget()); loadSettings(); - connect(m_proxy, &KCModuleProxy::changed, this, &TrashSettingsPage::changed); + connect(m_kcm, &KCModule::needsSaveChanged, this, &TrashSettingsPage::changed); } TrashSettingsPage::~TrashSettingsPage() @@ -30,17 +32,17 @@ TrashSettingsPage::~TrashSettingsPage() void TrashSettingsPage::applySettings() { - m_proxy->save(); + m_kcm->save(); } void TrashSettingsPage::restoreDefaults() { - m_proxy->defaults(); + m_kcm->defaults(); } void TrashSettingsPage::loadSettings() { - m_proxy->load(); + m_kcm->load(); } #include "moc_trashsettingspage.cpp" diff --git a/src/settings/trash/trashsettingspage.h b/src/settings/trash/trashsettingspage.h index b0e48a018..a5253774c 100644 --- a/src/settings/trash/trashsettingspage.h +++ b/src/settings/trash/trashsettingspage.h @@ -8,7 +8,7 @@ #include "settings/settingspagebase.h" -class KCModuleProxy; +class KCModule; /** * @brief Tab page for the 'Trash' settings of the Dolphin settings dialog, it uses the KCM. @@ -29,7 +29,7 @@ public: private: void loadSettings(); - KCModuleProxy *m_proxy; + KCModule *m_kcm; }; #endif diff --git a/src/settings/userfeedback/userfeedbacksettingspage.cpp b/src/settings/userfeedback/userfeedbacksettingspage.cpp index 6c205acee..7d87cb2fc 100644 --- a/src/settings/userfeedback/userfeedbacksettingspage.cpp +++ b/src/settings/userfeedback/userfeedbacksettingspage.cpp @@ -7,8 +7,8 @@ #include "userfeedbacksettingspage.h" #include "userfeedback/dolphinfeedbackprovider.h" -#include <KUserFeedback/FeedbackConfigWidget> -#include <KUserFeedback/Provider> +#include <KUserFeedbackQt6/FeedbackConfigWidget> +#include <KUserFeedbackQt6/Provider> #include <QVBoxLayout> diff --git a/src/settings/viewmodes/viewsettingspage.cpp b/src/settings/viewmodes/viewsettingspage.cpp index 5e740640d..7fccfc24a 100644 --- a/src/settings/viewmodes/viewsettingspage.cpp +++ b/src/settings/viewmodes/viewsettingspage.cpp @@ -65,14 +65,14 @@ ViewSettingsPage::~ViewSettingsPage() void ViewSettingsPage::applySettings() { - for (SettingsPageBase *tab : qAsConst(m_tabs)) { + for (SettingsPageBase *tab : std::as_const(m_tabs)) { tab->applySettings(); } } void ViewSettingsPage::restoreDefaults() { - for (SettingsPageBase *tab : qAsConst(m_tabs)) { + for (SettingsPageBase *tab : std::as_const(m_tabs)) { if (tabWidget->currentWidget() == tab) { tab->restoreDefaults(); return; |
