2
Copyright (C) 2013 Daniel Vrátil <dvratil@redhat.com>
4
This library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Lesser General Public
6
License as published by the Free Software Foundation; either
7
version 2.1 of the License, or (at your option) any later version.
9
This library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
Lesser General Public License for more details.
14
You should have received a copy of the GNU Lesser General Public
15
License along with this library; if not, write to the Free Software
16
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24
#include <kscreen/mode.h>
26
class QStandardItemModel;
27
class QAbstractItemModel;
29
class ModesProxyModel;
36
class QMLOutput : public QQuickItem
40
Q_PROPERTY(KScreen::Output* output
45
Q_PROPERTY(bool isCloneMode
48
NOTIFY isCloneModeChanged)
50
Q_PROPERTY(QMLScreen* screen
55
Q_PROPERTY(QMLOutput* cloneOf
58
NOTIFY cloneOfChanged)
60
Q_PROPERTY(QMLOutput* leftDockedTo
64
NOTIFY leftDockedToChanged)
66
Q_PROPERTY(QMLOutput* topDockedTo
70
NOTIFY topDockedToChanged)
72
Q_PROPERTY(QMLOutput* rightDockedTo
74
WRITE setRightDockedTo
76
NOTIFY rightDockedToChanged)
78
Q_PROPERTY(QMLOutput* bottomDockedTo
80
WRITE setBottomDockedTo
82
NOTIFY bottomDockedToChanged)
84
Q_PROPERTY(int currentOutputHeight
85
READ currentOutputHeight
86
NOTIFY currentOutputSizeChanged)
88
Q_PROPERTY(int currentOutputWidth
89
READ currentOutputWidth
90
NOTIFY currentOutputSizeChanged)
92
/* Workaround for possible QML bug when calling output.pos.y = VALUE works,
93
* but output.pos.x = VALUE has no effect */
94
Q_PROPERTY(int outputX
97
NOTIFY outputXChanged)
99
Q_PROPERTY(int outputY
102
NOTIFY outputYChanged)
106
ModeRole = Qt::UserRole,
112
explicit QMLOutput(QQuickItem *parent = 0);
113
virtual ~QMLOutput();
115
KScreen::Output* output() const;
116
void setOutput(KScreen::Output *output);
118
QMLScreen* screen() const;
119
void setScreen(QMLScreen *screen);
121
QMLOutput* leftDockedTo() const;
122
void setLeftDockedTo(QMLOutput *output);
125
QMLOutput* topDockedTo() const;
126
void setTopDockedTo(QMLOutput *output);
129
QMLOutput* rightDockedTo() const;
130
void setRightDockedTo(QMLOutput *output);
133
QMLOutput* bottomDockedTo() const;
134
void setBottomDockedTo(QMLOutput *output);
137
Q_INVOKABLE bool collidesWithOutput(QObject *other);
138
Q_INVOKABLE bool maybeSnapTo(QMLOutput *other);
140
void setCloneOf(QMLOutput *other);
141
QMLOutput* cloneOf() const;
143
int currentOutputHeight() const;
144
int currentOutputWidth() const;
147
void setOutputX(int x);
150
void setOutputY(int y);
152
void setIsCloneMode(bool isCloneMode);
153
bool isCloneMode() const;
156
void updateRootProperties();
161
void moved(const QString &self);
163
/* Property notifications */
164
void outputChanged();
165
void screenChanged();
166
void cloneOfChanged();
167
void currentOutputSizeChanged();
169
void leftDockedToChanged();
170
void topDockedToChanged();
171
void rightDockedToChanged();
172
void bottomDockedToChanged();
174
void outputYChanged();
175
void outputXChanged();
177
void isCloneModeChanged();
181
void currentModeIdChanged();
185
* Returns the biggest resolution available assuming it's the preferred one
187
KScreen::Mode* bestMode() const;
189
KScreen::Output *m_output;
192
QMLOutput *m_cloneOf;
193
QMLOutput *m_leftDock;
194
QMLOutput *m_topDock;
195
QMLOutput *m_rightDock;
196
QMLOutput *m_bottomDock;
201
#endif // QMLOUTPUT_H