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