tdecore
tdebacklightdevice.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "tdebacklightdevice.h"
00021
00022 #include <unistd.h>
00023
00024 #include <tqfile.h>
00025
00026 #include "config.h"
00027
00028
00029 #if defined(WITH_TDEHWLIB_DAEMONS)
00030 #include <tqdbusdata.h>
00031 #include <tqdbusmessage.h>
00032 #include <tqdbusproxy.h>
00033 #include <tqdbusvariant.h>
00034 #include <tqdbusconnection.h>
00035 #endif // defined(WITH_TDEHWLIB_DAEMONS)
00036
00037 TDEBacklightDevice::TDEBacklightDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
00038 }
00039
00040 TDEBacklightDevice::~TDEBacklightDevice() {
00041 }
00042
00043 TDEDisplayPowerLevel::TDEDisplayPowerLevel TDEBacklightDevice::powerLevel() {
00044 return m_powerLevel;
00045 }
00046
00047 void TDEBacklightDevice::internalSetPowerLevel(TDEDisplayPowerLevel::TDEDisplayPowerLevel pl) {
00048 m_powerLevel = pl;
00049 }
00050
00051 void TDEBacklightDevice::internalSetMaximumRawBrightness(int br) {
00052 m_maximumBrightness = br;
00053 }
00054
00055 void TDEBacklightDevice::internalSetCurrentRawBrightness(int br) {
00056 m_currentBrightness = br;
00057 }
00058
00059 int TDEBacklightDevice::brightnessSteps() {
00060 return m_maximumBrightness + 1;
00061 }
00062
00063 double TDEBacklightDevice::brightnessPercent() {
00064 return (((m_currentBrightness*1.0)/m_maximumBrightness)*100.0);
00065 }
00066
00067 bool TDEBacklightDevice::canSetBrightness() {
00068 TQString brightnessnode = systemPath() + "/brightness";
00069 int rval = access (brightnessnode.ascii(), W_OK);
00070 if (rval == 0) {
00071 return TRUE;
00072 }
00073
00074 #ifdef WITH_TDEHWLIB_DAEMONS
00075 {
00076 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
00077 if (dbusConn.isConnected()) {
00078 TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.Brightness", dbusConn);
00079 if (hardwareControl.canSend()) {
00080
00081 TQValueList<TQT_DBusData> params;
00082 params << TQT_DBusData::fromString(brightnessnode);
00083 TQT_DBusMessage reply = hardwareControl.sendWithReply("CanSetBrightness", params);
00084 if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
00085 return reply[0].toBool();
00086 }
00087 }
00088 }
00089 }
00090 #endif // WITH_TDEHWLIB_DAEMONS
00091
00092 return FALSE;
00093 }
00094
00095 int TDEBacklightDevice::rawBrightness() {
00096 return m_currentBrightness;
00097 }
00098
00099 void TDEBacklightDevice::setRawBrightness(int br) {
00100 bool setRawBrightnessDone = FALSE;
00101
00102 TQString brightnessnode = systemPath() + "/brightness";
00103 TQString brightnessCommand = TQString("%1").arg(br);
00104 TQFile file( brightnessnode );
00105 if ( file.open( IO_WriteOnly ) ) {
00106 TQTextStream stream( &file );
00107 stream << brightnessCommand;
00108 file.close();
00109 setRawBrightnessDone = TRUE;
00110 }
00111
00112 #ifdef WITH_TDEHWLIB_DAEMONS
00113 if ( !setRawBrightnessDone ) {
00114 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
00115 if (dbusConn.isConnected()) {
00116 TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.Brightness", dbusConn);
00117 if (hardwareControl.canSend()) {
00118
00119 TQValueList<TQT_DBusData> params;
00120 params << TQT_DBusData::fromString(brightnessnode) << TQT_DBusData::fromString(brightnessCommand);
00121 TQT_DBusMessage reply = hardwareControl.sendWithReply("SetBrightness", params);
00122 if (reply.type() == TQT_DBusMessage::ReplyMessage) {
00123 setRawBrightnessDone = TRUE;
00124 }
00125 }
00126 }
00127 }
00128 #endif // WITH_TDEHWLIB_DAEMONS
00129
00130 }
00131
00132 #include "tdebacklightdevice.moc"