6#include "sieveactionaddheader.h"
7#include "autocreatescripts/autocreatescriptutil_p.h"
8#include "widgets/selectaddheaderpositioncombobox.h"
9#include <KLineEditEventHandler>
11#include <KLocalizedString>
14#include "libksieveui_debug.h"
19#include <QXmlStreamReader>
21using namespace KSieveUi;
23SieveActionAddHeader::SieveActionAddHeader(SieveEditorGraphicalModeWidget *sieveGraphicalModeWidget,
QObject *parent)
24 : SieveActionAbstractEditHeader(sieveGraphicalModeWidget, QStringLiteral(
"addheader"),
i18n(
"Add header"), parent)
28QWidget *SieveActionAddHeader::createParamWidget(
QWidget *parent)
const
30 auto w =
new QWidget(
parent);
31 auto grid =
new QGridLayout;
32 grid->setContentsMargins({});
35 auto combo =
new SelectAddHeaderPositionCombobox;
36 combo->setObjectName(QLatin1StringView(
"selectposition"));
37 connect(combo, &SelectAddHeaderPositionCombobox::valueChanged,
this, &SieveActionAddHeader::valueChanged);
38 grid->addWidget(combo, 0, 0);
40 auto lab =
new QLabel(
i18nc(
"@label:textbox",
"header:"));
41 grid->addWidget(lab, 0, 1);
43 auto headerEdit =
new QLineEdit;
46 headerEdit->setObjectName(QLatin1StringView(
"headeredit"));
47 grid->addWidget(headerEdit, 0, 2);
49 lab =
new QLabel(
i18nc(
"@label:textbox",
"value:"));
50 grid->addWidget(lab, 1, 1);
52 auto valueEdit =
new QLineEdit;
55 valueEdit->setObjectName(QLatin1StringView(
"valueedit"));
56 grid->addWidget(valueEdit, 1, 2);
61void SieveActionAddHeader::setParamWidgetValue(QXmlStreamReader &element, QWidget *w, QString &error)
65 const QStringView tagName = element.
name();
66 if (tagName == QLatin1StringView(
"tag")) {
67 auto combo = w->
findChild<SelectAddHeaderPositionCombobox *>(QStringLiteral(
"selectposition"));
68 combo->setCode(AutoCreateScriptUtil::tagValue(element.
readElementText()), name(), error);
69 }
else if (tagName == QLatin1StringView(
"str")) {
71 auto edit = w->
findChild<QLineEdit *>(QStringLiteral(
"headeredit"));
73 }
else if (index == 1) {
74 auto value = w->
findChild<QLineEdit *>(QStringLiteral(
"valueedit"));
75 value->setText(AutoCreateScriptUtil::quoteStr(element.
readElementText()));
77 tooManyArguments(tagName, index, 2, error);
78 qCDebug(LIBKSIEVEUI_LOG) <<
" SieveActionAddHeader::setParamWidgetValue too many argument :" << index;
81 }
else if (tagName == QLatin1StringView(
"crlf")) {
84 }
else if (tagName == QLatin1StringView(
"comment")) {
88 unknownTag(tagName, error);
89 qCDebug(LIBKSIEVEUI_LOG) <<
"SieveActionAddHeader::setParamWidgetValue unknown tag " << tagName;
94QString SieveActionAddHeader::code(QWidget *w)
const
96 const SelectAddHeaderPositionCombobox *combo = w->
findChild<SelectAddHeaderPositionCombobox *>(QStringLiteral(
"selectposition"));
97 const QString position = combo->code();
99 const QLineEdit *edit = w->
findChild<QLineEdit *>(QStringLiteral(
"headeredit"));
100 const QString headerStr = edit->
text();
102 const QLineEdit *value = w->
findChild<QLineEdit *>(QStringLiteral(
"valueedit"));
103 const QString valueStr = value->
text();
105 if (position.isEmpty()) {
106 return QStringLiteral(
"addheader \"%1\" \"%2\";").arg(headerStr, valueStr);
108 return QStringLiteral(
"addheader %1 \"%2\" \"%3\";").arg(position, headerStr, valueStr);
112QString SieveActionAddHeader::help()
const
114 return i18n(
"The addheader action adds a header field to the existing message header.");
117QUrl SieveActionAddHeader::href()
const
119 return QUrl(QStringLiteral(
"https://tools.ietf.org/html/rfc5293"));
122#include "moc_sieveactionaddheader.cpp"
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
void catchReturnKey(QObject *lineEdit)
void textChanged(const QString &text)
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
T findChild(const QString &name, Qt::FindChildOptions options) const const
QObject * parent() const const
QStringView name() const const
QString readElementText(ReadElementTextBehaviour behaviour)
bool readNextStartElement()
void skipCurrentElement()