6 #include "selectheadertypecombobox.h" 7 #include "autocreatescripts/autocreatescriptutil_p.h" 8 #include <KLocalizedString> 9 #include <Libkdepim/LineEditCatchReturnKey> 13 #include <QPushButton> 15 #include <KConfigGroup> 16 #include <KSharedConfig> 17 #include <QDialogButtonBox> 18 #include <QHBoxLayout> 20 #include <QVBoxLayout> 24 static const char selectMultipleHeaders[] =
I18N_NOOP(
"Select multiple headers...");
26 SelectHeadersDialog::SelectHeadersDialog(
QWidget *parent)
29 setWindowTitle(
i18nc(
"@title:window",
"Headers"));
32 buttonBox->setObjectName(QStringLiteral(
"buttonbox"));
43 lay->setContentsMargins({});
44 mainLayout->addLayout(lay);
45 mListWidget =
new SelectHeadersWidget(
this);
46 mListWidget->setObjectName(QStringLiteral(
"listwidget"));
47 lay->addWidget(mListWidget);
49 auto lab =
new QLabel(
i18n(
"Add new header:"),
this);
50 lab->setObjectName(QStringLiteral(
"label"));
57 mNewHeader->setObjectName(QStringLiteral(
"newheader"));
58 mNewHeader->setClearButtonEnabled(
true);
61 mNewHeader->setClearButtonEnabled(
true);
64 mAddNewHeader->setObjectName(QStringLiteral(
"addnewheader"));
65 mAddNewHeader->setEnabled(
false);
70 hbox->addWidget(mNewHeader);
71 hbox->addWidget(mAddNewHeader);
75 mainLayout->addWidget(buttonBox);
80 SelectHeadersDialog::~SelectHeadersDialog()
85 void SelectHeadersDialog::readConfig()
88 const QSize size = group.readEntry(
"Size",
QSize(400, 300));
94 void SelectHeadersDialog::writeConfig()
97 group.writeEntry(
"Size", size());
101 void SelectHeadersDialog::slotNewHeaderTextChanged(
const QString &text)
106 void SelectHeadersDialog::slotAddNewHeader()
110 mListWidget->addNewHeader(headerText);
117 mListWidget->setListHeaders(lst, selectedHeaders);
120 QString SelectHeadersDialog::headers()
const 122 return mListWidget->headers();
125 SelectHeadersWidget::SelectHeadersWidget(
QWidget *parent)
130 SelectHeadersWidget::~SelectHeadersWidget()
134 void SelectHeadersWidget::addNewHeader(
const QString &header)
136 const int numberOfItem = count();
137 for (
int i = 0; i < numberOfItem; ++i) {
145 item->setData(HeaderId, header);
153 while (i.hasNext()) {
155 if (!i.value().isEmpty()) {
157 item->
setData(HeaderId, i.key());
158 if (selectedHeaders.
contains(i.key())) {
165 for (
const QString &header : selectedHeaders) {
168 item->setData(HeaderId, header);
174 QString SelectHeadersWidget::headers()
const 177 bool selected =
false;
178 const int numberOfItem = count();
179 for (
int i = 0; i < numberOfItem; ++i) {
195 SelectHeaderTypeComboBox::SelectHeaderTypeComboBox(
bool onlyEnvelopType,
QWidget *parent)
199 lineEdit()->setClearButtonEnabled(
true);
202 connect(
this, &SelectHeaderTypeComboBox::textActivated,
this, &SelectHeaderTypeComboBox::slotSelectItem);
203 connect(
this, &SelectHeaderTypeComboBox::editTextChanged,
this, &SelectHeaderTypeComboBox::valueChanged);
204 connect(
this, QOverload<int>::of(&SelectHeaderTypeComboBox::activated),
this, &SelectHeaderTypeComboBox::valueChanged);
207 SelectHeaderTypeComboBox::~SelectHeaderTypeComboBox()
211 void SelectHeaderTypeComboBox::changeReadOnlyStatus()
213 const bool readOnly = (currentIndex() > 0);
214 lineEdit()->setReadOnly(readOnly);
215 lineEdit()->setClearButtonEnabled(!readOnly);
218 void SelectHeaderTypeComboBox::slotSelectItem(
const QString &str)
220 changeReadOnlyStatus();
221 if (str ==
i18n(selectMultipleHeaders)) {
223 dlg->setListHeaders(mHeaderMap, AutoCreateScriptUtil::createListFromString(mCode));
225 mCode = dlg->headers();
226 lineEdit()->setText(dlg->headers());
227 Q_EMIT valueChanged();
229 lineEdit()->setText(mCode);
237 void SelectHeaderTypeComboBox::headerMap(
bool onlyEnvelopType)
240 mHeaderMap.
insert(QStringLiteral(
"from"),
i18n(
"From"));
241 mHeaderMap.
insert(QStringLiteral(
"to"),
i18n(
"To"));
242 mHeaderMap.
insert(QStringLiteral(
"Reply-To"),
i18n(
"Reply To"));
243 mHeaderMap.
insert(QStringLiteral(
"cc"),
i18n(
"Cc"));
244 mHeaderMap.
insert(QStringLiteral(
"bcc"),
i18n(
"Bcc"));
245 mHeaderMap.
insert(QStringLiteral(
"Resent-From"),
i18n(
"Resent From"));
246 mHeaderMap.
insert(QStringLiteral(
"Resent-To"),
i18n(
"Resent To"));
247 mHeaderMap.
insert(QStringLiteral(
"sender"),
i18n(
"Sender"));
248 if (!onlyEnvelopType) {
249 mHeaderMap.
insert(QStringLiteral(
"subject"),
i18n(
"Subject"));
250 mHeaderMap.
insert(QStringLiteral(
"Date"),
i18n(
"Date"));
251 mHeaderMap.
insert(QStringLiteral(
"Message-ID"),
i18n(
"Message Id"));
252 mHeaderMap.
insert(QStringLiteral(
"Content-Type"),
i18n(
"Content type"));
256 void SelectHeaderTypeComboBox::initialize(
bool onlyEnvelopType)
258 headerMap(onlyEnvelopType);
260 while (i.hasNext()) {
262 addItem(i.value(), i.key());
264 addItem(
i18n(selectMultipleHeaders));
267 QString SelectHeaderTypeComboBox::code()
const 272 if (str ==
i18n(selectMultipleHeaders)) {
282 void SelectHeaderTypeComboBox::setCode(
const QString &code)
285 bool foundHeaders =
false;
286 while (i.hasNext()) {
288 if (i.key() == code) {
289 const int index = findData(i.key());
290 setCurrentIndex(index);
291 lineEdit()->setText(i.value());
299 setCurrentIndex(count() - 1);
303 lineEdit()->setText(code);
306 changeReadOnlyStatus();
bool isValid() const const
bool contains(const Key &key) const const
bool contains(const QString &str, Qt::CaseSensitivity cs) const const
KCRASH_EXPORT void initialize()
void textChanged(const QString &text)
static KSharedConfig::Ptr openStateConfig(const QString &fileName=QString())
QString & insert(int position, QChar ch)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
void setObjectName(const QString &name)
bool isEmpty() const const
QString trimmed() const const
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const const
QString i18n(const char *text, const TYPE &arg...)
char * toString(const T &value)
QIcon fromTheme(const QString &name)
QString toString() const const
QString text() const const