20#include "tderootsystemdevice.h" 
   21#include "tdestoragedevice.h" 
   27#include <dcopclient.h> 
   30#include "tdeapplication.h" 
   31#include "tdestandarddirs.h" 
   35#if defined(WITH_TDEHWLIB_DAEMONS) || defined(WITH_UPOWER) || defined(WITH_DEVKITPOWER) || defined(WITH_CONSOLEKIT) 
   36    #include <tqdbusdata.h> 
   37    #include <tqdbusmessage.h> 
   38    #include <tqdbusproxy.h> 
   39    #include <tqdbusvariant.h> 
   40    #include <tqdbusconnection.h> 
   43TDERootSystemDevice::TDERootSystemDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
 
   44    m_hibernationSpace = -1;
 
   47TDERootSystemDevice::~TDERootSystemDevice() {
 
   50TDESystemFormFactor::TDESystemFormFactor TDERootSystemDevice::formFactor() {
 
   54void TDERootSystemDevice::internalSetFormFactor(TDESystemFormFactor::TDESystemFormFactor ff) {
 
   58TDESystemPowerStateList TDERootSystemDevice::powerStates() {
 
   62void TDERootSystemDevice::internalSetPowerStates(TDESystemPowerStateList ps) {
 
   66TDESystemHibernationMethodList TDERootSystemDevice::hibernationMethods() {
 
   67    return m_hibernationMethods;
 
   70void TDERootSystemDevice::internalSetHibernationMethods(TDESystemHibernationMethodList hm) {
 
   71    m_hibernationMethods = hm;
 
   74TDESystemHibernationMethod::TDESystemHibernationMethod TDERootSystemDevice::hibernationMethod() {
 
   75    return m_hibernationMethod;
 
   78void TDERootSystemDevice::internalSetHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm) {
 
   79    m_hibernationMethod = hm;
 
   82unsigned long TDERootSystemDevice::diskSpaceNeededForHibernation() {
 
   83    return m_hibernationSpace;
 
   86void TDERootSystemDevice::internalSetDiskSpaceNeededForHibernation(
unsigned long sz) {
 
   87    m_hibernationSpace = sz;
 
   90bool TDERootSystemDevice::canSetHibernationMethod() {
 
   91    TQString hibernationnode = 
"/sys/power/disk";
 
   92    int rval = access (hibernationnode.ascii(), W_OK);
 
   97#ifdef WITH_TDEHWLIB_DAEMONS 
   99        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  100        if (dbusConn.isConnected()) {
 
  102            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  103                        "org.trinitydesktop.hardwarecontrol",
 
  104                        "/org/trinitydesktop/hardwarecontrol",
 
  105                        "org.trinitydesktop.hardwarecontrol.Power",
 
  106                        "CanSetHibernationMethod");
 
  107            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  108            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  109                return reply[0].toBool();
 
  118bool TDERootSystemDevice::canStandby() {
 
  119    TQString statenode = 
"/sys/power/state";
 
  120    int rval = access (statenode.ascii(), W_OK);
 
  122        if (powerStates().contains(TDESystemPowerState::Standby)) {
 
  130#ifdef WITH_TDEHWLIB_DAEMONS 
  132        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  133        if (dbusConn.isConnected()) {
 
  135            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  136                        "org.trinitydesktop.hardwarecontrol",
 
  137                        "/org/trinitydesktop/hardwarecontrol",
 
  138                        "org.trinitydesktop.hardwarecontrol.Power",
 
  140            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  141            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  142                return reply[0].toBool();
 
  151bool TDERootSystemDevice::canFreeze() {
 
  152    TQString statenode = 
"/sys/power/state";
 
  153    int rval = access (statenode.ascii(), W_OK);
 
  155        if (powerStates().contains(TDESystemPowerState::Freeze)) {
 
  163#ifdef WITH_TDEHWLIB_DAEMONS 
  165        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  166        if (dbusConn.isConnected()) {
 
  168            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  169                        "org.trinitydesktop.hardwarecontrol",
 
  170                        "/org/trinitydesktop/hardwarecontrol",
 
  171                        "org.trinitydesktop.hardwarecontrol.Power",
 
  173            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  174            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  175                return reply[0].toBool();
 
  184bool TDERootSystemDevice::canSuspend() {
 
  185    TQString statenode = 
"/sys/power/state";
 
  186    int rval = access (statenode.ascii(), W_OK);
 
  188        if (powerStates().contains(TDESystemPowerState::Suspend)) {
 
  196#ifdef WITH_LOGINDPOWER 
  198        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  199        if (dbusConn.isConnected()) {
 
  201            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  202                        "org.freedesktop.login1",
 
  203                        "/org/freedesktop/login1",
 
  204                        "org.freedesktop.login1.Manager",
 
  206            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  207            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  208                return (reply[0].toString() == 
"yes");
 
  216        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  217        if (dbusConn.isConnected()) {
 
  218            TQT_DBusProxy upowerProperties(
"org.freedesktop.UPower", 
"/org/freedesktop/UPower", 
"org.freedesktop.DBus.Properties", dbusConn);
 
  219            if (upowerProperties.canSend()) {
 
  221                TQValueList<TQT_DBusData> params;
 
  222                params << TQT_DBusData::fromString(upowerProperties.interface()) << TQT_DBusData::fromString(
"CanSuspend");
 
  223                TQT_DBusMessage reply = upowerProperties.sendWithReply(
"Get", params);
 
  224                if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  225                    return reply[0].toVariant().value.toBool();
 
  232#ifdef WITH_DEVKITPOWER 
  234        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  235        if (dbusConn.isConnected()) {
 
  236            TQT_DBusProxy devkitpowerProperties(
"org.freedesktop.DeviceKit.Power", 
"/org/freedesktop/DeviceKit/Power", 
"org.freedesktop.DBus.Properties", dbusConn);
 
  237            if (devkitpowerProperties.canSend()) {
 
  239                TQValueList<TQT_DBusData> params;
 
  240                params << TQT_DBusData::fromString(devkitpowerProperties.interface()) << TQT_DBusData::fromString(
"CanSuspend");
 
  241                TQT_DBusMessage reply = devkitpowerProperties.sendWithReply(
"Get", params);
 
  242                if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  243                    return reply[0].toVariant().value.toBool();
 
  250#ifdef WITH_TDEHWLIB_DAEMONS 
  252        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  253        if (dbusConn.isConnected()) {
 
  255            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  256                        "org.trinitydesktop.hardwarecontrol",
 
  257                        "/org/trinitydesktop/hardwarecontrol",
 
  258                        "org.trinitydesktop.hardwarecontrol.Power",
 
  260            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  261            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  262                return reply[0].toBool();
 
  271bool TDERootSystemDevice::canHibernate() {
 
  272    TQString statenode = 
"/sys/power/state";
 
  273    TQString disknode  = 
"/sys/power/disk";
 
  274    int state_rval = access (statenode.ascii(), W_OK);
 
  275    int disk_rval  = access (disknode.ascii(), W_OK);
 
  276    if (state_rval == 0 && disk_rval == 0) {
 
  277        if (powerStates().contains(TDESystemPowerState::Hibernate)) {
 
  285#ifdef WITH_LOGINDPOWER 
  287        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  288        if (dbusConn.isConnected()) {
 
  290            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  291                        "org.freedesktop.login1",
 
  292                        "/org/freedesktop/login1",
 
  293                        "org.freedesktop.login1.Manager",
 
  295            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  296            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  297                return (reply[0].toString() == 
"yes");
 
  305        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  306        if (dbusConn.isConnected()) {
 
  307            TQT_DBusProxy upowerProperties(
"org.freedesktop.UPower", 
"/org/freedesktop/UPower", 
"org.freedesktop.DBus.Properties", dbusConn);
 
  308            if (upowerProperties.canSend()) {
 
  310                TQValueList<TQT_DBusData> params;
 
  311                params << TQT_DBusData::fromString(upowerProperties.interface()) << TQT_DBusData::fromString(
"CanHibernate");
 
  312                TQT_DBusMessage reply = upowerProperties.sendWithReply(
"Get", params);
 
  313                if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  314                    return reply[0].toVariant().value.toBool();
 
  321#ifdef WITH_DEVKITPOWER 
  323        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  324        if (dbusConn.isConnected()) {
 
  325            TQT_DBusProxy devkitpowerProperties(
"org.freedesktop.DeviceKit.Power", 
"/org/freedesktop/DeviceKit/Power", 
"org.freedesktop.DBus.Properties", dbusConn);
 
  326            if (devkitpowerProperties.canSend()) {
 
  328                TQValueList<TQT_DBusData> params;
 
  329                params << TQT_DBusData::fromString(devkitpowerProperties.interface()) << TQT_DBusData::fromString(
"CanHibernate");
 
  330                TQT_DBusMessage reply = devkitpowerProperties.sendWithReply(
"Get", params);
 
  331                if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  332                    return reply[0].toVariant().value.toBool();
 
  339#ifdef WITH_TDEHWLIB_DAEMONS 
  341        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  342        if (dbusConn.isConnected()) {
 
  344            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  345                        "org.trinitydesktop.hardwarecontrol",
 
  346                        "/org/trinitydesktop/hardwarecontrol",
 
  347                        "org.trinitydesktop.hardwarecontrol.Power",
 
  349            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  350            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  351                return reply[0].toBool();
 
  360bool TDERootSystemDevice::canHybridSuspend() {
 
  361    TQString statenode = 
"/sys/power/state";
 
  362    TQString disknode  = 
"/sys/power/disk";
 
  363    int state_rval = access (statenode.ascii(), W_OK);
 
  364    int disk_rval  = access (disknode.ascii(), W_OK);
 
  365    if (state_rval == 0 && disk_rval == 0) {
 
  366        if (powerStates().contains(TDESystemPowerState::HybridSuspend)) {
 
  374#ifdef WITH_LOGINDPOWER 
  376        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  377        if (dbusConn.isConnected()) {
 
  379            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  380                        "org.freedesktop.login1",
 
  381                        "/org/freedesktop/login1",
 
  382                        "org.freedesktop.login1.Manager",
 
  384            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  385            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  386                return (reply[0].toString() == 
"yes");
 
  395#ifdef WITH_TDEHWLIB_DAEMONS 
  397        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  398        if (dbusConn.isConnected()) {
 
  400            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  401                        "org.trinitydesktop.hardwarecontrol",
 
  402                        "/org/trinitydesktop/hardwarecontrol",
 
  403                        "org.trinitydesktop.hardwarecontrol.Power",
 
  405            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  406            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  407                return reply[0].toBool();
 
  416bool TDERootSystemDevice::canPowerOff() {
 
  418    config.setGroup(
"General" );
 
  419    if (!config.readBoolEntry( 
"offerShutdown", 
true )) {
 
  423#ifdef WITH_LOGINDPOWER 
  425        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  426        if (dbusConn.isConnected()) {
 
  428            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  429                        "org.freedesktop.login1",
 
  430                        "/org/freedesktop/login1",
 
  431                        "org.freedesktop.login1.Manager",
 
  433            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  434            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  435                return (reply[0].toString() == 
"yes");
 
  441#ifdef WITH_CONSOLEKIT 
  443        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  444        if (dbusConn.isConnected()) {
 
  446            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  447                        "org.freedesktop.ConsoleKit",
 
  448                        "/org/freedesktop/ConsoleKit/Manager",
 
  449                        "org.freedesktop.ConsoleKit.Manager",
 
  451            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  452            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  453                return reply[0].toBool();
 
  468bool TDERootSystemDevice::canReboot() {
 
  470    config.setGroup(
"General" );
 
  471    if (!config.readBoolEntry( 
"offerShutdown", 
true )) {
 
  475#ifdef WITH_LOGINDPOWER 
  477        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  478        if (dbusConn.isConnected()) {
 
  480            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  481                        "org.freedesktop.login1",
 
  482                        "/org/freedesktop/login1",
 
  483                        "org.freedesktop.login1.Manager",
 
  485            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  486            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  487                return (reply[0].toString() == 
"yes");
 
  493#ifdef WITH_CONSOLEKIT 
  495        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  496        if (dbusConn.isConnected()) {
 
  498            TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  499                        "org.freedesktop.ConsoleKit",
 
  500                        "/org/freedesktop/ConsoleKit/Manager",
 
  501                        "org.freedesktop.ConsoleKit.Manager",
 
  503            TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  504            if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
 
  505                return reply[0].toBool();
 
  520void TDERootSystemDevice::setHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm) {
 
  521    TQString hibernationnode = 
"/sys/power/disk";
 
  522    TQFile file( hibernationnode );
 
  523    if ( file.open( IO_WriteOnly ) ) {
 
  524        TQString hibernationCommand;
 
  525        if (hm == TDESystemHibernationMethod::Platform) {
 
  526            hibernationCommand = 
"platform";
 
  528        else if (hm == TDESystemHibernationMethod::Shutdown) {
 
  529            hibernationCommand = 
"shutdown";
 
  531        else if (hm == TDESystemHibernationMethod::Reboot) {
 
  532            hibernationCommand = 
"reboot";
 
  534        else if (hm == TDESystemHibernationMethod::TestProc) {
 
  535            hibernationCommand = 
"testproc";
 
  537        else if (hm == TDESystemHibernationMethod::Test) {
 
  538            hibernationCommand = 
"test";
 
  540        else if (hm == TDESystemHibernationMethod::Suspend) {
 
  541            hibernationCommand = 
"suspend";
 
  543        TQTextStream stream( &file );
 
  544        stream << hibernationCommand;
 
  549#ifdef WITH_TDEHWLIB_DAEMONS 
  551        TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  552        if (dbusConn.isConnected()) {
 
  553            TQT_DBusProxy hardwareControl(
"org.trinitydesktop.hardwarecontrol", 
"/org/trinitydesktop/hardwarecontrol", 
"org.trinitydesktop.hardwarecontrol.Power", dbusConn);
 
  554            if (hardwareControl.canSend()) {
 
  556                TQValueList<TQT_DBusData> params;
 
  557                TQString hibernationCommand;
 
  558                if (hm == TDESystemHibernationMethod::Platform) {
 
  559                    hibernationCommand = 
"platform";
 
  561                else if (hm == TDESystemHibernationMethod::Shutdown) {
 
  562                    hibernationCommand = 
"shutdown";
 
  564                else if (hm == TDESystemHibernationMethod::Reboot) {
 
  565                    hibernationCommand = 
"reboot";
 
  567                else if (hm == TDESystemHibernationMethod::TestProc) {
 
  568                    hibernationCommand = 
"testproc";
 
  570                else if (hm == TDESystemHibernationMethod::Test) {
 
  571                    hibernationCommand = 
"test";
 
  573                else if (hm == TDESystemHibernationMethod::Suspend) {
 
  574                    hibernationCommand = 
"suspend";
 
  576                params << TQT_DBusData::fromString(hibernationCommand);
 
  577                TQT_DBusMessage reply = hardwareControl.sendWithReply(
"SetHibernationMethod", params);
 
  578                if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  588bool TDERootSystemDevice::setPowerState(TDESystemPowerState::TDESystemPowerState ps) {
 
  589    if ((ps == TDESystemPowerState::Freeze)  || (ps == TDESystemPowerState::Standby)   ||  
 
  590        (ps == TDESystemPowerState::Suspend) || (ps == TDESystemPowerState::Hibernate) ||
 
  591        (ps == TDESystemPowerState::HybridSuspend)) {
 
  592        TQString statenode = 
"/sys/power/state";
 
  593        TQString disknode  = 
"/sys/power/disk";
 
  594        TQFile statefile( statenode );
 
  595        TQFile diskfile( disknode );
 
  596        if ( statefile.open( IO_WriteOnly ) &&
 
  597             ((ps != TDESystemPowerState::Hibernate && ps != TDESystemPowerState::HybridSuspend) || 
 
  598               diskfile.open( IO_WriteOnly )) ) {
 
  599            TQString powerCommand;
 
  600            if (ps == TDESystemPowerState::Freeze) {
 
  601                powerCommand = 
"freeze";
 
  603            else if (ps == TDESystemPowerState::Standby) {
 
  604                powerCommand = 
"standby";
 
  606            else if (ps == TDESystemPowerState::Suspend) {
 
  607                powerCommand = 
"mem";
 
  609            else if (ps == TDESystemPowerState::Hibernate) {
 
  610                powerCommand = 
"disk";
 
  611                TQTextStream diskstream( &diskfile );
 
  612                diskstream << 
"platform";
 
  615            else if (ps == TDESystemPowerState::HybridSuspend) {
 
  616                powerCommand = 
"disk";
 
  617                TQTextStream diskstream( &diskfile );
 
  618                diskstream << 
"suspend";
 
  621            TQTextStream statestream( &statefile );
 
  622            statestream << powerCommand;
 
  627#ifdef WITH_LOGINDPOWER 
  630            TQT_DBusConnection dbusConn;
 
  631            dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  632            if ( dbusConn.isConnected() ) {
 
  633                TQT_DBusProxy logindProxy(
"org.freedesktop.login1", 
"/org/freedesktop/login1",
 
  634                                          "org.freedesktop.login1.Manager", dbusConn);
 
  635                TQValueList<TQT_DBusData> params;
 
  636                params << TQT_DBusData::fromBool(
true);
 
  637                if (logindProxy.canSend()) {
 
  638                    if (ps == TDESystemPowerState::Suspend) {
 
  639                        TQT_DBusMessage reply = logindProxy.sendWithReply(
"Suspend", params);
 
  640                        if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  644                    else if (ps == TDESystemPowerState::Hibernate) {
 
  645                        TQT_DBusMessage reply = logindProxy.sendWithReply(
"Hibernate", params);
 
  646                        if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  650                    else if (ps == TDESystemPowerState::HybridSuspend) {
 
  651                        TQT_DBusMessage reply = logindProxy.sendWithReply(
"HybridSleep", params);
 
  652                        if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  664            TQT_DBusConnection dbusConn;
 
  665            dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  666            if ( dbusConn.isConnected() ) {
 
  667                if (ps == TDESystemPowerState::Suspend) {
 
  668                    TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  669                                "org.freedesktop.UPower",
 
  670                                "/org/freedesktop/UPower",
 
  671                                "org.freedesktop.UPower",
 
  673                    TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  674                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  678                else if (ps == TDESystemPowerState::Hibernate) {
 
  679                    TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  680                                "org.freedesktop.UPower",
 
  681                                "/org/freedesktop/UPower",
 
  682                                "org.freedesktop.UPower",
 
  684                    TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  685                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  693#ifdef WITH_DEVKITPOWER 
  696            TQT_DBusConnection dbusConn;
 
  697            dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  698            if ( dbusConn.isConnected() ) {
 
  699                if (ps == TDESystemPowerState::Suspend) {
 
  700                    TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  701                                "org.freedesktop.DeviceKit.Power",
 
  702                                "/org/freedesktop/DeviceKit/Power",
 
  703                                "org.freedesktop.DeviceKit.Power",
 
  705                    TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  706                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  710                else if (ps == TDESystemPowerState::Hibernate) {
 
  711                    TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  712                                "org.freedesktop.DeviceKit.Power",
 
  713                                "/org/freedesktop/DeviceKit/Power",
 
  714                                "org.freedesktop.DeviceKit.Power",
 
  716                    TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  717                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  725#ifdef WITH_TDEHWLIB_DAEMONS 
  727            TQT_DBusConnection dbusConn;
 
  728            dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  729            if ( dbusConn.isConnected() ) {
 
  730                if (ps == TDESystemPowerState::Standby) {
 
  731                    TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  732                                "org.trinitydesktop.hardwarecontrol",
 
  733                                "/org/trinitydesktop/hardwarecontrol",
 
  734                                "org.trinitydesktop.hardwarecontrol.Power",
 
  736                    TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  737                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  741                else if (ps == TDESystemPowerState::Freeze) {
 
  742                    TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  743                                "org.trinitydesktop.hardwarecontrol",
 
  744                                "/org/trinitydesktop/hardwarecontrol",
 
  745                                "org.trinitydesktop.hardwarecontrol.Power",
 
  747                    TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  748                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  752                else if (ps == TDESystemPowerState::Suspend) {
 
  753                    TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  754                                "org.trinitydesktop.hardwarecontrol",
 
  755                                "/org/trinitydesktop/hardwarecontrol",
 
  756                                "org.trinitydesktop.hardwarecontrol.Power",
 
  758                    TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  759                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  763                else if (ps == TDESystemPowerState::Hibernate) {
 
  764                    TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  765                                "org.trinitydesktop.hardwarecontrol",
 
  766                                "/org/trinitydesktop/hardwarecontrol",
 
  767                                "org.trinitydesktop.hardwarecontrol.Power",
 
  769                    TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  770                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  774                else if (ps == TDESystemPowerState::HybridSuspend) {
 
  775                    TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  776                                "org.trinitydesktop.hardwarecontrol",
 
  777                                "/org/trinitydesktop/hardwarecontrol",
 
  778                                "org.trinitydesktop.hardwarecontrol.Power",
 
  780                    TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  781                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  791    else if (ps == TDESystemPowerState::PowerOff) {
 
  793        config.setGroup(
"General" );
 
  794        if (!config.readBoolEntry( 
"offerShutdown", 
true )) {
 
  797#ifdef WITH_LOGINDPOWER 
  799            TQT_DBusConnection dbusConn;
 
  800            dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  801            if ( dbusConn.isConnected() ) {
 
  802                TQT_DBusProxy logindProxy(
"org.freedesktop.login1", 
"/org/freedesktop/login1",
 
  803                                          "org.freedesktop.login1.Manager", dbusConn);
 
  804                TQValueList<TQT_DBusData> params;
 
  805                params << TQT_DBusData::fromBool(
true);
 
  806                if (logindProxy.canSend()) {
 
  807                    TQT_DBusMessage reply = logindProxy.sendWithReply(
"PowerOff", params);
 
  808                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  815#ifdef WITH_CONSOLEKIT 
  817            TQT_DBusConnection dbusConn;
 
  818            dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  819            if ( dbusConn.isConnected() ) {
 
  820                TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  821                            "org.freedesktop.ConsoleKit",
 
  822                            "/org/freedesktop/ConsoleKit/Manager",
 
  823                            "org.freedesktop.ConsoleKit.Manager",
 
  825                TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  826                if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  852        TQDataStream arg(data, IO_WriteOnly);
 
  853        arg << (int)0 << (
int)2 << (int)2;
 
  854        if ( tdeApp->dcopClient()->send(
"ksmserver", 
"default", 
"logout(int,int,int)", data) ) {
 
  859    else if (ps == TDESystemPowerState::Reboot) {
 
  861        config.setGroup(
"General" );
 
  862        if (!config.readBoolEntry( 
"offerShutdown", 
true )) {
 
  865#ifdef WITH_LOGINDPOWER 
  867            TQT_DBusConnection dbusConn;
 
  868            dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  869            if ( dbusConn.isConnected() ) {
 
  870                TQT_DBusProxy logindProxy(
"org.freedesktop.login1", 
"/org/freedesktop/login1",
 
  871                                          "org.freedesktop.login1.Manager", dbusConn);
 
  872                TQValueList<TQT_DBusData> params;
 
  873                params << TQT_DBusData::fromBool(
true);
 
  874                if (logindProxy.canSend()) {
 
  875                    TQT_DBusMessage reply = logindProxy.sendWithReply(
"Reboot", params);
 
  876                    if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  883#ifdef WITH_CONSOLEKIT 
  885            TQT_DBusConnection dbusConn;
 
  886            dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
 
  887            if ( dbusConn.isConnected() ) {
 
  888                TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
 
  889                            "org.freedesktop.ConsoleKit",
 
  890                            "/org/freedesktop/ConsoleKit/Manager",
 
  891                            "org.freedesktop.ConsoleKit.Manager",
 
  893                TQT_DBusMessage reply = dbusConn.sendWithReply(msg);
 
  894                if (reply.type() == TQT_DBusMessage::ReplyMessage) {
 
  903        TQDataStream arg(data, IO_WriteOnly);
 
  904        arg << (int)0 << (
int)1 << (int)2;
 
  905        if ( tdeApp->dcopClient()->send(
"ksmserver", 
"default", 
"logout(int,int,int)", data) ) {
 
  910    else if (ps == TDESystemPowerState::Active) {
 
  918#include "tderootsystemdevice.moc" 
Access KDE Configuration entries.