]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/settings/services/servicessettingspage.cpp
Output of licensedigger + manual cleanup afterwards.
[dolphin.git] / src / settings / services / servicessettingspage.cpp
index 83672b556d5302e4c68b923205fe731e19e05c99..46810768f29e16e74c922e5018d8f512d1b8e9b2 100644 (file)
@@ -1,21 +1,8 @@
-/***************************************************************************
- *   Copyright (C) 2009-2010 by Peter Penz <peter.penz19@gmail.com>        *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
- ***************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2009-2010 Peter Penz <peter.penz19@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
 #include "servicessettingspage.h"
 
 #include <KPluginMetaData>
 #include <KService>
 #include <KServiceTypeTrader>
-#include <kdesktopfileactions.h>
+#include <KDesktopFileActions>
 
 #include <QGridLayout>
 #include <QLabel>
 #include <QListWidget>
+#include <QShowEvent>
 #include <QSortFilterProxyModel>
+#include <QLineEdit>
 
 namespace
 {
@@ -60,24 +49,33 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) :
                                      "Select which services should "
                                      "be shown in the context menu:"), this);
     label->setWordWrap(true);
+    m_searchLineEdit = new QLineEdit(this);
+    m_searchLineEdit->setPlaceholderText(i18nc("@label:textbox", "Search..."));
+    connect(m_searchLineEdit, &QLineEdit::textChanged, this, [this](const QString &filter){
+        m_sortModel->setFilterFixedString(filter);
+    });
 
     m_listView = new QListView(this);
-    ServiceItemDelegate* delegate = new ServiceItemDelegate(m_listView, m_listView);
+    auto *delegate = new ServiceItemDelegate(m_listView, m_listView);
     m_serviceModel = new ServiceModel(this);
     m_sortModel = new QSortFilterProxyModel(this);
     m_sortModel->setSourceModel(m_serviceModel);
     m_sortModel->setSortRole(Qt::DisplayRole);
+    m_sortModel->setSortLocaleAware(true);
+    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, &ServicesSettingsPage::changed);
 
-    KNS3::Button* downloadButton = new KNS3::Button(i18nc("@action:button", "Download New Services..."),
-                                                    QStringLiteral("servicemenu.knsrc"),
-                                                    this);
+    auto *downloadButton = new KNS3::Button(i18nc("@action:button", "Download New Services..."),
+                                                  QStringLiteral("servicemenu.knsrc"),
+                                                  this);
     connect(downloadButton, &KNS3::Button::dialogFinished, this, &ServicesSettingsPage::loadServices);
 
     topLayout->addWidget(label);
+    topLayout->addWidget(m_searchLineEdit);
     topLayout->addWidget(m_listView);
     topLayout->addWidget(downloadButton);
 
@@ -85,9 +83,7 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) :
     std::sort(m_enabledVcsPlugins.begin(), m_enabledVcsPlugins.end());
 }
 
-ServicesSettingsPage::~ServicesSettingsPage()
-{
-}
+ServicesSettingsPage::~ServicesSettingsPage() = default;
 
 void ServicesSettingsPage::applySettings()
 {
@@ -100,7 +96,7 @@ void ServicesSettingsPage::applySettings()
 
     QStringList enabledPlugins;
 
-    const QAbstractItemModelmodel = m_listView->model();
+    const QAbstractItemModel *model = m_listView->model();
     for (int i = 0; i < model->rowCount(); ++i) {
         const QModelIndex index = model->index(i, 0);
         const QString service = model->data(index, ServiceModel::DesktopEntryNameRole).toString();
@@ -186,19 +182,16 @@ void ServicesSettingsPage::loadServices()
 
     // Load generic services
     const KService::List entries = KServiceTypeTrader::self()->query(QStringLiteral("KonqPopupMenu/Plugin"));
-    foreach (const KService::Ptr& service, entries) {
+    for (const KService::Ptr &service : entries) {
         const QString file = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kservices5/" % service->entryPath());
-        const QList<KServiceAction> serviceActions =
-                                    KDesktopFileActions::userDefinedServices(file, true);
+        const QList<KServiceAction> serviceActions = KDesktopFileActions::userDefinedServices(file, true);
 
-        KDesktopFile desktopFile(file);
+        const KDesktopFile desktopFile(file);
         const QString subMenuName = desktopFile.desktopGroup().readEntry("X-KDE-Submenu");
 
-        foreach (const KServiceAction& action, serviceActions) {
+        for (const KServiceAction &action : serviceActions) {
             const QString serviceName = action.name();
-            const bool addService = !action.noDisplay()
-                                    && !action.isSeparator()
-                                    && !isInServicesList(serviceName);
+            const bool addService = !action.noDisplay() && !action.isSeparator() && !isInServicesList(serviceName);
 
             if (addService) {
                 const QString itemName = subMenuName.isEmpty()
@@ -212,7 +205,7 @@ void ServicesSettingsPage::loadServices()
 
     // Load service plugins that implement the KFileItemActionPlugin interface
     const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("KFileItemAction/Plugin"));
-    foreach (const KService::Ptr& service, pluginServices) {
+    for (const KService::Ptr &service : pluginServices) {
         const QString desktopEntryName = service->desktopEntryName();
         if (!isInServicesList(desktopEntryName)) {
             const bool checked = showGroup.readEntry(desktopEntryName, true);
@@ -225,7 +218,7 @@ void ServicesSettingsPage::loadServices()
         return metaData.serviceTypes().contains(QLatin1String("KFileItemAction/Plugin"));
     });
 
-    foreach (const auto& jsonMetadata, jsonPlugins) {
+    for (const auto &jsonMetadata : jsonPlugins) {
         const QString desktopEntryName = jsonMetadata.pluginId();
         if (!isInServicesList(desktopEntryName)) {
             const bool checked = showGroup.readEntry(desktopEntryName, true);
@@ -234,6 +227,7 @@ void ServicesSettingsPage::loadServices()
     }
 
     m_sortModel->sort(Qt::DisplayRole);
+    m_searchLineEdit->setFocus(Qt::OtherFocusReason);
 }
 
 void ServicesSettingsPage::loadVersionControlSystems()
@@ -242,8 +236,8 @@ void ServicesSettingsPage::loadVersionControlSystems()
 
     // Create a checkbox for each available version control plugin
     const KService::List pluginServices = KServiceTypeTrader::self()->query(QStringLiteral("FileViewVersionControlPlugin"));
-    for (KService::List::ConstIterator it = pluginServices.constBegin(); it != pluginServices.constEnd(); ++it) {
-        const QString pluginName = (*it)->name();
+    for (const auto &plugin : pluginServices) {
+        const QString pluginName = plugin->name();
         addRow(QStringLiteral("code-class"),
                pluginName,
                VersionControlServicePrefix + pluginName,
@@ -253,7 +247,7 @@ void ServicesSettingsPage::loadVersionControlSystems()
     m_sortModel->sort(Qt::DisplayRole);
 }
 
-bool ServicesSettingsPage::isInServicesList(const QStringservice) const
+bool ServicesSettingsPage::isInServicesList(const QString &service) const
 {
     for (int i = 0; i < m_serviceModel->rowCount(); ++i) {
         const QModelIndex index = m_serviceModel->index(i, 0);
@@ -264,9 +258,9 @@ bool ServicesSettingsPage::isInServicesList(const QString& service) const
     return false;
 }
 
-void ServicesSettingsPage::addRow(const QStringicon,
-                                  const QStringtext,
-                                  const QStringvalue,
+void ServicesSettingsPage::addRow(const QString &icon,
+                                  const QString &text,
+                                  const QString &value,
                                   bool checked)
 {
     m_serviceModel->insertRow(0);