/* * SPDX-FileCopyrightText: 2021 Alexander Lohnau * * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ #pragma once #include "decorationdefines.h" #include #include #include class KPluginMetaData; class DecorationThemeMetaDataPrivate; namespace KDecoration3 { /** * Class providing type-safe access to data of themes * * @since 5.23 * @author Alexander Lohnau */ class KDECORATIONS2_EXPORT DecorationThemeMetaData { public: explicit DecorationThemeMetaData(); virtual ~DecorationThemeMetaData(); DecorationThemeMetaData(const DecorationThemeMetaData &other); DecorationThemeMetaData &operator=(const DecorationThemeMetaData &other); /// User-visible name of the theme QString visibleName() const; void setVisibleName(const QString &name); /// Internal name of the theme QString themeName() const; void setThemeName(const QString &name); /// Name of the kcm to configure the decoration theme QString configurationName() const; void setConfigurationName(const QString &name); /// Border size of the decoration, this gets set based on the "recommendedBorderSize" key in the json metadata /// @internal KDecoration3::BorderSize borderSize() const; void setBorderSize(KDecoration3::BorderSize size); /// plugin id of theme provider /// @see KPluginMetaData::pluginId QString pluginId() const; void setPluginId(const QString &id); private: QSharedDataPointer d; }; /** * Class to give the KWin decorationmodel access to the plugin's themes. * * @since 5.23 * @author Alexander Lohnau */ class KDECORATIONS2_EXPORT DecorationThemeProvider : public QObject { Q_OBJECT public: explicit DecorationThemeProvider(QObject *parent); /** * List containing information of supported themes */ virtual QList themes() const = 0; }; }