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 "../decorationdefines.h"
0009 #include <kdecoration2/private/kdecoration2_private_export.h>
0010 
0011 #include <QIcon>
0012 #include <QString>
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 namespace KDecoration2
0026 {
0027 class Decoration;
0028 class DecoratedClient;
0029 
0030 class KDECORATIONS_PRIVATE_EXPORT DecoratedClientPrivate
0031 {
0032 public:
0033     virtual ~DecoratedClientPrivate();
0034     virtual bool isActive() const = 0;
0035     virtual QString caption() const = 0;
0036     virtual int desktop() const = 0;
0037     virtual bool isOnAllDesktops() const = 0;
0038     virtual bool isShaded() const = 0;
0039     virtual QIcon icon() const = 0;
0040     virtual bool isMaximized() const = 0;
0041     virtual bool isMaximizedHorizontally() const = 0;
0042     virtual bool isMaximizedVertically() const = 0;
0043     virtual bool isKeepAbove() const = 0;
0044     virtual bool isKeepBelow() const = 0;
0045 
0046     virtual bool isCloseable() const = 0;
0047     virtual bool isMaximizeable() const = 0;
0048     virtual bool isMinimizeable() const = 0;
0049     virtual bool providesContextHelp() const = 0;
0050     virtual bool isModal() const = 0;
0051     virtual bool isShadeable() const = 0;
0052     virtual bool isMoveable() const = 0;
0053     virtual bool isResizeable() const = 0;
0054 
0055     virtual WId windowId() const = 0;
0056     virtual WId decorationId() const = 0;
0057 
0058     virtual int width() const = 0;
0059     virtual int height() const = 0;
0060     virtual QSize size() const = 0;
0061     virtual QPalette palette() const = 0;
0062     virtual Qt::Edges adjacentScreenEdges() const = 0;
0063 
0064     virtual void requestShowToolTip(const QString &text) = 0;
0065     virtual void requestHideToolTip() = 0;
0066     virtual void requestClose() = 0;
0067     virtual void requestToggleMaximization(Qt::MouseButtons buttons) = 0;
0068     virtual void requestMinimize() = 0;
0069     virtual void requestContextHelp() = 0;
0070     virtual void requestToggleOnAllDesktops() = 0;
0071     virtual void requestToggleShade() = 0;
0072     virtual void requestToggleKeepAbove() = 0;
0073     virtual void requestToggleKeepBelow() = 0;
0074     virtual void requestShowWindowMenu(const QRect &rect) = 0;
0075 
0076     Decoration *decoration();
0077     Decoration *decoration() const;
0078 
0079     virtual QColor color(ColorGroup group, ColorRole role) const;
0080     virtual QString windowClass() const = 0;
0081 
0082 protected:
0083     explicit DecoratedClientPrivate(DecoratedClient *client, Decoration *decoration);
0084     DecoratedClient *client();
0085 
0086 private:
0087     class Private;
0088     const QScopedPointer<Private> d;
0089 };
0090 
0091 class KDECORATIONS_PRIVATE_EXPORT ApplicationMenuEnabledDecoratedClientPrivate : public DecoratedClientPrivate
0092 {
0093 public:
0094     ~ApplicationMenuEnabledDecoratedClientPrivate() override;
0095 
0096     virtual bool hasApplicationMenu() const = 0;
0097     virtual bool isApplicationMenuActive() const = 0;
0098 
0099     virtual void showApplicationMenu(int actionId) = 0;
0100     virtual void requestShowApplicationMenu(const QRect &rect, int actionId) = 0;
0101 
0102 protected:
0103     explicit ApplicationMenuEnabledDecoratedClientPrivate(DecoratedClient *client, Decoration *decoration);
0104 };
0105 
0106 } // namespace