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 }