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