File indexing completed on 2024-06-23 05:18:36
0001 /* 0002 SPDX-FileCopyrightText: 2010 Casey Link <unnamedrambler@gmail.com> 0003 SPDX-FileCopyrightText: 2009-2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include <QSharedPointer> 0011 0012 #include "MessageComposer/Recipient" 0013 0014 #include <Libkdepim/MultiplyingLine> 0015 #include <MessageComposer/ComposerLineEdit> 0016 0017 #include <QComboBox> 0018 0019 namespace MessageComposer 0020 { 0021 class RecipientComboBox : public QComboBox 0022 { 0023 Q_OBJECT 0024 public: 0025 explicit RecipientComboBox(QWidget *parent); 0026 0027 Q_SIGNALS: 0028 void rightPressed(); 0029 0030 protected: 0031 void keyPressEvent(QKeyEvent *ev) override; 0032 }; 0033 /** 0034 * @brief The RecipientLineEdit class 0035 */ 0036 class MESSAGECOMPOSER_EXPORT RecipientLineEdit : public MessageComposer::ComposerLineEdit 0037 { 0038 Q_OBJECT 0039 public: 0040 explicit RecipientLineEdit(QWidget *parent); 0041 0042 Q_SIGNALS: 0043 void deleteMe(); 0044 void leftPressed(); 0045 void rightPressed(); 0046 0047 protected: 0048 void keyPressEvent(QKeyEvent *ev) override; 0049 }; 0050 0051 /** 0052 * @brief The RecipientLineNG class 0053 */ 0054 class MESSAGECOMPOSER_EXPORT RecipientLineNG : public KPIM::MultiplyingLine 0055 { 0056 Q_OBJECT 0057 public: 0058 explicit RecipientLineNG(QWidget *parent); 0059 ~RecipientLineNG() override = default; 0060 0061 void activate() override; 0062 [[nodiscard]] bool isActive() const override; 0063 0064 [[nodiscard]] bool isEmpty() const override; 0065 void clear() override; 0066 [[nodiscard]] bool canDeleteLineEdit() const override; 0067 0068 [[nodiscard]] bool isModified() const override; 0069 void clearModified() override; 0070 0071 [[nodiscard]] KPIM::MultiplyingLineData::Ptr data() const override; 0072 void setData(const KPIM::MultiplyingLineData::Ptr &data) override; 0073 0074 void fixTabOrder(QWidget *previous) override; 0075 [[nodiscard]] QWidget *tabOut() const override; 0076 0077 void setCompletionMode(KCompletion::CompletionMode mode) override; 0078 0079 [[nodiscard]] int setColumnWidth(int w) override; 0080 0081 // recipient specific methods 0082 [[nodiscard]] int recipientsCount() const; 0083 0084 void setRecipientType(Recipient::Type); 0085 [[nodiscard]] Recipient::Type recipientType() const; 0086 [[nodiscard]] QSharedPointer<Recipient> recipient() const; 0087 0088 void setIcon(const QIcon &icon, const QString &tooltip = QString()); 0089 0090 /** 0091 * Sets the config file used for storing recent addresses. 0092 */ 0093 void setRecentAddressConfig(KConfig *config); 0094 0095 void setEnableIndexSearch(bool enableIndexSearch); 0096 [[nodiscard]] bool enableIndexSearch() const; 0097 0098 void setEnableAkonadiSearch(bool enableAkonadiSearch); 0099 [[nodiscard]] bool enableAkonadiSearch() const; 0100 0101 [[nodiscard]] QString rawData() const; 0102 0103 Q_SIGNALS: 0104 void typeModified(RecipientLineNG *); 0105 void addRecipient(RecipientLineNG *, const QString &); 0106 void countChanged(); 0107 void iconClicked(); 0108 void activeChanged(); 0109 0110 protected Q_SLOTS: 0111 void slotEditingFinished(); 0112 void slotTypeModified(); 0113 void analyzeLine(const QString &); 0114 0115 protected: 0116 bool eventFilter(QObject *watched, QEvent *event) override; 0117 0118 private: 0119 MESSAGECOMPOSER_NO_EXPORT void dataFromFields(); 0120 MESSAGECOMPOSER_NO_EXPORT void fieldsFromData(); 0121 MESSAGECOMPOSER_NO_EXPORT void slotAddRecipient(const QString &); 0122 RecipientComboBox *mCombo = nullptr; 0123 RecipientLineEdit *mEdit = nullptr; 0124 int mRecipientsCount = 0; 0125 bool mModified = false; 0126 QSharedPointer<Recipient> mData; 0127 }; 0128 }