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 }