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"