6#include "sieveactionconvert.h"
7#include "autocreatescripts/autocreatescriptutil_p.h"
8#include "autocreatescripts/commonwidgets/selectconvertparameterwidget.h"
9#include "autocreatescripts/commonwidgets/selectmimetypecombobox.h"
11#include "libksieveui_debug.h"
12#include <KLocalizedString>
16#include <QXmlStreamReader>
18using namespace KSieveUi;
19SieveActionConvert::SieveActionConvert(SieveEditorGraphicalModeWidget *sieveGraphicalModeWidget,
QObject *parent)
20 : SieveAction(sieveGraphicalModeWidget, QStringLiteral(
"convert"),
i18n(
"Convert"), parent)
24QWidget *SieveActionConvert::createParamWidget(
QWidget *parent)
const
26 auto w =
new QWidget(
parent);
27 auto lay =
new QGridLayout;
28 lay->setContentsMargins({});
31 auto lab =
new QLabel(
i18nc(
"@label:textbox",
"From:"));
32 lay->addWidget(lab, 0, 0);
34 auto fromMimeType =
new SelectMimeTypeComboBox;
35 connect(fromMimeType, &SelectMimeTypeComboBox::valueChanged,
this, &SieveActionConvert::valueChanged);
36 fromMimeType->setObjectName(QLatin1StringView(
"from"));
37 lay->addWidget(fromMimeType, 0, 1);
39 lab =
new QLabel(
i18nc(
"@label:textbox",
"To:"));
40 lay->addWidget(lab, 0, 2);
42 auto toMimeType =
new SelectMimeTypeComboBox;
43 connect(toMimeType, &SelectMimeTypeComboBox::valueChanged,
this, &SieveActionConvert::valueChanged);
44 toMimeType->setObjectName(QLatin1StringView(
"to"));
45 lay->addWidget(toMimeType, 0, 3);
47 lab =
new QLabel(
i18nc(
"@label:textbox",
"Parameters:"));
48 lay->addWidget(lab, 1, 0);
50 auto params =
new SelectConvertParameterWidget;
51 connect(params, &SelectConvertParameterWidget::valueChanged,
this, &SieveActionConvert::valueChanged);
52 params->setObjectName(QLatin1StringView(
"params"));
53 lay->addWidget(params, 1, 1, 2, 3);
58void SieveActionConvert::setParamWidgetValue(QXmlStreamReader &element, QWidget *w, QString &error)
62 const QStringView tagName = element.
name();
63 if (tagName == QLatin1StringView(
"str")) {
65 auto fromMimeType = w->
findChild<SelectMimeTypeComboBox *>(QStringLiteral(
"from"));
67 }
else if (index == 1) {
68 auto toMimeType = w->
findChild<SelectMimeTypeComboBox *>(QStringLiteral(
"to"));
71 tooManyArguments(tagName, index, 2, error);
72 qCDebug(LIBKSIEVEUI_LOG) <<
" SieveActionConvert::setParamWidgetValue too many argument :" << index;
75 }
else if (tagName == QLatin1StringView(
"list")) {
76 auto params = w->
findChild<SelectConvertParameterWidget *>(QStringLiteral(
"params"));
77 params->setCode(AutoCreateScriptUtil::listValue(element), error);
78 }
else if (tagName == QLatin1StringView(
"crlf")) {
81 }
else if (tagName == QLatin1StringView(
"comment")) {
85 unknownTag(tagName, error);
86 qCDebug(LIBKSIEVEUI_LOG) <<
"SieveActionConvert::setParamWidgetValue unknown tag " << tagName;
91QString SieveActionConvert::code(QWidget *w)
const
93 QString result = QStringLiteral(
"convert ");
94 const SelectMimeTypeComboBox *fromMimeType = w->
findChild<SelectMimeTypeComboBox *>(QStringLiteral(
"from"));
95 const QString fromMimeTypeStr = fromMimeType->code();
96 result += QStringLiteral(
"%1 ").
arg(fromMimeTypeStr);
98 const SelectMimeTypeComboBox *toMimeType = w->
findChild<SelectMimeTypeComboBox *>(QStringLiteral(
"to"));
99 const QString toMimeTypeStr = toMimeType->code();
100 result += QStringLiteral(
"%1 ").
arg(toMimeTypeStr);
102 const SelectConvertParameterWidget *params = w->
findChild<SelectConvertParameterWidget *>(QStringLiteral(
"params"));
103 const QString paramsStr = params->code();
104 if (!paramsStr.isEmpty()) {
107 result += QLatin1Char(
';');
111QStringList SieveActionConvert::needRequires(QWidget *)
const
113 return QStringList() << QStringLiteral(
"convert");
116bool SieveActionConvert::needCheckIfServerHasCapability()
const
121QString SieveActionConvert::serverNeedsCapability()
const
123 return QStringLiteral(
"convert");
126QString SieveActionConvert::help()
const
129 "The \"convert\" action specifies that all body parts with a media type equal to \"media-type\" be converted to the media type in \"media-type\" using "
130 "conversion parameters.");
133QUrl SieveActionConvert::href()
const
135 return QUrl(QStringLiteral(
"https://tools.ietf.org/html/draft-ietf-sieve-convert-06"));
138#include "moc_sieveactionconvert.cpp"
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
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
QStringView name() const const
QString readElementText(ReadElementTextBehaviour behaviour)
bool readNextStartElement()
void skipCurrentElement()