Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
powerdevil
PowerManagementConnector.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File PowerManagementConnector.diff of Package powerdevil
--- daemon/CMakeLists.txt 2008/11/11 10:25:42 1.1 +++ daemon/CMakeLists.txt 2008/11/11 10:42:00 @@ -11,6 +11,7 @@ TimerBasedPoller.cpp PollSystemLoader.cpp SuspensionLockHandler.cpp + PowerManagementConnector.cpp ) kde4_add_kcfg_files(kded_powerdevil_SRCS ../PowerDevilSettings.kcfgc) @@ -24,6 +25,9 @@ qt4_add_dbus_interface(kded_powerdevil_SRCS ${ksmserver_xml} ksmserver_interface ) qt4_add_dbus_adaptor( kded_powerdevil_SRCS org.kde.PowerDevil.xml PowerDevilDaemon.h PowerDevilDaemon ) +qt4_add_dbus_adaptor( kded_powerdevil_SRCS ${DBUS_INTERFACES_INSTALL_DIR}/org.kde.Solid.PowerManagement.xml PowerManagementConnector.h PowerManagementConnector ) +qt4_add_dbus_adaptor( kded_powerdevil_SRCS ${DBUS_INTERFACES_INSTALL_DIR}/org.kde.Solid.PowerManagement.Inhibit.xml PowerManagementConnector.h PowerManagementConnector powermanagementinhibitadaptor PowerManagementInhibitAdaptor ) + kde4_add_plugin( kded_powerdevil ${kded_powerdevil_SRCS} ) --- daemon/PowerDevilDaemon.cpp 2008/11/11 10:26:55 1.1 +++ daemon/PowerDevilDaemon.cpp 2008/11/11 10:28:13 @@ -41,6 +41,7 @@ #include "PowerDevilSettings.h" #include "powerdeviladaptor.h" +#include "PowerManagementConnector.h" #include "PollSystemLoader.h" #include "SuspensionLockHandler.h" @@ -173,6 +174,7 @@ //DBus new PowerDevilAdaptor(this); + new PowerManagementConnector(this); // This gets registered to avoid double copies. QDBusConnection::sessionBus().registerService("org.kde.powerdevilsystem"); --- daemon/PowerManagementConnector.h 2008/11/11 10:28:50 1.1 +++ daemon/PowerManagementConnector.h 2008/11/11 10:29:15 @@ -0,0 +1,69 @@ +/*************************************************************************** + * Copyright (C) 2008 by Kevin Ottens <ervin@kde.org> * + * Copyright (C) 2008 by Dario Freddi <drf@kdemod.ath.cx> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * + ***************************************************************************/ + +#ifndef POWERMANAGEMENTCONNECTOR_H +#define POWERMANAGEMENTCONNECTOR_H + +#include <QtCore/QObject> +#include <QtCore/QMap> +#include <QtCore/QMultiMap> + +#include <QtDBus/QDBusMessage> + +#include "PowerDevilDaemon.h" + +class PowerManagementConnector : public QObject +{ + Q_OBJECT + +public: + PowerManagementConnector(PowerDevilDaemon *parent); + + bool CanHibernate(); + bool CanSuspend(); + + bool GetPowerSaveStatus(); + + void Suspend(); + void Hibernate(); + + bool HasInhibit(); + + int Inhibit(const QString &application, const QString &reason); + void UnInhibit(int cookie); + void ForceUnInhibitAll(); + +signals: + void CanSuspendChanged(bool canSuspend); + void CanHibernateChanged(bool canHibernate); + void PowerSaveStatusChanged(bool savePower); + + void HasInhibitChanged(bool hasInhibit); + +private slots: + void _k_stateChanged(int battery, bool plugged); + +private: + PowerDevilDaemon *m_daemon; + + +}; + +#endif /*POWERMANAGEMENTCONNECTOR_H*/ --- daemon/PowerManagementConnector.cpp 2008/11/11 10:28:53 1.1 +++ daemon/PowerManagementConnector.cpp 2008/11/11 10:29:11 @@ -0,0 +1,107 @@ +/*************************************************************************** + * Copyright (C) 2008 by Kevin Ottens <ervin@kde.org> * + * Copyright (C) 2008 by Dario Freddi <drf@kdemod.ath.cx> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * + **************************************************************************/ + +#include "PowerManagementConnector.h" + +#include "SuspensionLockHandler.h" + +#include <solid/control/powermanager.h> + +#include "powermanagementadaptor.h" +#include "powermanagementinhibitadaptor.h" + +PowerManagementConnector::PowerManagementConnector(PowerDevilDaemon *parent) + : QObject(parent), m_daemon(parent) +{ + new PowerManagementAdaptor(this); + new PowerManagementInhibitAdaptor(this); + + QDBusConnection c = QDBusConnection::sessionBus(); + + c.registerService("org.kde.Solid.PowerManagement"); + c.registerObject("/org/kde/Solid/PowerManagement", this); + + c.registerService("org.kde.Solid.PowerManagement.Inhibit"); + c.registerObject("/org/kde/Solid/PowerManagement/Inhibit", this); + + connect(m_daemon, SIGNAL(stateChanged(int, bool)), + this, SLOT(_k_stateChanged(int, bool))); + connect(m_daemon->lockHandler(), SIGNAL(inhibitChanged(bool)), + this, SIGNAL(HasInhibitChanged(bool))); +} + +bool PowerManagementConnector::CanHibernate() +{ + Solid::Control::PowerManager::SuspendMethods methods + = Solid::Control::PowerManager::supportedSuspendMethods(); + + return methods & Solid::Control::PowerManager::ToDisk; +} + +bool PowerManagementConnector::CanSuspend() +{ + Solid::Control::PowerManager::SuspendMethods methods + = Solid::Control::PowerManager::supportedSuspendMethods(); + + return methods & Solid::Control::PowerManager::ToRam; +} + +bool PowerManagementConnector::GetPowerSaveStatus() +{ + return Solid::Control::PowerManager::acAdapterState() == Solid::Control::PowerManager::Unplugged; +} + +void PowerManagementConnector::Suspend() +{ + m_daemon->suspend(PowerDevilDaemon::S2Ram); +} + +void PowerManagementConnector::Hibernate() +{ + m_daemon->suspend(PowerDevilDaemon::S2Disk); +} + +bool PowerManagementConnector::HasInhibit() +{ + return m_daemon->lockHandler()->hasInhibit(); +} + +int PowerManagementConnector::Inhibit(const QString &application, const QString &reason) +{ + return m_daemon->lockHandler()->inhibit(application, reason); +} + +void PowerManagementConnector::UnInhibit(int cookie) +{ + m_daemon->lockHandler()->releaseInhibiton(cookie); +} + +void PowerManagementConnector::ForceUnInhibitAll() +{ + m_daemon->lockHandler()->releaseAllInhibitions(); +} + +void PowerManagementConnector::_k_stateChanged(int battery, bool plugged) +{ + Q_UNUSED(battery) + emit PowerSaveStatusChanged(!plugged); +} + +#include "PowerManagementConnector.moc"
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor