8#include "recipientline.h"
10#include <KEmailAddress>
11#include <KLocalizedString>
19RecipientComboBox::RecipientComboBox(
QWidget *parent)
24void RecipientComboBox::keyPressEvent(
QKeyEvent *ev)
33RecipientLineEdit::RecipientLineEdit(QWidget *parent)
36 setExpandIntern(
false);
39void RecipientLineEdit::keyPressEvent(
QKeyEvent *ev)
50 Q_EMIT rightPressed();
52 MessageComposer::ComposerLineEdit::keyPressEvent(ev);
56RecipientLineNG::RecipientLineNG(QWidget *parent)
57 : MultiplyingLine(parent)
58 , mCombo(new RecipientComboBox(this))
65 topLayout->setContentsMargins({});
67 const QStringList recipientTypes = Recipient::allTypeLabels();
69 mCombo->addItems(recipientTypes);
70 topLayout->addWidget(mCombo);
71 mCombo->setToolTip(
i18nc(
"@label:listbox",
"Select type of recipient"));
72 mEdit->setToolTip(
i18nc(
"@info:tooltip",
"Set the list of email addresses to receive this message"));
73 mEdit->setClearButtonEnabled(
true);
74 topLayout->addWidget(mEdit);
75 mEdit->installEventFilter(
this);
77 connect(mEdit, &RecipientLineEdit::returnPressed,
this, &RecipientLineNG::slotReturnPressed);
78 connect(mEdit, &RecipientLineEdit::deleteMe,
this, &RecipientLineNG::slotPropagateDeletion);
80 connect(mEdit, &RecipientLineEdit::focusUp,
this, &RecipientLineNG::slotFocusUp);
81 connect(mEdit, &RecipientLineEdit::focusDown,
this, &RecipientLineNG::slotFocusDown);
83 connect(mEdit, &RecipientLineEdit::iconClicked,
this, &RecipientLineNG::iconClicked);
86 connect(mEdit, &RecipientLineEdit::editingFinished,
this, &RecipientLineNG::slotEditingFinished);
87 connect(mEdit, &RecipientLineEdit::clearButtonClicked,
this, &RecipientLineNG::slotPropagateDeletion);
92 connect(mEdit, &RecipientLineEdit::addAddress,
this, &RecipientLineNG::slotAddRecipient);
95void RecipientLineNG::slotEditingFinished()
97 if (mEdit->text().isEmpty()) {
102void RecipientLineNG::slotAddRecipient(
const QString &email)
104 Q_EMIT addRecipient(
this, email);
108void RecipientLineNG::slotTypeModified()
112 Q_EMIT typeModified(
this);
115void RecipientLineNG::analyzeLine(
const QString &text)
118 mRecipientsCount = r.
count();
123int RecipientLineNG::recipientsCount()
const
125 return mRecipientsCount;
128void RecipientLineNG::setData(
const MultiplyingLineData::Ptr &data)
130 Recipient::Ptr rec = qSharedPointerDynamicCast<Recipient>(data);
138MultiplyingLineData::Ptr RecipientLineNG::data()
const
141 const_cast<RecipientLineNG *
>(
this)->dataFromFields();
146void RecipientLineNG::dataFromFields()
151 const QString editStr(mEdit->text());
156 mData->setName(displayName);
158 mData->setEmail(editStr);
159 mData->setType(Recipient::idToType(mCombo->currentIndex()));
163void RecipientLineNG::fieldsFromData()
168 mCombo->setCurrentIndex(Recipient::typeToId(mData->type()));
169 mEdit->setText(mData->email());
172void RecipientLineNG::activate()
177bool RecipientLineNG::isActive()
const
179 return mEdit->hasFocus();
182bool RecipientLineNG::isEmpty()
const
184 return mEdit->text().
isEmpty();
187bool RecipientLineNG::isModified()
const
189 return mModified || mEdit->isModified();
192void RecipientLineNG::clearModified()
195 mEdit->setModified(
false);
198int RecipientLineNG::setColumnWidth(
int w)
200 w = qMax(w, mCombo->sizeHint().width());
201 mCombo->setFixedWidth(w);
202 mCombo->updateGeometry();
207void RecipientLineNG::fixTabOrder(QWidget *previous)
213QWidget *RecipientLineNG::tabOut()
const
218void RecipientLineNG::clear()
220 mRecipientsCount = 0;
224bool RecipientLineNG::canDeleteLineEdit()
const
226 return mEdit->canDeleteLineEdit();
231 mEdit->setCompletionMode(mode);
234Recipient::Type RecipientLineNG::recipientType()
const
236 return Recipient::idToType(mCombo->currentIndex());
239void RecipientLineNG::setRecipientType(Recipient::Type type)
241 mCombo->setCurrentIndex(Recipient::typeToId(type));
247 mEdit->setRecentAddressConfig(config);
250Recipient::Ptr RecipientLineNG::recipient()
const
252 return qSharedPointerDynamicCast<Recipient>(data());
255void RecipientLineNG::setIcon(
const QIcon &icon,
const QString &tooltip)
257 mEdit->setIcon(icon, tooltip);
260void RecipientLineNG::setEnableIndexSearch(
bool enableIndexSearch)
262 mEdit->setEnableBalooSearch(enableIndexSearch);
265bool RecipientLineNG::enableIndexSearch()
const
267 return mEdit->enableBalooSearch();
270void RecipientLineNG::setEnableAkonadiSearch(
bool enableAkonadiSearch)
272 mEdit->setEnableAkonadiSearch(enableAkonadiSearch);
275bool RecipientLineNG::enableAkonadiSearch()
const
277 return mEdit->enableAkonadiSearch();
280QString RecipientLineNG::rawData()
const
282 return mEdit->text();
285bool RecipientLineNG::eventFilter(QObject *watched, QEvent *event)
287 if (watched == mEdit) {
296#include "moc_recipientline.cpp"
void deleteLine(KPIM::MultiplyingLine *)
The ComposerLineEdit class.
The RecipientLineEdit class.
void setRecentAddressConfig(KConfig *config)
Sets the config file used for storing recent addresses.
KCODECS_EXPORT QStringList splitAddressList(const QString &aStr)
KCODECS_EXPORT EmailParseResult splitAddress(const QByteArray &address, QByteArray &displayName, QByteArray &addrSpec, QByteArray &comment)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
AKONADI_CALENDAR_EXPORT QString displayName(Akonadi::ETMCalendar *calendar, const Akonadi::Collection &collection)
Simple interface that both EncryptJob and SignEncryptJob implement so the composer can extract some e...
void activated(int index)
virtual void keyPressEvent(QKeyEvent *e) override
Qt::KeyboardModifiers modifiers() const const
void textChanged(const QString &text)
qsizetype count() const const
bool isNull() const const
bool isEmpty() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)