File indexing completed on 2025-02-16 04:56:08

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 
0009 #include <QUrl>
0010 #include <QWidget>
0011 class QStackedWidget;
0012 namespace KManageSieve
0013 {
0014 }
0015 
0016 namespace KSieveCore
0017 {
0018 class SieveImapAccountSettings;
0019 class VacationCreateScriptJob;
0020 class MultiImapVacationManager;
0021 }
0022 namespace KSieveUi
0023 {
0024 class VacationEditWidget;
0025 class VacationWarningWidget;
0026 class VacationPageWidget : public QWidget
0027 {
0028     Q_OBJECT
0029 public:
0030     explicit VacationPageWidget(QWidget *parent = nullptr);
0031     ~VacationPageWidget() override;
0032 
0033     void setServerUrl(const QUrl &url);
0034     void setServerName(const QString &serverName);
0035     [[nodiscard]] KSieveCore::VacationCreateScriptJob *writeScript(bool &errorFound);
0036     void setDefault();
0037     void setVacationManager(KSieveCore::MultiImapVacationManager *vacationManager);
0038     void setSieveImapAccountSettings(const KSieveCore::SieveImapAccountSettings &account);
0039 
0040     bool wasChanged() const;
0041 private Q_SLOTS:
0042     void slotGetResult(const QString &serverName, const QStringList &sieveCapabilities, const QString &scriptName, const QString &script, bool active);
0043 
0044 private:
0045     enum PageType { Script = 0, ScriptNotSupported = 1 };
0046 
0047     QString mServerName;
0048     QUrl mUrl;
0049     QStackedWidget *mStackWidget = nullptr;
0050     VacationEditWidget *mVacationEditWidget = nullptr;
0051     VacationWarningWidget *mVacationWarningWidget = nullptr;
0052     KSieveCore::MultiImapVacationManager *mVacationManager = nullptr;
0053     PageType mPageScript = Script;
0054     bool mWasActive = false;
0055     bool mHasDateSupport = false;
0056 };
0057 }