[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdepim] libksieve/ksieveui: implement spamtest/spamtestplus extension.
From:       Montel Laurent <montel () kde ! org>
Date:       2013-05-06 20:38:14
Message-ID: 20130506203814.1682AA605B () git ! kde ! org
[Download RAW message or body]

Git commit 4364b0fd0a44acf4a18177d8e46d76eb2e3e2c6b by Montel Laurent.
Committed on 06/05/2013 at 22:37.
Pushed by mlaurent into branch 'master'.

implement spamtest/spamtestplus extension.

Create selectcomparatorcombobox

M  +2    -0    libksieve/ksieveui/CMakeLists.txt
M  +2    -1    libksieve/ksieveui/autocreatescripts/sieveactionwidgetlister.cpp
M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.cpp
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.h
M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.cpp
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.h
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.cpp
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.h
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.cpp
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.h
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.cpp
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.h
 M  +2    -0    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionlist.cpp
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.cpp
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.h
 M  +24   -26   libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.cpp
 M  +1    -1    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.h
 A  +102  -0    libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtestplus.cpp \
[License: GPL (v2)] C  +6    -6    \
libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtestplus.h \
[from: libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.h \
- 079% similarity] A  +52   -0    \
libksieve/ksieveui/autocreatescripts/sieveconditions/widgets/selectcomparatorcombobox.cpp \
[License: GPL (v2)] C  +11   -21   \
libksieve/ksieveui/autocreatescripts/sieveconditions/widgets/selectcomparatorcombobox.h \
[from: libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.h - \
055% similarity] M  +3    -2    \
libksieve/ksieveui/autocreatescripts/sieveconditionwidgetlister.cpp M  +3    -1    \
libksieve/ksieveui/autocreatescripts/tests/autocreatescripts_gui.cpp

http://commits.kde.org/kdepim/4364b0fd0a44acf4a18177d8e46d76eb2e3e2c6b

diff --git a/libksieve/ksieveui/CMakeLists.txt b/libksieve/ksieveui/CMakeLists.txt
index 761610e..2f8ae90 100644
--- a/libksieve/ksieveui/CMakeLists.txt
+++ b/libksieve/ksieveui/CMakeLists.txt
@@ -65,12 +65,14 @@ set(ksieveui_LIB_SRCS
   autocreatescripts/sieveconditions/sieveconditioncurrentdate.cpp
   autocreatescripts/sieveconditions/sieveconditionmailboxexists.cpp
   autocreatescripts/sieveconditions/sieveconditionspamtest.cpp
+  autocreatescripts/sieveconditions/sieveconditionspamtestplus.cpp
   autocreatescripts/sieveconditions/widgets/selectdatewidget.cpp
   autocreatescripts/sieveconditions/widgets/selectmatchtypecombobox.cpp
   autocreatescripts/sieveconditions/widgets/selectaddresspartcombobox.cpp
   autocreatescripts/sieveconditions/widgets/selectheadertypecombobox.cpp
   autocreatescripts/sieveconditions/widgets/selectbodytypewidget.cpp
   autocreatescripts/sieveconditions/widgets/selectrelationalmatchtype.cpp
+  autocreatescripts/sieveconditions/widgets/selectcomparatorcombobox.cpp
 )
 
 kde4_add_kcfg_files(ksieveui_LIB_SRCS settings.kcfgc)
diff --git a/libksieve/ksieveui/autocreatescripts/sieveactionwidgetlister.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveactionwidgetlister.cpp index \
                4192f7f..0ae0739 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveactionwidgetlister.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveactionwidgetlister.cpp
@@ -66,13 +66,14 @@ void SieveActionWidget::generatedScript(QString &script, \
QStringList &requires)  const int index = mComboBox->currentIndex();
     if (index != mComboBox->count()-1) {
         KSieveUi::SieveAction *widgetAction = \
mActionList.at(mComboBox->currentIndex()); +        QWidget *currentWidget = \
mLayout->itemAtPosition( 1, 2 )->widget();  const QStringList lstRequires = \
widgetAction->needRequires();  Q_FOREACH (const QString &r, lstRequires) {
             if (!requires.contains(r)) {
                 requires.append(r);
             }
         }
-        script += INDENTACTION + widgetAction->code(mLayout->itemAtPosition( 1, 2 \
)->widget()) + QLatin1Char('\n'); +        script += INDENTACTION + \
widgetAction->code(currentWidget) + QLatin1Char('\n');  }
 }
 
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.cpp index \
                2412784..23ffc94 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.cpp
@@ -55,7 +55,7 @@ QString SieveCondition::code(QWidget *parent) const
     return QString();
 }
 
-QStringList SieveCondition::needRequires() const
+QStringList SieveCondition::needRequires(QWidget *parent) const
 {
     return QStringList();
 }
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.h \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.h index \
                6d54d1e..5413690 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.h
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sievecondition.h
@@ -39,7 +39,7 @@ public:
 
     virtual QString code(QWidget *parent) const;
 
-    virtual QStringList needRequires() const;
+    virtual QStringList needRequires(QWidget *parent) const;
 
     virtual bool needCheckIfServerHasCapability() const;
 
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.cpp index \
                090f854..91deb26 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.cpp
@@ -74,7 +74,7 @@ QString SieveConditionBody::code(QWidget *w) const
     return (isNegative ? QLatin1String("not ") : QString()) + \
QString::fromLatin1("body %1 %2 \
\"%3\"").arg(bodyValue).arg(matchValue).arg(editValue);  }
 
-QStringList SieveConditionBody::needRequires() const
+QStringList SieveConditionBody::needRequires(QWidget *) const
 {
     return QStringList() << QLatin1String("body");
 }
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.h \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.h index \
                f3b28d1..2a42bea 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.h
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionbody.h
@@ -37,7 +37,7 @@ public:
 
     QString code(QWidget *parent) const;
 
-    QStringList needRequires() const;
+    QStringList needRequires(QWidget *parent) const;
 
     bool needCheckIfServerHasCapability() const;
 
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.cpp \
                index 819e802..4861806 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.cpp
                
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.cpp
 @@ -75,7 +75,7 @@ QString SieveConditionCurrentDate::serverNeedsCapability() const
     return QLatin1String("date");
 }
 
-QStringList SieveConditionCurrentDate::needRequires() const
+QStringList SieveConditionCurrentDate::needRequires(QWidget *) const
 {
     return QStringList() << QLatin1String("date");
 }
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.h \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.h \
                index 47e59ce..e480c64 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.h
                
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditioncurrentdate.h
 @@ -40,7 +40,7 @@ public:
 
     QString serverNeedsCapability() const;
 
-    QStringList needRequires() const;
+    QStringList needRequires(QWidget *parent) const;
 };
 }
 
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.cpp index \
                e6e38f8..a886525 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.cpp
@@ -88,7 +88,7 @@ QString SieveConditionDate::serverNeedsCapability() const
     return QLatin1String("date");
 }
 
-QStringList SieveConditionDate::needRequires() const
+QStringList SieveConditionDate::needRequires(QWidget *) const
 {
     return QStringList() << QLatin1String("date");
 }
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.h \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.h index \
                bebdf13..3133a42 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.h
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.h
@@ -40,7 +40,7 @@ public:
 
     QString serverNeedsCapability() const;
 
-    QStringList needRequires() const;
+    QStringList needRequires(QWidget *parent) const;
 };
 }
 
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.cpp \
                index e5f0914..fdfc45a 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.cpp
@@ -91,7 +91,7 @@ QString SieveConditionEnvelope::code(QWidget *w) const
     return (isNegative ? QLatin1String("not ") : QString()) + \
QString::fromLatin1("envelope %1 %2 %3 \
%4").arg(selectAddressPartStr).arg(matchTypeStr).arg(selectHeaderTypeStr).arg(addressStr);
  }
 
-QStringList SieveConditionEnvelope::needRequires() const
+QStringList SieveConditionEnvelope::needRequires(QWidget *) const
 {
     return QStringList() << QLatin1String("envelope");
 }
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.h \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.h index \
                cef8e1c..fca4088 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.h
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionenvelope.h
@@ -37,7 +37,7 @@ public:
 
     QString code(QWidget *w) const;
 
-    QStringList needRequires() const;
+    QStringList needRequires(QWidget *parent) const;
 
     bool needCheckIfServerHasCapability() const;
 
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionlist.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionlist.cpp index \
                0bdbb18..aa03e8a 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionlist.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionlist.cpp
@@ -32,6 +32,7 @@
 #include "sieveconditionmailboxexists.h"
 
 #include "sieveconditionspamtest.h"
+#include "sieveconditionspamtestplus.h"
 
 QList<KSieveUi::SieveCondition *> KSieveUi::SieveConditionList::conditionList()
 {
@@ -47,6 +48,7 @@ QList<KSieveUi::SieveCondition *> \
KSieveUi::SieveConditionList::conditionList()  list.append(new \
KSieveUi::SieveConditionCurrentDate);  list.append(new \
KSieveUi::SieveConditionMailboxExists);  list.append(new \
KSieveUi::SieveConditionSpamTest); +    list.append(new \
KSieveUi::SieveConditionSpamTestPlus);  return list;
 }
 
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.cpp
 index 7479cdc..735dacd 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.cpp
                
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.cpp
 @@ -58,7 +58,7 @@ QString SieveConditionMailboxExists::code(QWidget *w) const
     return QString::fromLatin1("mailboxexists \"%1\"").arg(editValue);
 }
 
-QStringList SieveConditionMailboxExists::needRequires() const
+QStringList SieveConditionMailboxExists::needRequires(QWidget *) const
 {
     return QStringList() << QLatin1String("mailbox");
 }
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.h \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.h \
                index 9a510d4..2b0cd4b 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.h
                
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionmailboxexists.h
 @@ -37,7 +37,7 @@ public:
 
     QString code(QWidget *parent) const;
 
-    QStringList needRequires() const;
+    QStringList needRequires(QWidget *parent) const;
 
     bool needCheckIfServerHasCapability() const;
 
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.cpp \
                index 47514ca..6b9367b 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.cpp
@@ -16,14 +16,14 @@
 */
 
 #include "sieveconditionspamtest.h"
-#include "widgets/selectmatchtypecombobox.h"
-#include "widgets/selectdatewidget.h"
+#include "widgets/selectrelationalmatchtype.h"
+#include "widgets/selectcomparatorcombobox.h"
 
 #include <KLocale>
-#include <KLineEdit>
 
 #include <QHBoxLayout>
 #include <QLabel>
+#include <QSpinBox>
 #include <QDebug>
 
 using namespace KSieveUi;
@@ -45,37 +45,34 @@ QWidget *SieveConditionSpamTest::createParamWidget( QWidget \
*parent ) const  lay->setMargin(0);
     w->setLayout(lay);
 
-    SelectMatchTypeComboBox *matchTypeCombo = new SelectMatchTypeComboBox;
-    matchTypeCombo->setObjectName(QLatin1String("matchtype"));
-    lay->addWidget(matchTypeCombo);
+    SelectRelationalMatchType *relation = new SelectRelationalMatchType;
+    relation->setObjectName(QLatin1String("relation"));
+    lay->addWidget(relation);
 
-    QLabel *lab = new QLabel(i18n("header"));
-    lay->addWidget(lab);
-
-    KLineEdit *header = new KLineEdit;
-    header->setObjectName(QLatin1String("header"));
-    lay->addWidget(header);
-
-    SelectDateWidget *dateWidget = new SelectDateWidget;
-    dateWidget->setObjectName(QLatin1String("datewidget"));
-    lay->addWidget(dateWidget);
+    SelectComparatorComboBox *comparator = new SelectComparatorComboBox;
+    comparator->setObjectName(QLatin1String("comparator"));
+    lay->addWidget(comparator);
 
+    QSpinBox *spinbox = new QSpinBox;
+    spinbox->setMaximum(10);
+    spinbox->setMinimum(0);
+    spinbox->setObjectName(QLatin1String("value"));
+    lay->addWidget(spinbox);
     return w;
 }
 
 QString SieveConditionSpamTest::code(QWidget *w) const
 {
-    const SelectMatchTypeComboBox *selectMatchCombobox = \
                w->findChild<SelectMatchTypeComboBox*>(QLatin1String("matchtype"));
-    bool isNegative = false;
-    const QString matchTypeStr = selectMatchCombobox->code(isNegative);
+    const SelectRelationalMatchType *relation = \
w->findChild<SelectRelationalMatchType*>( QLatin1String("relation") ); +    const \
QString relationStr = relation->code();  
-    const KLineEdit *header = w->findChild<KLineEdit*>(QLatin1String("header"));
-    const QString headerStr = header->text();
+    const SelectComparatorComboBox *comparator = \
w->findChild<SelectComparatorComboBox*>( QLatin1String("comparator") ); +    const \
QString comparatorStr = comparator->code();  
-    const SelectDateWidget *dateWidget = \
                w->findChild<SelectDateWidget*>(QLatin1String("datewidget"));
-    const QString dateWidgetStr = dateWidget->code();
+    const QSpinBox *spinbox = w->findChild<QSpinBox*>( QLatin1String("value") );
+    const QString value = QString::number(spinbox->value());
 
-    return (isNegative ? QLatin1String("not ") : QString()) + \
QString::fromLatin1("date %1 \"%2\" \
%3").arg(matchTypeStr).arg(headerStr).arg(dateWidgetStr); +    return \
QString::fromLatin1("spamtest %1 %2 \
\"%3\"").arg(relationStr).arg(comparatorStr).arg(value);  }
 
 bool SieveConditionSpamTest::needCheckIfServerHasCapability() const
@@ -88,9 +85,10 @@ QString SieveConditionSpamTest::serverNeedsCapability() const
     return QLatin1String("spamtest");
 }
 
-QStringList SieveConditionSpamTest::needRequires() const
+QStringList SieveConditionSpamTest::needRequires(QWidget *w) const
 {
-    return QStringList() << QLatin1String("spamtestplus");
+    const SelectComparatorComboBox *comparator = \
w->findChild<SelectComparatorComboBox*>( QLatin1String("comparator") ); +    return \
QStringList() << QLatin1String("spamtest") << QLatin1String("relational") << \
comparator->require();  }
 
 #include "sieveconditionspamtest.moc"
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.h \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.h index \
                3f5aefd..33de6e7 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.h
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.h
@@ -40,7 +40,7 @@ public:
 
     QString serverNeedsCapability() const;
 
-    QStringList needRequires() const;
+    QStringList needRequires(QWidget *parent) const;
 };
 }
 
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtestplus.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtestplus.cpp \
new file mode 100644 index 0000000..c660b40
--- /dev/null
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtestplus.cpp
 @@ -0,0 +1,102 @@
+/*
+  Copyright (c) 2013 Montel Laurent <montel@kde.org>
+
+  This program is free software; you can redistribute it and/or modify it
+  under the terms of the GNU General Public License, version 2, as
+  published by the Free Software Foundation.
+
+  This program is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#include "sieveconditionspamtestplus.h"
+#include "widgets/selectrelationalmatchtype.h"
+#include "widgets/selectcomparatorcombobox.h"
+
+#include <KLocale>
+
+#include <QHBoxLayout>
+#include <QSpinBox>
+#include <QCheckBox>
+#include <QDebug>
+
+using namespace KSieveUi;
+
+SieveConditionSpamTestPlus::SieveConditionSpamTestPlus(QObject *parent)
+    : SieveCondition(QLatin1String("spamtestplus"), i18n("SpamTestPlus extension"), \
parent) +{
+}
+
+SieveCondition *SieveConditionSpamTestPlus::newAction()
+{
+    return new SieveConditionSpamTestPlus;
+}
+
+QWidget *SieveConditionSpamTestPlus::createParamWidget( QWidget *parent ) const
+{
+    QWidget *w = new QWidget(parent);
+    QHBoxLayout *lay = new QHBoxLayout;
+    lay->setMargin(0);
+    w->setLayout(lay);
+
+    QCheckBox *percent = new QCheckBox(i18n("Percent"));
+    percent->setObjectName(QLatin1String("percent"));
+    lay->addWidget(percent);
+
+    SelectRelationalMatchType *relation = new SelectRelationalMatchType;
+    relation->setObjectName(QLatin1String("relation"));
+    lay->addWidget(relation);
+
+    SelectComparatorComboBox *comparator = new SelectComparatorComboBox;
+    comparator->setObjectName(QLatin1String("comparator"));
+    lay->addWidget(comparator);
+
+    QSpinBox *spinbox = new QSpinBox;
+    spinbox->setMaximum(100);
+    spinbox->setMinimum(0);
+    spinbox->setObjectName(QLatin1String("value"));
+    lay->addWidget(spinbox);
+    return w;
+}
+
+QString SieveConditionSpamTestPlus::code(QWidget *w) const
+{
+    const QCheckBox *checkbox = w->findChild<QCheckBox*>( QLatin1String("percent") \
); +    const QString percentStr = checkbox->isChecked() ? QLatin1String(":percent") \
: QString(); +
+    const SelectRelationalMatchType *relation = \
w->findChild<SelectRelationalMatchType*>( QLatin1String("relation") ); +    const \
QString relationStr = relation->code(); +
+    const SelectComparatorComboBox *comparator = \
w->findChild<SelectComparatorComboBox*>( QLatin1String("comparator") ); +    const \
QString comparatorStr = comparator->code(); +
+    const QSpinBox *spinbox = w->findChild<QSpinBox*>( QLatin1String("value") );
+    const QString value = QString::number(spinbox->value());
+
+    return QString::fromLatin1("spamtest %1 %2 %3 \
\"%4\"").arg(percentStr).arg(relationStr).arg(comparatorStr).arg(value); +}
+
+bool SieveConditionSpamTestPlus::needCheckIfServerHasCapability() const
+{
+    return true;
+}
+
+QString SieveConditionSpamTestPlus::serverNeedsCapability() const
+{
+    return QLatin1String("spamtestplus");
+}
+
+QStringList SieveConditionSpamTestPlus::needRequires(QWidget *w) const
+{
+    const SelectComparatorComboBox *comparator = \
w->findChild<SelectComparatorComboBox*>( QLatin1String("comparator") ); +    return \
QStringList() << QLatin1String("spamtestplus") << QLatin1String("relational") << \
comparator->require(); +}
+
+#include "sieveconditionspamtestplus.moc"
+
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.h \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtestplus.h \
similarity index 79% copy from \
libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.h copy to \
libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtestplus.h \
                index 3f5aefd..c49e3b9 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtest.h
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditionspamtestplus.h
 @@ -15,17 +15,17 @@
   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#ifndef SIEVECONDITIONSPAMTEST_H
-#define SIEVECONDITIONSPAMTEST_H
+#ifndef SIEVECONDITIONSPAMTESTPLUS_H
+#define SIEVECONDITIONSPAMTESTPLUS_H
 
 #include "sievecondition.h"
 
 namespace KSieveUi {
-class SieveConditionSpamTest : public SieveCondition
+class SieveConditionSpamTestPlus : public SieveCondition
 {
     Q_OBJECT
 public:
-    SieveConditionSpamTest(QObject *parent = 0);
+    SieveConditionSpamTestPlus(QObject *parent = 0);
 
     /**
      * Static function that creates a filter action of this type.
@@ -40,8 +40,8 @@ public:
 
     QString serverNeedsCapability() const;
 
-    QStringList needRequires() const;
+    QStringList needRequires(QWidget *parent) const;
 };
 }
 
-#endif // SIEVECONDITIONSPAMTEST_H
+#endif // SIEVECONDITIONSPAMTESTPLUS_H
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/widgets/selectcomparatorcombobox.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/widgets/selectcomparatorcombobox.cpp
 new file mode 100644
index 0000000..7a92a00
--- /dev/null
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/widgets/selectcomparatorcombobox.cpp
 @@ -0,0 +1,52 @@
+/*
+  Copyright (c) 2013 Montel Laurent <montel@kde.org>
+
+  This program is free software; you can redistribute it and/or modify it
+  under the terms of the GNU General Public License, version 2, as
+  published by the Free Software Foundation.
+
+  This program is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  General Public License for more details.
+
+  You should have received a copy of the GNU General Public License along
+  with this program; if not, write to the Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#include "selectcomparatorcombobox.h"
+#include "autocreatescripts/autocreatescriptdialog.h"
+
+SelectComparatorComboBox::SelectComparatorComboBox(QWidget *parent)
+    : KComboBox(parent)
+{
+    initialize();
+}
+
+SelectComparatorComboBox::~SelectComparatorComboBox()
+{
+}
+
+void SelectComparatorComboBox::initialize()
+{
+    Q_FOREACH (const QString &capability, \
KSieveUi::AutoCreateScriptDialog::sieveCapabilities()) { +        if \
(capability.startsWith(QLatin1String("comparator-"))) { +            QString \
str(capability); +            str.remove(QLatin1String("comparator-"));
+            addItem(str, capability);
+        }
+    }
+}
+
+QString SelectComparatorComboBox::require() const
+{
+    return itemData(currentIndex()).toString();
+}
+
+QString SelectComparatorComboBox::code() const
+{
+    return QString::fromLatin1(":comparator \"%1\"").arg(itemText(currentIndex()));
+}
+
+#include "selectcomparatorcombobox.moc"
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.h \
b/libksieve/ksieveui/autocreatescripts/sieveconditions/widgets/selectcomparatorcombobox.h
 similarity index 55%
copy from libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.h
copy to libksieve/ksieveui/autocreatescripts/sieveconditions/widgets/selectcomparatorcombobox.h
 index bebdf13..f486bba 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditions/sieveconditiondate.h
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditions/widgets/selectcomparatorcombobox.h
 @@ -15,33 +15,23 @@
   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#ifndef SIEVECONDITIONDATE_H
-#define SIEVECONDITIONDATE_H
+#ifndef SELECTCOMPARATORCOMBOBOX_H
+#define SELECTCOMPARATORCOMBOBOX_H
 
-#include "sievecondition.h"
+#include <KComboBox>
 
-namespace KSieveUi {
-class SieveConditionDate : public SieveCondition
+class SelectComparatorComboBox : public KComboBox
 {
     Q_OBJECT
 public:
-    SieveConditionDate(QObject *parent = 0);
+    explicit SelectComparatorComboBox(QWidget *parent = 0);
+    ~SelectComparatorComboBox();
 
-    /**
-     * Static function that creates a filter action of this type.
-     */
-    static SieveCondition *newAction();
+    QString code() const;
+    QString require() const;
 
-    QWidget *createParamWidget( QWidget *parent ) const;
-
-    QString code(QWidget *w) const;
-
-    bool needCheckIfServerHasCapability() const;
-
-    QString serverNeedsCapability() const;
-
-    QStringList needRequires() const;
+private:
+    void initialize();
 };
-}
 
-#endif // SIEVECONDITIONDATE_H
+#endif // SELECTCOMPARATORCOMBOBOX_H
diff --git a/libksieve/ksieveui/autocreatescripts/sieveconditionwidgetlister.cpp \
b/libksieve/ksieveui/autocreatescripts/sieveconditionwidgetlister.cpp index \
                6186128..64599d7 100644
--- a/libksieve/ksieveui/autocreatescripts/sieveconditionwidgetlister.cpp
+++ b/libksieve/ksieveui/autocreatescripts/sieveconditionwidgetlister.cpp
@@ -63,13 +63,14 @@ void SieveConditionWidget::generatedScript(QString &script, \
QStringList &require  const int index = mComboBox->currentIndex();
     if (index != mComboBox->count()-1) {
         KSieveUi::SieveCondition *widgetCondition = \
                mConditionList.at(mComboBox->currentIndex());
-        const QStringList lstRequires = widgetCondition->needRequires();
+        QWidget *currentWidget = mLayout->itemAtPosition( 1, 2 )->widget();
+        const QStringList lstRequires = \
widgetCondition->needRequires(currentWidget);  Q_FOREACH (const QString &r, \
lstRequires) {  if (!requires.contains(r)) {
                 requires.append(r);
             }
         }
-        script += mConditionList.at(mComboBox->currentIndex())->code(mLayout->itemAtPosition( \
1, 2 )->widget()) + QLatin1Char('\n'); +        script += \
mConditionList.at(mComboBox->currentIndex())->code(currentWidget) + \
QLatin1Char('\n');  }
 }
 
diff --git a/libksieve/ksieveui/autocreatescripts/tests/autocreatescripts_gui.cpp \
b/libksieve/ksieveui/autocreatescripts/tests/autocreatescripts_gui.cpp index \
                fcde484..82f951e 100644
--- a/libksieve/ksieveui/autocreatescripts/tests/autocreatescripts_gui.cpp
+++ b/libksieve/ksieveui/autocreatescripts/tests/autocreatescripts_gui.cpp
@@ -42,7 +42,9 @@ int main (int argc, char **argv)
             <<QLatin1String("date")
             <<QLatin1String("copy")
             <<QLatin1String("mailbox")
-            <<QLatin1String("spamtest");
+            <<QLatin1String("spamtest")
+            <<QLatin1String("spamtestplus")
+            <<QLatin1String("comparator-i;ascii-numeric");
     dialog->setSieveCapabilities(capabilities);
     if (dialog->exec() ) {
         QString requires;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic