X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/6bb62f17b525baf89e7f35f4f3a321876c3a31ab..e6d4afa9274435dd2db8224b47772f0423b9ce69:/src/settings/services/servicessettingspage.cpp diff --git a/src/settings/services/servicessettingspage.cpp b/src/settings/services/servicessettingspage.cpp index 2b9b8f46f..4230ff445 100644 --- a/src/settings/services/servicessettingspage.cpp +++ b/src/settings/services/servicessettingspage.cpp @@ -21,31 +21,24 @@ #include "dolphin_generalsettings.h" #include "dolphin_versioncontrolsettings.h" +#include "settings/serviceitemdelegate.h" +#include "settings/servicemodel.h" -#include -#include #include -#include -#include #include #include #include #include #include #include -#include - -#include -#include +#include -#include #include -#include #include #include -#include -#include #include +#include +#include namespace { @@ -58,9 +51,9 @@ namespace ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : SettingsPageBase(parent), m_initialized(false), - m_serviceModel(0), - m_sortModel(0), - m_listView(0), + m_serviceModel(nullptr), + m_sortModel(nullptr), + m_listView(nullptr), m_enabledVcsPlugins() { QVBoxLayout* topLayout = new QVBoxLayout(this); @@ -69,6 +62,11 @@ 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, [=](const QString &filter){ + m_sortModel->setFilterFixedString(filter); + }); m_listView = new QListView(this); ServiceItemDelegate* delegate = new ServiceItemDelegate(m_listView, m_listView); @@ -76,6 +74,9 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : 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); @@ -87,11 +88,12 @@ ServicesSettingsPage::ServicesSettingsPage(QWidget* parent) : connect(downloadButton, &KNS3::Button::dialogFinished, this, &ServicesSettingsPage::loadServices); topLayout->addWidget(label); + topLayout->addWidget(m_searchLineEdit); topLayout->addWidget(m_listView); topLayout->addWidget(downloadButton); m_enabledVcsPlugins = VersionControlSettings::enabledPlugins(); - qSort(m_enabledVcsPlugins); + std::sort(m_enabledVcsPlugins.begin(), m_enabledVcsPlugins.end()); } ServicesSettingsPage::~ServicesSettingsPage() @@ -231,7 +233,7 @@ void ServicesSettingsPage::loadServices() // Load JSON-based plugins that implement the KFileItemActionPlugin interface const auto jsonPlugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kfileitemaction"), [](const KPluginMetaData& metaData) { - return metaData.serviceTypes().contains(QStringLiteral("KFileItemAction/Plugin")); + return metaData.serviceTypes().contains(QLatin1String("KFileItemAction/Plugin")); }); foreach (const auto& jsonMetadata, jsonPlugins) { @@ -243,6 +245,7 @@ void ServicesSettingsPage::loadServices() } m_sortModel->sort(Qt::DisplayRole); + m_searchLineEdit->setFocus(Qt::OtherFocusReason); } void ServicesSettingsPage::loadVersionControlSystems()