6#include "sieveactionenclose.h"
7#include "autocreatescripts/autocreatescriptutil_p.h"
8#include "editor/sieveeditorutil.h"
9#include "widgets/multilineedit.h"
11#include <KLineEditEventHandler>
12#include <KLocalizedString>
15#include "libksieveui_debug.h"
18#include <QXmlStreamReader>
20using namespace KSieveUi;
21SieveActionEnclose::SieveActionEnclose(SieveEditorGraphicalModeWidget *sieveGraphicalModeWidget,
QObject *parent)
22 : SieveAction(sieveGraphicalModeWidget, QStringLiteral(
"enclose"),
i18n(
"Enclose"), parent)
26QWidget *SieveActionEnclose::createParamWidget(
QWidget *parent)
const
28 auto w =
new QWidget(
parent);
29 auto grid =
new QGridLayout;
30 grid->setContentsMargins({});
33 auto lab =
new QLabel(
i18nc(
"@label:textbox",
"Subject:"));
34 grid->addWidget(lab, 0, 0);
36 auto subject =
new QLineEdit;
38 subject->setObjectName(QLatin1StringView(
"subject"));
40 grid->addWidget(subject, 0, 1);
42 lab =
new QLabel(
i18nc(
"@label:textbox",
"headers:"));
43 grid->addWidget(lab, 1, 0);
45 auto headers =
new QLineEdit;
47 headers->setObjectName(QLatin1StringView(
"headers"));
49 grid->addWidget(headers, 1, 1);
51 lab =
new QLabel(
i18nc(
"@label:textbox",
"text:"));
52 grid->addWidget(lab, 2, 0);
54 auto text =
new MultiLineEdit;
55 text->setObjectName(QLatin1StringView(
"text"));
56 connect(text, &MultiLineEdit::valueChanged,
this, &SieveActionEnclose::valueChanged);
57 grid->addWidget(text, 2, 1);
62void SieveActionEnclose::setParamWidgetValue(QXmlStreamReader &element, QWidget *w, QString &error)
65 const QStringView tagName = element.
name();
66 if (tagName == QLatin1StringView(
"tag")) {
68 if (tagValue == QLatin1StringView(
"headers")) {
69 const QString strValue = AutoCreateScriptUtil::strValue(element);
71 auto subject = w->
findChild<QLineEdit *>(QStringLiteral(
"headers"));
72 subject->setText(strValue);
74 }
else if (tagValue == QLatin1StringView(
"subject")) {
75 const QString strValue = AutoCreateScriptUtil::strValue(element);
77 auto headers = w->
findChild<QLineEdit *>(QStringLiteral(
"subject"));
78 headers->setText(strValue);
81 unknownTagValue(tagValue, error);
82 qCDebug(LIBKSIEVEUI_LOG) <<
" SieveActionEnclose::setParamWidgetValue unknown tag value:" <<
tagValue;
84 }
else if (tagName == QLatin1StringView(
"str")) {
85 auto edit = w->
findChild<MultiLineEdit *>(QStringLiteral(
"text"));
87 }
else if (tagName == QLatin1StringView(
"crlf")) {
90 }
else if (tagName == QLatin1StringView(
"comment")) {
94 unknownTag(tagName, error);
95 qCDebug(LIBKSIEVEUI_LOG) <<
" SieveActionEnclose::setParamWidgetValue unknown tagName " << tagName;
100QString SieveActionEnclose::code(QWidget *w)
const
102 QString result = QStringLiteral(
"enclose ");
103 const QLineEdit *subject = w->
findChild<QLineEdit *>(QStringLiteral(
"subject"));
104 const QString subjectStr = subject->
text();
105 if (!subjectStr.isEmpty()) {
106 result += QStringLiteral(
":subject \"%1\" ").
arg(subjectStr);
109 const QLineEdit *headers = w->
findChild<QLineEdit *>(QStringLiteral(
"headers"));
110 const QString headersStr = headers->
text();
111 if (!headersStr.isEmpty()) {
112 result += QStringLiteral(
":headers \"%1\" ").
arg(headersStr);
115 const MultiLineEdit *edit = w->
findChild<MultiLineEdit *>(QStringLiteral(
"text"));
117 if (!text.isEmpty()) {
118 result += QStringLiteral(
"text:%1").
arg(AutoCreateScriptUtil::createMultiLine(text));
120 result += QLatin1Char(
';');
126QStringList SieveActionEnclose::needRequires(QWidget * )
const
128 return QStringList() << QStringLiteral(
"enclose");
131bool SieveActionEnclose::needCheckIfServerHasCapability()
const
136QString SieveActionEnclose::serverNeedsCapability()
const
138 return QStringLiteral(
"enclose");
141QString SieveActionEnclose::help()
const
143 return i18n(
"Enclose action command is defined to allow an entire message to be enclosed as an attachment to a new message.");
146QUrl SieveActionEnclose::href()
const
148 return SieveEditorUtil::helpUrl(SieveEditorUtil::strToVariableName(name()));
151#include "moc_sieveactionenclose.cpp"
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
void catchReturnKey(QObject *lineEdit)
QByteArray tagValue(const Elem &elem, const char *keyName)
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
QString toPlainText() const const
QString arg(Args &&... args) const const
bool isEmpty() const const
QStringView name() const const
QString readElementText(ReadElementTextBehaviour behaviour)
bool readNextStartElement()
void skipCurrentElement()