2 * Copyright 2008 Aike J Sommer <dev@aikesommer.name>
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
6 * published by the Free Software Foundation; either version 2,
7 * or (at your option) any later version.
9 * This program 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
12 * GNU General Public License for more details
14 * You should have received a copy of the GNU Library General Public
15 * License along with this program; if not, write to the
16 * Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 #include "dbusapi_outputs.h"
22 #include "kephal/outputs.h"
23 #include "outputsadaptor.h"
28 using namespace Kephal
;
30 DBusAPIOutputs::DBusAPIOutputs(QObject
* parent
)
33 new OutputsAdaptor(this);
34 QDBusConnection dbus
= QDBusConnection::sessionBus();
37 result
= dbus
.registerObject("/Outputs", this);
38 qDebug() << "outputs registered on the bus:" << result
;
40 connect(Outputs::self(), SIGNAL(outputConnected(Kephal::Output
*)), this, SLOT(outputConnectedSlot(Kephal::Output
*)));
41 connect(Outputs::self(), SIGNAL(outputDisconnected(Kephal::Output
*)), this, SLOT(outputDisconnectedSlot(Kephal::Output
*)));
42 connect(Outputs::self(), SIGNAL(outputActivated(Kephal::Output
*)), this, SLOT(outputActivatedSlot(Kephal::Output
*)));
43 connect(Outputs::self(), SIGNAL(outputDeactivated(Kephal::Output
*)), this, SLOT(outputDeactivatedSlot(Kephal::Output
*)));
44 connect(Outputs::self(), SIGNAL(outputResized(Kephal::Output
*, QSize
, QSize
)), this, SLOT(outputResizedSlot(Kephal::Output
*, QSize
, QSize
)));
45 connect(Outputs::self(), SIGNAL(outputMoved(Kephal::Output
*, QPoint
, QPoint
)), this, SLOT(outputMovedSlot(Kephal::Output
*, QPoint
, QPoint
)));
46 connect(Outputs::self(), SIGNAL(outputRotated(Kephal::Output
*, Kephal::Rotation
, Kephal::Rotation
)), this, SLOT(outputRotatedSlot(Kephal::Output
*, Kephal::Rotation
, Kephal::Rotation
)));
47 connect(Outputs::self(), SIGNAL(outputRateChanged(Kephal::Output
*, float, float)), this, SLOT(outputRateChangedSlot(Kephal::Output
*, float, float)));
48 connect(Outputs::self(), SIGNAL(outputReflected(Kephal::Output
*, bool, bool, bool, bool)), this, SLOT(outputReflectedSlot(Kephal::Output
*, bool, bool, bool, bool)));
51 QSize
DBusAPIOutputs::size(QString id
)
53 Output
* output
= Outputs::self()->output(id
);
54 if (output
&& output
->isActivated()) {
55 return output
->size();
60 int DBusAPIOutputs::numAvailableSizes(QString id
)
62 Output
* output
= Outputs::self()->output(id
);
63 if (output
&& output
->isActivated()) {
64 m_sizes
.insert(id
, output
->availableSizes());
65 return m_sizes
[id
].size();
70 QSize
DBusAPIOutputs::availableSize(QString id
, int i
)
72 if (! m_sizes
.contains(id
)) {
73 numAvailableSizes(id
);
75 if (m_sizes
.contains(id
) && (m_sizes
[id
].size() > i
)) {
76 return m_sizes
[id
][i
];
81 QPoint
DBusAPIOutputs::position(QString id
)
83 Output
* output
= Outputs::self()->output(id
);
84 if (output
&& output
->isActivated()) {
85 return output
->position();
90 QStringList
DBusAPIOutputs::outputIds()
92 QList
<Output
*> outputs
= Outputs::self()->outputs();
94 //qDebug() << "output-ids requested!!";
95 foreach (Output
* output
, outputs
) {
96 //qDebug() << "appending output-id:" << output->id();
97 result
.append(output
->id());
102 bool DBusAPIOutputs::isConnected(QString id
)
104 Output
* output
= Outputs::self()->output(id
);
105 if (output
&& output
->isConnected()) {
111 bool DBusAPIOutputs::isActivated(QString id
)
113 Output
* output
= Outputs::self()->output(id
);
114 if (output
&& output
->isActivated()) {
120 int DBusAPIOutputs::numAvailableRates(QString id
)
122 Output
* output
= Outputs::self()->output(id
);
123 if (output
&& output
->isActivated()) {
124 m_rates
.insert(id
, output
->availableRates());
125 return m_rates
[id
].size();
130 qreal
DBusAPIOutputs::availableRate(QString id
, int i
)
132 if (! m_rates
.contains(id
)) {
133 numAvailableRates(id
);
135 if (m_rates
.contains(id
) && (m_rates
[id
].size() > i
)) {
136 return m_rates
[id
][i
];
141 int DBusAPIOutputs::rotation(QString id
) {
142 Output
* output
= Outputs::self()->output(id
);
143 if (output
&& output
->isActivated()) {
144 return output
->rotation();
149 qreal
DBusAPIOutputs::rate(QString id
) {
150 Output
* output
= Outputs::self()->output(id
);
151 if (output
&& output
->isActivated()) {
152 return output
->rate();
157 bool DBusAPIOutputs::reflectX(QString id
) {
158 Output
* output
= Outputs::self()->output(id
);
159 if (output
&& output
->isActivated()) {
160 return output
->reflectX();
165 bool DBusAPIOutputs::reflectY(QString id
) {
166 Output
* output
= Outputs::self()->output(id
);
167 if (output
&& output
->isActivated()) {
168 return output
->reflectY();
173 void DBusAPIOutputs::outputConnectedSlot(Kephal::Output
* o
) {
174 emit
outputConnected(o
->id());
177 void DBusAPIOutputs::outputDisconnectedSlot(Kephal::Output
* o
) {
178 emit
outputDisconnected(o
->id());
181 void DBusAPIOutputs::outputActivatedSlot(Kephal::Output
* o
) {
182 emit
outputActivated(o
->id());
185 void DBusAPIOutputs::outputDeactivatedSlot(Kephal::Output
* o
) {
186 emit
outputDeactivated(o
->id());
189 void DBusAPIOutputs::outputResizedSlot(Kephal::Output
* o
, QSize oldSize
, QSize newSize
) {
192 emit
outputResized(o
->id());
195 void DBusAPIOutputs::outputMovedSlot(Kephal::Output
* o
, QPoint oldPosition
, QPoint newPosition
) {
196 Q_UNUSED(oldPosition
)
197 Q_UNUSED(newPosition
)
198 emit
outputMoved(o
->id());
201 void DBusAPIOutputs::outputRateChangedSlot(Kephal::Output
* o
, float oldRate
, float newRate
) {
204 emit
outputRateChanged(o
->id());
207 void DBusAPIOutputs::outputRotatedSlot(Kephal::Output
* o
, Rotation oldRotation
, Rotation newRotation
) {
208 Q_UNUSED(oldRotation
)
209 Q_UNUSED(newRotation
)
210 emit
outputRotated(o
->id());
213 void DBusAPIOutputs::outputReflectedSlot(Kephal::Output
* o
, bool oldX
, bool oldY
, bool newX
, bool newY
) {
218 emit
outputReflected(o
->id());
222 #include "dbusapi_outputs.moc"