File indexing completed on 2025-01-26 04:49:10
0001 /* 0002 SPDX-FileCopyrightText: 2007 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "attendeeselector.h" 0008 0009 #include <KEmailAddress> 0010 #include <PimCommonAkonadi/AddresseeLineEdit> 0011 0012 #include <KGuiItem> 0013 #include <KLocalizedString> 0014 #include <KStandardGuiItem> 0015 #include <QDialogButtonBox> 0016 #include <QVBoxLayout> 0017 0018 AttendeeSelector::AttendeeSelector(QWidget *parent) 0019 : QDialog(parent) 0020 { 0021 setWindowTitle(i18nc("@title:window", "Select Attendees")); 0022 auto mainLayout = new QVBoxLayout(this); 0023 auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); 0024 auto mainWidget = new QWidget(this); 0025 mainLayout->addWidget(mainWidget); 0026 mOkButton = buttonBox->button(QDialogButtonBox::Ok); 0027 mOkButton->setDefault(true); 0028 mOkButton->setShortcut(Qt::CTRL | Qt::Key_Return); 0029 connect(buttonBox, &QDialogButtonBox::accepted, this, &AttendeeSelector::accept); 0030 connect(buttonBox, &QDialogButtonBox::rejected, this, &AttendeeSelector::reject); 0031 mainLayout->addWidget(buttonBox); 0032 0033 ui.setupUi(mainWidget); 0034 0035 KGuiItem::assign(ui.addButton, KStandardGuiItem::add()); 0036 connect(ui.addButton, &QPushButton::clicked, this, &AttendeeSelector::addClicked); 0037 KGuiItem::assign(ui.removeButton, KStandardGuiItem::remove()); 0038 connect(ui.removeButton, &QPushButton::clicked, this, &AttendeeSelector::removeClicked); 0039 0040 ui.attendeeEdit->setPlaceholderText(i18n("Click to add a new attendee")); 0041 connect(ui.attendeeEdit, &PimCommon::AddresseeLineEdit::textChanged, this, &AttendeeSelector::textChanged); 0042 connect(ui.attendeeEdit, &PimCommon::AddresseeLineEdit::returnPressed, this, &AttendeeSelector::addClicked); 0043 0044 connect(ui.attendeeList, &QListWidget::itemSelectionChanged, this, &AttendeeSelector::selectionChanged); 0045 mOkButton->setEnabled(false); 0046 } 0047 0048 QStringList AttendeeSelector::attendees() const 0049 { 0050 QStringList rv; 0051 const int numberOfAttendee(ui.attendeeList->count()); 0052 rv.reserve(numberOfAttendee); 0053 for (int i = 0; i < numberOfAttendee; ++i) { 0054 const QString addr = ui.attendeeList->item(i)->text(); 0055 0056 // Build a nice address for this attendee including the CN. 0057 QString tname; 0058 QString temail; 0059 KEmailAddress::extractEmailAddressAndName(addr, temail, tname); // ignore return value 0060 // which is always false 0061 rv << temail; 0062 } 0063 return rv; 0064 } 0065 0066 void AttendeeSelector::addClicked() 0067 { 0068 const QString str = ui.attendeeEdit->text(); 0069 if (!str.isEmpty()) { 0070 ui.attendeeList->addItem(str); 0071 } 0072 ui.attendeeEdit->clear(); 0073 mOkButton->setEnabled(true); 0074 } 0075 0076 void AttendeeSelector::removeClicked() 0077 { 0078 delete ui.attendeeList->takeItem(ui.attendeeList->currentRow()); 0079 mOkButton->setEnabled((ui.attendeeList->count() > 0)); 0080 } 0081 0082 void AttendeeSelector::textChanged(const QString &text) 0083 { 0084 ui.addButton->setEnabled(!text.isEmpty()); 0085 } 0086 0087 void AttendeeSelector::selectionChanged() 0088 { 0089 ui.removeButton->setEnabled(ui.attendeeList->currentItem()); 0090 } 0091 0092 #include "moc_attendeeselector.cpp"