My Project
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 UNITY_SHELL_APPLICATION_MIRSURFACE_H
18 #define UNITY_SHELL_APPLICATION_MIRSURFACE_H
19 
20 #include <QObject>
21 #include <QRect>
22 #include <QSize>
23 
24 #include "Mir.h"
25 
26 namespace unity
27 {
28 namespace shell
29 {
30 namespace application
31 {
32 
33 class MirSurfaceListInterface;
34 
41 class 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(QSize size READ size NOTIFY sizeChanged)
64 
68  Q_PROPERTY(Mir::State state READ state WRITE setState NOTIFY stateChanged)
69 
74  Q_PROPERTY(bool live READ live NOTIFY liveChanged)
75 
79  Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
80 
86  Q_PROPERTY(Mir::OrientationAngle orientationAngle READ orientationAngle WRITE setOrientationAngle
87  NOTIFY orientationAngleChanged DESIGNABLE false)
88 
93  Q_PROPERTY(int minimumWidth READ minimumWidth NOTIFY minimumWidthChanged)
94 
99  Q_PROPERTY(int minimumHeight READ minimumHeight NOTIFY minimumHeightChanged)
100 
105  Q_PROPERTY(int maximumWidth READ maximumWidth NOTIFY maximumWidthChanged)
106 
111  Q_PROPERTY(int maximumHeight READ maximumHeight NOTIFY maximumHeightChanged)
112 
117  Q_PROPERTY(int widthIncrement READ widthIncrement NOTIFY widthIncrementChanged)
118 
123  Q_PROPERTY(int heightIncrement READ heightIncrement NOTIFY heightIncrementChanged)
124 
128  Q_PROPERTY(Mir::ShellChrome shellChrome READ shellChrome NOTIFY shellChromeChanged)
129 
134  Q_PROPERTY(QString keymap READ keymap WRITE setKeymap NOTIFY keymapChanged)
135 
141  Q_PROPERTY(bool focused READ focused NOTIFY focusedChanged)
142 
148  Q_PROPERTY(QRect inputBounds READ inputBounds NOTIFY inputBoundsChanged)
149 
155  Q_PROPERTY(bool confinesMousePointer READ confinesMousePointer NOTIFY confinesMousePointerChanged)
156 
157 public:
159  MirSurfaceInterface(QObject *parent = nullptr) : QObject(parent) {}
160  virtual ~MirSurfaceInterface() {}
161 
162  virtual Mir::Type type() const = 0;
163 
164  virtual QString name() const = 0;
165 
166  virtual QString persistentId() const = 0;
167 
168  virtual QSize size() const = 0;
169  virtual void resize(int width, int height) = 0;
170  virtual void resize(const QSize &size) = 0;
171 
172  virtual Mir::State state() const = 0;
173  virtual void setState(Mir::State qmlState) = 0;
174 
175  virtual bool live() const = 0;
176 
177  virtual bool visible() const = 0;
178 
179  virtual Mir::OrientationAngle orientationAngle() const = 0;
180  virtual void setOrientationAngle(Mir::OrientationAngle angle) = 0;
181 
182  virtual int minimumWidth() const = 0;
183  virtual int minimumHeight() const = 0;
184  virtual int maximumWidth() const = 0;
185  virtual int maximumHeight() const = 0;
186  virtual int widthIncrement() const = 0;
187  virtual int heightIncrement() const = 0;
188 
189  virtual void setKeymap(const QString &) = 0;
190  virtual QString keymap() const = 0;
191 
192  virtual Mir::ShellChrome shellChrome() const = 0;
193 
194  virtual bool focused() const = 0;
195 
196  virtual QRect inputBounds() const = 0;
197 
198  virtual bool confinesMousePointer() const = 0;
200 
206  Q_INVOKABLE virtual void requestFocus() = 0;
207 
212  Q_INVOKABLE virtual void close() = 0;
213 
217  Q_INVOKABLE virtual void raise() = 0;
218 
219 Q_SIGNALS:
221  void typeChanged(Mir::Type value);
222  void liveChanged(bool value);
223  void visibleChanged(bool visible);
224  void stateChanged(Mir::State value);
225  void orientationAngleChanged(Mir::OrientationAngle value);
226  void sizeChanged(const QSize &value);
227  void nameChanged(const QString &name);
228  void minimumWidthChanged(int value);
229  void minimumHeightChanged(int value);
230  void maximumWidthChanged(int value);
231  void maximumHeightChanged(int value);
232  void widthIncrementChanged(int value);
233  void heightIncrementChanged(int value);
234  void shellChromeChanged(Mir::ShellChrome value);
235  void keymapChanged(const QString &value);
236  void focusedChanged(bool value);
237  void inputBoundsChanged(QRect value);
238  void confinesMousePointerChanged(bool value);
240 
244  void focusRequested();
245 };
246 
247 } // namespace application
248 } // namespace shell
249 } // namespace unity
250 
252 
253 #endif // UNITY_SHELL_APPLICATION_MIRSURFACE_H
int heightIncrement
The requested height increment for the surface Zero if not set.
Definition: MirSurfaceInterface.h:123
int minimumHeight
The requested minimum height for the surface Zero if not set.
Definition: MirSurfaceInterface.h:99
Type
Surface type.
Definition: Mir.h:45
virtual Q_INVOKABLE void requestFocus()=0
Requests focus for this surface.
Mir::Type type
The surface type.
Definition: MirSurfaceInterface.h:48
int minimumWidth
The requested minimum width for the surface Zero if not set.
Definition: MirSurfaceInterface.h:93
State
Surface state.
Definition: Mir.h:61
QString name
Name of the surface, given by the client application.
Definition: MirSurfaceInterface.h:53
virtual Q_INVOKABLE void close()=0
Sends a close request.
Mir::OrientationAngle orientationAngle
Orientation angle of the surface.
Definition: MirSurfaceInterface.h:87
ShellChrome
Shell chrome.
Definition: Mir.h:85
Top-level namespace for all things Unity-related.
Definition: Version.h:37
QString keymap
The requested keymap for this surface Its format is "layout+variant".
Definition: MirSurfaceInterface.h:134
bool focused
Whether the surface is focused.
Definition: MirSurfaceInterface.h:141
QSize size
Size of the current surface buffer, in pixels.
Definition: MirSurfaceInterface.h:63
int maximumWidth
The requested maximum width for the surface Zero if not set.
Definition: MirSurfaceInterface.h:105
Mir::State state
State of the surface.
Definition: MirSurfaceInterface.h:68
bool confinesMousePointer
Whether the surface wants to confine the mouse pointer within its boundaries.
Definition: MirSurfaceInterface.h:155
void focusRequested()
Emitted in response to a requestFocus() call.
int maximumHeight
The requested maximum height for the surface Zero if not set.
Definition: MirSurfaceInterface.h:111
OrientationAngle
Surface orientation angle.
Definition: Mir.h:75
Acting mostly as a namespace to hold enums and such for use in QML.
Definition: Mir.h:25
int widthIncrement
The requested width increment for the surface Zero if not set.
Definition: MirSurfaceInterface.h:117
QString persistentId
Persistent Id of the surface.
Definition: MirSurfaceInterface.h:58
QRect inputBounds
Input bounds.
Definition: MirSurfaceInterface.h:148
bool live
True if it has a mir client bound to it. A "zombie" (live == false) surface never becomes alive again...
Definition: MirSurfaceInterface.h:74
bool visible
Visibility of the surface.
Definition: MirSurfaceInterface.h:79
Mir::ShellChrome shellChrome
The Shell chrome mode.
Definition: MirSurfaceInterface.h:128
Holds a Mir surface. Pretty much an opaque class.
Definition: MirSurfaceInterface.h:41