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