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

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QObject>
0010 namespace KSieveCore
0011 {
0012 class SieveImapAccountSettings;
0013 }
0014 namespace KSieveUi
0015 {
0016 class SieveEditorGraphicalModeWidget;
0017 class SieveCommonActionCondition : public QObject
0018 {
0019     Q_OBJECT
0020 public:
0021     explicit SieveCommonActionCondition(SieveEditorGraphicalModeWidget *sieveGraphicalModeWidget,
0022                                         const QString &name,
0023                                         const QString &label,
0024                                         QObject *parent = nullptr);
0025     ~SieveCommonActionCondition() override;
0026 
0027     [[nodiscard]] QString name() const;
0028     [[nodiscard]] QString label() const;
0029 
0030     [[nodiscard]] virtual QString code(QWidget *parent) const;
0031 
0032     [[nodiscard]] virtual QStringList needRequires(QWidget *parent) const;
0033 
0034     [[nodiscard]] virtual bool needCheckIfServerHasCapability() const;
0035 
0036     [[nodiscard]] virtual QString serverNeedsCapability() const;
0037 
0038     [[nodiscard]] virtual QString help() const;
0039     [[nodiscard]] virtual QUrl href() const;
0040 
0041     virtual void unknownTagValue(const QString &tagValue, QString &error);
0042     virtual void unknownTag(const QStringView &tag, QString &error);
0043     virtual void tooManyArguments(const QStringView &tagName, int index, int maxValue, QString &error);
0044     virtual void serverDoesNotSupportFeatures(const QString &feature, QString &error);
0045 
0046     [[nodiscard]] QString comment() const;
0047 
0048     void setComment(const QString &comment);
0049 
0050     virtual QWidget *createParamWidget(QWidget *parent) const;
0051 
0052 protected:
0053     [[nodiscard]] KSieveCore::SieveImapAccountSettings sieveImapAccountSettings() const;
0054     [[nodiscard]] QStringList sieveCapabilities() const;
0055     SieveEditorGraphicalModeWidget *const mSieveGraphicalModeWidget;
0056 
0057 Q_SIGNALS:
0058     void valueChanged();
0059 
0060 private:
0061     Q_DISABLE_COPY(SieveCommonActionCondition)
0062     const QString mName;
0063     const QString mLabel;
0064     QString mComment;
0065 };
0066 }