[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdepim] libksieve/ksieveui/autocreatescripts: Add support for addflags in keep actions
From: Montel Laurent <montel () kde ! org>
Date: 2013-07-31 20:46:57
Message-ID: E1V4dIP-0006wa-Jz () scm ! kde ! org
[Download RAW message or body]
Git commit 9c86e1e3747021539c1bf3062c7c0754c2d93e28 by Montel Laurent.
Committed on 31/07/2013 at 20:46.
Pushed by mlaurent into branch 'master'.
Add support for addflags in keep actions
M +1 -1 libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionfileinto.cpp
M +75 -2 libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.cpp
M +6 -0 libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.h
A +9 -0 libksieve/ksieveui/autocreatescripts/tests/scripts/keep.siv
http://commits.kde.org/kdepim/9c86e1e3747021539c1bf3062c7c0754c2d93e28
diff --git a/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionfileinto.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionfileinto.cpp index \
62ea130..eab03f0 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionfileinto.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionfileinto.cpp
@@ -24,7 +24,7 @@
#include <QHBoxLayout>
#include <QDebug>
#include <QDomNode>
-
+//Add support for adding flags
using namespace KSieveUi;
SieveActionFileInto::SieveActionFileInto(QObject *parent)
: SieveAction(QLatin1String("fileinto"), i18n("File Into"), parent)
diff --git a/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.cpp index \
ca162ab..4c801e9 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.cpp
@@ -16,12 +16,21 @@
*/
#include "sieveactionkeep.h"
+#include "widgets/selectflagswidget.h"
+#include "autocreatescripts/autocreatescriptutil_p.h"
+#include "autocreatescripts/sieveeditorgraphicalmodewidget.h"
+
+
#include <KLocale>
+#include <QLabel>
+#include <QHBoxLayout>
+#include <QDomNode>
using namespace KSieveUi;
SieveActionKeep::SieveActionKeep(QObject *parent)
: SieveAction(QLatin1String("keep"), i18n("Keep"), parent)
{
+ mHasFlagSupport = \
SieveEditorGraphicalModeWidget::sieveCapabilities().contains(QLatin1String("imapflags"));
}
SieveAction* SieveActionKeep::newAction()
@@ -29,9 +38,19 @@ SieveAction* SieveActionKeep::newAction()
return new SieveActionKeep;
}
-QString SieveActionKeep::code(QWidget *) const
+QString SieveActionKeep::code(QWidget *w) const
{
- return QLatin1String("keep;");
+ if (mHasFlagSupport) {
+ const SelectFlagsWidget *flagsWidget = w->findChild<SelectFlagsWidget*>( \
QLatin1String("flagswidget") ); + const QString flagCode = \
flagsWidget->code(); + if (flagCode.isEmpty()) {
+ return QLatin1String("keep;");
+ } else {
+ return QLatin1String("keep :flags") + QLatin1Char(' ') + flagCode;
+ }
+ } else {
+ return QLatin1String("keep;");
+ }
}
QString SieveActionKeep::help() const
@@ -39,4 +58,58 @@ QString SieveActionKeep::help() const
return i18n("The \"keep\" action is whatever action is taken in lieu of all \
other actions, if no filtering happens at all; generally, this simply means to file \
the message into the user's main mailbox."); }
+QWidget *SieveActionKeep::createParamWidget( QWidget *parent ) const
+{
+ if (mHasFlagSupport) {
+ QWidget *w = new QWidget(parent);
+ QHBoxLayout *lay = new QHBoxLayout;
+ lay->setMargin(0);
+ w->setLayout(lay);
+ QLabel *addFlags = new QLabel(i18n("Add flags:"));
+ lay->addWidget(addFlags);
+
+ SelectFlagsWidget *flagsWidget = new SelectFlagsWidget;
+ flagsWidget->setObjectName(QLatin1String("flagswidget"));
+ lay->addWidget(flagsWidget);
+ return w;
+ } else {
+ return 0;
+ }
+}
+
+void SieveActionKeep::setParamWidgetValue( const QDomElement &element, QWidget *w )
+{
+ if (mHasFlagSupport) {
+ QDomNode node = element.firstChild();
+ while (!node.isNull()) {
+ QDomElement e = node.toElement();
+ if (!e.isNull()) {
+ const QString tagName = e.tagName();
+ if (tagName == QLatin1String("list")) {
+ SelectFlagsWidget *flagsWidget = \
w->findChild<SelectFlagsWidget*>( QLatin1String("flagswidget") ); + \
flagsWidget->setFlags(AutoCreateScriptUtil::listValue(e)); + } else if \
(tagName == QLatin1String("str")) { + SelectFlagsWidget \
*flagsWidget = w->findChild<SelectFlagsWidget*>( QLatin1String("flagswidget") ); + \
flagsWidget->setFlags(QStringList()<<e.text()); + } else if (tagName \
== QLatin1String("tag") && e.text() == QLatin1String("flags")) { + \
//nothing :) + } else {
+ qDebug()<<" SieveActionAbstractFlags::setParamWidgetValue \
unknown tag :"<<tagName; + }
+ }
+ node = node.nextSibling();
+ }
+ } else {
+ qDebug()<<" Server doesn't support imapflags";
+ }
+}
+
+QStringList SieveActionKeep::needRequires(QWidget *) const
+{
+ QStringList requiresLst;
+ if (mHasFlagSupport)
+ requiresLst << QLatin1String("imapflags");
+ return requiresLst;
+}
+
#include "sieveactionkeep.moc"
diff --git a/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.h \
b/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.h index \
f12754e..51007c3 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.h
+++ b/libksieve/ksieveui/autocreatescripts/sieveactions/sieveactionkeep.h
@@ -28,6 +28,12 @@ public:
QString code(QWidget *) const;
QString help() const;
+ QWidget *createParamWidget( QWidget *parent ) const;
+ void setParamWidgetValue( const QDomElement &element, QWidget *w );
+ QStringList needRequires(QWidget *) const;
+
+private:
+ bool mHasFlagSupport;
};
}
#endif // SIEVEACTIONKEEP_H
diff --git a/libksieve/ksieveui/autocreatescripts/tests/scripts/keep.siv \
b/libksieve/ksieveui/autocreatescripts/tests/scripts/keep.siv new file mode 100644
index 0000000..f40d28f
--- /dev/null
+++ b/libksieve/ksieveui/autocreatescripts/tests/scripts/keep.siv
@@ -0,0 +1,9 @@
+require "date";
+require "imapflags";
+
+#SCRIPTNAME: xxx
+if date :is "" "year" "0000"
+{
+ keep :flags [ "\\Flagged", "\\Seen" ];
+ keep;
+} "
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic