File indexing completed on 2024-05-12 16:59:29

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 #pragma once
0007 
0008 #include <QObject>
0009 
0010 #include <memory>
0011 
0012 #include <kdecoration2/private/kdecoration2_private_export.h>
0013 
0014 //
0015 //  W A R N I N G
0016 //  -------------
0017 //
0018 // This file is not part of the KDecoration2 API.  It exists purely as an
0019 // implementation detail.  This header file may change from version to
0020 // version without notice, or even be removed.
0021 //
0022 // We mean it.
0023 //
0024 
0025 class QRect;
0026 
0027 namespace KDecoration2
0028 {
0029 class Decoration;
0030 class DecorationSettings;
0031 class DecorationSettingsPrivate;
0032 class DecoratedClient;
0033 class DecoratedClientPrivate;
0034 
0035 class KDECORATIONS_PRIVATE_EXPORT DecorationBridge : public QObject
0036 {
0037     Q_OBJECT
0038 public:
0039     ~DecorationBridge() override;
0040 
0041     virtual std::unique_ptr<DecoratedClientPrivate> createClient(DecoratedClient *client, Decoration *decoration) = 0;
0042     virtual std::unique_ptr<DecorationSettingsPrivate> settings(DecorationSettings *parent) = 0;
0043 
0044 protected:
0045     explicit DecorationBridge(QObject *parent = nullptr);
0046 };
0047 
0048 } // namespace
0049 
0050 Q_DECLARE_METATYPE(KDecoration2::DecorationBridge *)