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 "dbusconfigurations.h"
24 #include "configurations_interface.h"
26 #include "kephal/outputs.h"
31 DBusConfiguration::DBusConfiguration(DBusConfigurations
* parent
, QString name
)
32 : Configuration(parent
),
38 QString
DBusConfiguration::name() {
42 bool DBusConfiguration::isModifiable() {
43 return m_parent
->interface()->isModifiable(m_name
);
46 bool DBusConfiguration::isActivated() {
47 return m_parent
->interface()->isActivated(m_name
);
50 QMap
<int, QPoint
> DBusConfiguration::layout() {
51 return QMap
<int, QPoint
>();
54 void DBusConfiguration::activate() {
55 m_parent
->interface()->activate(m_name
);
58 int DBusConfiguration::primaryScreen() {
59 return m_parent
->interface()->primaryScreen(m_name
);
64 DBusConfigurations::DBusConfigurations(QObject
* parent
)
65 : Configurations(parent
)
67 m_interface
= new org::kde::Kephal::Configurations(
70 QDBusConnection::sessionBus(),
73 if (! m_interface
->isValid()) {
80 const QStringList names
= m_interface
->configurations();
81 foreach (const QString
& name
, names
) {
82 m_configs
.insert(name
, new DBusConfiguration(this, name
));
85 connect(m_interface
, SIGNAL(configurationActivated(QString
)), this, SLOT(configurationActivatedSlot(QString
)));
86 connect(m_interface
, SIGNAL(confirmed()), this, SIGNAL(confirmed()));
87 connect(m_interface
, SIGNAL(reverted()), this, SIGNAL(reverted()));
88 connect(m_interface
, SIGNAL(confirmTimeout(int)), this, SIGNAL(confirmTimeout(int)));
92 QMap
<QString
, Configuration
*> DBusConfigurations::configurations() {
93 QMap
<QString
, Configuration
*> result
;
94 for (QMap
<QString
, DBusConfiguration
*>::const_iterator i
= m_configs
.constBegin(); i
!= m_configs
.constEnd(); ++i
) {
95 result
.insert(i
.key(), i
.value());
100 Configuration
* DBusConfigurations::activeConfiguration() {
101 QString name
= m_interface
->activeConfiguration();
102 if ((! name
.isEmpty()) && m_configs
.contains(name
)) {
103 return m_configs
[name
];
108 QList
<Configuration
*> DBusConfigurations::alternateConfigurations() {
109 const QStringList names
= m_interface
->alternateConfigurations();
110 QList
<Configuration
*> result
;
111 foreach (const QString
& name
, names
) {
112 if (m_configs
.contains(name
)) {
113 result
<< m_configs
[name
];
119 QList
<QPoint
> DBusConfigurations::possiblePositions(Output
* output
) {
120 QList
<QPoint
> result
;
121 int num
= m_interface
->numAvailablePositions(output
->id());
122 for (int i
= 0; i
< num
; ++i
) {
123 result
<< m_interface
->availablePosition(output
->id(), i
);
128 bool DBusConfigurations::move(Output
* output
, const QPoint
& position
) {
129 return m_interface
->move(output
->id(), position
);
132 bool DBusConfigurations::resize(Output
* output
, const QSize
& size
) {
133 return m_interface
->resize(output
->id(), size
);
136 bool DBusConfigurations::rotate(Output
* output
, Rotation rotation
) {
137 return m_interface
->rotate(output
->id(), rotation
);
140 bool DBusConfigurations::reflectX(Output
* output
, bool reflect
) {
141 return m_interface
->reflectX(output
->id(), reflect
);
144 bool DBusConfigurations::reflectY(Output
* output
, bool reflect
) {
145 return m_interface
->reflectY(output
->id(), reflect
);
148 bool DBusConfigurations::changeRate(Output
* output
, float rate
) {
149 return m_interface
->changeRate(output
->id(), rate
);
152 bool DBusConfigurations::isValid() {
156 org::kde::Kephal::Configurations
* DBusConfigurations::interface() {
160 int DBusConfigurations::screen(Output
* output
) {
161 return m_interface
->screen(output
->id());
164 void DBusConfigurations::applyOutputSettings() {
167 void DBusConfigurations::setPolling(bool polling
) {
168 m_interface
->setPolling(polling
);
171 bool DBusConfigurations::polling() {
172 return m_interface
->polling();
175 void DBusConfigurations::configurationActivatedSlot(QString name
) {
176 if ((! name
.isEmpty()) && m_configs
.contains(name
)) {
177 emit
configurationActivated(m_configs
[name
]);
181 void DBusConfigurations::confirm() {
182 m_interface
->confirm();
185 void DBusConfigurations::revert() {
186 m_interface
->revert();