1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
/*
* Copyright (C) 2013 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Authors:
* Iain Lane <iain.lane@canonical.com>
*
*/
#include "brightness.h"
#include <hybris/properties/properties.h>
#include <QDBusArgument>
#include <QDBusReply>
#include <QDBusMetaType>
#include <QDebug>
// Returned data from getBrightnessParams
struct BrightnessParams {
int dim; // Dim brightness
int min; // Minimum brightness
int max; // Maximum brightness
int def; // Default brightness
bool automatic; // Whether "auto brightness" is supported
};
Q_DECLARE_METATYPE(BrightnessParams)
const QDBusArgument &operator<<(QDBusArgument &argument,
const BrightnessParams ¶ms)
{
argument.beginStructure();
argument << params.dim << params.min << params.max << params.def << params.automatic;
argument.endStructure();
return argument;
}
const QDBusArgument &operator>>(const QDBusArgument &argument,
BrightnessParams ¶ms)
{
argument.beginStructure();
argument >> params.dim >> params.min >> params.max >> params.def >> params.automatic;
argument.endStructure();
return argument;
}
Brightness::Brightness(QObject *parent) :
QObject(parent),
m_systemBusConnection (QDBusConnection::systemBus()),
m_powerdIface ("com.lomiri.Repowerd",
"/com/lomiri/Repowerd",
"com.lomiri.Repowerd",
m_systemBusConnection),
m_powerdRunning(false),
m_autoBrightnessAvailable(false)
{
qRegisterMetaType<BrightnessParams>();
m_powerdRunning = m_powerdIface.isValid();
if (!m_powerdRunning) {
qWarning() << m_powerdIface.interface() << m_powerdIface.lastError().message();
return;
}
QDBusMessage reply(m_powerdIface.call("getBrightnessParams"));
if (reply.type() != QDBusMessage::ReplyMessage)
return;
// (iiiib) -> dim, max, min, default, autobrightness
QDBusArgument result(reply.arguments()[0].value<QDBusArgument>());
BrightnessParams params = qdbus_cast<BrightnessParams>(result);
m_autoBrightnessAvailable = params.automatic;
}
bool Brightness::getAutoBrightnessAvailable() const
{
return m_autoBrightnessAvailable;
}
bool Brightness::getPowerdRunning() const {
return m_powerdRunning;
}
bool Brightness::getWidiSupported() const
{
char widi[PROP_VALUE_MAX];
property_get("ubuntu.widi.supported", widi, "0");
return (strcmp(widi, "0") > 0);
}
|