My Project
Loading...
Searching...
No Matches
MirSurfaceInterface.h
1/*
2 * Copyright (C) 2015-2016 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_SHELL_APPLICATION_MIRSURFACE_H
18#define LOMIRI_SHELL_APPLICATION_MIRSURFACE_H
19
20#include <QObject>
21#include <QRect>
22#include <QSize>
23
24#include "Mir.h"
25
26namespace lomiri
27{
28namespace shell
29{
30namespace application
31{
32
33class MirSurfaceListInterface;
34
41class MirSurfaceInterface : public QObject
42{
43 Q_OBJECT
44
48 Q_PROPERTY(Mir::Type type READ type NOTIFY typeChanged)
49
50
53 Q_PROPERTY(QString name READ name NOTIFY nameChanged)
54
58 Q_PROPERTY(QString persistentId READ persistentId CONSTANT)
59
63 Q_PROPERTY(QString appId READ appId CONSTANT)
64
68 Q_PROPERTY(QPoint position READ position NOTIFY positionChanged)
69
73 Q_PROPERTY(QPoint requestedPosition READ requestedPosition WRITE setRequestedPosition NOTIFY requestedPositionChanged)
74
78 Q_PROPERTY(QSize size READ size NOTIFY sizeChanged)
79
83 Q_PROPERTY(Mir::State state READ state NOTIFY stateChanged)
84
89 Q_PROPERTY(bool live READ live NOTIFY liveChanged)
90
95 Q_PROPERTY(bool isReady READ isReady NOTIFY ready)
96
100 Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
101
107 Q_PROPERTY(Mir::OrientationAngle orientationAngle READ orientationAngle WRITE setOrientationAngle
108 NOTIFY orientationAngleChanged DESIGNABLE false)
109
114 Q_PROPERTY(int minimumWidth READ minimumWidth NOTIFY minimumWidthChanged)
115
120 Q_PROPERTY(int minimumHeight READ minimumHeight NOTIFY minimumHeightChanged)
121
126 Q_PROPERTY(int maximumWidth READ maximumWidth NOTIFY maximumWidthChanged)
127
132 Q_PROPERTY(int maximumHeight READ maximumHeight NOTIFY maximumHeightChanged)
133
138 Q_PROPERTY(int widthIncrement READ widthIncrement NOTIFY widthIncrementChanged)
139
144 Q_PROPERTY(int heightIncrement READ heightIncrement NOTIFY heightIncrementChanged)
145
149 Q_PROPERTY(Mir::ShellChrome shellChrome READ shellChrome NOTIFY shellChromeChanged)
150
155 Q_PROPERTY(QString keymap READ keymap WRITE setKeymap NOTIFY keymapChanged)
156
162 Q_PROPERTY(bool focused READ focused NOTIFY focusedChanged)
163
169 Q_PROPERTY(QRect inputBounds READ inputBounds NOTIFY inputBoundsChanged)
170
176 Q_PROPERTY(bool confinesMousePointer READ confinesMousePointer NOTIFY confinesMousePointerChanged)
177
183 Q_PROPERTY(bool allowClientResize READ allowClientResize WRITE setAllowClientResize NOTIFY allowClientResizeChanged)
184
189
196 Q_PROPERTY(lomiri::shell::application::MirSurfaceListInterface* childSurfaceList READ childSurfaceList CONSTANT)
197
198public:
200 MirSurfaceInterface(QObject *parent = nullptr) : QObject(parent) {}
201 virtual ~MirSurfaceInterface() {}
202
203 virtual Mir::Type type() const = 0;
204
205 virtual QString name() const = 0;
206
207 virtual QString persistentId() const = 0;
208
209 virtual QString appId() const = 0;
210
211 virtual QPoint position() const = 0;
212
213 virtual QSize size() const = 0;
214 virtual void resize(int width, int height) = 0;
215 virtual void resize(const QSize &size) = 0;
216
217 virtual Mir::State state() const = 0;
218
219 virtual bool live() const = 0;
220 virtual bool isReady() const = 0;
221 virtual bool visible() const = 0;
222
223 virtual Mir::OrientationAngle orientationAngle() const = 0;
224 virtual void setOrientationAngle(Mir::OrientationAngle angle) = 0;
225
226 virtual int minimumWidth() const = 0;
227 virtual int minimumHeight() const = 0;
228 virtual int maximumWidth() const = 0;
229 virtual int maximumHeight() const = 0;
230 virtual int widthIncrement() const = 0;
231 virtual int heightIncrement() const = 0;
232
233 virtual void setKeymap(const QString &) = 0;
234 virtual QString keymap() const = 0;
235
236 virtual Mir::ShellChrome shellChrome() const = 0;
237
238 virtual bool focused() const = 0;
239
240 virtual QRect inputBounds() const = 0;
241
242 virtual bool confinesMousePointer() const = 0;
243
244 virtual bool allowClientResize() const = 0;
245 virtual void setAllowClientResize(bool) = 0;
246
247 virtual QPoint requestedPosition() const = 0;
248 virtual void setRequestedPosition(const QPoint &) = 0;
249
250 virtual MirSurfaceInterface* parentSurface() const = 0;
251
254
259 Q_INVOKABLE virtual void close() = 0;
260
265 Q_INVOKABLE virtual void forceClose() = 0;
266
272 Q_INVOKABLE virtual void activate() = 0;
273
274public Q_SLOTS:
278 virtual void requestState(Mir::State state) = 0;
279
280Q_SIGNALS:
282 void ready();
283 void typeChanged(Mir::Type value);
284 void liveChanged(bool value);
285 void visibleChanged(bool visible);
286 void stateChanged(Mir::State value);
287 void orientationAngleChanged(Mir::OrientationAngle value);
288 void positionChanged(QPoint position);
289 void requestedPositionChanged(QPoint position);
290 void sizeChanged(const QSize &value);
291 void nameChanged(const QString &name);
292 void minimumWidthChanged(int value);
293 void minimumHeightChanged(int value);
294 void maximumWidthChanged(int value);
295 void maximumHeightChanged(int value);
296 void widthIncrementChanged(int value);
297 void heightIncrementChanged(int value);
298 void shellChromeChanged(Mir::ShellChrome value);
299 void keymapChanged(const QString &value);
300 void focusedChanged(bool value);
301 void inputBoundsChanged(QRect value);
302 void confinesMousePointerChanged(bool value);
303 void allowClientResizeChanged(bool value);
305
312
317};
318
319} // namespace application
320} // namespace shell
321} // namespace lomiri
322
324
325#endif // LOMIRI_SHELL_APPLICATION_MIRSURFACE_H
Acting mostly as a namespace to hold enums and such for use in QML.
Definition Mir.h:26
State
Surface state.
Definition Mir.h:64
ShellChrome
Shell chrome.
Definition Mir.h:97
Type
Surface type.
Definition Mir.h:47
OrientationAngle
Surface orientation angle.
Definition Mir.h:86
Holds a Mir surface. Pretty much an opaque class.
Definition MirSurfaceInterface.h:42
int minimumHeight
The requested minimum height for the surface Zero if not set.
Definition MirSurfaceInterface.h:120
lomiri::shell::application::MirSurfaceListInterface * childSurfaceList
The list of child surfaces.
Definition MirSurfaceInterface.h:196
virtual Q_INVOKABLE void activate()=0
Activates this surface.
bool isReady
True if surface is ready MirAL decides surface ready when it swaps its first frame.
Definition MirSurfaceInterface.h:95
QString appId
App Id of the app this surface belongs to.
Definition MirSurfaceInterface.h:63
MirSurfaceInterface * parentSurface
The parent MirSurface or null if this is a top-level surface.
Definition MirSurfaceInterface.h:188
QSize size
Size of the current surface buffer, in pixels.
Definition MirSurfaceInterface.h:78
void focusRequested()
Emitted in response to a requestFocus() call.
int widthIncrement
The requested width increment for the surface Zero if not set.
Definition MirSurfaceInterface.h:138
bool visible
Visibility of the surface.
Definition MirSurfaceInterface.h:100
Mir::State state
State of the surface.
Definition MirSurfaceInterface.h:83
int maximumHeight
The requested maximum height for the surface Zero if not set.
Definition MirSurfaceInterface.h:132
virtual Q_INVOKABLE void close()=0
Sends a close request.
bool live
True if it has a mir client bound to it. A "zombie" (live == false) surface never becomes alive again...
Definition MirSurfaceInterface.h:89
int minimumWidth
The requested minimum width for the surface Zero if not set.
Definition MirSurfaceInterface.h:114
QRect inputBounds
Input bounds.
Definition MirSurfaceInterface.h:169
QPoint requestedPosition
Requested position of the current surface buffer, in pixels.
Definition MirSurfaceInterface.h:73
bool focused
Whether the surface is focused.
Definition MirSurfaceInterface.h:162
Mir::ShellChrome shellChrome
The Shell chrome mode.
Definition MirSurfaceInterface.h:149
bool allowClientResize
Whether to comply to resize requests coming from the client side.
Definition MirSurfaceInterface.h:183
Mir::Type type
The surface type.
Definition MirSurfaceInterface.h:48
virtual Q_INVOKABLE void forceClose()=0
Sends a force close request.
QString name
Name of the surface, given by the client application.
Definition MirSurfaceInterface.h:53
int maximumWidth
The requested maximum width for the surface Zero if not set.
Definition MirSurfaceInterface.h:126
QString keymap
The requested keymap for this surface Its format is "layout+variant".
Definition MirSurfaceInterface.h:155
QPoint position
Position of the current surface buffer, in pixels.
Definition MirSurfaceInterface.h:68
int heightIncrement
The requested height increment for the surface Zero if not set.
Definition MirSurfaceInterface.h:144
virtual void requestState(Mir::State state)=0
Requests a change to the specified state.
bool confinesMousePointer
Whether the surface wants to confine the mouse pointer within its boundaries.
Definition MirSurfaceInterface.h:176
Mir::OrientationAngle orientationAngle
Orientation angle of the surface.
Definition MirSurfaceInterface.h:108
QString persistentId
Persistent Id of the surface.
Definition MirSurfaceInterface.h:58
void closeRequested()
Emitted when close() is called.
Interface for a list model of MirSurfaces.
Definition MirSurfaceListInterface.h:32
Top-level namespace for all things Lomiri-related.
Definition Version.h:38