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

0001 /*
0002    SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 #include "ksieveui_private_export.h"
0009 #include <KSieveCore/VacationUtils>
0010 #include <QWidget>
0011 class KDateComboBox;
0012 class KTimeComboBox;
0013 
0014 class QComboBox;
0015 class QDate;
0016 class QTime;
0017 
0018 class QLabel;
0019 class QSpinBox;
0020 class QLineEdit;
0021 class KDateComboBox;
0022 
0023 class QDate;
0024 
0025 namespace TextCustomEditor
0026 {
0027 class PlainTextEditorWidget;
0028 }
0029 
0030 class QCheckBox;
0031 
0032 namespace KMime
0033 {
0034 namespace Types
0035 {
0036 struct AddrSpec;
0037 using AddrSpecList = QList<AddrSpec>;
0038 }
0039 }
0040 
0041 namespace PimCommon
0042 {
0043 class SpellCheckLineEdit;
0044 }
0045 namespace KSieveCore
0046 {
0047 class SieveImapAccountSettings;
0048 }
0049 namespace KSieveUi
0050 {
0051 class VacationMailActionWidget;
0052 class VacationMailLineEdit;
0053 class KSIEVEUI_TESTS_EXPORT VacationEditWidget : public QWidget
0054 {
0055     Q_OBJECT
0056 public:
0057     explicit VacationEditWidget(QWidget *parent = nullptr);
0058     ~VacationEditWidget() override;
0059 
0060     void enableDomainAndSendForSpam(bool enable = true);
0061     void enableDates(bool enable = true);
0062 
0063     [[nodiscard]] bool activateVacation() const;
0064     void setActivateVacation(bool activate);
0065 
0066     [[nodiscard]] bool domainCheck() const;
0067     void setDomainCheck(bool check);
0068 
0069     [[nodiscard]] QString messageText() const;
0070     void setMessageText(const QString &text);
0071 
0072     [[nodiscard]] int notificationInterval() const;
0073     void setNotificationInterval(int days);
0074 
0075     [[nodiscard]] KMime::Types::AddrSpecList mailAliases(bool &ok) const;
0076     void setMailAliases(const KMime::Types::AddrSpecList &aliases);
0077     void setMailAliases(const QString &aliases);
0078 
0079     [[nodiscard]] QString domainName() const;
0080     void setDomainName(const QString &domain);
0081 
0082     [[nodiscard]] QString subject() const;
0083     void setSubject(const QString &subject);
0084 
0085     [[nodiscard]] bool sendForSpam() const;
0086     void setSendForSpam(bool enable);
0087 
0088     [[nodiscard]] QDate startDate() const;
0089     void setStartDate(QDate startDate);
0090 
0091     [[nodiscard]] QTime startTime() const;
0092     void setStartTime(QTime startTime);
0093 
0094     [[nodiscard]] QDate endDate() const;
0095     void setEndDate(QDate endDate);
0096 
0097     [[nodiscard]] QTime endTime() const;
0098     void setEndTime(QTime endTime);
0099 
0100     [[nodiscard]] KSieveCore::VacationUtils::MailAction mailAction() const;
0101     [[nodiscard]] QString mailActionRecipient(bool &valid) const;
0102     void setMailAction(KSieveCore::VacationUtils::MailAction action, const QString &recipient);
0103     void setSieveImapAccountSettings(const KSieveCore::SieveImapAccountSettings &account);
0104 
0105     void setDefault();
0106 
0107     [[nodiscard]] bool changed() const;
0108     void setChanged(bool changed);
0109 
0110 private Q_SLOTS:
0111     void slotIntervalSpinChanged(int value);
0112     void mailActionChanged(int index);
0113 
0114 private:
0115     void setWasChanged();
0116 
0117 protected:
0118     QCheckBox *mActiveCheck = nullptr;
0119     QSpinBox *mIntervalSpin = nullptr;
0120     VacationMailLineEdit *mMailAliasesEdit = nullptr;
0121     TextCustomEditor::PlainTextEditorWidget *mTextEdit = nullptr;
0122     QCheckBox *mSpamCheck = nullptr;
0123     QCheckBox *mDomainCheck = nullptr;
0124     QLineEdit *mDomainEdit = nullptr;
0125     PimCommon::SpellCheckLineEdit *mSubject = nullptr;
0126     QComboBox *mMailAction = nullptr;
0127     VacationMailActionWidget *mMailActionRecipient = nullptr;
0128     KDateComboBox *mStartDate = nullptr;
0129     KTimeComboBox *mStartTime = nullptr;
0130     QCheckBox *mStartTimeActive = nullptr;
0131     QLabel *mStartDateLabel = nullptr;
0132     KDateComboBox *mEndDate = nullptr;
0133     KTimeComboBox *mEndTime = nullptr;
0134     QCheckBox *mEndTimeActive = nullptr;
0135     QLabel *mEndDateLabel = nullptr;
0136     bool mChanged = false;
0137 };
0138 }