7#include "parseuserscriptjob.h"
8#include "kmanagesieve/sievejob.h"
9#include "ksievecore/scriptsparsing/parsingutil.h"
10#include <KLocalizedString>
11#include <QXmlStreamReader>
13using namespace KSieveCore;
14ParseUserScriptJob::ParseUserScriptJob(
const QUrl &url,
QObject *parent)
20ParseUserScriptJob::~ParseUserScriptJob()
26void ParseUserScriptJob::kill()
34QUrl ParseUserScriptJob::scriptUrl()
const
39void ParseUserScriptJob::start()
41 if (mCurrentUrl.isEmpty()) {
42 emitError(
i18n(
"Path is not specified."));
48 mActiveScripts = QStringList();
54void ParseUserScriptJob::setAutoDelete(
bool deleteMe)
56 mAutoDelete = deleteMe;
59void ParseUserScriptJob::slotGetResult(KManageSieve::SieveJob *job,
bool success,
const QString &script,
bool)
64 i18n(
"Retrieving the script failed.\n"
65 "The server responded:\n%1",
70 emitError(
i18n(
"Script is empty. (%1)", mCurrentUrl.fileName()));
74 const QStringList lst = parsescript(script, result);
78 emitError(
i18n(
"Script parsing error."));
82void ParseUserScriptJob::emitError(
const QString &msgError)
91void ParseUserScriptJob::emitSuccess(
const QStringList &activeScriptList)
93 mActiveScripts = activeScriptList;
100QStringList ParseUserScriptJob::parsescript(
const QString &script,
bool &result)
103 const QString doc = ParsingUtil::parseScript(script, result);
105 lst = extractActiveScript(doc);
110QStringList ParseUserScriptJob::activeScriptList()
const
112 return mActiveScripts;
115QString ParseUserScriptJob::error()
const
120QStringList ParseUserScriptJob::extractActiveScript(
const QString &doc)
122 mStreamReader =
new QXmlStreamReader(doc);
123 QStringList lstScript;
124 if (mStreamReader->readNextStartElement()) {
125 while (mStreamReader->readNextStartElement()) {
126 const QStringView tagname = mStreamReader->name();
127 if (tagname == QLatin1StringView(
"action")) {
128 if (mStreamReader->attributes().hasAttribute(QLatin1StringView(
"name"))) {
129 const QString actionName = mStreamReader->attributes().value(QLatin1StringView(
"name")).toString();
130 if (actionName == QLatin1StringView(
"include")) {
132 const QString str = loadInclude();
139 mStreamReader->skipCurrentElement();
143 mStreamReader->skipCurrentElement();
150QString ParseUserScriptJob::loadInclude()
153 while (mStreamReader->readNextStartElement()) {
154 if (mStreamReader->name() == QLatin1StringView(
"str")) {
155 scriptName = mStreamReader->readElementText();
157 mStreamReader->skipCurrentElement();
163#include "moc_parseuserscriptjob.cpp"
QString errorString() const
A human-readable error message.
void result(KManageSieve::SieveJob *job, bool success, const QString &script, bool active)
This signal is emitted for all kind of jobs when they have finished.
static SieveJob * get(const QUrl &source)
Gets a sieve script from an IMAP server.
QString i18n(const char *text, const TYPE &arg...)
void append(QList< T > &&value)
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
bool isEmpty() const const
bool contains(QLatin1StringView str, Qt::CaseSensitivity cs) const const