Changeset View
Changeset View
Standalone View
Standalone View
libksieve/ksieveui/managescriptsjob/parseuserscriptjob.cpp
Show All 18 Lines | |||||
#include "parseuserscriptjob.h" | #include "parseuserscriptjob.h" | ||||
#include "ksieveui/scriptsparsing/parsingutil.h" | #include "ksieveui/scriptsparsing/parsingutil.h" | ||||
#include <kmanagesieve/sievejob.h> | #include <kmanagesieve/sievejob.h> | ||||
#include <KLocalizedString> | #include <KLocalizedString> | ||||
using namespace KSieveUi; | using namespace KSieveUi; | ||||
ParseUserScriptJob::ParseUserScriptJob(QObject *parent) | ParseUserScriptJob::ParseUserScriptJob(const KUrl &url, QObject *parent) | ||||
: QObject(parent), | : QObject(parent), | ||||
mSieveJob(0) | mSieveJob(0) | ||||
, mCurrentUrl(url) | |||||
{ | { | ||||
} | } | ||||
ParseUserScriptJob::~ParseUserScriptJob() | ParseUserScriptJob::~ParseUserScriptJob() | ||||
{ | { | ||||
if ( mSieveJob ) | if ( mSieveJob ) | ||||
mSieveJob->kill(); | mSieveJob->kill(); | ||||
mSieveJob = 0; | mSieveJob = 0; | ||||
} | } | ||||
void ParseUserScriptJob::scriptUrl(const KUrl &url) | KUrl ParseUserScriptJob::scriptUrl() const | ||||
{ | { | ||||
mCurrentUrl = url; | return mCurrentUrl; | ||||
} | } | ||||
void ParseUserScriptJob::start() | void ParseUserScriptJob::start() | ||||
{ | { | ||||
if (mCurrentUrl.isEmpty()) { | if (mCurrentUrl.isEmpty()) { | ||||
Q_EMIT error(i18n("Path is not specified.")); | emitError(i18n("Path is not specified.")); | ||||
return; | return; | ||||
} | } | ||||
if ( mSieveJob ) | if ( mSieveJob ) | ||||
mSieveJob->kill(); | mSieveJob->kill(); | ||||
mActiveScripts = QStringList(); | |||||
mError = QString(); | |||||
mSieveJob = KManageSieve::SieveJob::get( mCurrentUrl ); | mSieveJob = KManageSieve::SieveJob::get( mCurrentUrl ); | ||||
connect( mSieveJob, SIGNAL(result(KManageSieve::SieveJob*,bool,QString,bool)), | connect( mSieveJob, SIGNAL(result(KManageSieve::SieveJob*,bool,QString,bool)), | ||||
this, SLOT(slotGetResult(KManageSieve::SieveJob*,bool,QString,bool)) ); | this, SLOT(slotGetResult(KManageSieve::SieveJob*,bool,QString,bool)) ); | ||||
} | } | ||||
void ParseUserScriptJob::slotGetResult( KManageSieve::SieveJob *, bool, const QString & script, bool ) | void ParseUserScriptJob::slotGetResult( KManageSieve::SieveJob *, bool, const QString & script, bool ) | ||||
{ | { | ||||
mSieveJob = 0; | mSieveJob = 0; | ||||
if (script.isEmpty()) { | if (script.isEmpty()) { | ||||
Q_EMIT error(i18n("Script is empty.")); | emitError(i18n("Script is empty.")); | ||||
return; | return; | ||||
} | } | ||||
bool result; | bool result; | ||||
const QStringList lst = parsescript(script, result); | const QStringList lst = parsescript(script, result); | ||||
if (result) | if (result) | ||||
Q_EMIT success(lst); | emitSuccess(lst); | ||||
else | else | ||||
Q_EMIT error(i18n("Script parsing error")); | emitError(i18n("Script parsing error")); | ||||
} | } | ||||
void ParseUserScriptJob::emitError(const QString &msgError) | |||||
{ | |||||
mError = msgError; | |||||
emit finished(this); | |||||
} | |||||
void ParseUserScriptJob::emitSuccess(const QStringList &activeScriptList) | |||||
{ | |||||
mActiveScripts = activeScriptList; | |||||
emit finished(this); | |||||
} | |||||
QStringList ParseUserScriptJob::parsescript(const QString &script, bool &result) | QStringList ParseUserScriptJob::parsescript(const QString &script, bool &result) | ||||
{ | { | ||||
QStringList lst; | QStringList lst; | ||||
const QDomDocument doc = ParsingUtil::parseScript(script, result); | const QDomDocument doc = ParsingUtil::parseScript(script, result); | ||||
if (result) { | if (result) { | ||||
lst = extractActiveScript(doc); | lst = extractActiveScript(doc); | ||||
} | } | ||||
return lst; | return lst; | ||||
} | } | ||||
QStringList ParseUserScriptJob::activeScriptList() const | |||||
{ | |||||
return mActiveScripts; | |||||
} | |||||
QString ParseUserScriptJob::error() const | |||||
{ | |||||
return mError; | |||||
} | |||||
QStringList ParseUserScriptJob::extractActiveScript(const QDomDocument &doc) | QStringList ParseUserScriptJob::extractActiveScript(const QDomDocument &doc) | ||||
{ | { | ||||
QStringList lstScript; | QStringList lstScript; | ||||
QDomElement docElem = doc.documentElement(); | QDomElement docElem = doc.documentElement(); | ||||
QDomNode n = docElem.firstChild(); | QDomNode n = docElem.firstChild(); | ||||
while (!n.isNull()) { | while (!n.isNull()) { | ||||
QDomElement e = n.toElement(); | QDomElement e = n.toElement(); | ||||
if (!e.isNull()) { | if (!e.isNull()) { | ||||
Show All 38 Lines |