File indexing completed on 2024-04-28 05:27:04

0001 /*  This file is part of the KDE project
0002     SPDX-FileCopyrightText: 2000 David Faure <faure@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "kserviceselectdlg.h"
0008 #include "kservicelistwidget.h"
0009 
0010 #include <QDialogButtonBox>
0011 #include <QLabel>
0012 #include <QVBoxLayout>
0013 
0014 #include <KLocalizedString>
0015 
0016 QList<KPluginMetaData> allParts()
0017 {
0018     return KPluginMetaData::findPlugins(QStringLiteral("kf6/parts"));
0019 }
0020 
0021 KPartSelectDlg::KPartSelectDlg(QWidget *parent)
0022     : QDialog(parent)
0023 {
0024     setObjectName(QLatin1String("serviceSelectDlg"));
0025     setModal(true);
0026     setWindowTitle(i18n("Add Service"));
0027 
0028     QVBoxLayout *layout = new QVBoxLayout(this);
0029 
0030     layout->addWidget(new QLabel(i18n("Select service:")));
0031     m_listbox = new QListWidget();
0032     m_buttonBox = new QDialogButtonBox;
0033     m_buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
0034 
0035     const auto parts = allParts();
0036     for (const KPluginMetaData &part : parts) {
0037         m_listbox->addItem(new PluginListItem(part));
0038     }
0039 
0040     m_listbox->model()->sort(0);
0041     m_listbox->setMinimumHeight(350);
0042     m_listbox->setMinimumWidth(400);
0043     layout->addWidget(m_listbox);
0044     layout->addWidget(m_buttonBox);
0045     connect(m_listbox, &QListWidget::itemDoubleClicked, this, &QDialog::accept);
0046     connect(m_buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
0047     connect(m_buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
0048 }
0049 
0050 KPartSelectDlg::~KPartSelectDlg()
0051 {
0052 }
0053 
0054 KPluginMetaData KPartSelectDlg::chosenPart()
0055 {
0056     int selIndex = m_listbox->currentRow();
0057     auto selItem = static_cast<PluginListItem *>(m_listbox->item(selIndex));
0058     return selItem->metaData;
0059 }
0060 
0061 #include "moc_kserviceselectdlg.cpp"