KWin
Loading...
Searching...
No Matches
aurorae.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2009, 2010, 2012 Martin Gräßlin <mgraesslin@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#pragma once
8
9#include <KDecoration2/Decoration>
10#include <KDecoration2/DecorationThemeProvider>
11#include <KPluginMetaData>
12#include <QElapsedTimer>
13#include <QVariant>
14
15class QQmlComponent;
16class QQmlContext;
17class QQmlEngine;
18class QQuickItem;
19
20class KConfigLoader;
21
22namespace KWin
23{
24class Borders;
25class OffscreenQuickView;
26}
27
28namespace Aurorae
29{
30
31class Decoration : public KDecoration2::Decoration
32{
33 Q_OBJECT
34 Q_PROPERTY(KDecoration2::DecoratedClient *client READ client CONSTANT)
35 Q_PROPERTY(QQuickItem *item READ item)
36public:
37 explicit Decoration(QObject *parent = nullptr, const QVariantList &args = QVariantList());
38 ~Decoration() override;
39
40 void paint(QPainter *painter, const QRect &repaintRegion) override;
41
42 Q_INVOKABLE QVariant readConfig(const QString &key, const QVariant &defaultValue = QVariant());
43
44 QQuickItem *item() const;
45
46public Q_SLOTS:
47 bool init() override;
48 void installTitleItem(QQuickItem *item);
49
51 void updateBlur();
52
53Q_SIGNALS:
55
56protected:
57 void hoverEnterEvent(QHoverEvent *event) override;
58 void hoverLeaveEvent(QHoverEvent *event) override;
59 void hoverMoveEvent(QHoverEvent *event) override;
60 void mouseMoveEvent(QMouseEvent *event) override;
61 void mousePressEvent(QMouseEvent *event) override;
62 void mouseReleaseEvent(QMouseEvent *event) override;
63
65 void setupBorders(QQuickItem *item);
66 void updateBorders();
67 void updateBuffer();
68 void updateExtendedBorders();
69
70 bool m_supportsMask{false};
71
72 QRect m_contentRect; // the geometry of the part of the buffer that is not a shadow when buffer was created.
73 std::unique_ptr<QQuickItem> m_item;
74 std::unique_ptr<QQmlContext> m_qmlContext;
75 KWin::Borders *m_borders;
76 KWin::Borders *m_maximizedBorders;
77 KWin::Borders *m_extendedBorders;
78 KWin::Borders *m_padding;
79 QString m_themeName;
80
81 std::unique_ptr<KWin::OffscreenQuickView> m_view;
82};
83
84class ThemeProvider : public KDecoration2::DecorationThemeProvider
85{
86 Q_OBJECT
87public:
88 explicit ThemeProvider(QObject *parent, const KPluginMetaData &data);
89
90 QList<KDecoration2::DecorationThemeMetaData> themes() const override
91 {
92 return m_themes;
93 }
94
95private:
96 void init();
97 void findAllQmlThemes();
98 void findAllSvgThemes();
99 bool hasConfiguration(const QString &theme);
100 QList<KDecoration2::DecorationThemeMetaData> m_themes;
101 const KPluginMetaData m_data;
102};
103}
void hoverLeaveEvent(QHoverEvent *event) override
void mousePressEvent(QMouseEvent *event) override
void hoverMoveEvent(QHoverEvent *event) override
void installTitleItem(QQuickItem *item)
KDecoration2::DecoratedClient * client
Definition aurorae.h:34
void mouseReleaseEvent(QMouseEvent *event) override
Q_INVOKABLE QVariant readConfig(const QString &key, const QVariant &defaultValue=QVariant())
void mouseMoveEvent(QMouseEvent *event) override
void paint(QPainter *painter, const QRect &repaintRegion) override
bool init() override
void hoverEnterEvent(QHoverEvent *event) override
QQuickItem * item
Definition aurorae.h:35
ThemeProvider(QObject *parent, const KPluginMetaData &data)
QList< KDecoration2::DecorationThemeMetaData > themes() const override
Definition aurorae.h:90
#define private
#define explicit