File indexing completed on 2025-02-16 04:55:54

0001 /*
0002   SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-only
0005 */
0006 
0007 #pragma once
0008 #include "ksievecore_export.h"
0009 #include <QObject>
0010 #include <QStringList>
0011 #include <QUrl>
0012 
0013 namespace KManageSieve
0014 {
0015 class SieveJob;
0016 }
0017 
0018 namespace KSieveCore
0019 {
0020 class ParseUserScriptJob;
0021 class KSIEVECORE_EXPORT VacationCheckJob : public QObject
0022 {
0023     Q_OBJECT
0024 public:
0025     explicit VacationCheckJob(const QUrl &url, const QString &serverName, QObject *parent = nullptr);
0026     ~VacationCheckJob() override;
0027     void setKep14Support(bool kep14Support);
0028     void start();
0029     void kill();
0030     [[nodiscard]] bool noScriptFound() const;
0031     [[nodiscard]] QString script() const;
0032     [[nodiscard]] QStringList sieveCapabilities() const;
0033     [[nodiscard]] QString serverName() const;
0034 
0035 Q_SIGNALS:
0036     void vacationScriptActive(KSieveCore::VacationCheckJob *job, const QString &sscriptName, bool active);
0037     void error(const QString &errorStr);
0038 
0039 private Q_SLOTS:
0040     void slotGetResult(KManageSieve::SieveJob *job, bool success, const QString &script, bool active);
0041     void slotGotActiveScripts(KSieveCore::ParseUserScriptJob *job);
0042     void slotGotList(KManageSieve::SieveJob *job, bool success, const QStringList &availableScripts, const QString &activeScript);
0043     void emitError(const QString &errorMessage);
0044     void searchVacationScript();
0045     void getNextScript();
0046 
0047 private:
0048     [[nodiscard]] bool isLastScript() const;
0049     Q_DISABLE_COPY(VacationCheckJob)
0050     QStringList mAvailableScripts;
0051     QStringList mActiveScripts;
0052     QStringList mSieveCapabilities;
0053     QString mScript;
0054     const QString mServerName;
0055     const QUrl mUrl;
0056     KManageSieve::SieveJob *mSieveJob = nullptr;
0057     KSieveCore::ParseUserScriptJob *mParseJob = nullptr;
0058     int mScriptPos = -1;
0059     bool mKep14Support = false;
0060     bool mNoScriptFound = false;
0061 };
0062 }