[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