6#include "sieveactionnotify.h"
7#include "autocreatescripts/autocreatescriptutil_p.h"
8#include "editor/sieveeditorutil.h"
9#include "widgets/selectimportancecombobox.h"
11#include <KLineEditEventHandler>
12#include <KLocalizedString>
15#include "libksieveui_debug.h"
18#include <QXmlStreamReader>
20using namespace KSieveUi;
22SieveActionNotify::SieveActionNotify(SieveEditorGraphicalModeWidget *sieveGraphicalModeWidget,
QObject *parent)
23 : SieveAction(sieveGraphicalModeWidget, QStringLiteral(
"notify"),
i18n(
"Notify"), parent)
27QWidget *SieveActionNotify::createParamWidget(
QWidget *parent)
const
29 auto w =
new QWidget(
parent);
30 auto lay =
new QHBoxLayout;
31 lay->setContentsMargins({});
34 auto importanceCombobox =
new SelectImportanceCombobox;
35 importanceCombobox->setObjectName(QLatin1StringView(
"importancecombo"));
36 connect(importanceCombobox, &SelectImportanceCombobox::valueChanged,
this, &SieveActionNotify::valueChanged);
37 lay->addWidget(importanceCombobox);
39 auto lab =
new QLabel(
i18nc(
"@label:textbox",
"message:"));
42 auto message =
new QLineEdit;
44 message->setObjectName(QLatin1StringView(
"message"));
46 lay->addWidget(message);
48 lab =
new QLabel(
i18nc(
"@label:textbox",
"method:"));
51 auto method =
new QLineEdit;
53 method->setObjectName(QLatin1StringView(
"method"));
54 lay->addWidget(method);
60void SieveActionNotify::setParamWidgetValue(QXmlStreamReader &element, QWidget *w, QString &error)
63 const QStringView tagName = element.
name();
64 if (tagName == QLatin1StringView(
"tag")) {
66 if (tagValue == QLatin1StringView(
"message")) {
67 const QString strValue = AutoCreateScriptUtil::strValue(element);
69 auto message = w->
findChild<QLineEdit *>(QStringLiteral(
"message"));
70 message->setText(AutoCreateScriptUtil::quoteStr(strValue));
72 }
else if (tagValue == QLatin1StringView(
"importance")) {
73 const QString strValue = AutoCreateScriptUtil::strValue(element);
75 auto importance = w->
findChild<SelectImportanceCombobox *>(QStringLiteral(
"importancecombo"));
76 importance->setCode(strValue, name(), error);
79 unknownTagValue(tagValue, error);
80 qCDebug(LIBKSIEVEUI_LOG) <<
" SieveActionNotify::setParamWidgetValue unknown tagValue" <<
tagValue;
82 }
else if (tagName == QLatin1StringView(
"crlf")) {
85 }
else if (tagName == QLatin1StringView(
"comment")) {
88 }
else if (tagName == QLatin1StringView(
"str")) {
89 auto method = w->
findChild<QLineEdit *>(QStringLiteral(
"method"));
90 method->setText(AutoCreateScriptUtil::quoteStr(element.
readElementText()));
92 unknownTag(tagName, error);
93 qCDebug(LIBKSIEVEUI_LOG) <<
" SieveActionNotify::setParamWidgetValue unknown tagName " << tagName;
98QString SieveActionNotify::code(QWidget *w)
const
100 QString result = QStringLiteral(
"notify");
101 const SelectImportanceCombobox *importance = w->
findChild<SelectImportanceCombobox *>(QStringLiteral(
"importancecombo"));
102 const QString importanceStr = importance->code();
103 if (!importanceStr.isEmpty()) {
104 result += QStringLiteral(
" :importance \"%1\"").
arg(importanceStr);
107 const QLineEdit *message = w->
findChild<QLineEdit *>(QStringLiteral(
"message"));
108 const QString messageStr = message->
text();
109 if (!messageStr.isEmpty()) {
110 result += QStringLiteral(
" :message \"%1\"").
arg(messageStr);
113 const QLineEdit *method = w->
findChild<QLineEdit *>(QStringLiteral(
"method"));
114 const QString methodStr = method->
text();
115 result += QStringLiteral(
" \"%1\";").
arg(methodStr);
120QString SieveActionNotify::serverNeedsCapability()
const
122 return QStringLiteral(
"enotify");
125bool SieveActionNotify::needCheckIfServerHasCapability()
const
130QString SieveActionNotify::help()
const
132 return i18n(
"The \"notify\" action specifies that a notification should be sent to a user.");
135QStringList SieveActionNotify::needRequires(QWidget *)
const
138 lst << QStringLiteral(
"enotify");
142QUrl SieveActionNotify::href()
const
144 return SieveEditorUtil::helpUrl(SieveEditorUtil::strToVariableName(name()));
147#include "moc_sieveactionnotify.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 arg(Args &&... args) const const
bool isEmpty() const const
QStringView name() const const
QString readElementText(ReadElementTextBehaviour behaviour)
bool readNextStartElement()
void skipCurrentElement()