File indexing completed on 2024-04-28 05:27:06

0001 /*
0002  * SPDX-FileCopyrightText: 2020 Mikhail Zolotukhin <zomial@protonmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QPluginLoader>
0010 #include <QString>
0011 
0012 #include <KDecoration2/Decoration>
0013 #include <KDecoration2/Private/DecorationBridge>
0014 #include <kdecoration2/decorationdefines.h>
0015 
0016 
0017 class KPluginFactory;
0018 
0019 namespace KDecoration2
0020 {
0021 class DecorationSettings;
0022 class DecoratedClientPrivate;
0023 class DecorationSettingsPrivate;
0024 class DummyDecorationSettings;
0025 
0026 class DummyDecorationBridge : public DecorationBridge
0027 {
0028     Q_OBJECT
0029 public:
0030     DummyDecorationBridge(const QString &decorationTheme, QObject *parent = nullptr);
0031     ~DummyDecorationBridge() override;
0032 
0033     std::unique_ptr<KDecoration2::DecorationSettingsPrivate> settings(KDecoration2::DecorationSettings *parent) override;
0034     std::unique_ptr<KDecoration2::DecoratedClientPrivate> createClient(KDecoration2::DecoratedClient *client, KDecoration2::Decoration *decoration) override;
0035 
0036     void paintButton(QPainter &painter, const QString &buttonType, const QString &buttonState);
0037 
0038 private:
0039     void disableAnimations();
0040     void enableAnimations();
0041 
0042     QString windowDecorationPluginPath(const QString &decorationTheme) const;
0043 
0044     void passMouseHoverEventToButton(KDecoration2::DecorationButton *button) const;
0045     void passMousePressEventToButton(KDecoration2::DecorationButton *button) const;
0046 
0047     KDecoration2::DecorationButtonType strToButtonType(const QString &type) const;
0048 
0049     QString m_decorationsConfigFileName;
0050     double globalAnimationEntryValue;
0051 
0052     QPluginLoader m_pluginLoader;
0053     KPluginFactory *m_factory;
0054     KDecoration2::Decoration *m_decoration;
0055     KDecoration2::DecoratedClientPrivate *m_client;
0056     KDecoration2::DummyDecorationSettings *m_settings;
0057 };
0058 
0059 }