Branch 'dev/sieve_kep14' - libksieve/ksieveui

Sandro Knauß knauss at kolabsys.com
Thu Mar 26 17:33:18 CET 2015


 libksieve/ksieveui/vacation/vacationcheckjob.cpp |    2 +-
 libksieve/ksieveui/vacation/vacationutils.cpp    |   16 ++++++++++++++++
 libksieve/ksieveui/vacation/vacationutils.h      |    6 +++++-
 3 files changed, 22 insertions(+), 2 deletions(-)

New commits:
commit 979c809208b574289674aafcd827a12af7402e26
Author: Sandro Knauß <knauss at kolabsys.com>
Date:   Thu Mar 26 17:32:40 2015 +0100

    show correct vacation status

diff --git a/libksieve/ksieveui/vacation/vacationcheckjob.cpp b/libksieve/ksieveui/vacation/vacationcheckjob.cpp
index 6f594db..aa5687f 100644
--- a/libksieve/ksieveui/vacation/vacationcheckjob.cpp
+++ b/libksieve/ksieveui/vacation/vacationcheckjob.cpp
@@ -87,7 +87,7 @@ void VacationCheckJob::slotGetResult(KManageSieve::SieveJob */*job*/, bool succe
     if (mKep14Support) {
         if (isVacationScipt(script)) {
             const QString &scriptName = mAvailableScripts[mScriptPos-1];
-            emit scriptActive(this, scriptName, mActiveScripts.contains(scriptName));
+            emit scriptActive(this, scriptName, mActiveScripts.contains(scriptName) && VacationUtils::vacationScriptActive(script));
             kDebug() << "vacation script found :)";
         } else if (isLastScript()) {
             mNoScriptFound = true;
diff --git a/libksieve/ksieveui/vacation/vacationutils.cpp b/libksieve/ksieveui/vacation/vacationutils.cpp
index 806600d..ae01e9d 100644
--- a/libksieve/ksieveui/vacation/vacationutils.cpp
+++ b/libksieve/ksieveui/vacation/vacationutils.cpp
@@ -175,6 +175,22 @@ bool KSieveUi::VacationUtils::foundVacationScript(const QString &script)
     return parser.parse() && vdx.commandFound();
 }
 
+bool KSieveUi::VacationUtils::vacationScriptActive(const QString &script)
+{
+    const QByteArray scriptUTF8 = script.trimmed().toUtf8();
+    kDebug() << "scriptUtf8 = \"" + scriptUTF8 +"\"";
+
+    if (scriptUTF8.isEmpty()) {
+      return false;
+    }
+
+    KSieve::Parser parser( scriptUTF8.begin(),
+                           scriptUTF8.begin() + scriptUTF8.length() );
+    VacationDataExtractor vdx;
+    parser.setScriptBuilder(&vdx);
+    return parser.parse() && vdx.commandFound() && vdx.active();
+}
+
 QString composeOldScript( const QString & messageText,
                                  const QString &subject,
                                  int notificationInterval,
diff --git a/libksieve/ksieveui/vacation/vacationutils.h b/libksieve/ksieveui/vacation/vacationutils.h
index d6b8c6f..daed23e 100644
--- a/libksieve/ksieveui/vacation/vacationutils.h
+++ b/libksieve/ksieveui/vacation/vacationutils.h
@@ -51,7 +51,11 @@ bool parseScript( const QString & script, bool &active, QString & messageText,
                   bool & sendForSpam, QString & domainName,
                   QDate & startDate, QDate & endDate );
 
-bool foundVacationScript(const QString & script);
+//returns if a vacation script is found in the sieve script
+bool foundVacationScript(const QString &script);
+
+// returns if the vacation script is active
+bool vacationScriptActive(const QString &script);
 
 QString mergeRequireLine(const QString &script1, const QString script2);
 




More information about the commits mailing list