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

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 <QObject>
0010 
0011 #include "messageviewer_export.h"
0012 #include <memory>
0013 class KActionCollection;
0014 class QActionGroup;
0015 class KActionMenu;
0016 namespace MessageViewer
0017 {
0018 class HeaderStyle;
0019 class HeaderStrategy;
0020 class HeaderStylePluginPrivate;
0021 class HeaderStyleInterface;
0022 /**
0023  * @brief The HeaderStylePlugin class
0024  * @author Laurent Montel <montel@kde.org>
0025  */
0026 class MESSAGEVIEWER_EXPORT HeaderStylePlugin : public QObject
0027 {
0028     Q_OBJECT
0029 public:
0030     explicit HeaderStylePlugin(QObject *parent = nullptr);
0031     ~HeaderStylePlugin() override;
0032 
0033     virtual HeaderStyle *headerStyle() const = 0;
0034     virtual HeaderStrategy *headerStrategy() const = 0;
0035     virtual HeaderStyleInterface *createView(KActionMenu *menu, QActionGroup *actionGroup, KActionCollection *ac, QObject *parent = nullptr) = 0;
0036     [[nodiscard]] virtual QString name() const = 0;
0037     [[nodiscard]] virtual bool hasMargin() const;
0038     [[nodiscard]] virtual QString alignment() const;
0039     [[nodiscard]] virtual int elidedTextSize() const;
0040 
0041     void setIsEnabled(bool enabled);
0042     [[nodiscard]] bool isEnabled() const;
0043 
0044     [[nodiscard]] virtual QString attachmentHtml() const;
0045 
0046     [[nodiscard]] virtual bool hasConfigureDialog() const;
0047 
0048     virtual void showConfigureDialog(QWidget *parent);
0049 
0050     [[nodiscard]] virtual QString extraScreenCss(const QString &headerFont) const;
0051     [[nodiscard]] virtual QString extraPrintCss(const QString &headerFont) const;
0052     [[nodiscard]] virtual QString extraCommonCss(const QString &headerFont) const;
0053 
0054 private:
0055     std::unique_ptr<HeaderStylePluginPrivate> const d;
0056 };
0057 }