File indexing completed on 2025-03-09 04:54:32

0001 /*
0002    SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "messageviewer_export.h"
0010 #include <QObject>
0011 class KToggleAction;
0012 class KActionCollection;
0013 class QAction;
0014 class QActionGroup;
0015 class KActionMenu;
0016 namespace MessageViewer
0017 {
0018 class HeaderStyle;
0019 class HeaderStylePlugin;
0020 /**
0021  * @brief The HeaderStyleInterface class
0022  * @author Laurent Montel <montel@kde.org>
0023  */
0024 class MESSAGEVIEWER_EXPORT HeaderStyleInterface : public QObject
0025 {
0026     Q_OBJECT
0027 public:
0028     explicit HeaderStyleInterface(MessageViewer::HeaderStylePlugin *, QObject *parent = nullptr);
0029     ~HeaderStyleInterface() override;
0030     [[nodiscard]] QList<KToggleAction *> action() const;
0031     virtual void createAction(KActionMenu *menu, QActionGroup *actionGroup, KActionCollection *ac) = 0;
0032     virtual void activateAction() = 0;
0033     [[nodiscard]] HeaderStylePlugin *headerStylePlugin() const;
0034 
0035 Q_SIGNALS:
0036     void styleChanged(MessageViewer::HeaderStylePlugin *plugin);
0037     void styleUpdated();
0038 
0039 protected Q_SLOTS:
0040     void slotStyleChanged();
0041 
0042 protected:
0043     void addHelpTextAction(QAction *act, const QString &text);
0044     void addActionToMenu(KActionMenu *menu, QActionGroup *actionGroup);
0045     QList<KToggleAction *> mAction;
0046     HeaderStylePlugin *const mHeaderStylePlugin;
0047 };
0048 }