Lomiri
Loading...
Searching...
No Matches
Window.h
1/*
2 * Copyright (C) 2016-2017 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#ifndef LOMIRI_WINDOW_H
18#define LOMIRI_WINDOW_H
19
20#include <QLoggingCategory>
21#include <QObject>
22#include <QPoint>
23
24// Lomiri API
25#include <lomiri/shell/application/Mir.h>
26
27#include "WindowManagerGlobal.h"
28
29namespace lomiri {
30 namespace shell {
31 namespace application {
32 class MirSurfaceInterface;
33 }
34 }
35}
36
37Q_DECLARE_LOGGING_CATEGORY(LOMIRI_WINDOW)
38
39
47class WINDOWMANAGERQML_EXPORT Window : public QObject
48{
49 Q_OBJECT
50
54 Q_PROPERTY(QPoint position READ position NOTIFY positionChanged)
55
56
59 Q_PROPERTY(QPoint requestedPosition READ requestedPosition WRITE setRequestedPosition NOTIFY requestedPositionChanged)
60
64 Q_PROPERTY(Mir::State state READ state NOTIFY stateChanged)
65
71 Q_PROPERTY(bool focused READ focused NOTIFY focusedChanged)
72
78 Q_PROPERTY(bool confinesMousePointer READ confinesMousePointer NOTIFY confinesMousePointerChanged)
79
84 Q_PROPERTY(int id READ id CONSTANT)
85
92 Q_PROPERTY(lomiri::shell::application::MirSurfaceInterface* surface READ surface NOTIFY surfaceChanged)
93
99 Q_PROPERTY(bool allowClientResize READ allowClientResize WRITE setAllowClientResize NOTIFY allowClientResizeChanged)
100
101public:
102 Window(int id, QObject *parent = nullptr);
103 virtual ~Window();
104 QPoint position() const;
105 QPoint requestedPosition() const;
106 void setRequestedPosition(const QPoint &);
107 Mir::State state() const;
108 bool focused() const;
109 bool confinesMousePointer() const;
110 int id() const;
111 lomiri::shell::application::MirSurfaceInterface* surface() const;
112
113 void setSurface(lomiri::shell::application::MirSurfaceInterface *surface);
114 void setFocused(bool value);
115
116 bool allowClientResize() const;
117 void setAllowClientResize(bool);
118
119 QString toString() const;
120
121public Q_SLOTS:
125 void requestState(Mir::State state);
126
131 void close();
132
136 void activate();
137
138Q_SIGNALS:
139 void closeRequested();
140 void emptyWindowActivated();
141
142 void positionChanged(QPoint position);
143 void requestedPositionChanged(QPoint position);
144 void stateChanged(Mir::State value);
145 void focusedChanged(bool value);
146 void confinesMousePointerChanged(bool value);
147 void surfaceChanged(lomiri::shell::application::MirSurfaceInterface *surface);
148 void allowClientResizeChanged(bool value);
149 void liveChanged(bool value);
150
154 void focusRequested();
155
156private:
157 void updatePosition();
158 void updateState();
159 void updateFocused();
160
161 QPoint m_position;
162 QPoint m_requestedPosition;
163 bool m_positionRequested{false};
164 bool m_focused{false};
165 int m_id;
166 Mir::State m_state{Mir::RestoredState};
167 bool m_stateRequested{false};
168 lomiri::shell::application::MirSurfaceInterface *m_surface{nullptr};
169
170 bool m_allowClientResize{true};
171};
172
173QDebug operator<<(QDebug dbg, const Window *window);
174
175Q_DECLARE_METATYPE(Window*)
176#endif // LOMIRI_WINDOW_H
A slightly higher concept than MirSurface.
Definition Window.h:48