File indexing completed on 2025-03-09 04:54:30
0001 /* 0002 SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 #include "messageviewer_export.h" 0009 #include <MessageViewer/DKIMRule> 0010 #include <QTreeWidgetItem> 0011 #include <QWidget> 0012 class QTreeWidget; 0013 namespace MessageViewer 0014 { 0015 class DKIMManageRulesComboBox; 0016 /** 0017 * @brief The DKIMManageRulesWidgetItem class 0018 * @author Laurent Montel <montel@kde.org> 0019 */ 0020 class MESSAGEVIEWER_EXPORT DKIMManageRulesWidgetItem : public QTreeWidgetItem 0021 { 0022 public: 0023 enum ColumnType { 0024 Enabled = 0, 0025 Domain = 1, 0026 ListId = 2, 0027 From = 3, 0028 SDid = 4, 0029 RuleType = 5, 0030 Priority = 6, 0031 }; 0032 0033 explicit DKIMManageRulesWidgetItem(QTreeWidget *parent = nullptr); 0034 ~DKIMManageRulesWidgetItem() override; 0035 0036 [[nodiscard]] MessageViewer::DKIMRule rule() const; 0037 void setRule(const MessageViewer::DKIMRule &rule); 0038 0039 private: 0040 void updateInfo(); 0041 MessageViewer::DKIMRule mRule; 0042 DKIMManageRulesComboBox *const mRuleTypeCombobox; 0043 }; 0044 0045 /** 0046 * @brief The DKIMManageRulesWidget class 0047 * @author Laurent Montel <montel@kde.org> 0048 */ 0049 class MESSAGEVIEWER_EXPORT DKIMManageRulesWidget : public QWidget 0050 { 0051 Q_OBJECT 0052 public: 0053 explicit DKIMManageRulesWidget(QWidget *parent = nullptr); 0054 ~DKIMManageRulesWidget() override; 0055 void loadSettings(); 0056 void saveSettings(); 0057 [[nodiscard]] QByteArray saveHeaders() const; 0058 void restoreHeaders(const QByteArray &header); 0059 0060 void addRule(); 0061 [[nodiscard]] QList<MessageViewer::DKIMRule> rules() const; 0062 0063 void updateRules(); 0064 Q_SIGNALS: 0065 void updateExportButton(bool enabled); 0066 0067 private: 0068 MESSAGEVIEWER_NO_EXPORT void modifyRule(DKIMManageRulesWidgetItem *rulesItem); 0069 MESSAGEVIEWER_NO_EXPORT void slotCustomContextMenuRequested(const QPoint &); 0070 MESSAGEVIEWER_NO_EXPORT void duplicateRule(DKIMManageRulesWidgetItem *rulesItem); 0071 MESSAGEVIEWER_NO_EXPORT void emitUpdateExportButton(); 0072 QTreeWidget *const mTreeWidget; 0073 }; 0074 }