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 }