-
- m_servicesList = new QListWidget(this);
- m_servicesList->setSortingEnabled(true);
- m_servicesList->setSelectionMode(QAbstractItemView::NoSelection);
- connect(m_servicesList, SIGNAL(itemClicked(QListWidgetItem*)),
- this, SIGNAL(changed()));
-
- KNS3::Button* downloadButton = new KNS3::Button(i18nc("@action:button", "Download New Services..."),
- "servicemenu.knsrc",
- this);
- connect(downloadButton, SIGNAL(dialogFinished(KNS3::Entry::List)), this, SLOT(loadServices()));
-
- m_vcsGroupBox = new QGroupBox(i18nc("@title:group", "Version Control Systems"), this);
- // Only show the version control group box, if a version
- // control system could be found (see loadVersionControlSystems())
- m_vcsGroupBox->hide();
+ 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);
+ 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);
+
+ auto *downloadButton = new KNS3::Button(i18nc("@action:button", "Download New Services..."),
+ QStringLiteral("servicemenu.knsrc"),
+ this);
+ connect(downloadButton, &KNS3::Button::dialogFinished, this, &ServicesSettingsPage::loadServices);