1 /* 2 KWin - the KDE window manager 3 This file is part of the KDE project. 4 5 SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org> 6 7 SPDX-License-Identifier: GPL-2.0-or-later 8 */ 9 #ifndef KWIN_DECORATION_BRIDGE_H 10 #define KWIN_DECORATION_BRIDGE_H 11 12 #include <kwinglobals.h> 13 14 #include <KDecoration2/Private/DecorationBridge> 15 16 #include <KSharedConfig> 17 18 #include <QObject> 19 #include <QSharedPointer> 20 21 class KPluginFactory; 22 23 namespace KDecoration2 24 { 25 class DecorationSettings; 26 } 27 28 namespace KWin 29 { 30 31 class AbstractClient; 32 33 namespace Decoration 34 { 35 36 class KWIN_EXPORT DecorationBridge : public KDecoration2::DecorationBridge 37 { 38 Q_OBJECT 39 public: 40 ~DecorationBridge() override; 41 42 static bool hasPlugin(); 43 44 void init(); 45 KDecoration2::Decoration *createDecoration(AbstractClient *client); 46 47 std::unique_ptr<KDecoration2::DecoratedClientPrivate> createClient(KDecoration2::DecoratedClient *client, KDecoration2::Decoration *decoration) override; 48 std::unique_ptr<KDecoration2::DecorationSettingsPrivate> settings(KDecoration2::DecorationSettings *parent) override; 49 needsBlur()50 bool needsBlur() const { 51 return m_blur; 52 } recommendedBorderSize()53 QString recommendedBorderSize() const { 54 return m_recommendedBorderSize; 55 } 56 showToolTips()57 bool showToolTips() const { 58 return m_showToolTips; 59 } 60 61 void reconfigure(); 62 settings()63 const QSharedPointer<KDecoration2::DecorationSettings> &settings() const { 64 return m_settings; 65 } 66 67 QString supportInformation() const; 68 69 Q_SIGNALS: 70 void metaDataLoaded(); 71 72 private: 73 QString readPlugin(); 74 void loadMetaData(const QJsonObject &object); 75 void findTheme(const QVariantMap &map); 76 void initPlugin(); 77 QString readTheme() const; 78 void readDecorationOptions(); 79 KPluginFactory *m_factory; 80 KSharedConfig::Ptr m_lnfConfig; 81 bool m_blur; 82 bool m_showToolTips; 83 QString m_recommendedBorderSize; 84 QString m_plugin; 85 QString m_defaultTheme; 86 QString m_theme; 87 QSharedPointer<KDecoration2::DecorationSettings> m_settings; 88 bool m_noPlugin; 89 KWIN_SINGLETON(DecorationBridge) 90 }; 91 } // Decoration 92 } // KWin 93 94 #endif 95