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()