Lomiri
WindowMargins.h
1 /*
2  * Copyright (C) 2017 Canonical Ltd.
3  *
4  * This program is free software: you can redistribute it and/or modify it under
5  * the terms of the GNU Lesser General Public License version 3, as published by
6  * the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10  * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  * Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #ifndef WINDOWMARGINS_H
18 #define WINDOWMARGINS_H
19 
20 #include <QQuickItem>
21 #include <QRectF>
22 
23 /*
24  * Specifies window margins for different Mir window types
25  *
26  * Used to inform MirAL so that it can take window management decisions that match
27  * the visuals drawn by Lomiri.
28  */
29 class WindowMargins : public QQuickItem
30 {
31  Q_OBJECT
32 
33  // Margins for windows of normal type
34  Q_PROPERTY(QRectF normal READ normal WRITE setNormal NOTIFY normalChanged)
35 
36  // Margins for windows of dialog type
37  Q_PROPERTY(QRectF dialog READ dialog WRITE setDialog NOTIFY dialogChanged)
38 
39  // TODO: Add margins for other window types as needed
40 
41 public:
42  QRectF normal() const;
43  void setNormal(QRectF value);
44 
45  QRectF dialog() const;
46  void setDialog(QRectF value);
47 
48 protected:
49  void itemChange(ItemChange change, const ItemChangeData &value) override;
50 
51 Q_SIGNALS:
52  void normalChanged();
53  void dialogChanged();
54 private:
55  QRectF m_normal;
56  QRectF m_dialog;
57 };
58 
59 #endif // WINDOWMARGINS_H