summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-08-11 14:58:59 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-08-11 14:58:59 -0500
commit06fa48d8ebade86f0f9f3f16eaa24c1fc555ffba (patch)
treec2fb42a502fe5bbe0efbd9f2c0207e53db391a49
parent13ebc76f40c07f267a40efb9733cf9879017b6d9 (diff)
parentfbd77bdc37ae73a53f47a559b526fe47195ba691 (diff)
downloadtdelibs-06fa48d8ebade86f0f9f3f16eaa24c1fc555ffba.tar.gz
tdelibs-06fa48d8ebade86f0f9f3f16eaa24c1fc555ffba.zip
Merge branch 'tdehardwaredevices-splited' of git://github.com/Fat-Zer/tdelibs
-rw-r--r--kdoctools/ConfigureChecks.cmake6
-rw-r--r--tdecore/CMakeLists.txt58
-rw-r--r--tdecore/tdehardwaredevices.h2126
-rw-r--r--tdecore/tdehw/CMakeLists.txt90
-rw-r--r--tdecore/tdehw/hwlibdaemons/CMakeLists.txt (renamed from tdecore/hwlibdaemons/CMakeLists.txt)0
-rw-r--r--tdecore/tdehw/hwlibdaemons/dbus/CMakeLists.txt (renamed from tdecore/hwlibdaemons/dbus/CMakeLists.txt)0
-rw-r--r--tdecore/tdehw/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.conf (renamed from tdecore/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.conf)0
-rw-r--r--tdecore/tdehw/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.service.cmake (renamed from tdecore/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.service.cmake)0
-rw-r--r--tdecore/tdehw/hwlibdaemons/dbus/tde_dbus_hardwarecontrol.c (renamed from tdecore/hwlibdaemons/dbus/tde_dbus_hardwarecontrol.c)0
-rw-r--r--tdecore/tdehw/hwlibdata/CMakeLists.txt (renamed from tdecore/hwlibdata/CMakeLists.txt)0
-rw-r--r--tdecore/tdehw/hwlibdata/classrules/CMakeLists.txt (renamed from tdecore/hwlibdata/classrules/CMakeLists.txt)0
-rw-r--r--tdecore/tdehw/hwlibdata/classrules/floppydisk-platform.hwclass (renamed from tdecore/hwlibdata/classrules/floppydisk-platform.hwclass)0
-rw-r--r--tdecore/tdehw/hwlibdata/classrules/floppydisk-udev.hwclass (renamed from tdecore/hwlibdata/classrules/floppydisk-udev.hwclass)0
-rw-r--r--tdecore/tdehw/hwlibdata/pnpdev/CMakeLists.txt (renamed from tdecore/hwlibdata/pnpdev/CMakeLists.txt)0
-rw-r--r--tdecore/tdehw/hwlibdata/pnpdev/dpy.ids (renamed from tdecore/hwlibdata/pnpdev/dpy.ids)0
-rw-r--r--tdecore/tdehw/hwlibdata/pnpdev/pnp.ids (renamed from tdecore/hwlibdata/pnpdev/pnp.ids)0
-rw-r--r--tdecore/tdehw/networkbackends/CMakeLists.txt12
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/CMakeLists.txt36
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/CMakeLists.txt (renamed from tdecore/networkbackends/network-manager/dbus/CMakeLists.txt)18
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-access-point.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-access-point.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-active-connection.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-active-connection.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-agent-manager.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-agent-manager.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-adsl.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-adsl.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-bond.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-bond.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-bt.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-bt.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-ethernet.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-ethernet.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-infiniband.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-infiniband.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-modem.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-modem.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-olpc-mesh.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-olpc-mesh.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-vlan.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-vlan.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-wifi.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-wifi.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-wimax.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device-wimax.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-device.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-dhcp4-config.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-dhcp4-config.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-dhcp6-config.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-dhcp6-config.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-ip4-config.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-ip4-config.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-ip6-config.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-ip6-config.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-manager.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-manager.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-ppp-manager.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-ppp-manager.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-secret-agent.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-secret-agent.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-settings-connection.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-settings-connection.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-settings.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-settings.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-vpn-connection.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-vpn-connection.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-vpn-plugin.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-vpn-plugin.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-wimax-nsp.xml (renamed from tdecore/networkbackends/network-manager/introspection/nm-wimax-nsp.xml)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/network-manager.cpp (renamed from tdecore/networkbackends/network-manager/network-manager.cpp)3
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/network-manager.h (renamed from tdecore/networkbackends/network-manager/network-manager.h)0
-rw-r--r--tdecore/tdehw/networkbackends/network-manager/network-manager_p.h (renamed from tdecore/networkbackends/network-manager/network-manager_p.h)0
-rw-r--r--tdecore/tdehw/tdebacklightdevice.cpp138
-rw-r--r--tdecore/tdehw/tdebacklightdevice.h97
-rw-r--r--tdecore/tdehw/tdebatterydevice.cpp151
-rw-r--r--tdecore/tdehw/tdebatterydevice.h215
-rw-r--r--tdecore/tdehw/tdecpudevice.cpp226
-rw-r--r--tdecore/tdehw/tdecpudevice.h186
-rw-r--r--tdecore/tdehw/tdeeventdevice.cpp146
-rw-r--r--tdecore/tdehw/tdeeventdevice.h161
-rw-r--r--tdecore/tdehw/tdegenericdevice.cpp319
-rw-r--r--tdecore/tdehw/tdegenericdevice.h334
-rw-r--r--tdecore/tdehw/tdehardwaredevices.cpp (renamed from tdecore/tdehardwaredevices.cpp)2269
-rw-r--r--tdecore/tdehw/tdehardwaredevices.h299
-rw-r--r--tdecore/tdehw/tdehwcommontypes.h100
-rw-r--r--tdecore/tdehw/tdeinputdevice.cpp38
-rw-r--r--tdecore/tdehw/tdeinputdevice.h67
-rw-r--r--tdecore/tdehw/tdemainspowerdevice.cpp38
-rw-r--r--tdecore/tdehw/tdemainspowerdevice.h57
-rw-r--r--tdecore/tdehw/tdemonitordevice.cpp78
-rw-r--r--tdecore/tdehw/tdemonitordevice.h122
-rw-r--r--tdecore/tdehw/tdenetworkconnections.cpp (renamed from tdecore/tdenetworkconnections.cpp)10
-rw-r--r--tdecore/tdehw/tdenetworkconnections.h (renamed from tdecore/tdenetworkconnections.h)0
-rw-r--r--tdecore/tdehw/tdenetworkdevice.cpp188
-rw-r--r--tdecore/tdehw/tdenetworkdevice.h250
-rw-r--r--tdecore/tdehw/tderootsystemdevice.cpp442
-rw-r--r--tdecore/tdehw/tderootsystemdevice.h182
-rw-r--r--tdecore/tdehw/tdesensordevice.cpp47
-rw-r--r--tdecore/tdehw/tdesensordevice.h75
-rw-r--r--tdecore/tdehw/tdestoragedevice.cpp772
-rw-r--r--tdecore/tdehw/tdestoragedevice.h344
77 files changed, 5263 insertions, 4437 deletions
diff --git a/kdoctools/ConfigureChecks.cmake b/kdoctools/ConfigureChecks.cmake
index 01086cf36..3b65c67fd 100644
--- a/kdoctools/ConfigureChecks.cmake
+++ b/kdoctools/ConfigureChecks.cmake
@@ -8,11 +8,11 @@
#
#################################################
-configure_file( ${CMAKE_SOURCE_DIR}/kdoctools/update-entities.sh ${CMAKE_SOURCE_DIR}/kdoctools/update-entities IMMEDIATE @ONLY )
+configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/update-entities.sh ${CMAKE_CURRENT_BINARY_DIR}/update-entities IMMEDIATE @ONLY )
-set( UPDATE_SCRIPT "${CMAKE_SOURCE_DIR}/kdoctools/update-entities" )
+set( UPDATE_SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/update-entities" )
set( TDEVERSION_FILE "${CMAKE_SOURCE_DIR}/tdecore/tdeversion.h" )
-set( ENTITIES_FILE "${CMAKE_SOURCE_DIR}/kdoctools/customization/entities/general.entities" )
+set( ENTITIES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/customization/entities/general.entities" )
if( NOT EXISTS ${UPDATE_SCRIPT} )
tde_message_fatal( "${UPDATE_SCRIPT} not found!\n Check your sources." )
diff --git a/tdecore/CMakeLists.txt b/tdecore/CMakeLists.txt
index a186c1376..6a9e605a3 100644
--- a/tdecore/CMakeLists.txt
+++ b/tdecore/CMakeLists.txt
@@ -12,60 +12,20 @@
add_subdirectory( malloc )
add_subdirectory( network )
add_subdirectory( tdeconfig_compiler )
-add_subdirectory( hwlibdata )
-add_subdirectory( hwlibdaemons )
-
-if( NOT DBUS_SYSTEM_BUS )
- set( DBUS_SYSTEM_BUS "unix:path=/var/run/dbus/system_bus_socket" CACHE INTERNAL "" FORCE )
-endif()
-
-if( WITH_UPOWER OR WITH_UDISKS OR WITH_UDISKS2 OR
- WITH_NETWORK_MANAGER_BACKEND OR WITH_CONSOLEKIT )
- list( APPEND TDEHW_CUSTOM_INCLUDE_DIRS ${DBUS_TQT_INCLUDE_DIRS} )
- list( APPEND TDEHW_CUSTOM_LIBRARY_DIRS ${DBUS_TQT_LIBRARY_DIRS} )
- list( APPEND TDEHW_CUSTOM_LIBRARIES ${DBUS_TQT_LIBRARIES} )
-endif( )
-
-if( WITH_UPOWER )
- add_definitions( -DWITH_UPOWER )
-endif( )
-
-if( WITH_UDISKS )
- add_definitions( -DWITH_UDISKS )
-endif( )
-
-if( WITH_UDISKS2 )
- add_definitions( -DWITH_UDISKS2 )
-endif( )
-
-if( WITH_CONSOLEKIT )
- add_definitions( -DWITH_CONSOLEKIT )
-endif( )
+add_subdirectory( tdehw )
if( WITH_LIBART )
add_subdirectory( svgicons )
set( KDESVGICONS kdesvgicons-static )
endif( WITH_LIBART )
-if( WITH_NETWORK_MANAGER_BACKEND )
- add_subdirectory( networkbackends/network-manager/dbus )
- list( APPEND TDEHW_CUSTOM_INCLUDE_DIRS
- ${NM_UTIL_INCLUDE_DIRS}
- "${CMAKE_CURRENT_BINARY_DIR}/networkbackends/network-manager/dbus"
- )
- list( APPEND TDEHW_CUSTOM_LIBRARIES
- tdenm_dbus-static
- )
- set ( TDENM_BACKEND_SOURCES networkbackends/network-manager/network-manager.cpp )
-endif( WITH_NETWORK_MANAGER_BACKEND )
-
-
include_directories(
${TQT_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/network
+ ${CMAKE_CURRENT_SOURCE_DIR}/tdehw
${CMAKE_SOURCE_DIR}/dcop
${CMAKE_SOURCE_DIR}/libltdl
${CMAKE_SOURCE_DIR}/tdefx
@@ -74,7 +34,6 @@ include_directories(
${LIBART_INCLUDE_DIRS}
${LIBIDN_INCLUDE_DIRS}
${GAMIN_INCLUDEDIR}
- ${TDEHW_CUSTOM_INCLUDE_DIRS}
)
link_directories(
@@ -82,7 +41,6 @@ link_directories(
${LIBIDN_LIBRARY_DIRS}
${GAMIN_LIBDIR}
${LIBART_LIBRARY_DIRS}
- ${TDEHW_CUSTOM_LIBRARY_DIRS}
)
##### headers ###################################
@@ -111,8 +69,7 @@ install( FILES
kcalendarsystem.h kcalendarsystemfactory.h kmacroexpander.h
kmanagerselection.h kmountpoint.h kuser.h klockfile.h
kidna.h ktempdir.h kshell.h fixx11h.h kxerrorhandler.h
- tdelibs_export.h kde_file.h ktimezones.h tdehardwaredevices.h
- tdenetworkconnections.h
+ tdelibs_export.h kde_file.h ktimezones.h
${CMAKE_CURRENT_BINARY_DIR}/kdemacros.h
DESTINATION ${INCLUDE_INSTALL_DIR} )
@@ -168,16 +125,15 @@ set( ${target}_SRCS
ktempdir.cpp kshell.cpp kmountpoint.cpp kcalendarsystemjalali.cpp
kprotocolinfo_tdecore.cpp kprotocolinfofactory.cpp kxerrorhandler.cpp
kuser.cpp tdeconfigskeleton.cpp tdeconfigdialogmanager.cpp klockfile.cpp
- kqiodevicegzip_p.cpp ktimezones.cpp tdehardwaredevices.cpp tdenetworkconnections.cpp
- ksimpledirwatch.cpp
- ${TDENM_BACKEND_SOURCES}
+ kqiodevicegzip_p.cpp ktimezones.cpp ksimpledirwatch.cpp
)
tde_add_library( ${target} SHARED AUTOMOC
SOURCES ${${target}_SRCS}
VERSION 4.2.0
- EMBED tdecorenetwork-static
- LINK ltdlc-static ${KDESVGICONS} DCOP-shared tdefx-shared ${ZLIB_LIBRARIES} ${LIBIDN_LIBRARIES} ${XCOMPOSITE_LIBRARIES} ICE SM udev ${GAMIN_LIBRARIES} ${TDEHW_CUSTOM_LIBRARIES}
+ EMBED tdecorenetwork-static tdehw-static
+ LINK ltdlc-static ${KDESVGICONS} DCOP-shared tdefx-shared ${ZLIB_LIBRARIES}
+ ${LIBIDN_LIBRARIES} ${XCOMPOSITE_LIBRARIES} ICE SM ${GAMIN_LIBRARIES}
DEPENDENCIES dcopidl dcopidl2cpp
DESTINATION ${LIB_INSTALL_DIR}
)
diff --git a/tdecore/tdehardwaredevices.h b/tdecore/tdehardwaredevices.h
deleted file mode 100644
index 531406dc5..000000000
--- a/tdecore/tdehardwaredevices.h
+++ /dev/null
@@ -1,2126 +0,0 @@
-/* This file is part of the TDE libraries
- Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License version 2 as published by the Free Software Foundation.
-
- This library 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
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-#ifndef _TDEHARDWAREDEVICES_H
-#define _TDEHARDWAREDEVICES_H
-
-// TDE includes
-#include <tqobject.h>
-#include <tqstring.h>
-#include <tqptrlist.h>
-#include <tqstringlist.h>
-#include "kiconloader.h"
-#include "tdelibs_export.h"
-
-// udev includes
-extern "C" {
-#include <libudev.h>
-}
-#include <stdio.h>
-#include <stdlib.h>
-#include <locale.h>
-#include <unistd.h>
-
-/**
- * Hardware Device Access and Monitoring Library
- *
- * @author Timothy Pearson
- */
-
-class TDENetworkConnectionManager;
-
-namespace TDEHardwareEvent {
-enum TDEHardwareEvent {
- HardwareListModified,
- MountTableModified,
- HardwareAdded,
- HardwareRemoved,
- HardwareUpdated,
- Other,
- Last = Other
-};
-};
-
-// Keep readGenericDeviceTypeFromString(), getFriendlyDeviceTypeStringFromType(), and getDeviceTypeIconFromType() in tdehardwaredevices.cpp in sync with this enum
-namespace TDEGenericDeviceType {
-enum TDEGenericDeviceType {
- Root,
- RootSystem,
- CPU,
- GPU,
- RAM,
- Bus,
- I2C,
- MDIO,
- Mainboard,
- Disk,
- SCSI,
- StorageController,
- Mouse,
- Keyboard,
- HID,
- Modem,
- Monitor,
- Network,
- Printer,
- Scanner,
- Sound,
- VideoCapture,
- IEEE1394,
- PCMCIA,
- Camera,
- TextIO,
- Serial,
- Parallel,
- Peripheral,
- Backlight,
- Battery,
- PowerSupply,
- Dock,
- ThermalSensor,
- ThermalControl,
- BlueTooth,
- Bridge,
- Platform,
- Cryptography,
- Event,
- Input,
- PNP,
- OtherACPI,
- OtherUSB,
- OtherMultimedia,
- OtherPeripheral,
- OtherSensor,
- OtherVirtual,
- Other,
- Last = Other
-};
-};
-
-// Keep readDiskDeviceSubtypeFromString() in tdehardwaredevices.cpp in sync with this enum
-namespace TDEDiskDeviceType {
-enum TDEDiskDeviceType {
- Null = 0x00000000,
- MediaDevice = 0x00000001,
- Floppy = 0x00000002,
- CDROM = 0x00000004,
- CDRW = 0x00000008,
- DVDROM = 0x00000010,
- DVDRAM = 0x00000020,
- DVDRW = 0x00000040,
- BDROM = 0x00000080,
- BDRW = 0x00000100,
- Zip = 0x00000200,
- Jaz = 0x00000400,
- Camera = 0x00000800,
- LUKS = 0x00001000,
- OtherCrypted = 0x00002000,
- CDAudio = 0x00004000,
- CDVideo = 0x00008000,
- DVDVideo = 0x00010000,
- BDVideo = 0x00020000,
- Flash = 0x00040000,
- USB = 0x00080000,
- Tape = 0x00100000,
- HDD = 0x00200000,
- Optical = 0x00400000,
- RAM = 0x00800000,
- Loop = 0x01000000,
- CompactFlash = 0x02000000,
- MemoryStick = 0x04000000,
- SmartMedia = 0x08000000,
- SDMMC = 0x10000000,
- UnlockedCrypt = 0x20000000,
- Other = 0x80000000
-};
-
-inline TDEDiskDeviceType operator|(TDEDiskDeviceType a, TDEDiskDeviceType b)
-{
- return static_cast<TDEDiskDeviceType>(static_cast<int>(a) | static_cast<int>(b));
-}
-
-inline TDEDiskDeviceType operator&(TDEDiskDeviceType a, TDEDiskDeviceType b)
-{
- return static_cast<TDEDiskDeviceType>(static_cast<int>(a) & static_cast<int>(b));
-}
-
-inline TDEDiskDeviceType operator~(TDEDiskDeviceType a)
-{
- return static_cast<TDEDiskDeviceType>(~static_cast<int>(a));
-}
-};
-
-namespace TDEDiskDeviceStatus {
-enum TDEDiskDeviceStatus {
- Null = 0x00000000,
- Mountable = 0x00000001,
- Removable = 0x00000002,
- Inserted = 0x00000004,
- Blank = 0x00000008,
- UsedByDevice = 0x00000010,
- UsesDevice = 0x00000020,
- ContainsFilesystem = 0x00000040,
- Hotpluggable = 0x00000080,
- Other = 0x80000000
-};
-
-inline TDEDiskDeviceStatus operator|(TDEDiskDeviceStatus a, TDEDiskDeviceStatus b)
-{
- return static_cast<TDEDiskDeviceStatus>(static_cast<int>(a) | static_cast<int>(b));
-}
-
-inline TDEDiskDeviceStatus operator&(TDEDiskDeviceStatus a, TDEDiskDeviceStatus b)
-{
- return static_cast<TDEDiskDeviceStatus>(static_cast<int>(a) & static_cast<int>(b));
-}
-
-inline TDEDiskDeviceStatus operator~(TDEDiskDeviceStatus a)
-{
- return static_cast<TDEDiskDeviceStatus>(~static_cast<int>(a));
-}
-};
-
-class TDECORE_EXPORT TDESensorCluster
-{
- public:
- /**
- * Constructor.
- */
- TDESensorCluster();
-
- TQString label;
- double current;
- double minimum;
- double maximum;
- double warning;
- double critical;
-};
-
-class TDECORE_EXPORT TDEGenericDevice : public TQObject
-{
- Q_OBJECT
-
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDEGenericDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDEGenericDevice();
-
- /**
- * @return a TDEGenericDeviceType::TDEGenericDeviceType specifying the device type
- */
- TDEGenericDeviceType::TDEGenericDeviceType type();
-
- /**
- * @return a TQString with the device name, if any
- */
- TQString name();
-
- /**
- * @return a TQString with the vendor name, if any
- */
- TQString vendorName();
-
- /**
- * @return a TQString with the vendor model, if any
- */
- TQString vendorModel();
-
- /**
- * @return a TQString with the serial number, if any
- */
- TQString serialNumber();
-
- /**
- * @return a TQString with a friendly name
- *
- * While TDE tries very hard to generate and return a friendly name for this device,
- * sometimes the best it will be able to do is "Unknown Device [xxxx:yyyy]"
- */
- virtual TQString friendlyName();
-
- /**
- * @return a TQString with the device bus name, if any
- */
- TQString deviceBus();
-
- /**
- * @return a TQString with the system path, if any
- *
- * This method is non-portable, so be careful!
- */
- TQString systemPath();
-
- /**
- * @return a TQString with the system device node, if any
- *
- * This method is non-portable, so be careful!
- */
- TQString deviceNode();
-
- /**
- * @return true if this device has been blacklisted for update actions
- */
- bool blacklistedForUpdate();
-
- /**
- * @return a TQString containing a unique identifier for this device
- */
- TQString uniqueID();
-
- /**
- * @return a TQString with the vendor ID, if any
- */
- TQString vendorID();
-
- /**
- * @return a TQString with the model ID, if any
- */
- TQString modelID();
-
- /**
- * @return a TQString with the encoded vendor, if any
- */
- TQString vendorEncoded();
-
- /**
- * @return a TQString with the encoded model, if any
- */
- TQString modelEncoded();
-
- /**
- * @return a TQString with the subvendor ID, if any
- */
- TQString subVendorID();
-
- /**
- * @return a TQString with the submodel ID, if any
- */
- TQString subModelID();
-
- /**
- * @return a TQString with the PCI device class, if any
- */
- TQString PCIClass();
-
- /**
- * @return a TQString with the module alias string, if any
- */
- TQString moduleAlias();
-
- /**
- * @return a TQString with the device driver, if any
- */
- TQString deviceDriver();
-
- /**
- * @return a TQString with the subsystem type, if any
- */
- TQString subsystem();
-
- /**
- * @return a TDEGenericDevice* with the parent device, if any
- */
- TDEGenericDevice* parentDevice();
-
- /**
- * @return a TQString containing the friendly type name
- */
- virtual TQString friendlyDeviceType();
-
- /**
- * @return a TQString containing the device bus ID, if any
- */
- TQString busID();
-
- /**
- * Get an icon for this device
- * @param size a TDEIcon::StdSizes structure specifying the desired icon size
- * @return a TQPixmap containing the icon for the specified type
- */
- virtual TQPixmap icon(TDEIcon::StdSizes size);
-
- protected:
- /**
- * @param a TQString with the device name, if any
- * @internal
- */
- void internalSetName(TQString dn);
-
- /**
- * @param a TQString with the vendor name, if any
- * @internal
- */
- void internalSetVendorName(TQString vn);
-
- /**
- * @param a TQString with the vendor model, if any
- * @internal
- */
- void internalSetVendorModel(TQString vm);
-
- /**
- * @param a TQString with the serial number, if any
- * @internal
- */
- void internalSetSerialNumber(TQString sn);
-
- /**
- * @param a TQString with the device bus name, if any
- * @internal
- */
- void internalSetDeviceBus(TQString db);
-
- /**
- * @param a TQString with the system path, if any
- * @internal
- *
- * This method is non-portable, so be careful!
- */
- void internalSetSystemPath(TQString sp);
-
- /**
- * @param a TQString with the system device node, if any
- * @internal
- *
- * This method is non-portable, so be careful!
- */
- void internalSetDeviceNode(TQString sn);
-
- /**
- * @param bl true if this device has been blacklisted for update actions
- * @internal
- */
- void internalSetBlacklistedForUpdate(bool bl);
-
- /**
- * @param a TQString with the vendor ID, if any
- * @internal
- */
- void internalSetVendorID(TQString id);
-
- /**
- * @param a TQString with the model ID, if any
- * @internal
- */
- void internalSetModelID(TQString id);
-
- /**
- * @param a TQString with the encoded vendor, if any
- * @internal
- */
- void internalSetVendorEncoded(TQString id);
-
- /**
- * @param a TQString with the encoded model, if any
- * @internal
- */
- void internalSetModelEncoded(TQString id);
-
- /**
- * @param a TQString with the subvendor ID, if any
- * @internal
- */
- void internalSetSubVendorID(TQString id);
-
- /**
- * @param a TQString with the submodel ID, if any
- * @internal
- */
- void internalSetSubModelID(TQString id);
-
- /**
- * @param a TQString with the PCI device class, if any
- * @internal
- */
- void internalSetPCIClass(TQString cl);
-
- /**
- * @param a TQString with the module alias string, if any
- * @internal
- */
- void internalSetModuleAlias(TQString ma);
-
- /**
- * @param a TQString with the device driver, if any
- * @internal
- */
- void internalSetDeviceDriver(TQString dr);
-
- /**
- * @param a TQString with the subsystem type, if any
- * @internal
- */
- void internalSetSubsystem(TQString ss);
-
- /**
- * @param a TDEGenericDevice* with the parent device, if any
- * @internal
- */
- void internalSetParentDevice(TDEGenericDevice* pd);
-
- private:
- TDEGenericDeviceType::TDEGenericDeviceType m_deviceType;
- TQString m_deviceName;
- TQString m_systemPath;
- TQString m_deviceNode;
- TQString m_vendorName;
- TQString m_vendorModel;
- TQString m_serialNumber;
- TQString m_deviceBus;
- TQString m_uniqueID;
- TQString m_vendorID;
- TQString m_modelID;
- TQString m_vendorenc;
- TQString m_modelenc;
- TQString m_subvendorID;
- TQString m_submodelID;
- TQString m_pciClass;
- TQString m_modAlias;
- TQString m_deviceDriver;
- TQString m_subsystem;
- TQString m_friendlyName;
- bool m_blacklistedForUpdate;
- TDEGenericDevice* m_parentDevice;
-
- // Internal use only!
- TQStringList m_externalSubtype;
- TQString m_externalRulesFile;
- TQString m_udevtype;
- TQString m_udevdevicetypestring;
- TQString udevdevicetypestring_alt;
-
- friend class TDEHardwareDevices;
-};
-
-typedef TQMap<TQString,TQString> TDEStorageMountOptions;
-
-class TDECORE_EXPORT TDEStorageDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDEStorageDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDEStorageDevice();
-
- /**
- * @return a TQString with the disk or partition label, if any
- */
- TQString diskLabel();
-
- /**
- * @return a TQString with the disk UUID, if any
- */
- TQString diskUUID();
-
- /**
- * @return an OR-ed combination of TDEDiskDeviceType::TDEDiskDeviceType type flags
- */
- TDEDiskDeviceType::TDEDiskDeviceType diskType();
-
- /**
- * @return an OR-ed combination of TDEDiskDeviceStatus::TDEDiskDeviceStatus type flags
- */
- TDEDiskDeviceStatus::TDEDiskDeviceStatus diskStatus();
-
- /**
- * @return true if media inserted, false if no media available
- */
- bool mediaInserted();
-
- /**
- * @return a TQString with the filesystem name, if any
- */
- TQString fileSystemName();
-
- /**
- * @return a TQString with the filesystem usage string, if any
- */
- TQString fileSystemUsage();
-
- /**
- * @return a TQStringList containing system paths to all devices with a lock on this device, if any
- */
- TQStringList holdingDevices();
-
- /**
- * @return a TQStringList containing system paths to all devices locked by this device, if any
- */
- TQStringList slaveDevices();
-
- /**
- * Mounts the device if not encrypted
- *
- * @param a TQString containing a requested mount name under /media, if desired
- * @param a TQString containing any mount options for pmount, if desired
- * @param a pointer to a TQString which will be populated with any error messages from pmount, if desired
- * @param a pointer to an integer which will be populated with the return code from pmount, if desired
- *
- * @return a TQString with the mount path, if successful
- */
- TQString mountDevice(TQString mediaName=TQString::null, TDEStorageMountOptions mountOptions=TDEStorageMountOptions(), TQString* errRet=0, int* retcode=0);
-
- /**
- * Mounts the encrypted device if the correct passphrase is given
- *
- * @param a TQString containing the passphrase
- * @param a TQString containing a requested mount name under /media, if desired
- * @param a TQString containing any mount options for pmount, if desired
- * @param a pointer to a TQString which will be populated with any error messages from pmount, if desired
- * @param a pointer to an integer which will be populated with the return code from pmount, if desired
- *
- * @return a TQString with the mount path, if successful
- */
- TQString mountEncryptedDevice(TQString passphrase, TQString mediaName=TQString::null, TDEStorageMountOptions mountOptions=TDEStorageMountOptions(), TQString* errRet=0, int* retcode=0);
-
- /**
- * Unmounts the device
- *
- * @param a pointer to a TQString which will be populated with any error messages from pmount, if desired
- * @param a pointer to an integer which will be populated with the return code from pmount, if desired
- *
- * @return TRUE if unmount was successful
- */
- bool unmountDevice(TQString* errRet, int* retcode=0);
-
- /**
- * @return a TQString with the mount path, if mounted
- */
- TQString mountPath();
-
- /**
- * @return an unsigned long with the device size in bytes
- */
- unsigned long long deviceSize();
-
- /**
- * @return a TQString with the device size in human readable form
- */
- TQString deviceFriendlySize();
-
- /**
- * Get an icon for this device
- * @param size a TDEIcon::StdSizes structure specifying the desired icon size
- * @return a TQPixmap containing the icon for the specified type
- *
- * This method overrides TDEGenericDevice::icon(TDEIcon::StdSizes size)
- */
- TQPixmap icon(TDEIcon::StdSizes size);
-
- /**
- * @return a TQString with a friendly name
- *
- * This method overrides TDEGenericDevice::friendlyName()
- */
- TQString friendlyName();
-
- /**
- * @return a TQString containing the friendly type name
- *
- * This method overrides TDEGenericDevice::friendlyDeviceType()
- */
- TQString friendlyDeviceType();
-
- /**
- * @param an OR-ed combination of TDEDiskDeviceType::TDEDiskDeviceType type flags
- */
- bool isDiskOfType(TDEDiskDeviceType::TDEDiskDeviceType tf);
-
- /**
- * @param an OR-ed combination of TDEDiskDeviceStatus::TDEDiskDeviceStatus type flags
- */
- bool checkDiskStatus(TDEDiskDeviceStatus::TDEDiskDeviceStatus sf);
-
- /**
- * @param TRUE to engage media lock, FALSE to disable it
- * @return TRUE on success, FALSE on failure
- *
- * This method currently works on CD-ROM drives and similar devices
- */
- bool lockDriveMedia(bool lock);
-
- /**
- * @return TRUE on success, FALSE on failure
- *
- * This method currently works on CD-ROM drives and similar devices
- */
- bool ejectDriveMedia();
-
- /**
- * @return TRUE on success, FALSE on failure
- *
- * This method currently works on all removable storage devices
- */
- bool ejectDrive();
-
- protected:
- /**
- * @param a TQString with the disk or partition label, if any
- * @internal
- */
- void internalSetDiskLabel(TQString dn);
-
- /**
- * @param a TQString with the disk UUID, if any
- * @internal
- */
- void internalSetDiskUUID(TQString id);
-
- /**
- * @param an OR-ed combination of TDEDiskDeviceType::TDEDiskDeviceType type flags
- * @internal
- */
- void internalSetDiskType(TDEDiskDeviceType::TDEDiskDeviceType tf);
-
- /**
- * @param an OR-ed combination of TDEDiskDeviceStatus::TDEDiskDeviceStatus type flags
- * @internal
- */
- void internalSetDiskStatus(TDEDiskDeviceStatus::TDEDiskDeviceStatus st);
-
- /**
- * @param a bool with the media status
- * @internal
- */
- void internalSetMediaInserted(bool inserted);
-
- /**
- * @param a TQString with the filesystem name, if any
- * @internal
- */
- void internalSetFileSystemName(TQString fn);
-
- /**
- * @param a TQString with the filesystem usage string, if any
- * @internal
- */
- void internalSetFileSystemUsage(TQString fu);
-
- /**
- * @param a TQStringList containing system paths to all devices with a lock on this device, if any
- * @internal
- */
- void internalSetHoldingDevices(TQStringList hd);
-
- /**
- * @param a TQStringList containing system paths to all devices locked by this device, if any
- * @internal
- */
- void internalSetSlaveDevices(TQStringList sd);
-
- private:
- TDEDiskDeviceType::TDEDiskDeviceType m_diskType;
- TDEDiskDeviceStatus::TDEDiskDeviceStatus m_diskStatus;
- TQString m_diskName;
- TQString m_diskUUID;
- TQString m_fileSystemName;
- TQString m_fileSystemUsage;
- bool m_mediaInserted;
- TQString m_mountPath;
- TQStringList m_holdingDevices;
- TQStringList m_slaveDevices;
-
- friend class TDEHardwareDevices;
-};
-
-class TDECORE_EXPORT TDECPUDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDECPUDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDECPUDevice();
-
- /**
- * @return a double with the current CPU frequency in MHz, if available
- */
- double frequency();
-
- /**
- * @return a double with the minimum CPU frequency in MHz, if available
- */
- double minFrequency();
-
- /**
- * @return a double with the maximum CPU frequency in MHz, if available
- */
- double maxFrequency();
-
- /**
- * @return a double with the transition latency in ns, if available
- */
- double transitionLatency();
-
- /**
- * @return a TQString with the current CPU governor policy, if available
- */
- TQString governor();
-
- /**
- * @return a TQString with the current CPU scaling driver, if available
- */
- TQString scalingDriver();
-
- /**
- * @return a TQStringList with the IDs of all processors that are dependent on the frequency/power settings of this one, if available
- */
- TQStringList dependentProcessors();
-
- /**
- * @return a TQStringList with all valid scaling frequencies in Hz, if available
- */
- TQStringList availableFrequencies();
-
- /**
- * @return a TQStringList with all available governor policies, if available
- */
- TQStringList availableGovernors();
-
- /**
- * @return TRUE if permissions allow the CPU governor to be set, FALSE if not
- */
- bool canSetGovernor();
-
- /**
- * @param gv a TQString with the new CPU governor policy name
- */
- void setGovernor(TQString gv);
-
- /**
- * @return TRUE if permissions allow the CPU maximum frequency to be set, FALSE if not
- */
- bool canSetMaximumScalingFrequency();
-
- /**
- * @param gv a double with the new CPU maximum frequency in MHz
- */
- void setMaximumScalingFrequency(double fr);
-
- /**
- * @return an integer with the core number, starting at 0
- */
- int coreNumber();
-
- protected:
- /**
- * @param fr a double with the current CPU frequency in MHz, if available
- * @internal
- */
- void internalSetFrequency(double fr);
-
- /**
- * @param fr a double with the minimum CPU frequency in MHz, if available
- * @internal
- */
- void internalSetMinFrequency(double fr);
-
- /**
- * @param fr a double with the maximum CPU frequency in MHz, if available
- * @internal
- */
- void internalSetMaxFrequency(double fr);
-
- /**
- * @param tl a double with the transition latency in ns, if available
- * @internal
- */
- void internalSetTransitionLatency(double tl);
-
- /**
- * @param gr a TQString with the current CPU governor policy, if available
- * @internal
- */
- void internalSetGovernor(TQString gr);
-
- /**
- * @param dr a TQString with the current CPU scaling driver, if available
- * @internal
- */
- void internalSetScalingDriver(TQString dr);
-
- /**
- * @param dp a TQStringList with the IDs of all processors that are dependent on the frequency/power settings of this one, if available
- * @internal
- */
- void internalSetDependentProcessors(TQStringList dp);
-
- /**
- * @param af a TQStringList with all valid scaling frequencies in Hz, if available
- * @internal
- */
- void internalSetAvailableFrequencies(TQStringList af);
-
- /**
- * @param gp a TQStringList with all available governor policies, if available
- * @internal
- */
- void internalSetAvailableGovernors(TQStringList gp);
-
- /**
- * @param cn an integer with the core number, starting at 0
- * @internal
- */
- void internalSetCoreNumber(int cn);
-
- private:
- double m_frequency;
- double m_minfrequency;
- double m_maxfrequency;
- double m_transitionlatency;
- TQString m_governor;
- TQString m_scalingdriver;
- TQStringList m_tiedprocs;
- TQStringList m_frequencies;
- TQStringList m_governers;
- int m_corenumber;
-
- friend class TDEHardwareDevices;
-};
-
-namespace TDEBatteryStatus {
-enum TDEBatteryStatus {
- Charging,
- Discharging,
- Full,
- Unknown = 0x80000000
-};
-};
-
-class TDECORE_EXPORT TDEBatteryDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDEBatteryDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDEBatteryDevice();
-
- /**
- * @return a double with the current battery voltage, if available
- */
- double voltage();
-
- /**
- * @return a double with the minimum battery voltage, if available
- */
- double minimumVoltage();
-
- /**
- * @return a double with the maximum battery voltage, if available
- */
- double maximumVoltage();
-
- /**
- * @return a double with the designed maximum battery voltage, if available
- */
- double maximumDesignVoltage();
-
- /**
- * @return a double with the current battery energy in watt-hours, if available
- */
- double energy();
-
- /**
- * @return a double with the current battery alarm energy in watt-hours, if available
- */
- double alarmEnergy();
-
- /**
- * @return a double with the maximum battery energy in watt-hours, if available
- */
- double maximumEnergy();
-
- /**
- * @return a double with the designed maximum battery energy in watt-hours, if available
- */
- double maximumDesignEnergy();
-
- /**
- * @return a double with the current battery discharge rate in watt-hours, if available
- */
- double dischargeRate();
-
- /**
- * @return a double with the current battery discharge time remaining in seconds, if available
- */
- double timeRemaining();
-
- /**
- * @return a TQString with the battery technology, if available
- */
- TQString technology();
-
- /**
- * @return a TDEBatteryStatus::TDEBatteryStatus with the current battery status
- */
- TDEBatteryStatus::TDEBatteryStatus status();
-
- /**
- * @return TRUE if the battery is installed
- */
- bool installed();
-
- /**
- * @return a double with the current battery charge in percent, if available
- */
- double chargePercent();
-
- protected:
- /**
- * @param a double with the current battery voltage, if available
- * @internal
- */
- void internalSetVoltage(double vt);
-
- /**
- * @param a double with the minimum battery voltage, if available
- * @internal
- */
- void internalSetMinimumVoltage(double vt);
-
- /**
- * @param a double with the maximum battery voltage, if available
- * @internal
- */
- void internalSetMaximumVoltage(double vt);
-
- /**
- * @param a double with the designed maximum battery voltage, if available
- * @internal
- */
- void internalSetMaximumDesignVoltage(double vt);
-
- /**
- * @param a double with the current battery energy in watt-hours, if available
- * @internal
- */
- void internalSetEnergy(double vt);
-
- /**
- * @param a double with the current battery alarm energy in watt-hours, if available
- * @internal
- */
- void internalSetAlarmEnergy(double vt);
-
- /**
- * @param a double with the maximum battery energy in watt-hours, if available
- * @internal
- */
- void internalSetMaximumEnergy(double vt);
-
- /**
- * @param a double with the designed maximum battery energy in watt-hours, if available
- * @internal
- */
- void internalSetMaximumDesignEnergy(double vt);
-
- /**
- * @param a double with the current battery discharge rate in volt-hours, if available
- * @internal
- */
- void internalSetDischargeRate(double vt);
-
- /**
- * @param a double with the current battery discharge time remaining in seconds, if available
- * @internal
- */
- void internalSetTimeRemaining(double tr);
-
- /**
- * @param a TQString with the battery technology, if available
- * @internal
- */
- void internalSetTechnology(TQString tc);
-
- /**
- * @param a TQString with the battery status, if available
- * @internal
- */
- void internalSetStatus(TQString tc);
-
- /**
- * @param TRUE if the battery is installed
- * @internal
- */
- void internalSetInstalled(bool tc);
-
- private:
- double m_currentVoltage;
- double m_minimumVoltage;
- double m_maximumVoltage;
- double m_maximumDesignVoltage;
- double m_alarmEnergy;
- double m_currentEnergy;
- double m_maximumEnergy;
- double m_maximumDesignEnergy;
- double m_dischargeRate;
- double m_timeRemaining;
- TQString m_technology;
- TDEBatteryStatus::TDEBatteryStatus m_status;
- bool m_installed;
-
- friend class TDEHardwareDevices;
-};
-
-class TDECORE_EXPORT TDEMainsPowerDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDEMainsPowerDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDEMainsPowerDevice();
-
- /**
- * @return TRUE if power supply is online via mains power, FALSE if not
- */
- bool online();
-
- protected:
- /**
- * @param TRUE if power supply is online via mains power, FALSE if not
- * @internal
- */
- void internalSetOnline(bool vt);
-
- private:
- bool m_online;
-
- friend class TDEHardwareDevices;
-};
-
-class TDECORE_EXPORT TDENetworkDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDENetworkDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDENetworkDevice();
-
- /**
- * @return a TQString containing the network device's MAC address
- */
- TQString macAddress();
-
- /**
- * @return a TQString containing the network device's operational state
- */
- TQString state();
-
- /**
- * @return TRUE if carrier is present, FALSE if not
- */
- bool carrierPresent();
-
- /**
- * @return TRUE if device is dormant, FALSE if not
- */
- bool dormant();
-
- /**
- * @return a TQString containing the network device's IPv4 address
- */
- TQString ipV4Address();
-
- /**
- * @return a TQString containing the network device's IPv6 address
- */
- TQString ipV6Address();
-
- /**
- * @return a TQString containing the network device's IPv4 netmask
- */
- TQString ipV4Netmask();
-
- /**
- * @return a TQString containing the network device's IPv6 netmask
- */
- TQString ipV6Netmask();
-
- /**
- * @return a TQString containing the network device's IPv4 broadcast
- */
- TQString ipV4Broadcast();
-
- /**
- * @return a TQString containing the network device's IPv6 broadcast
- */
- TQString ipV6Broadcast();
-
- /**
- * @return a TQString containing the network device's IPv4 destination
- */
- TQString ipV4Destination();
-
- /**
- * @return a TQString containing the network device's IPv6 destination
- */
- TQString ipV6Destination();
-
- /**
- * @return a double with the number of received bytes, if available
- */
- double rxBytes();
-
- /**
- * @return a double with the number of transmitted bytes, if available
- */
- double txBytes();
-
- /**
- * @return a double with the number of received packets, if available
- */
- double rxPackets();
-
- /**
- * @return a double with the number of transmitted packets, if available
- */
- double txPackets();
-
- /**
- * @return a pointer to a TDENetworkConnectionManager object, if available
- */
- TDENetworkConnectionManager* connectionManager();
-
- protected:
- /**
- * @param ma a TQString containing the network device's MAC address
- * @internal
- */
- void internalSetMacAddress(TQString ma);
-
- /**
- * @param st a TQString containing the network device's operational state
- * @internal
- */
- void internalSetState(TQString st);
-
- /**
- * @param TRUE if carrier is present, FALSE if not
- * @internal
- */
- void internalSetCarrierPresent(bool cp);
-
- /**
- * @param TRUE if device is dormant, FALSE if not
- * @internal
- */
- void internalSetDormant(bool dm);
-
- /**
- * @param ad a TQString containing the network device's IPv4 address
- * @internal
- */
- void internalSetIpV4Address(TQString ad);
-
- /**
- * @param ad a TQString containing the network device's IPv6 address
- * @internal
- */
- void internalSetIpV6Address(TQString ad);
-
- /**
- * @param nm a TQString containing the network device's IPv4 netmask
- * @internal
- */
- void internalSetIpV4Netmask(TQString nm);
-
- /**
- * @param nm a TQString containing the network device's IPv6 netmask
- * @internal
- */
- void internalSetIpV6Netmask(TQString nm);
-
- /**
- * @param br a TQString containing the network device's IPv4 broadcast
- * @internal
- */
- void internalSetIpV4Broadcast(TQString br);
-
- /**
- * @param br a TQString containing the network device's IPv6 broadcast
- * @internal
- */
- void internalSetIpV6Broadcast(TQString br);
-
- /**
- * @param ds a TQString containing the network device's IPv4 destination
- * @internal
- */
- void internalSetIpV4Destination(TQString ds);
-
- /**
- * @param ds a TQString containing the network device's IPv6 destination
- * @internal
- */
- void internalSetIpV6Destination(TQString ds);
-
- /**
- * @param rx a double with the number of received bytes, if available
- * @internal
- */
- void internalSetRxBytes(double rx);
-
- /**
- * @param tx a double with the number of transmitted bytes, if available
- * @internal
- */
- void internalSetTxBytes(double tx);
-
- /**
- * @param rx a double with the number of received packets, if available
- * @internal
- */
- void internalSetRxPackets(double rx);
-
- /**
- * @param tx a double with the number of transmitted packets, if available
- * @internal
- */
- void internalSetTxPackets(double tx);
-
- /**
- * @param mgr a pointer to a TDENetworkConnectionManager object, if available
- */
- void internalSetConnectionManager(TDENetworkConnectionManager* mgr);
-
- private:
- TQString m_macAddress;
- TQString m_state;
- bool m_carrier;
- bool m_dormant;
- TQString m_ipV4Address;
- TQString m_ipV6Address;
- TQString m_ipV4Netmask;
- TQString m_ipV6Netmask;
- TQString m_ipV4Broadcast;
- TQString m_ipV6Broadcast;
- TQString m_ipV4Destination;
- TQString m_ipV6Destination;
- double m_rxbytes;
- double m_txbytes;
- double m_rxpackets;
- double m_txpackets;
- TDENetworkConnectionManager* m_connectionManager;
-
- friend class TDEHardwareDevices;
-};
-
-namespace TDEDisplayPowerLevel {
-enum TDEDisplayPowerLevel {
- On,
- Standby,
- Suspend,
- Off
-};
-};
-
-class TDECORE_EXPORT TDEBacklightDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDEBacklightDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDEBacklightDevice();
-
- /**
- * @return a TDEDisplayPowerLevel::TDEDisplayPowerLevel with the current power level
- */
- TDEDisplayPowerLevel::TDEDisplayPowerLevel powerLevel();
-
- /**
- * @return an integer with the number of discrete control steps available
- */
- int brightnessSteps();
-
- /**
- * @return a double with the current brightness percentage
- */
- double brightnessPercent();
-
- /**
- * @return TRUE if permissions allow brightness can be set, FALSE if not
- */
- bool canSetBrightness();
-
- /**
- * @return an int with the current raw brightness
- */
- int rawBrightness();
-
- /**
- * @param br an integer with the new raw brightness value
- */
- void setRawBrightness(int br);
-
- protected:
- /**
- * @param pl a TDEDisplayPowerLevel::TDEDisplayPowerLevel with the current power level
- * @internal
- */
- void internalSetPowerLevel(TDEDisplayPowerLevel::TDEDisplayPowerLevel pl);
-
- /**
- * @param br an integer with the maximum raw brightness value
- * @internal
- */
- void internalSetMaximumRawBrightness(int br);
-
- /**
- * @param br an integer with the current raw brightness value
- * @internal
- */
- void internalSetCurrentRawBrightness(int br);
-
- private:
- TDEDisplayPowerLevel::TDEDisplayPowerLevel m_powerLevel;
- int m_currentBrightness;
- int m_maximumBrightness;
-
- friend class TDEHardwareDevices;
-};
-
-typedef TQPair<unsigned int, unsigned int> TDEResolutionPair;
-typedef TQValueList< TDEResolutionPair > TDEResolutionList;
-
-class TDECORE_EXPORT TDEMonitorDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDEMonitorDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDEMonitorDevice();
-
- /**
- * @return TRUE if a monitor is connected, FALSE if not
- */
- bool connected();
-
- /**
- * @return TRUE if this port is enabled, FALSE if not
- */
- bool enabled();
-
- /**
- * @return a TQByteArray containing this monitor's EDID information
- */
- TQByteArray edid();
-
- /**
- * @return a TDEResolutionList containing this monitor's supported resolutions
- */
- TDEResolutionList resolutions();
-
- /**
- * @return a TQString containing the display port type
- */
- TQString portType();
-
- /**
- * @return a TDEDisplayPowerLevel::TDEDisplayPowerLevel with the current power level
- */
- TDEDisplayPowerLevel::TDEDisplayPowerLevel powerLevel();
-
- protected:
- /**
- * @param TRUE if a monitor is connected, FALSE if not
- * @internal
- */
- void internalSetConnected(bool cn);
-
- /**
- * @param TRUE if this port is enabled, FALSE if not
- * @internal
- */
- void internalSetEnabled(bool en);
-
- /**
- * @param ed a TQByteArray containing this monitor's EDID information
- * @internal
- */
- void internalSetEdid(TQByteArray ed);
-
- /**
- * @param rs a TDEResolutionList containing this monitor's supported resolutions
- * @internal
- */
- void internalSetResolutions(TDEResolutionList rs);
-
- /**
- * @param pt a TQString containing the display port type
- * @internal
- */
- void internalSetPortType(TQString pt);
-
- /**
- * @param pl a TDEDisplayPowerLevel::TDEDisplayPowerLevel with the current power level
- * @internal
- */
- void internalSetPowerLevel(TDEDisplayPowerLevel::TDEDisplayPowerLevel pl);
-
- private:
- bool m_connected;
- bool m_enabled;
- TQByteArray m_edid;
- TDEResolutionList m_resolutions;
- TQString m_portType;
- TDEDisplayPowerLevel::TDEDisplayPowerLevel m_powerLevel;
-
- friend class TDEHardwareDevices;
-};
-
-
-typedef TQMap<TQString, TDESensorCluster> TDESensorClusterMap;
-
-class TDECORE_EXPORT TDESensorDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDESensorDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDESensorDevice();
-
- /**
- * @return a TDESensorClusterMap with the current sensor values
- */
- TDESensorClusterMap values();
-
- protected:
- /**
- * @param a TDESensorClusterMap with the current sensor values
- * @internal
- */
- void internalSetValues(TDESensorClusterMap cl);
-
- private:
- TDESensorClusterMap m_sensorValues;
-
- friend class TDEHardwareDevices;
-};
-
-namespace TDESystemFormFactor {
-enum TDESystemFormFactor {
- Unclassified,
- Desktop,
- Laptop,
- Server,
- Other = 0x80000000
-};
-};
-
-namespace TDESystemPowerState {
-enum TDESystemPowerState {
- Active,
- Standby,
- Suspend,
- Hibernate,
- PowerOff,
- Reboot
-};
-};
-
-namespace TDESystemHibernationMethod {
-enum TDESystemHibernationMethod {
- Unsupported,
- Platform,
- Shutdown,
- Reboot,
- TestProc,
- Test
-};
-};
-
-typedef TQValueList<TDESystemPowerState::TDESystemPowerState> TDESystemPowerStateList;
-typedef TQValueList<TDESystemHibernationMethod::TDESystemHibernationMethod> TDESystemHibernationMethodList;
-
-class TDECORE_EXPORT TDERootSystemDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDERootSystemDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDERootSystemDevice();
-
- /**
- * @return a TDESystemFormFactor::TDESystemFormFactor with the system's form factor
- */
- TDESystemFormFactor::TDESystemFormFactor formFactor();
-
- /**
- * @return a TDESystemPowerStateList with all available power states
- */
- TDESystemPowerStateList powerStates();
-
- /**
- * @return a TDESystemHibernationMethodList with all available hibernation methods
- */
- TDESystemHibernationMethodList hibernationMethods();
-
- /**
- * @return a TDESystemHibernationMethod::TDESystemHibernationMethod with the current hibernation method
- */
- TDESystemHibernationMethod::TDESystemHibernationMethod hibernationMethod();
-
- /**
- * @return an unsigned long with the number of bytes required to hibernate
- */
- unsigned long diskSpaceNeededForHibernation();
-
- /**
- * @return TRUE if permissions allow the hibernation method to be set, FALSE if not
- */
- bool canSetHibernationMethod();
-
- /**
- * @return TRUE if hardware and permissions allow the system to enter standby, FALSE if not
- */
- bool canStandby();
-
- /**
- * @return TRUE if hardware and permissions allow the system to be suspended, FALSE if not
- */
- bool canSuspend();
-
- /**
- * @return TRUE if hardware and permissions allow the system to be hibernated, FALSE if not
- */
- bool canHibernate();
-
- /**
- * @return TRUE if permissions allow the system to be powered down, FALSE if not
- */
- bool canPowerOff();
-
- /**
- * @return TRUE if permissions allow the system to be rebooted, FALSE if not
- */
- bool canReboot();
-
- /**
- * @param hm a TDESystemHibernationMethod::TDESystemHibernationMethod with the desired hibernation method
- */
- void setHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm);
-
- /**
- * @param ps a TDESystemPowerState::TDESystemPowerState with the desired power state
- * @return TRUE if power state was set
- */
- bool setPowerState(TDESystemPowerState::TDESystemPowerState ps);
-
- protected:
- /**
- * @param ff a TDESystemFormFactor::TDESystemFormFactor with the system's form factor
- * @internal
- */
- void internalSetFormFactor(TDESystemFormFactor::TDESystemFormFactor ff);
-
- /**
- * @param ps a TDESystemPowerStateList with all available power states
- * @internal
- */
- void internalSetPowerStates(TDESystemPowerStateList ps);
-
- /**
- * @param hm a TDESystemHibernationMethodList with all available hibernation methods
- * @internal
- */
- void internalSetHibernationMethods(TDESystemHibernationMethodList hm);
-
- /**
- * @param hm a TDESystemHibernationMethod::TDESystemHibernationMethod with the current hibernation method
- * @internal
- */
- void internalSetHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm);
-
- /**
- * @param sz an unsigned long with the number of bytes required to hibernate
- * @internal
- */
- void internalSetDiskSpaceNeededForHibernation(unsigned long sz);
-
- private:
- TDESystemFormFactor::TDESystemFormFactor m_formFactor;
- TDESystemPowerStateList m_powerStates;
- TDESystemHibernationMethodList m_hibernationMethods;
- TDESystemHibernationMethod::TDESystemHibernationMethod m_hibernationMethod;
- unsigned long m_hibernationSpace;
-
- friend class TDEHardwareDevices;
-};
-
-namespace TDEEventDeviceType {
-enum TDEEventDeviceType {
- Unknown,
- ACPILidSwitch,
- ACPISleepButton,
- ACPIPowerButton,
- Other = 0x80000000
-};
-};
-
-// Keep friendlySwitchList() in tdehardwaredevices.cpp in sync with this enum
-namespace TDESwitchType {
-enum TDESwitchType {
- Null = 0x00000000,
- Lid = 0x00000001,
- TabletMode = 0x00000002,
- HeadphoneInsert = 0x00000004,
- RFKill = 0x00000008,
- Radio = 0x00000010,
- MicrophoneInsert = 0x00000020,
- Dock = 0x00000040,
- LineOutInsert = 0x00000080,
- JackPhysicalInsert = 0x00000100,
- VideoOutInsert = 0x00000200,
- CameraLensCover = 0x00000400,
- KeypadSlide = 0x00000800,
- FrontProximity = 0x00001000,
- RotateLock = 0x00002000,
- LineInInsert = 0x00004000
-};
-
-inline TDESwitchType operator|(TDESwitchType a, TDESwitchType b)
-{
- return static_cast<TDESwitchType>(static_cast<int>(a) | static_cast<int>(b));
-}
-
-inline TDESwitchType operator&(TDESwitchType a, TDESwitchType b)
-{
- return static_cast<TDESwitchType>(static_cast<int>(a) & static_cast<int>(b));
-}
-
-inline TDESwitchType operator~(TDESwitchType a)
-{
- return static_cast<TDESwitchType>(~static_cast<int>(a));
-}
-};
-
-class TQSocketNotifier;
-
-class TDECORE_EXPORT TDEEventDevice : public TDEGenericDevice
-{
- Q_OBJECT
-
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDEEventDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDEEventDevice();
-
- /**
- * @return a TDEEventDeviceType::TDEEventDeviceType with the event device type, if known
- */
- TDEEventDeviceType::TDEEventDeviceType eventType();
-
- /**
- * @return a TDESwitchType::TDESwitchType with all switches provided by this device
- */
- TDESwitchType::TDESwitchType providedSwitches();
-
- /**
- * @return a TDESwitchType::TDESwitchType with all active switches provided by this device
- */
- TDESwitchType::TDESwitchType activeSwitches();
-
- /**
- * @param switches a TDESwitchType::TDESwitchType with any switch flags set
- * @return a TQStringList with friendly names for all set switch flags
- */
- static TQStringList friendlySwitchList(TDESwitchType::TDESwitchType switches);
-
- protected:
- /**
- * @param et a TDEEventDeviceType::TDEEventDeviceType with the event device type, if known
- * @internal
- */
- void internalSetEventType(TDEEventDeviceType::TDEEventDeviceType et);
-
- /**
- * @param sl a TDESwitchType::TDESwitchType with all switches provided by this device
- * @internal
- */
- void internalSetProvidedSwitches(TDESwitchType::TDESwitchType sl);
-
- /**
- * @param sl a TDESwitchType::TDESwitchType with all active switches provided by this device
- * @internal
- */
- void internalSetActiveSwitches(TDESwitchType::TDESwitchType sl);
-
- /**
- * @param hwmanager the master hardware manager
- * @internal
- */
- void internalStartFdMonitoring(TDEHardwareDevices* hwmanager);
-
- protected slots:
- void eventReceived();
-
- signals:
- /**
- * @param keycode the code of the key that was pressed/released
- * See include/linux/input.h for a complete list of keycodes
- * @param device a TDEEventDevice* with the device that received the event
- */
- void keyPressed(unsigned int keycode, TDEEventDevice* device);
-
- private:
- TDEEventDeviceType::TDEEventDeviceType m_eventType;
- TDESwitchType::TDESwitchType m_providedSwitches;
- TDESwitchType::TDESwitchType m_switchActive;
-
- int m_fd;
- bool m_fdMonitorActive;
- TQSocketNotifier* m_eventNotifier;
-
- friend class TDEHardwareDevices;
-};
-
-namespace TDEInputDeviceType {
-enum TDEInputDeviceType {
- Unknown,
- ACPILidSwitch,
- ACPISleepButton,
- ACPIPowerButton,
- Other = 0x80000000
-};
-};
-
-class TDECORE_EXPORT TDEInputDevice : public TDEGenericDevice
-{
- public:
- /**
- * Constructor.
- * @param Device type
- */
- TDEInputDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
-
- /**
- * Destructor.
- */
- ~TDEInputDevice();
-
- /**
- * @return a TDEInputDeviceType::TDEInputDeviceType with the input device type, if known
- */
- TDEInputDeviceType::TDEInputDeviceType inputType();
-
- protected:
- /**
- * @param it a TDEInputDeviceType::TDEInputDeviceType with the input device type, if known
- * @internal
- */
- void internalSetInputType(TDEInputDeviceType::TDEInputDeviceType it);
-
- private:
- TDEInputDeviceType::TDEInputDeviceType m_inputType;
-
- friend class TDEHardwareDevices;
-};
-
-typedef TQPtrList<TDEGenericDevice> TDEGenericHardwareList;
-typedef TQMap<TQString, TQString> TDEDeviceIDMap;
-
-class KSimpleDirWatch;
-
-class TDECORE_EXPORT TDEHardwareDevices : public TQObject
-{
- Q_OBJECT
-
- public:
- /**
- * Constructor.
- */
- TDEHardwareDevices();
-
- /**
- * Destructor.
- */
- ~TDEHardwareDevices();
-
- /**
- * Query all hardware capabilities on all devices
- * This does not normally need to be called by an application, as
- * device detection is handled internally and automatically
- *
- * A call to this method immediately invalidates any TDEGenericHardwareList
- * structures returned by listAllPhysicalDevices()
- *
- * @return TRUE if successful
- */
- bool queryHardwareInformation();
-
- /**
- * List all hardware capabilities on all devices
- * @return TDEGenericHardwareList containing all known hardware devices
- */
- TDEGenericHardwareList listAllPhysicalDevices();
-
- /**
- * List all hardware capabilities on all devices
- * @param a TDEGenericDeviceType::TDEGenericDeviceType specifying the device class
- * @return TDEGenericHardwareList containing all known hardware devices
- */
- TDEGenericHardwareList listByDeviceClass(TDEGenericDeviceType::TDEGenericDeviceType cl);
-
- /**
- * Return the device with system path @arg syspath, or 0 if no device exists for that path
- * @return TDEGenericDevice
- */
- TDEGenericDevice* findBySystemPath(TQString syspath);
-
- /**
- * Return the device with unique ID @arg uid, or 0 if no device exists for that uid
- * @return TDEGenericDevice
- */
- TDEGenericDevice* findByUniqueID(TQString uid);
-
- /**
- * Return the device with device node @arg devnode, or 0 if no device exists at that node
- * @return TDEGenericDevice
- */
- TDEGenericDevice* findByDeviceNode(TQString devnode);
-
- /**
- * Return the storage device with unique ID @arg uid, or 0 if no device exists for that uid
- * @return TDEGenericDevice
- */
- TDEStorageDevice* findDiskByUID(TQString uid);
-
- /**
- * Look up the device in the system PCI database
- * @param vendorid a TQString containing the vendor ID in hexadecimal
- * @param modelid a TQString containing the model ID in hexadecimal
- * @param subvendorid a TQString containing the subvendor ID in hexadecimal
- * @param submodelid a TQString containing the submodel ID in hexadecimal
- * @return a TQString containing the device name, if found
- */
- TQString findPCIDeviceName(TQString vendorid, TQString modelid, TQString subvendorid, TQString submodelid);
-
- /**
- * Look up the device in the system USB database
- * @param vendorid a TQString containing the vendor ID in hexadecimal
- * @param modelid a TQString containing the model ID in hexadecimal
- * @param subvendorid a TQString containing the subvendor ID in hexadecimal
- * @param submodelid a TQString containing the submodel ID in hexadecimal
- * @return a TQString containing the device name, if found
- */
- TQString findUSBDeviceName(TQString vendorid, TQString modelid, TQString subvendorid, TQString submodelid);
-
- /**
- * Look up the device in the system PNP database
- * @param pnpid a TQString containing the PNP ID
- * @return a TQString containing the device name, if found
- */
- TQString findPNPDeviceName(TQString pnpid);
-
- /**
- * Look up the monitor manufacturer in the system display database
- * @param pnpid a TQString containing the display manufacturer ID
- * @return a TQString containing the manufacturer name, if found
- */
- TQString findMonitorManufacturerName(TQString dpyid);
-
- /**
- * Get a friendly string describing a device type
- * @param query a TDEGenericDeviceType::TDEGenericDeviceType specifying a device type
- * @return a TQString containing the friendly type name
- */
- TQString getFriendlyDeviceTypeStringFromType(TDEGenericDeviceType::TDEGenericDeviceType query);
-
- /**
- * Get an icon for a device type
- * @param query a TDEGenericDeviceType::TDEGenericDeviceType specifying a device type
- * @param size a TDEIcon::StdSizes structure specifying the desired icon size
- * @return a TQPixmap containing the icon for the specified type
- */
- TQPixmap getDeviceTypeIconFromType(TDEGenericDeviceType::TDEGenericDeviceType query, TDEIcon::StdSizes size);
-
- /**
- * Convenience function to obtain the root system device
- * @return a pointer to a TDERootSystemDevice object
- */
- TDERootSystemDevice* rootSystemDevice();
-
- /**
- * Rescan a hardware device to look for changes
- * WARNING: This method can be very expensive. Use with caution!
- * @param hwdevice TDEGenericDevice* with the device to rescan
- */
- void rescanDeviceInformation(TDEGenericDevice* hwdevice);
-
- /**
- * Rescan a hardware device to look for changes
- * WARNING: This method can be very expensive. Use with caution!
- * The computational expense can be reduced somewhat if the device tree structure
- * has not changed by calling this method with regenerateDeviceTree = FALSE.
- * @param hwdevice TDEGenericDevice* with the device to rescan
- * @param regenerateDeviceTree TRUE to update parent/child links in device tree
- */
- void rescanDeviceInformation(TDEGenericDevice* hwdevice, bool regenerateDeviceTree);
-
- /**
- * Enable or disable automatic state updates of triggerless hardware devices
- * such as CPUs and network cards. When enabled, your application will use
- * additional CPU resources to continually poll triggerless hardware devices.
- * Automatic updates are disabled by default.
- * @param enable a bool specifiying whether or not automatic updates should be enabled
- */
- void setTriggerlessHardwareUpdatesEnabled(bool enable);
-
- /**
- * Convert a byte count to human readable form
- * @param bytes a double containing the number of bytes
- * @return a TQString containing the human readable byte count
- */
- static TQString bytesToFriendlySizeString(double bytes);
-
- signals:
- void hardwareAdded(TDEGenericDevice*);
- void hardwareRemoved(TDEGenericDevice*);
- void hardwareUpdated(TDEGenericDevice*);
- void mountTableModified();
- void hardwareEvent(TDEHardwareEvent::TDEHardwareEvent, TQString uuid);
-
- /**
- * @param keycode the code of the key that was pressed/released
- * See include/linux/input.h for a complete list of keycodes
- * @param device a TDEEventDevice* with the device that received the event
- */
- void eventDeviceKeyPressed(unsigned int keycode, TDEEventDevice* device);
-
- private slots:
- void processHotPluggedHardware();
- void processModifiedMounts();
- void processModifiedCPUs();
- void processStatelessDevices();
- void processEventDeviceKeyPressed(unsigned int keycode, TDEEventDevice* edevice);
-
- private:
- void updateBlacklists(TDEGenericDevice* hwdevice, udev_device* dev);
-
- private:
- TDEGenericDevice *classifyUnknownDevice(udev_device* dev, TDEGenericDevice* existingdevice=0, bool force_full_classification=true);
- TDEGenericDevice *classifyUnknownDeviceByExternalRules(udev_device* dev, TDEGenericDevice* existingdevice=0, bool classifySubDevices=false);
- void updateExistingDeviceInformation(TDEGenericDevice* existingdevice, udev_device* dev=NULL);
-
- void updateParentDeviceInformation();
- void updateParentDeviceInformation(TDEGenericDevice* hwdevice);
-
- void addCoreSystemDevices();
-
- /**
- * Get the binary monitor EDID for the specified sysfs path
- * @return a TQByteArray containing the EDID
- */
- TQByteArray getEDID(TQString path);
-
- /**
- * Get the monitor EDID name for the specified sysfs path
- * @return a TQPair<TQString,TQString> containing the monitor vendor and model, if available
- */
- TQPair<TQString,TQString> getEDIDMonitorName(TQString path);
-
- struct udev *m_udevStruct;
- struct udev_monitor *m_udevMonitorStruct;
- TDEGenericHardwareList m_deviceList;
- int m_procMountsFd;
- KSimpleDirWatch* m_cpuWatch;
- TQTimer* m_cpuWatchTimer;
- TQTimer* m_deviceWatchTimer;
-
- TQSocketNotifier* m_devScanNotifier;
- TQSocketNotifier* m_mountScanNotifier;
-
- TQStringList m_mountTable;
- TQStringList m_cpuInfo;
-
- TDEDeviceIDMap* pci_id_map;
- TDEDeviceIDMap* usb_id_map;
- TDEDeviceIDMap* pnp_id_map;
- TDEDeviceIDMap* dpy_id_map;
-
- friend class TDEGenericDevice;
- friend class TDEStorageDevice;
- friend class TDECPUDevice;
-};
-
-#endif // _TDEHARDWAREDEVICES_H
diff --git a/tdecore/tdehw/CMakeLists.txt b/tdecore/tdehw/CMakeLists.txt
new file mode 100644
index 000000000..85cacf734
--- /dev/null
+++ b/tdecore/tdehw/CMakeLists.txt
@@ -0,0 +1,90 @@
+#################################################
+#
+# (C) 2013 Golubev Alexander
+# fatzer2 (AT) gmail.com
+#
+# Improvements and feedback are welcome
+#
+# This file is released under GPL >= 2
+#
+#################################################
+
+add_subdirectory( hwlibdata )
+add_subdirectory( hwlibdaemons )
+add_subdirectory( networkbackends )
+
+if( NOT DBUS_SYSTEM_BUS )
+ set( DBUS_SYSTEM_BUS "unix:path=/var/run/dbus/system_bus_socket" CACHE INTERNAL "" FORCE )
+endif()
+
+if( WITH_UPOWER OR WITH_UDISKS OR WITH_UDISKS2 OR
+ WITH_NETWORK_MANAGER_BACKEND OR WITH_CONSOLEKIT )
+ list( APPEND TDEHW_CUSTOM_INCLUDE_DIRS ${DBUS_TQT_INCLUDE_DIRS} )
+ list( APPEND TDEHW_CUSTOM_LIBRARY_DIRS ${DBUS_TQT_LIBRARY_DIRS} )
+ list( APPEND TDEHW_CUSTOM_LIBRARIES ${DBUS_TQT_LIBRARIES} )
+endif( )
+
+if( WITH_UPOWER )
+ add_definitions( -DWITH_UPOWER )
+endif( )
+
+if( WITH_UDISKS )
+ add_definitions( -DWITH_UDISKS )
+endif( )
+
+if( WITH_UDISKS2 )
+ add_definitions( -DWITH_UDISKS2 )
+endif( )
+
+if( WITH_CONSOLEKIT )
+ add_definitions( -DWITH_CONSOLEKIT )
+endif( )
+
+if( WITH_NETWORK_MANAGER_BACKEND )
+ list( APPEND TDEHW_CUSTOM_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/networkbackends/network-manager )
+ list( APPEND TDEHW_CUSTOM_LIBRARIES network_manager_backend-static )
+endif( WITH_NETWORK_MANAGER_BACKEND )
+
+include_directories(
+ ${TQT_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_BINARY_DIR}/tdecore
+ ${CMAKE_SOURCE_DIR}/tdecore
+ ${CMAKE_SOURCE_DIR}/dcop
+ ${TDEHW_CUSTOM_INCLUDE_DIRS}
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+ ${TDEHW_CUSTOM_LIBRARY_DIRS}
+)
+
+##### headers ###################################
+
+install( FILES tdehardwaredevices.h tdenetworkconnections.h tdegenericdevice.h
+ tdestoragedevice.h tdecpudevice.h tdebatterydevice.h tdemainspowerdevice.h
+ tdenetworkdevice.h tdebacklightdevice.h tdemonitordevice.h
+ tdesensordevice.h tderootsystemdevice.h tdeeventdevice.h tdeinputdevice.h
+ tdehwcommontypes.h
+ DESTINATION ${INCLUDE_INSTALL_DIR} )
+
+
+##### libtdecore ################################
+
+set( target tdehw )
+
+set( ${target}_SRCS
+ tdehardwaredevices.cpp tdenetworkconnections.cpp tdegenericdevice.cpp
+ tdestoragedevice.cpp tdecpudevice.cpp tdebatterydevice.cpp
+ tdemainspowerdevice.cpp tdenetworkdevice.cpp tdebacklightdevice.cpp
+ tdemonitordevice.cpp tdesensordevice.cpp tderootsystemdevice.cpp
+ tdeeventdevice.cpp tdeinputdevice.cpp
+)
+
+tde_add_library( ${target} STATIC_PIC AUTOMOC
+ SOURCES ${${target}_SRCS}
+ LINK udev ${TDENM_LIBRARIES} ${TDEUPOWER_LIBRARIES}
+ ${TDEHW_CUSTOM_LIBRARIES}
+)
diff --git a/tdecore/hwlibdaemons/CMakeLists.txt b/tdecore/tdehw/hwlibdaemons/CMakeLists.txt
index edc853c95..edc853c95 100644
--- a/tdecore/hwlibdaemons/CMakeLists.txt
+++ b/tdecore/tdehw/hwlibdaemons/CMakeLists.txt
diff --git a/tdecore/hwlibdaemons/dbus/CMakeLists.txt b/tdecore/tdehw/hwlibdaemons/dbus/CMakeLists.txt
index 4d1f4618a..4d1f4618a 100644
--- a/tdecore/hwlibdaemons/dbus/CMakeLists.txt
+++ b/tdecore/tdehw/hwlibdaemons/dbus/CMakeLists.txt
diff --git a/tdecore/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.conf b/tdecore/tdehw/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.conf
index a649b969f..a649b969f 100644
--- a/tdecore/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.conf
+++ b/tdecore/tdehw/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.conf
diff --git a/tdecore/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.service.cmake b/tdecore/tdehw/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.service.cmake
index 3be2ebeee..3be2ebeee 100644
--- a/tdecore/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.service.cmake
+++ b/tdecore/tdehw/hwlibdaemons/dbus/org.trinitydesktop.hardwarecontrol.service.cmake
diff --git a/tdecore/hwlibdaemons/dbus/tde_dbus_hardwarecontrol.c b/tdecore/tdehw/hwlibdaemons/dbus/tde_dbus_hardwarecontrol.c
index f7e707522..f7e707522 100644
--- a/tdecore/hwlibdaemons/dbus/tde_dbus_hardwarecontrol.c
+++ b/tdecore/tdehw/hwlibdaemons/dbus/tde_dbus_hardwarecontrol.c
diff --git a/tdecore/hwlibdata/CMakeLists.txt b/tdecore/tdehw/hwlibdata/CMakeLists.txt
index fe7cee67d..fe7cee67d 100644
--- a/tdecore/hwlibdata/CMakeLists.txt
+++ b/tdecore/tdehw/hwlibdata/CMakeLists.txt
diff --git a/tdecore/hwlibdata/classrules/CMakeLists.txt b/tdecore/tdehw/hwlibdata/classrules/CMakeLists.txt
index 3b9452f43..3b9452f43 100644
--- a/tdecore/hwlibdata/classrules/CMakeLists.txt
+++ b/tdecore/tdehw/hwlibdata/classrules/CMakeLists.txt
diff --git a/tdecore/hwlibdata/classrules/floppydisk-platform.hwclass b/tdecore/tdehw/hwlibdata/classrules/floppydisk-platform.hwclass
index b3ccab66c..b3ccab66c 100644
--- a/tdecore/hwlibdata/classrules/floppydisk-platform.hwclass
+++ b/tdecore/tdehw/hwlibdata/classrules/floppydisk-platform.hwclass
diff --git a/tdecore/hwlibdata/classrules/floppydisk-udev.hwclass b/tdecore/tdehw/hwlibdata/classrules/floppydisk-udev.hwclass
index 6c76d3c85..6c76d3c85 100644
--- a/tdecore/hwlibdata/classrules/floppydisk-udev.hwclass
+++ b/tdecore/tdehw/hwlibdata/classrules/floppydisk-udev.hwclass
diff --git a/tdecore/hwlibdata/pnpdev/CMakeLists.txt b/tdecore/tdehw/hwlibdata/pnpdev/CMakeLists.txt
index 98b117d54..98b117d54 100644
--- a/tdecore/hwlibdata/pnpdev/CMakeLists.txt
+++ b/tdecore/tdehw/hwlibdata/pnpdev/CMakeLists.txt
diff --git a/tdecore/hwlibdata/pnpdev/dpy.ids b/tdecore/tdehw/hwlibdata/pnpdev/dpy.ids
index 605ef28f4..605ef28f4 100644
--- a/tdecore/hwlibdata/pnpdev/dpy.ids
+++ b/tdecore/tdehw/hwlibdata/pnpdev/dpy.ids
diff --git a/tdecore/hwlibdata/pnpdev/pnp.ids b/tdecore/tdehw/hwlibdata/pnpdev/pnp.ids
index bf4a3ce01..bf4a3ce01 100644
--- a/tdecore/hwlibdata/pnpdev/pnp.ids
+++ b/tdecore/tdehw/hwlibdata/pnpdev/pnp.ids
diff --git a/tdecore/tdehw/networkbackends/CMakeLists.txt b/tdecore/tdehw/networkbackends/CMakeLists.txt
new file mode 100644
index 000000000..f5b916a95
--- /dev/null
+++ b/tdecore/tdehw/networkbackends/CMakeLists.txt
@@ -0,0 +1,12 @@
+#################################################
+#
+# (C) 2013 Golubev Alexander
+# fatzer2 (AT) gmail.com
+#
+# Improvements and feedback are welcome
+#
+# This file is released under GPL >= 2
+#
+#################################################
+
+tde_conditional_add_subdirectory( WITH_NETWORK_MANAGER_BACKEND network-manager )
diff --git a/tdecore/tdehw/networkbackends/network-manager/CMakeLists.txt b/tdecore/tdehw/networkbackends/network-manager/CMakeLists.txt
new file mode 100644
index 000000000..f00b5e482
--- /dev/null
+++ b/tdecore/tdehw/networkbackends/network-manager/CMakeLists.txt
@@ -0,0 +1,36 @@
+#################################################
+#
+# (C) 2013 Golubev Alexander
+# fatzer2 (AT) gmail.com
+#
+# Improvements and feedback are welcome
+#
+# This file is released under GPL >= 2
+#
+#################################################
+
+add_subdirectory( dbus-introspection )
+
+include_directories (
+ ${TQT_INCLUDE_DIRS}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${DBUS_TQT_INCLUDE_DIRS}
+ ${NM_UTIL_INCLUDE_DIRS}
+ ${CMAKE_BINARY_DIR}/tdecore
+ ${CMAKE_SOURCE_DIR}/tdecore
+ ${CMAKE_SOURCE_DIR}/tdecore/tdehw
+ ${CMAKE_CURRENT_BINARY_DIR}/dbus-introspection
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+ ${DBUS_TQT_LIBRARY_DIRS}
+)
+
+tde_add_library( network_manager_backend STATIC_PIC AUTOMOC
+ SOURCES network-manager.cpp
+ EMBED tdenm_dbus-static
+ LINK tdenm_dbus-static ${DBUS_TQT_LIBRARIES}
+)
diff --git a/tdecore/networkbackends/network-manager/dbus/CMakeLists.txt b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/CMakeLists.txt
index 6f4e39f6f..8efdd6031 100644
--- a/tdecore/networkbackends/network-manager/dbus/CMakeLists.txt
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/CMakeLists.txt
@@ -18,7 +18,7 @@ include_directories(
##### tdenm_dbus (static) #########################
-set( INTROSPECTIONPATH "${CMAKE_SOURCE_DIR}/tdecore/networkbackends/network-manager/introspection" )
+set( INTROSPECTIONPATH ${CMAKE_CURRENT_SOURCE_DIR} )
# options:
# p - generate proxy files
@@ -59,19 +59,9 @@ set( MOCHEADERS accesspointproxy.h deviceproxy.h networkmanagerproxy.h networkma
networkmanagersettings.h connectionsettings.h )
foreach( _header_file ${MOCHEADERS} )
- get_filename_component( _basename "${_header_file}" NAME_WE )
- set( _moc_file ${_basename}.moc )
- list( APPEND _moc_files ${_moc_file} )
- add_custom_command( OUTPUT ${_moc_file}
- COMMAND ${TMOC_EXECUTABLE} ${_header_file} -o ${_moc_file}
- DEPENDS ${_header_file} )
+ tde_moc( MOCSOURCES ${CMAKE_CURRENT_BINARY_DIR}/${_header_file} )
endforeach( )
-add_custom_command( OUTPUT mocfiles.cpp
- COMMAND cat ${_moc_files} > mocfiles.cpp
- DEPENDS ${_moc_files} )
-
-
# build the library
tde_add_library( tdenm_dbus STATIC_PIC
@@ -80,6 +70,6 @@ tde_add_library( tdenm_dbus STATIC_PIC
deviceproxy.cpp bluetoothproxy.cpp olpcmeshproxy.cpp ethernetproxy.cpp
infinibandproxy.cpp wifiproxy.cpp wimaxproxy.cpp accesspointproxy.cpp
networkmanagersettings.cpp connectionsettings.cpp
- mocfiles.cpp activeconnectionproxy.cpp vpnconnectionproxy.cpp
- vpnpluginproxy.cpp modemproxy.cpp
+ activeconnectionproxy.cpp vpnconnectionproxy.cpp
+ vpnpluginproxy.cpp modemproxy.cpp ${MOCSOURCES}
)
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-access-point.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-access-point.xml
index 21f238ffa..21f238ffa 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-access-point.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-access-point.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-active-connection.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-active-connection.xml
index ef01ab160..ef01ab160 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-active-connection.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-active-connection.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-agent-manager.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-agent-manager.xml
index e26caacf4..e26caacf4 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-agent-manager.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-agent-manager.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-adsl.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-adsl.xml
index ec50d1104..ec50d1104 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-adsl.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-adsl.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-bond.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-bond.xml
index 9d200ef8f..9d200ef8f 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-bond.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-bond.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-bt.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-bt.xml
index cc4a9b544..cc4a9b544 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-bt.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-bt.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-ethernet.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-ethernet.xml
index 000caf752..000caf752 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-ethernet.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-ethernet.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-infiniband.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-infiniband.xml
index 097714c69..097714c69 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-infiniband.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-infiniband.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-modem.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-modem.xml
index 0ca101fd7..0ca101fd7 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-modem.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-modem.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-olpc-mesh.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-olpc-mesh.xml
index c30ecfc60..c30ecfc60 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-olpc-mesh.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-olpc-mesh.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-vlan.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-vlan.xml
index 54b7bbe48..54b7bbe48 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-vlan.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-vlan.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-wifi.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-wifi.xml
index 531fc8930..531fc8930 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-wifi.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-wifi.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device-wimax.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-wimax.xml
index 6e414087f..6e414087f 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device-wimax.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device-wimax.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-device.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device.xml
index 5b2c98b3c..5b2c98b3c 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-device.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-device.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-dhcp4-config.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-dhcp4-config.xml
index c0821ada9..c0821ada9 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-dhcp4-config.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-dhcp4-config.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-dhcp6-config.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-dhcp6-config.xml
index 93b0f1c8f..93b0f1c8f 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-dhcp6-config.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-dhcp6-config.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-ip4-config.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-ip4-config.xml
index 70d3e1ce4..70d3e1ce4 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-ip4-config.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-ip4-config.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-ip6-config.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-ip6-config.xml
index 604781857..604781857 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-ip6-config.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-ip6-config.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-manager.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-manager.xml
index f5fd7abcf..f5fd7abcf 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-manager.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-manager.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-ppp-manager.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-ppp-manager.xml
index 9e2dfdb1c..9e2dfdb1c 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-ppp-manager.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-ppp-manager.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-secret-agent.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-secret-agent.xml
index 81a1321b1..81a1321b1 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-secret-agent.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-secret-agent.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-settings-connection.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-settings-connection.xml
index 9089b009a..9089b009a 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-settings-connection.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-settings-connection.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-settings.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-settings.xml
index 301cde76d..301cde76d 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-settings.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-settings.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-vpn-connection.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-vpn-connection.xml
index 65b917854..65b917854 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-vpn-connection.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-vpn-connection.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-vpn-plugin.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-vpn-plugin.xml
index 5fb11622a..5fb11622a 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-vpn-plugin.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-vpn-plugin.xml
diff --git a/tdecore/networkbackends/network-manager/introspection/nm-wimax-nsp.xml b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-wimax-nsp.xml
index 55ac4abcf..55ac4abcf 100644
--- a/tdecore/networkbackends/network-manager/introspection/nm-wimax-nsp.xml
+++ b/tdecore/tdehw/networkbackends/network-manager/dbus-introspection/nm-wimax-nsp.xml
diff --git a/tdecore/networkbackends/network-manager/network-manager.cpp b/tdecore/tdehw/networkbackends/network-manager/network-manager.cpp
index a7295beac..af056de4b 100644
--- a/tdecore/networkbackends/network-manager/network-manager.cpp
+++ b/tdecore/tdehw/networkbackends/network-manager/network-manager.cpp
@@ -22,6 +22,7 @@
#include "tdeconfig.h"
#include "tdehardwaredevices.h"
+#include "tdenetworkdevice.h"
#include "network-manager.h"
#include "network-manager_p.h"
@@ -5624,4 +5625,4 @@ TDENetworkConnectionManager_BackendNMPrivate::~TDENetworkConnectionManager_Backe
}
#include "network-manager.moc"
-#include "network-manager_p.moc" \ No newline at end of file
+#include "network-manager_p.moc"
diff --git a/tdecore/networkbackends/network-manager/network-manager.h b/tdecore/tdehw/networkbackends/network-manager/network-manager.h
index a9042f1c4..a9042f1c4 100644
--- a/tdecore/networkbackends/network-manager/network-manager.h
+++ b/tdecore/tdehw/networkbackends/network-manager/network-manager.h
diff --git a/tdecore/networkbackends/network-manager/network-manager_p.h b/tdecore/tdehw/networkbackends/network-manager/network-manager_p.h
index 925fd4389..925fd4389 100644
--- a/tdecore/networkbackends/network-manager/network-manager_p.h
+++ b/tdecore/tdehw/networkbackends/network-manager/network-manager_p.h
diff --git a/tdecore/tdehw/tdebacklightdevice.cpp b/tdecore/tdehw/tdebacklightdevice.cpp
new file mode 100644
index 000000000..0ce5533e0
--- /dev/null
+++ b/tdecore/tdehw/tdebacklightdevice.cpp
@@ -0,0 +1,138 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdebacklightdevice.h"
+
+#include <unistd.h>
+
+#include <tqfile.h>
+
+#include "config.h"
+
+// uPower
+#if defined(WITH_UPOWER)
+ #include <tqdbusdata.h>
+ #include <tqdbusmessage.h>
+ #include <tqdbusproxy.h>
+ #include <tqdbusvariant.h>
+ #include <tqdbusconnection.h>
+#endif // defined(WITH_UPOWER)
+
+TDEBacklightDevice::TDEBacklightDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+}
+
+TDEBacklightDevice::~TDEBacklightDevice() {
+}
+
+TDEDisplayPowerLevel::TDEDisplayPowerLevel TDEBacklightDevice::powerLevel() {
+ return m_powerLevel;
+}
+
+void TDEBacklightDevice::internalSetPowerLevel(TDEDisplayPowerLevel::TDEDisplayPowerLevel pl) {
+ m_powerLevel = pl;
+}
+
+void TDEBacklightDevice::internalSetMaximumRawBrightness(int br) {
+ m_maximumBrightness = br;
+}
+
+void TDEBacklightDevice::internalSetCurrentRawBrightness(int br) {
+ m_currentBrightness = br;
+}
+
+int TDEBacklightDevice::brightnessSteps() {
+ return m_maximumBrightness + 1;
+}
+
+double TDEBacklightDevice::brightnessPercent() {
+ return (((m_currentBrightness*1.0)/m_maximumBrightness)*100.0);
+}
+
+bool TDEBacklightDevice::canSetBrightness() {
+ TQString brightnessnode = systemPath() + "/brightness";
+ int rval = access (brightnessnode.ascii(), W_OK);
+ if (rval == 0) {
+ return TRUE;
+ }
+ else {
+#ifdef WITH_UPOWER
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.Brightness", dbusConn);
+ if (hardwareControl.canSend()) {
+ // can set brightness?
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromString(brightnessnode);
+ TQT_DBusMessage reply = hardwareControl.sendWithReply("CanSetBrightness", params);
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
+ return reply[0].toVariant().value.toBool();
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+#else // WITH_UPOWER
+ return FALSE;
+#endif// WITH_UPOWER
+ }
+}
+
+int TDEBacklightDevice::rawBrightness() {
+ return m_currentBrightness;
+}
+
+void TDEBacklightDevice::setRawBrightness(int br) {
+ TQString brightnessnode = systemPath() + "/brightness";
+ TQString brightnessCommand = TQString("%1").arg(br);
+ TQFile file( brightnessnode );
+ if ( file.open( IO_WriteOnly ) ) {
+ TQTextStream stream( &file );
+ stream << brightnessCommand;
+ file.close();
+ }
+#ifdef WITH_UPOWER
+ else {
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.Brightness", dbusConn);
+ if (hardwareControl.canSend()) {
+ // set brightness
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromString(brightnessnode) << TQT_DBusData::fromString(brightnessCommand);
+ hardwareControl.sendWithReply("SetBrightness", params);
+ }
+ else {
+ return;
+ }
+ }
+ else {
+ return;
+ }
+ }
+#endif // WITH_UPOWER
+}
+
+#include "tdebacklightdevice.moc"
diff --git a/tdecore/tdehw/tdebacklightdevice.h b/tdecore/tdehw/tdebacklightdevice.h
new file mode 100644
index 000000000..b61d4f92f
--- /dev/null
+++ b/tdecore/tdehw/tdebacklightdevice.h
@@ -0,0 +1,97 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDEBACKLIGHTDEVICE_H
+#define _TDEBACKLIGHTDEVICE_H
+
+#include "tdegenericdevice.h"
+#include "tdehwcommontypes.h"
+
+class TDECORE_EXPORT TDEBacklightDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDEBacklightDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDEBacklightDevice();
+
+ /**
+ * @return a TDEDisplayPowerLevel::TDEDisplayPowerLevel with the current power level
+ */
+ TDEDisplayPowerLevel::TDEDisplayPowerLevel powerLevel();
+
+ /**
+ * @return an integer with the number of discrete control steps available
+ */
+ int brightnessSteps();
+
+ /**
+ * @return a double with the current brightness percentage
+ */
+ double brightnessPercent();
+
+ /**
+ * @return TRUE if permissions allow brightness can be set, FALSE if not
+ */
+ bool canSetBrightness();
+
+ /**
+ * @return an int with the current raw brightness
+ */
+ int rawBrightness();
+
+ /**
+ * @param br an integer with the new raw brightness value
+ */
+ void setRawBrightness(int br);
+
+ protected:
+ /**
+ * @param pl a TDEDisplayPowerLevel::TDEDisplayPowerLevel with the current power level
+ * @internal
+ */
+ void internalSetPowerLevel(TDEDisplayPowerLevel::TDEDisplayPowerLevel pl);
+
+ /**
+ * @param br an integer with the maximum raw brightness value
+ * @internal
+ */
+ void internalSetMaximumRawBrightness(int br);
+
+ /**
+ * @param br an integer with the current raw brightness value
+ * @internal
+ */
+ void internalSetCurrentRawBrightness(int br);
+
+ private:
+ TDEDisplayPowerLevel::TDEDisplayPowerLevel m_powerLevel;
+ int m_currentBrightness;
+ int m_maximumBrightness;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDEBACKLIGHTDEVICE_H
diff --git a/tdecore/tdehw/tdebatterydevice.cpp b/tdecore/tdehw/tdebatterydevice.cpp
new file mode 100644
index 000000000..781fb994b
--- /dev/null
+++ b/tdecore/tdehw/tdebatterydevice.cpp
@@ -0,0 +1,151 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdebatterydevice.h"
+
+#include "config.h"
+
+TDEBatteryDevice::TDEBatteryDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+}
+
+TDEBatteryDevice::~TDEBatteryDevice() {
+}
+
+double TDEBatteryDevice::voltage() {
+ return m_currentVoltage;
+}
+
+void TDEBatteryDevice::internalSetVoltage(double vt) {
+ m_currentVoltage = vt;
+}
+
+double TDEBatteryDevice::maximumVoltage() {
+ return m_maximumVoltage;
+}
+
+void TDEBatteryDevice::internalSetMaximumVoltage(double vt) {
+ m_maximumVoltage = vt;
+}
+
+double TDEBatteryDevice::minimumVoltage() {
+ return m_minimumVoltage;
+}
+
+void TDEBatteryDevice::internalSetMinimumVoltage(double vt) {
+ m_minimumVoltage = vt;
+}
+
+double TDEBatteryDevice::maximumDesignVoltage() {
+ return m_maximumDesignVoltage;
+}
+
+void TDEBatteryDevice::internalSetMaximumDesignVoltage(double vt) {
+ m_maximumDesignVoltage = vt;
+}
+
+double TDEBatteryDevice::energy() {
+ return m_currentEnergy;
+}
+
+void TDEBatteryDevice::internalSetEnergy(double vt) {
+ m_currentEnergy = vt;
+}
+
+double TDEBatteryDevice::alarmEnergy() {
+ return m_alarmEnergy;
+}
+
+void TDEBatteryDevice::internalSetAlarmEnergy(double vt) {
+ m_alarmEnergy = vt;
+}
+
+double TDEBatteryDevice::maximumEnergy() {
+ return m_maximumEnergy;
+}
+
+void TDEBatteryDevice::internalSetMaximumEnergy(double vt) {
+ m_maximumEnergy = vt;
+}
+
+double TDEBatteryDevice::maximumDesignEnergy() {
+ return m_maximumDesignEnergy;
+}
+
+void TDEBatteryDevice::internalSetMaximumDesignEnergy(double vt) {
+ m_maximumDesignEnergy = vt;
+}
+
+double TDEBatteryDevice::dischargeRate() {
+ return m_dischargeRate;
+}
+
+void TDEBatteryDevice::internalSetDischargeRate(double vt) {
+ m_dischargeRate = vt;
+}
+
+double TDEBatteryDevice::timeRemaining() {
+ return m_timeRemaining;
+}
+
+void TDEBatteryDevice::internalSetTimeRemaining(double tr) {
+ m_timeRemaining = tr;
+}
+
+TQString TDEBatteryDevice::technology() {
+ return m_technology;
+}
+
+void TDEBatteryDevice::internalSetTechnology(TQString tc) {
+ m_technology = tc;
+}
+
+TDEBatteryStatus::TDEBatteryStatus TDEBatteryDevice::status() {
+ return m_status;
+}
+
+void TDEBatteryDevice::internalSetStatus(TQString tc) {
+ tc = tc.lower();
+
+ if (tc == "charging") {
+ m_status = TDEBatteryStatus::Charging;
+ }
+ else if (tc == "discharging") {
+ m_status = TDEBatteryStatus::Discharging;
+ }
+ else if (tc == "full") {
+ m_status = TDEBatteryStatus::Full;
+ }
+ else {
+ m_status = TDEBatteryStatus::Unknown;
+ }
+}
+
+bool TDEBatteryDevice::installed() {
+ return m_installed;
+}
+
+void TDEBatteryDevice::internalSetInstalled(bool tc) {
+ m_installed = tc;
+}
+
+double TDEBatteryDevice::chargePercent() {
+ return (m_currentEnergy/m_maximumEnergy)*100.0;
+}
+
+#include "tdebatterydevice.moc"
diff --git a/tdecore/tdehw/tdebatterydevice.h b/tdecore/tdehw/tdebatterydevice.h
new file mode 100644
index 000000000..6556b5268
--- /dev/null
+++ b/tdecore/tdehw/tdebatterydevice.h
@@ -0,0 +1,215 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDEBATTERYDEVICE_H
+#define _TDEBATTERYDEVICE_H
+
+#include "tdegenericdevice.h"
+
+namespace TDEBatteryStatus {
+enum TDEBatteryStatus {
+ Charging,
+ Discharging,
+ Full,
+ Unknown = 0x80000000
+};
+};
+
+class TDECORE_EXPORT TDEBatteryDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDEBatteryDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDEBatteryDevice();
+
+ /**
+ * @return a double with the current battery voltage, if available
+ */
+ double voltage();
+
+ /**
+ * @return a double with the minimum battery voltage, if available
+ */
+ double minimumVoltage();
+
+ /**
+ * @return a double with the maximum battery voltage, if available
+ */
+ double maximumVoltage();
+
+ /**
+ * @return a double with the designed maximum battery voltage, if available
+ */
+ double maximumDesignVoltage();
+
+ /**
+ * @return a double with the current battery energy in watt-hours, if available
+ */
+ double energy();
+
+ /**
+ * @return a double with the current battery alarm energy in watt-hours, if available
+ */
+ double alarmEnergy();
+
+ /**
+ * @return a double with the maximum battery energy in watt-hours, if available
+ */
+ double maximumEnergy();
+
+ /**
+ * @return a double with the designed maximum battery energy in watt-hours, if available
+ */
+ double maximumDesignEnergy();
+
+ /**
+ * @return a double with the current battery discharge rate in watt-hours, if available
+ */
+ double dischargeRate();
+
+ /**
+ * @return a double with the current battery discharge time remaining in seconds, if available
+ */
+ double timeRemaining();
+
+ /**
+ * @return a TQString with the battery technology, if available
+ */
+ TQString technology();
+
+ /**
+ * @return a TDEBatteryStatus::TDEBatteryStatus with the current battery status
+ */
+ TDEBatteryStatus::TDEBatteryStatus status();
+
+ /**
+ * @return TRUE if the battery is installed
+ */
+ bool installed();
+
+ /**
+ * @return a double with the current battery charge in percent, if available
+ */
+ double chargePercent();
+
+ protected:
+ /**
+ * @param a double with the current battery voltage, if available
+ * @internal
+ */
+ void internalSetVoltage(double vt);
+
+ /**
+ * @param a double with the minimum battery voltage, if available
+ * @internal
+ */
+ void internalSetMinimumVoltage(double vt);
+
+ /**
+ * @param a double with the maximum battery voltage, if available
+ * @internal
+ */
+ void internalSetMaximumVoltage(double vt);
+
+ /**
+ * @param a double with the designed maximum battery voltage, if available
+ * @internal
+ */
+ void internalSetMaximumDesignVoltage(double vt);
+
+ /**
+ * @param a double with the current battery energy in watt-hours, if available
+ * @internal
+ */
+ void internalSetEnergy(double vt);
+
+ /**
+ * @param a double with the current battery alarm energy in watt-hours, if available
+ * @internal
+ */
+ void internalSetAlarmEnergy(double vt);
+
+ /**
+ * @param a double with the maximum battery energy in watt-hours, if available
+ * @internal
+ */
+ void internalSetMaximumEnergy(double vt);
+
+ /**
+ * @param a double with the designed maximum battery energy in watt-hours, if available
+ * @internal
+ */
+ void internalSetMaximumDesignEnergy(double vt);
+
+ /**
+ * @param a double with the current battery discharge rate in volt-hours, if available
+ * @internal
+ */
+ void internalSetDischargeRate(double vt);
+
+ /**
+ * @param a double with the current battery discharge time remaining in seconds, if available
+ * @internal
+ */
+ void internalSetTimeRemaining(double tr);
+
+ /**
+ * @param a TQString with the battery technology, if available
+ * @internal
+ */
+ void internalSetTechnology(TQString tc);
+
+ /**
+ * @param a TQString with the battery status, if available
+ * @internal
+ */
+ void internalSetStatus(TQString tc);
+
+ /**
+ * @param TRUE if the battery is installed
+ * @internal
+ */
+ void internalSetInstalled(bool tc);
+
+ private:
+ double m_currentVoltage;
+ double m_minimumVoltage;
+ double m_maximumVoltage;
+ double m_maximumDesignVoltage;
+ double m_alarmEnergy;
+ double m_currentEnergy;
+ double m_maximumEnergy;
+ double m_maximumDesignEnergy;
+ double m_dischargeRate;
+ double m_timeRemaining;
+ TQString m_technology;
+ TDEBatteryStatus::TDEBatteryStatus m_status;
+ bool m_installed;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDEBATTERYDEVICE_H
diff --git a/tdecore/tdehw/tdecpudevice.cpp b/tdecore/tdehw/tdecpudevice.cpp
new file mode 100644
index 000000000..b6b4b9bf4
--- /dev/null
+++ b/tdecore/tdehw/tdecpudevice.cpp
@@ -0,0 +1,226 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdecpudevice.h"
+
+#include <unistd.h>
+
+#include <tqfile.h>
+
+#include "tdeglobal.h"
+
+#include "tdehardwaredevices.h"
+
+#include "config.h"
+
+// uPower
+#if defined(WITH_UPOWER)
+ #include <tqdbusdata.h>
+ #include <tqdbusmessage.h>
+ #include <tqdbusproxy.h>
+ #include <tqdbusvariant.h>
+ #include <tqdbusconnection.h>
+#endif // defined(WITH_UPOWER)
+
+
+TDECPUDevice::TDECPUDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+ m_frequency = -1;
+ m_minfrequency = -1;
+ m_maxfrequency = -1;
+ m_corenumber = -1;
+ m_transitionlatency = -1;
+}
+
+TDECPUDevice::~TDECPUDevice() {
+}
+
+double TDECPUDevice::frequency() {
+ return m_frequency;
+}
+
+void TDECPUDevice::internalSetFrequency(double fr) {
+ m_frequency = fr;
+}
+
+double TDECPUDevice::minFrequency() {
+ return m_minfrequency;
+}
+
+void TDECPUDevice::internalSetMinFrequency(double fr) {
+ m_minfrequency = fr;
+}
+
+double TDECPUDevice::maxFrequency() {
+ return m_maxfrequency;
+}
+
+void TDECPUDevice::internalSetMaxFrequency(double fr) {
+ m_maxfrequency = fr;
+}
+
+double TDECPUDevice::transitionLatency() {
+ return m_transitionlatency;
+}
+
+void TDECPUDevice::internalSetTransitionLatency(double tl) {
+ m_transitionlatency = tl;
+}
+
+TQString TDECPUDevice::governor() {
+ return m_governor;
+}
+
+void TDECPUDevice::internalSetGovernor(TQString gr) {
+ m_governor = gr;
+}
+
+TQString TDECPUDevice::scalingDriver() {
+ return m_scalingdriver;
+}
+
+void TDECPUDevice::internalSetScalingDriver(TQString dr) {
+ m_scalingdriver = dr;
+}
+
+TQStringList TDECPUDevice::dependentProcessors() {
+ return m_tiedprocs;
+}
+
+void TDECPUDevice::internalSetDependentProcessors(TQStringList dp) {
+ m_tiedprocs = dp;
+}
+
+TQStringList TDECPUDevice::availableFrequencies() {
+ return m_frequencies;
+}
+
+void TDECPUDevice::internalSetAvailableFrequencies(TQStringList af) {
+ m_frequencies = af;
+}
+
+TQStringList TDECPUDevice::availableGovernors() {
+ return m_governers;
+}
+
+void TDECPUDevice::internalSetAvailableGovernors(TQStringList gp) {
+ m_governers = gp;
+}
+
+void TDECPUDevice::internalSetCoreNumber(int cn) {
+ m_corenumber = cn;
+}
+
+bool TDECPUDevice::canSetGovernor() {
+ TQString governornode = systemPath() + "/cpufreq/scaling_governor";
+ int rval = access (governornode.ascii(), W_OK);
+ if (rval == 0) {
+ return TRUE;
+ }
+ else {
+#ifdef WITH_UPOWER
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.CPUGovernor", dbusConn);
+ if (hardwareControl.canSend()) {
+ // can set CPU governor?
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromInt32(coreNumber());
+ TQT_DBusMessage reply = hardwareControl.sendWithReply("CanSetCPUGovernor", params);
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
+ return reply[0].toVariant().value.toBool();
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+#else // WITH_UPOWER
+ return FALSE;
+#endif// WITH_UPOWER
+ }
+}
+
+void TDECPUDevice::setGovernor(TQString gv) {
+ TQString governornode = systemPath() + "/cpufreq/scaling_governor";
+ TQFile file( governornode );
+ if ( file.open( IO_WriteOnly ) ) {
+ TQTextStream stream( &file );
+ stream << gv.lower();
+ file.close();
+ }
+#ifdef WITH_UPOWER
+ else {
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.CPUGovernor", dbusConn);
+ if (hardwareControl.canSend()) {
+ // set CPU governor
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromInt32(coreNumber()) << TQT_DBusData::fromString(gv.lower());
+ hardwareControl.sendWithReply("SetCPUGovernor", params);
+ }
+ else {
+ return;
+ }
+ }
+ else {
+ return;
+ }
+ }
+#endif // WITH_UPOWER
+
+ // Force update of the device information object
+ TDEGlobal::hardwareDevices()->processModifiedCPUs();
+}
+
+bool TDECPUDevice::canSetMaximumScalingFrequency() {
+ TQString freqnode = systemPath() + "/cpufreq/scaling_max_freq";
+ int rval = access (freqnode.ascii(), W_OK);
+ if (rval == 0) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+void TDECPUDevice::setMaximumScalingFrequency(double fr) {
+ TQString freqnode = systemPath() + "/cpufreq/scaling_max_freq";
+ TQFile file( freqnode );
+ if ( file.open( IO_WriteOnly ) ) {
+ TQTextStream stream( &file );
+ stream << TQString("%1").arg(fr*1000000.0, 0, 'f', 0);
+ file.close();
+ }
+
+ // Force update of the device information object
+ TDEGlobal::hardwareDevices()->processModifiedCPUs();
+}
+
+int TDECPUDevice::coreNumber() {
+ return m_corenumber;
+}
+
+#include "tdecpudevice.moc"
diff --git a/tdecore/tdehw/tdecpudevice.h b/tdecore/tdehw/tdecpudevice.h
new file mode 100644
index 000000000..6037fcb69
--- /dev/null
+++ b/tdecore/tdehw/tdecpudevice.h
@@ -0,0 +1,186 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDECPUDEVICE_H
+#define _TDECPUDEVICE_H
+
+#include "tdegenericdevice.h"
+
+class TDECORE_EXPORT TDECPUDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDECPUDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDECPUDevice();
+
+ /**
+ * @return a double with the current CPU frequency in MHz, if available
+ */
+ double frequency();
+
+ /**
+ * @return a double with the minimum CPU frequency in MHz, if available
+ */
+ double minFrequency();
+
+ /**
+ * @return a double with the maximum CPU frequency in MHz, if available
+ */
+ double maxFrequency();
+
+ /**
+ * @return a double with the transition latency in ns, if available
+ */
+ double transitionLatency();
+
+ /**
+ * @return a TQString with the current CPU governor policy, if available
+ */
+ TQString governor();
+
+ /**
+ * @return a TQString with the current CPU scaling driver, if available
+ */
+ TQString scalingDriver();
+
+ /**
+ * @return a TQStringList with the IDs of all processors that are dependent on the frequency/power settings of this one, if available
+ */
+ TQStringList dependentProcessors();
+
+ /**
+ * @return a TQStringList with all valid scaling frequencies in Hz, if available
+ */
+ TQStringList availableFrequencies();
+
+ /**
+ * @return a TQStringList with all available governor policies, if available
+ */
+ TQStringList availableGovernors();
+
+ /**
+ * @return TRUE if permissions allow the CPU governor to be set, FALSE if not
+ */
+ bool canSetGovernor();
+
+ /**
+ * @param gv a TQString with the new CPU governor policy name
+ */
+ void setGovernor(TQString gv);
+
+ /**
+ * @return TRUE if permissions allow the CPU maximum frequency to be set, FALSE if not
+ */
+ bool canSetMaximumScalingFrequency();
+
+ /**
+ * @param gv a double with the new CPU maximum frequency in MHz
+ */
+ void setMaximumScalingFrequency(double fr);
+
+ /**
+ * @return an integer with the core number, starting at 0
+ */
+ int coreNumber();
+
+ protected:
+ /**
+ * @param fr a double with the current CPU frequency in MHz, if available
+ * @internal
+ */
+ void internalSetFrequency(double fr);
+
+ /**
+ * @param fr a double with the minimum CPU frequency in MHz, if available
+ * @internal
+ */
+ void internalSetMinFrequency(double fr);
+
+ /**
+ * @param fr a double with the maximum CPU frequency in MHz, if available
+ * @internal
+ */
+ void internalSetMaxFrequency(double fr);
+
+ /**
+ * @param tl a double with the transition latency in ns, if available
+ * @internal
+ */
+ void internalSetTransitionLatency(double tl);
+
+ /**
+ * @param gr a TQString with the current CPU governor policy, if available
+ * @internal
+ */
+ void internalSetGovernor(TQString gr);
+
+ /**
+ * @param dr a TQString with the current CPU scaling driver, if available
+ * @internal
+ */
+ void internalSetScalingDriver(TQString dr);
+
+ /**
+ * @param dp a TQStringList with the IDs of all processors that are dependent on the frequency/power settings of this one, if available
+ * @internal
+ */
+ void internalSetDependentProcessors(TQStringList dp);
+
+ /**
+ * @param af a TQStringList with all valid scaling frequencies in Hz, if available
+ * @internal
+ */
+ void internalSetAvailableFrequencies(TQStringList af);
+
+ /**
+ * @param gp a TQStringList with all available governor policies, if available
+ * @internal
+ */
+ void internalSetAvailableGovernors(TQStringList gp);
+
+ /**
+ * @param cn an integer with the core number, starting at 0
+ * @internal
+ */
+ void internalSetCoreNumber(int cn);
+
+ private:
+ double m_frequency;
+ double m_minfrequency;
+ double m_maxfrequency;
+ double m_transitionlatency;
+ TQString m_governor;
+ TQString m_scalingdriver;
+ TQStringList m_tiedprocs;
+ TQStringList m_frequencies;
+ TQStringList m_governers;
+ int m_corenumber;
+
+ friend class TDEHardwareDevices;
+};
+
+
+#endif // _TDECPUDEVICE_H
diff --git a/tdecore/tdehw/tdeeventdevice.cpp b/tdecore/tdehw/tdeeventdevice.cpp
new file mode 100644
index 000000000..a98bc78c3
--- /dev/null
+++ b/tdecore/tdehw/tdeeventdevice.cpp
@@ -0,0 +1,146 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdeeventdevice.h"
+
+#include <unistd.h>
+#include <linux/input.h>
+
+#include <tqsocketnotifier.h>
+
+#include "tdelocale.h"
+
+#include "tdehardwaredevices.h"
+
+#include "config.h"
+
+TDEEventDevice::TDEEventDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+ m_fd = -1;
+ m_fdMonitorActive = false;
+}
+
+TDEEventDevice::~TDEEventDevice() {
+ if (m_fd >= 0) {
+ close(m_fd);
+ }
+}
+
+TDEEventDeviceType::TDEEventDeviceType TDEEventDevice::eventType() {
+ return m_eventType;
+}
+
+void TDEEventDevice::internalSetEventType(TDEEventDeviceType::TDEEventDeviceType et) {
+ m_eventType = et;
+}
+
+TDESwitchType::TDESwitchType TDEEventDevice::providedSwitches() {
+ return m_providedSwitches;
+}
+
+void TDEEventDevice::internalSetProvidedSwitches(TDESwitchType::TDESwitchType sl) {
+ m_providedSwitches = sl;
+}
+
+TDESwitchType::TDESwitchType TDEEventDevice::activeSwitches() {
+ return m_switchActive;
+}
+
+void TDEEventDevice::internalSetActiveSwitches(TDESwitchType::TDESwitchType sl) {
+ m_switchActive = sl;
+}
+
+// Keep this in sync with the TDESwitchType definition in the header
+TQStringList TDEEventDevice::friendlySwitchList(TDESwitchType::TDESwitchType switches) {
+ TQStringList ret;
+
+ if (switches & TDESwitchType::Lid) {
+ ret.append(i18n("Lid Switch"));
+ }
+ if (switches & TDESwitchType::TabletMode) {
+ ret.append(i18n("Tablet Mode"));
+ }
+ if (switches & TDESwitchType::HeadphoneInsert) {
+ ret.append(i18n("Headphone Inserted"));
+ }
+ if (switches & TDESwitchType::RFKill) {
+ ret.append(i18n("Radio Frequency Device Kill Switch"));
+ }
+ if (switches & TDESwitchType::Radio) {
+ ret.append(i18n("Enable Radio"));
+ }
+ if (switches & TDESwitchType::MicrophoneInsert) {
+ ret.append(i18n("Microphone Inserted"));
+ }
+ if (switches & TDESwitchType::Dock) {
+ ret.append(i18n("Docked"));
+ }
+ if (switches & TDESwitchType::LineOutInsert) {
+ ret.append(i18n("Line Out Inserted"));
+ }
+ if (switches & TDESwitchType::JackPhysicalInsert) {
+ ret.append(i18n("Physical Jack Inserted"));
+ }
+ if (switches & TDESwitchType::VideoOutInsert) {
+ ret.append(i18n("Video Out Inserted"));
+ }
+ if (switches & TDESwitchType::CameraLensCover) {
+ ret.append(i18n("Camera Lens Cover"));
+ }
+ if (switches & TDESwitchType::KeypadSlide) {
+ ret.append(i18n("Keypad Slide"));
+ }
+ if (switches & TDESwitchType::FrontProximity) {
+ ret.append(i18n("Front Proximity"));
+ }
+ if (switches & TDESwitchType::RotateLock) {
+ ret.append(i18n("Rotate Lock"));
+ }
+ if (switches & TDESwitchType::LineInInsert) {
+ ret.append(i18n("Line In Inserted"));
+ }
+
+ return ret;
+}
+
+void TDEEventDevice::internalStartFdMonitoring(TDEHardwareDevices* hwmanager) {
+ if (!m_fdMonitorActive) {
+ // For security and performance reasons, only monitor known ACPI buttons
+ if (eventType() != TDEEventDeviceType::Unknown) {
+ if (m_fd >= 0) {
+ m_eventNotifier = new TQSocketNotifier(m_fd, TQSocketNotifier::Read, this);
+ connect( m_eventNotifier, TQT_SIGNAL(activated(int)), this, TQT_SLOT(eventReceived()) );
+ }
+ connect( this, TQT_SIGNAL(keyPressed(unsigned int, TDEEventDevice*)), hwmanager, TQT_SLOT(processEventDeviceKeyPressed(unsigned int, TDEEventDevice*)) );
+ }
+ m_fdMonitorActive = true;
+ }
+}
+
+void TDEEventDevice::eventReceived() {
+ struct input_event ev;
+ int r;
+ r = read(m_fd, &ev, sizeof(struct input_event));
+ if (r > 0) {
+ if (ev.type == EV_KEY) {
+ emit keyPressed(ev.code, this);
+ }
+ }
+}
+
+#include "tdeeventdevice.moc"
diff --git a/tdecore/tdehw/tdeeventdevice.h b/tdecore/tdehw/tdeeventdevice.h
new file mode 100644
index 000000000..50aea54ef
--- /dev/null
+++ b/tdecore/tdehw/tdeeventdevice.h
@@ -0,0 +1,161 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDEEVENTDEVICE_H
+#define _TDEEVENTDEVICE_H
+
+#include "tdegenericdevice.h"
+
+class TDEHardwareDevices;
+
+namespace TDEEventDeviceType {
+enum TDEEventDeviceType {
+ Unknown,
+ ACPILidSwitch,
+ ACPISleepButton,
+ ACPIPowerButton,
+ Other = 0x80000000
+};
+};
+
+// Keep friendlySwitchList() in tdehardwaredevices.cpp in sync with this enum
+namespace TDESwitchType {
+enum TDESwitchType {
+ Null = 0x00000000,
+ Lid = 0x00000001,
+ TabletMode = 0x00000002,
+ HeadphoneInsert = 0x00000004,
+ RFKill = 0x00000008,
+ Radio = 0x00000010,
+ MicrophoneInsert = 0x00000020,
+ Dock = 0x00000040,
+ LineOutInsert = 0x00000080,
+ JackPhysicalInsert = 0x00000100,
+ VideoOutInsert = 0x00000200,
+ CameraLensCover = 0x00000400,
+ KeypadSlide = 0x00000800,
+ FrontProximity = 0x00001000,
+ RotateLock = 0x00002000,
+ LineInInsert = 0x00004000
+};
+
+inline TDESwitchType operator|(TDESwitchType a, TDESwitchType b)
+{
+ return static_cast<TDESwitchType>(static_cast<int>(a) | static_cast<int>(b));
+}
+
+inline TDESwitchType operator&(TDESwitchType a, TDESwitchType b)
+{
+ return static_cast<TDESwitchType>(static_cast<int>(a) & static_cast<int>(b));
+}
+
+inline TDESwitchType operator~(TDESwitchType a)
+{
+ return static_cast<TDESwitchType>(~static_cast<int>(a));
+}
+};
+
+class TQSocketNotifier;
+
+class TDECORE_EXPORT TDEEventDevice : public TDEGenericDevice
+{
+ Q_OBJECT
+
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDEEventDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDEEventDevice();
+
+ /**
+ * @return a TDEEventDeviceType::TDEEventDeviceType with the event device type, if known
+ */
+ TDEEventDeviceType::TDEEventDeviceType eventType();
+
+ /**
+ * @return a TDESwitchType::TDESwitchType with all switches provided by this device
+ */
+ TDESwitchType::TDESwitchType providedSwitches();
+
+ /**
+ * @return a TDESwitchType::TDESwitchType with all active switches provided by this device
+ */
+ TDESwitchType::TDESwitchType activeSwitches();
+
+ /**
+ * @param switches a TDESwitchType::TDESwitchType with any switch flags set
+ * @return a TQStringList with friendly names for all set switch flags
+ */
+ static TQStringList friendlySwitchList(TDESwitchType::TDESwitchType switches);
+
+ protected:
+ /**
+ * @param et a TDEEventDeviceType::TDEEventDeviceType with the event device type, if known
+ * @internal
+ */
+ void internalSetEventType(TDEEventDeviceType::TDEEventDeviceType et);
+
+ /**
+ * @param sl a TDESwitchType::TDESwitchType with all switches provided by this device
+ * @internal
+ */
+ void internalSetProvidedSwitches(TDESwitchType::TDESwitchType sl);
+
+ /**
+ * @param sl a TDESwitchType::TDESwitchType with all active switches provided by this device
+ * @internal
+ */
+ void internalSetActiveSwitches(TDESwitchType::TDESwitchType sl);
+
+ /**
+ * @param hwmanager the master hardware manager
+ * @internal
+ */
+ void internalStartFdMonitoring(TDEHardwareDevices* hwmanager);
+
+ protected slots:
+ void eventReceived();
+
+ signals:
+ /**
+ * @param keycode the code of the key that was pressed/released
+ * See include/linux/input.h for a complete list of keycodes
+ * @param device a TDEEventDevice* with the device that received the event
+ */
+ void keyPressed(unsigned int keycode, TDEEventDevice* device);
+
+ private:
+ TDEEventDeviceType::TDEEventDeviceType m_eventType;
+ TDESwitchType::TDESwitchType m_providedSwitches;
+ TDESwitchType::TDESwitchType m_switchActive;
+
+ int m_fd;
+ bool m_fdMonitorActive;
+ TQSocketNotifier* m_eventNotifier;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDEEVENTDEVICE_H
diff --git a/tdecore/tdehw/tdegenericdevice.cpp b/tdecore/tdehw/tdegenericdevice.cpp
new file mode 100644
index 000000000..5f51a8b61
--- /dev/null
+++ b/tdecore/tdehw/tdegenericdevice.cpp
@@ -0,0 +1,319 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdegenericdevice.h"
+
+#include <tqpixmap.h>
+
+#include "tdeglobal.h"
+#include "tdelocale.h"
+
+#include "tdehardwaredevices.h"
+
+#include "config.h"
+
+TDEGenericDevice::TDEGenericDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TQObject() {
+ m_deviceType = dt;
+ m_deviceName = dn;
+
+ m_parentDevice = 0;
+ m_friendlyName = TQString::null;
+ m_blacklistedForUpdate = false;
+}
+
+TDEGenericDevice::~TDEGenericDevice() {
+}
+
+TDEGenericDeviceType::TDEGenericDeviceType TDEGenericDevice::type() {
+ return m_deviceType;
+}
+
+TQString TDEGenericDevice::name() {
+ return m_deviceName;
+}
+
+void TDEGenericDevice::internalSetName(TQString dn) {
+ m_deviceName = dn;
+}
+
+TQString TDEGenericDevice::vendorName() {
+ return m_vendorName;
+}
+
+void TDEGenericDevice::internalSetVendorName(TQString vn) {
+ m_vendorName = vn;
+}
+
+TQString TDEGenericDevice::vendorModel() {
+ return m_vendorModel;
+}
+
+void TDEGenericDevice::internalSetVendorModel(TQString vm) {
+ m_vendorModel = vm;
+}
+
+TQString TDEGenericDevice::serialNumber() {
+ return m_serialNumber;
+}
+
+void TDEGenericDevice::internalSetSerialNumber(TQString sn) {
+ m_serialNumber = sn;
+}
+
+TQString TDEGenericDevice::systemPath() {
+ if (!m_systemPath.endsWith("/")) {
+ m_systemPath += "/";
+ }
+ return m_systemPath;
+}
+
+void TDEGenericDevice::internalSetSystemPath(TQString sp) {
+ m_systemPath = sp;
+}
+
+TQString TDEGenericDevice::deviceNode() {
+ return m_deviceNode;
+}
+
+void TDEGenericDevice::internalSetDeviceNode(TQString sn) {
+ m_deviceNode = sn;
+}
+
+TQString TDEGenericDevice::deviceBus() {
+ return m_deviceBus;
+}
+
+void TDEGenericDevice::internalSetDeviceBus(TQString db) {
+ m_deviceBus = db;
+}
+
+TQString TDEGenericDevice::uniqueID() {
+ m_uniqueID = m_systemPath+m_deviceNode;
+ return m_uniqueID;
+}
+
+TQString TDEGenericDevice::vendorID() {
+ return m_vendorID;
+}
+
+void TDEGenericDevice::internalSetVendorID(TQString id) {
+ m_vendorID = id;
+ m_vendorID.replace("0x", "");
+}
+
+TQString TDEGenericDevice::modelID() {
+ return m_modelID;
+}
+
+void TDEGenericDevice::internalSetModelID(TQString id) {
+ m_modelID = id;
+ m_modelID.replace("0x", "");
+}
+
+TQString TDEGenericDevice::vendorEncoded() {
+ return m_vendorenc;
+}
+
+void TDEGenericDevice::internalSetVendorEncoded(TQString id) {
+ m_vendorenc = id;
+}
+
+TQString TDEGenericDevice::modelEncoded() {
+ return m_modelenc;
+}
+
+void TDEGenericDevice::internalSetModelEncoded(TQString id) {
+ m_modelenc = id;
+}
+
+TQString TDEGenericDevice::subVendorID() {
+ return m_subvendorID;
+}
+
+void TDEGenericDevice::internalSetSubVendorID(TQString id) {
+ m_subvendorID = id;
+ m_subvendorID.replace("0x", "");
+}
+
+TQString TDEGenericDevice::PCIClass() {
+ return m_pciClass;
+}
+
+void TDEGenericDevice::internalSetPCIClass(TQString cl) {
+ m_pciClass = cl;
+ m_pciClass.replace("0x", "");
+}
+
+TQString TDEGenericDevice::moduleAlias() {
+ return m_modAlias;
+}
+
+void TDEGenericDevice::internalSetModuleAlias(TQString ma) {
+ m_modAlias = ma;
+}
+
+TQString TDEGenericDevice::deviceDriver() {
+ return m_deviceDriver;
+}
+
+void TDEGenericDevice::internalSetDeviceDriver(TQString dr) {
+ m_deviceDriver = dr;
+}
+
+TQString TDEGenericDevice::subsystem() {
+ return m_subsystem;
+}
+
+void TDEGenericDevice::internalSetSubsystem(TQString ss) {
+ m_subsystem = ss;
+}
+
+TQString TDEGenericDevice::subModelID() {
+ return m_submodelID;
+}
+
+void TDEGenericDevice::internalSetSubModelID(TQString id) {
+ m_submodelID = id;
+ m_submodelID.replace("0x", "");
+}
+
+void TDEGenericDevice::internalSetParentDevice(TDEGenericDevice* pd) {
+ m_parentDevice = pd;
+}
+
+TDEGenericDevice* TDEGenericDevice::parentDevice() {
+ return m_parentDevice;
+}
+
+TQPixmap TDEGenericDevice::icon(TDEIcon::StdSizes size) {
+ return TDEGlobal::hardwareDevices()->getDeviceTypeIconFromType(type(), size);
+}
+
+bool TDEGenericDevice::blacklistedForUpdate() {
+ return m_blacklistedForUpdate;
+}
+
+void TDEGenericDevice::internalSetBlacklistedForUpdate(bool bl) {
+ m_blacklistedForUpdate = bl;
+}
+
+TQString TDEGenericDevice::friendlyDeviceType() {
+ return TDEGlobal::hardwareDevices()->getFriendlyDeviceTypeStringFromType(type());
+}
+
+TQString TDEGenericDevice::busID() {
+ TQString busid = m_systemPath;
+ busid = busid.remove(0, busid.findRev("/")+1);
+ busid = busid.remove(0, busid.find(":")+1);
+ return busid;
+}
+
+TQString TDEGenericDevice::friendlyName() {
+ if (m_friendlyName.isNull()) {
+ if (type() == TDEGenericDeviceType::RootSystem) {
+ m_friendlyName = "Linux System";
+ }
+ else if (type() == TDEGenericDeviceType::Root) {
+ TQString friendlyDriverName = systemPath();
+ friendlyDriverName.truncate(friendlyDriverName.length()-1);
+ friendlyDriverName.remove(0, friendlyDriverName.findRev("/")+1);
+ m_friendlyName = friendlyDriverName;
+ }
+ else if (m_modAlias.lower().startsWith("pci")) {
+ m_friendlyName = TDEGlobal::hardwareDevices()->findPCIDeviceName(m_vendorID, m_modelID, m_subvendorID, m_submodelID);
+ }
+ else if (m_modAlias.lower().startsWith("usb")) {
+ m_friendlyName = TDEGlobal::hardwareDevices()->findUSBDeviceName(m_vendorID, m_modelID, m_subvendorID, m_submodelID);
+ }
+ else {
+ TQString acpigentype = systemPath();
+ acpigentype.truncate(acpigentype.length()-1);
+ acpigentype.remove(0, acpigentype.findRev("/")+1);
+ TQString pnpgentype = acpigentype;
+ pnpgentype.truncate(pnpgentype.find(":"));
+ if (pnpgentype.startsWith("PNP")) {
+ m_friendlyName = TDEGlobal::hardwareDevices()->findPNPDeviceName(pnpgentype);
+ }
+ else if (acpigentype.startsWith("device:")) {
+ acpigentype.remove(0, acpigentype.findRev(":")+1);
+ acpigentype.prepend("0x");
+ m_friendlyName = i18n("ACPI Node %1").arg(acpigentype.toUInt(0,0));
+ }
+ }
+ }
+
+ if (m_friendlyName.isNull()) {
+ // Could not identify based on model/vendor codes
+ // Try to construct something from the model/vendor strings if they are available
+ if (!m_vendorName.isNull() && !m_vendorModel.isNull()) {
+ m_friendlyName = m_vendorName + " " + m_vendorModel;
+ }
+ }
+
+ if (m_friendlyName.isNull()) {
+ // Could not identify based on model/vendor
+ // Guess by type
+ if (type() == TDEGenericDeviceType::CPU) {
+ m_friendlyName = name();
+ }
+ else if (type() == TDEGenericDeviceType::Event) {
+ // Use parent node name
+ if (m_parentDevice) {
+ return m_parentDevice->friendlyName();
+ }
+ else {
+ m_friendlyName = i18n("Generic Event Device");
+ }
+ }
+ else if (type() == TDEGenericDeviceType::Input) {
+ // Use parent node name
+ if (m_parentDevice) {
+ return m_parentDevice->friendlyName();
+ }
+ else {
+ m_friendlyName = i18n("Generic Input Device");
+ }
+ }
+ // Guess by driver
+ else if (!m_deviceDriver.isNull()) {
+ TQString friendlyDriverName = m_deviceDriver.lower();
+ friendlyDriverName[0] = friendlyDriverName[0].upper();
+ m_friendlyName = i18n("Generic %1 Device").arg(friendlyDriverName);
+ }
+ else if (m_systemPath.lower().startsWith("/sys/devices/virtual")) {
+ TQString friendlyDriverName = systemPath();
+ friendlyDriverName.truncate(friendlyDriverName.length()-1);
+ friendlyDriverName.remove(0, friendlyDriverName.findRev("/")+1);
+ if (!friendlyDriverName.isNull()) {
+ m_friendlyName = i18n("Virtual Device %1").arg(friendlyDriverName);
+ }
+ else {
+ m_friendlyName = i18n("Unknown Virtual Device");
+ }
+ }
+ else {
+ // I really have no idea what this peripheral is; say so!
+ m_friendlyName = i18n("Unknown Device") + " " + name();
+ }
+ }
+
+ return m_friendlyName;
+}
+
+#include "tdegenericdevice.moc"
diff --git a/tdecore/tdehw/tdegenericdevice.h b/tdecore/tdehw/tdegenericdevice.h
new file mode 100644
index 000000000..f2abd5582
--- /dev/null
+++ b/tdecore/tdehw/tdegenericdevice.h
@@ -0,0 +1,334 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDEGENERICDEVICE_H
+#define _TDEGENERICDEVICE_H
+
+#include <tqobject.h>
+#include <tqstring.h>
+
+#include "tdelibs_export.h"
+#include "kicontheme.h"
+
+#include "tdehwcommontypes.h"
+
+class TDECORE_EXPORT TDEGenericDevice : public TQObject
+{
+ Q_OBJECT
+
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDEGenericDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDEGenericDevice();
+
+ /**
+ * @return a TDEGenericDeviceType::TDEGenericDeviceType specifying the device type
+ */
+ TDEGenericDeviceType::TDEGenericDeviceType type();
+
+ /**
+ * @return a TQString with the device name, if any
+ */
+ TQString name();
+
+ /**
+ * @return a TQString with the vendor name, if any
+ */
+ TQString vendorName();
+
+ /**
+ * @return a TQString with the vendor model, if any
+ */
+ TQString vendorModel();
+
+ /**
+ * @return a TQString with the serial number, if any
+ */
+ TQString serialNumber();
+
+ /**
+ * @return a TQString with a friendly name
+ *
+ * While TDE tries very hard to generate and return a friendly name for this device,
+ * sometimes the best it will be able to do is "Unknown Device [xxxx:yyyy]"
+ */
+ virtual TQString friendlyName();
+
+ /**
+ * @return a TQString with the device bus name, if any
+ */
+ TQString deviceBus();
+
+ /**
+ * @return a TQString with the system path, if any
+ *
+ * This method is non-portable, so be careful!
+ */
+ TQString systemPath();
+
+ /**
+ * @return a TQString with the system device node, if any
+ *
+ * This method is non-portable, so be careful!
+ */
+ TQString deviceNode();
+
+ /**
+ * @return true if this device has been blacklisted for update actions
+ */
+ bool blacklistedForUpdate();
+
+ /**
+ * @return a TQString containing a unique identifier for this device
+ */
+ TQString uniqueID();
+
+ /**
+ * @return a TQString with the vendor ID, if any
+ */
+ TQString vendorID();
+
+ /**
+ * @return a TQString with the model ID, if any
+ */
+ TQString modelID();
+
+ /**
+ * @return a TQString with the encoded vendor, if any
+ */
+ TQString vendorEncoded();
+
+ /**
+ * @return a TQString with the encoded model, if any
+ */
+ TQString modelEncoded();
+
+ /**
+ * @return a TQString with the subvendor ID, if any
+ */
+ TQString subVendorID();
+
+ /**
+ * @return a TQString with the submodel ID, if any
+ */
+ TQString subModelID();
+
+ /**
+ * @return a TQString with the PCI device class, if any
+ */
+ TQString PCIClass();
+
+ /**
+ * @return a TQString with the module alias string, if any
+ */
+ TQString moduleAlias();
+
+ /**
+ * @return a TQString with the device driver, if any
+ */
+ TQString deviceDriver();
+
+ /**
+ * @return a TQString with the subsystem type, if any
+ */
+ TQString subsystem();
+
+ /**
+ * @return a TDEGenericDevice* with the parent device, if any
+ */
+ TDEGenericDevice* parentDevice();
+
+ /**
+ * @return a TQString containing the friendly type name
+ */
+ virtual TQString friendlyDeviceType();
+
+ /**
+ * @return a TQString containing the device bus ID, if any
+ */
+ TQString busID();
+
+ /**
+ * Get an icon for this device
+ * @param size a TDEIcon::StdSizes structure specifying the desired icon size
+ * @return a TQPixmap containing the icon for the specified type
+ */
+ virtual TQPixmap icon(TDEIcon::StdSizes size);
+
+ protected:
+ /**
+ * @param a TQString with the device name, if any
+ * @internal
+ */
+ void internalSetName(TQString dn);
+
+ /**
+ * @param a TQString with the vendor name, if any
+ * @internal
+ */
+ void internalSetVendorName(TQString vn);
+
+ /**
+ * @param a TQString with the vendor model, if any
+ * @internal
+ */
+ void internalSetVendorModel(TQString vm);
+
+ /**
+ * @param a TQString with the serial number, if any
+ * @internal
+ */
+ void internalSetSerialNumber(TQString sn);
+
+ /**
+ * @param a TQString with the device bus name, if any
+ * @internal
+ */
+ void internalSetDeviceBus(TQString db);
+
+ /**
+ * @param a TQString with the system path, if any
+ * @internal
+ *
+ * This method is non-portable, so be careful!
+ */
+ void internalSetSystemPath(TQString sp);
+
+ /**
+ * @param a TQString with the system device node, if any
+ * @internal
+ *
+ * This method is non-portable, so be careful!
+ */
+ void internalSetDeviceNode(TQString sn);
+
+ /**
+ * @param bl true if this device has been blacklisted for update actions
+ * @internal
+ */
+ void internalSetBlacklistedForUpdate(bool bl);
+
+ /**
+ * @param a TQString with the vendor ID, if any
+ * @internal
+ */
+ void internalSetVendorID(TQString id);
+
+ /**
+ * @param a TQString with the model ID, if any
+ * @internal
+ */
+ void internalSetModelID(TQString id);
+
+ /**
+ * @param a TQString with the encoded vendor, if any
+ * @internal
+ */
+ void internalSetVendorEncoded(TQString id);
+
+ /**
+ * @param a TQString with the encoded model, if any
+ * @internal
+ */
+ void internalSetModelEncoded(TQString id);
+
+ /**
+ * @param a TQString with the subvendor ID, if any
+ * @internal
+ */
+ void internalSetSubVendorID(TQString id);
+
+ /**
+ * @param a TQString with the submodel ID, if any
+ * @internal
+ */
+ void internalSetSubModelID(TQString id);
+
+ /**
+ * @param a TQString with the PCI device class, if any
+ * @internal
+ */
+ void internalSetPCIClass(TQString cl);
+
+ /**
+ * @param a TQString with the module alias string, if any
+ * @internal
+ */
+ void internalSetModuleAlias(TQString ma);
+
+ /**
+ * @param a TQString with the device driver, if any
+ * @internal
+ */
+ void internalSetDeviceDriver(TQString dr);
+
+ /**
+ * @param a TQString with the subsystem type, if any
+ * @internal
+ */
+ void internalSetSubsystem(TQString ss);
+
+ /**
+ * @param a TDEGenericDevice* with the parent device, if any
+ * @internal
+ */
+ void internalSetParentDevice(TDEGenericDevice* pd);
+
+ private:
+ TDEGenericDeviceType::TDEGenericDeviceType m_deviceType;
+ TQString m_deviceName;
+ TQString m_systemPath;
+ TQString m_deviceNode;
+ TQString m_vendorName;
+ TQString m_vendorModel;
+ TQString m_serialNumber;
+ TQString m_deviceBus;
+ TQString m_uniqueID;
+ TQString m_vendorID;
+ TQString m_modelID;
+ TQString m_vendorenc;
+ TQString m_modelenc;
+ TQString m_subvendorID;
+ TQString m_submodelID;
+ TQString m_pciClass;
+ TQString m_modAlias;
+ TQString m_deviceDriver;
+ TQString m_subsystem;
+ TQString m_friendlyName;
+ bool m_blacklistedForUpdate;
+ TDEGenericDevice* m_parentDevice;
+
+ // Internal use only!
+ TQStringList m_externalSubtype;
+ TQString m_externalRulesFile;
+ TQString m_udevtype;
+ TQString m_udevdevicetypestring;
+ TQString udevdevicetypestring_alt;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDEGENERICDEVICE_H
diff --git a/tdecore/tdehardwaredevices.cpp b/tdecore/tdehw/tdehardwaredevices.cpp
index 7fa9f3ad8..b82977d96 100644
--- a/tdecore/tdehardwaredevices.cpp
+++ b/tdecore/tdehw/tdehardwaredevices.cpp
@@ -16,33 +16,33 @@
Boston, MA 02110-1301, USA.
*/
-#include <tdehardwaredevices.h>
+#include "tdehardwaredevices.h"
#include <tqfile.h>
#include <tqdir.h>
-#include <tqstringlist.h>
+#include <tqtimer.h>
#include <tqsocketnotifier.h>
+#include <tqstringlist.h>
-#include <tdeglobal.h>
-#include <tdelocale.h>
#include <tdeconfig.h>
-#include <tdetempfile.h>
-#include <ksimpledirwatch.h>
#include <kstandarddirs.h>
+#include <tdeglobal.h>
+#include <tdelocale.h>
+
#include <tdeapplication.h>
#include <dcopclient.h>
-extern "C" {
#include <libudev.h>
-}
+#include <stdlib.h>
+#include <unistd.h>
#include <fcntl.h>
-#include <poll.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <linux/fs.h>
-#include <linux/cdrom.h>
+
+// Network devices
+#include <sys/types.h>
+#include <ifaddrs.h>
+#include <netdb.h>
// Backlight devices
#include <linux/fb.h>
@@ -50,42 +50,24 @@ extern "C" {
// Input devices
#include <linux/input.h>
-// Network devices
-#include <sys/types.h>
-#include <ifaddrs.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <netdb.h>
-
-// Network connection manager
-#include "tdenetworkconnections.h"
+#include "kiconloader.h"
+
+#include "tdegenericdevice.h"
+#include "tdestoragedevice.h"
+#include "tdecpudevice.h"
+#include "tdebatterydevice.h"
+#include "tdemainspowerdevice.h"
+#include "tdenetworkdevice.h"
+#include "tdebacklightdevice.h"
+#include "tdemonitordevice.h"
+#include "tdesensordevice.h"
+#include "tderootsystemdevice.h"
+#include "tdeeventdevice.h"
+#include "tdeinputdevice.h"
// Compile-time configuration
#include "config.h"
-#ifdef WITH_NETWORK_MANAGER_BACKEND
- #include "networkbackends/network-manager/network-manager.h"
-#endif // WITH_NETWORK_MANAGER_BACKEND
-
-// uPower and uDisks2 integration
-#if defined(WITH_UPOWER) || defined(WITH_UDISKS) || defined(WITH_UDISKS2) || defined(WITH_CONSOLEKIT)
- #include <tqdbusdata.h>
- #include <tqdbusmessage.h>
- #include <tqdbusproxy.h>
- #include <tqdbusvariant.h>
- #include <tqdbusconnection.h>
-#endif // defined(WITH_UPOWER) || defined(WITH_UDISKS) || defined(WITH_UDISKS2)
-#if defined(WITH_UDISKS) || defined(WITH_UDISKS2)
- #include <tqdbuserror.h>
- #include <tqdbusdatamap.h>
- #include <tqdbusobjectpath.h>
-#endif // defined(WITH_UDISKS) || defined(WITH_UDISKS2)
-#if defined(WITH_UDISKS)
- #include "tqdbusdatalist.h"
-#endif // ddefined(WITH_UDISKS)
-
// BEGIN BLOCK
// Copied from include/linux/genhd.h
#define GENHD_FL_REMOVABLE 1
@@ -115,2199 +97,6 @@ unsigned int reverse_bits(register unsigned int x)
#define BIT_IS_SET(bits, n) (bits[n >> 3] & (1 << (n & 0x7)))
-TDESensorCluster::TDESensorCluster() {
- label = TQString::null;
- current = -1;
- minimum = -1;
- maximum = -1;
- warning = -1;
- critical = -1;
-}
-
-TDEGenericDevice::TDEGenericDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TQObject() {
- m_deviceType = dt;
- m_deviceName = dn;
-
- m_parentDevice = 0;
- m_friendlyName = TQString::null;
- m_blacklistedForUpdate = false;
-}
-
-TDEGenericDevice::~TDEGenericDevice() {
-}
-
-TDEGenericDeviceType::TDEGenericDeviceType TDEGenericDevice::type() {
- return m_deviceType;
-}
-
-TQString TDEGenericDevice::name() {
- return m_deviceName;
-}
-
-void TDEGenericDevice::internalSetName(TQString dn) {
- m_deviceName = dn;
-}
-
-TQString TDEGenericDevice::vendorName() {
- return m_vendorName;
-}
-
-void TDEGenericDevice::internalSetVendorName(TQString vn) {
- m_vendorName = vn;
-}
-
-TQString TDEGenericDevice::vendorModel() {
- return m_vendorModel;
-}
-
-void TDEGenericDevice::internalSetVendorModel(TQString vm) {
- m_vendorModel = vm;
-}
-
-TQString TDEGenericDevice::serialNumber() {
- return m_serialNumber;
-}
-
-void TDEGenericDevice::internalSetSerialNumber(TQString sn) {
- m_serialNumber = sn;
-}
-
-TQString TDEGenericDevice::systemPath() {
- if (!m_systemPath.endsWith("/")) {
- m_systemPath += "/";
- }
- return m_systemPath;
-}
-
-void TDEGenericDevice::internalSetSystemPath(TQString sp) {
- m_systemPath = sp;
-}
-
-TQString TDEGenericDevice::deviceNode() {
- return m_deviceNode;
-}
-
-void TDEGenericDevice::internalSetDeviceNode(TQString sn) {
- m_deviceNode = sn;
-}
-
-TQString TDEGenericDevice::deviceBus() {
- return m_deviceBus;
-}
-
-void TDEGenericDevice::internalSetDeviceBus(TQString db) {
- m_deviceBus = db;
-}
-
-TQString TDEGenericDevice::uniqueID() {
- m_uniqueID = m_systemPath+m_deviceNode;
- return m_uniqueID;
-}
-
-TQString TDEGenericDevice::vendorID() {
- return m_vendorID;
-}
-
-void TDEGenericDevice::internalSetVendorID(TQString id) {
- m_vendorID = id;
- m_vendorID.replace("0x", "");
-}
-
-TQString TDEGenericDevice::modelID() {
- return m_modelID;
-}
-
-void TDEGenericDevice::internalSetModelID(TQString id) {
- m_modelID = id;
- m_modelID.replace("0x", "");
-}
-
-TQString TDEGenericDevice::vendorEncoded() {
- return m_vendorenc;
-}
-
-void TDEGenericDevice::internalSetVendorEncoded(TQString id) {
- m_vendorenc = id;
-}
-
-TQString TDEGenericDevice::modelEncoded() {
- return m_modelenc;
-}
-
-void TDEGenericDevice::internalSetModelEncoded(TQString id) {
- m_modelenc = id;
-}
-
-TQString TDEGenericDevice::subVendorID() {
- return m_subvendorID;
-}
-
-void TDEGenericDevice::internalSetSubVendorID(TQString id) {
- m_subvendorID = id;
- m_subvendorID.replace("0x", "");
-}
-
-TQString TDEGenericDevice::PCIClass() {
- return m_pciClass;
-}
-
-void TDEGenericDevice::internalSetPCIClass(TQString cl) {
- m_pciClass = cl;
- m_pciClass.replace("0x", "");
-}
-
-TQString TDEGenericDevice::moduleAlias() {
- return m_modAlias;
-}
-
-void TDEGenericDevice::internalSetModuleAlias(TQString ma) {
- m_modAlias = ma;
-}
-
-TQString TDEGenericDevice::deviceDriver() {
- return m_deviceDriver;
-}
-
-void TDEGenericDevice::internalSetDeviceDriver(TQString dr) {
- m_deviceDriver = dr;
-}
-
-TQString TDEGenericDevice::subsystem() {
- return m_subsystem;
-}
-
-void TDEGenericDevice::internalSetSubsystem(TQString ss) {
- m_subsystem = ss;
-}
-
-TQString TDEGenericDevice::subModelID() {
- return m_submodelID;
-}
-
-void TDEGenericDevice::internalSetSubModelID(TQString id) {
- m_submodelID = id;
- m_submodelID.replace("0x", "");
-}
-
-void TDEGenericDevice::internalSetParentDevice(TDEGenericDevice* pd) {
- m_parentDevice = pd;
-}
-
-TDEGenericDevice* TDEGenericDevice::parentDevice() {
- return m_parentDevice;
-}
-
-TQPixmap TDEGenericDevice::icon(TDEIcon::StdSizes size) {
- return TDEGlobal::hardwareDevices()->getDeviceTypeIconFromType(type(), size);
-}
-
-bool TDEGenericDevice::blacklistedForUpdate() {
- return m_blacklistedForUpdate;
-}
-
-void TDEGenericDevice::internalSetBlacklistedForUpdate(bool bl) {
- m_blacklistedForUpdate = bl;
-}
-
-TQString TDEGenericDevice::friendlyDeviceType() {
- return TDEGlobal::hardwareDevices()->getFriendlyDeviceTypeStringFromType(type());
-}
-
-TQString TDEGenericDevice::busID() {
- TQString busid = m_systemPath;
- busid = busid.remove(0, busid.findRev("/")+1);
- busid = busid.remove(0, busid.find(":")+1);
- return busid;
-}
-
-TQString TDEGenericDevice::friendlyName() {
- if (m_friendlyName.isNull()) {
- if (type() == TDEGenericDeviceType::RootSystem) {
- m_friendlyName = "Linux System";
- }
- else if (type() == TDEGenericDeviceType::Root) {
- TQString friendlyDriverName = systemPath();
- friendlyDriverName.truncate(friendlyDriverName.length()-1);
- friendlyDriverName.remove(0, friendlyDriverName.findRev("/")+1);
- m_friendlyName = friendlyDriverName;
- }
- else if (m_modAlias.lower().startsWith("pci")) {
- m_friendlyName = TDEGlobal::hardwareDevices()->findPCIDeviceName(m_vendorID, m_modelID, m_subvendorID, m_submodelID);
- }
- else if (m_modAlias.lower().startsWith("usb")) {
- m_friendlyName = TDEGlobal::hardwareDevices()->findUSBDeviceName(m_vendorID, m_modelID, m_subvendorID, m_submodelID);
- }
- else {
- TQString acpigentype = systemPath();
- acpigentype.truncate(acpigentype.length()-1);
- acpigentype.remove(0, acpigentype.findRev("/")+1);
- TQString pnpgentype = acpigentype;
- pnpgentype.truncate(pnpgentype.find(":"));
- if (pnpgentype.startsWith("PNP")) {
- m_friendlyName = TDEGlobal::hardwareDevices()->findPNPDeviceName(pnpgentype);
- }
- else if (acpigentype.startsWith("device:")) {
- acpigentype.remove(0, acpigentype.findRev(":")+1);
- acpigentype.prepend("0x");
- m_friendlyName = i18n("ACPI Node %1").arg(acpigentype.toUInt(0,0));
- }
- }
- }
-
- if (m_friendlyName.isNull()) {
- // Could not identify based on model/vendor codes
- // Try to construct something from the model/vendor strings if they are available
- if (!m_vendorName.isNull() && !m_vendorModel.isNull()) {
- m_friendlyName = m_vendorName + " " + m_vendorModel;
- }
- }
-
- if (m_friendlyName.isNull()) {
- // Could not identify based on model/vendor
- // Guess by type
- if (type() == TDEGenericDeviceType::CPU) {
- m_friendlyName = name();
- }
- else if (type() == TDEGenericDeviceType::Event) {
- // Use parent node name
- if (m_parentDevice) {
- return m_parentDevice->friendlyName();
- }
- else {
- m_friendlyName = i18n("Generic Event Device");
- }
- }
- else if (type() == TDEGenericDeviceType::Input) {
- // Use parent node name
- if (m_parentDevice) {
- return m_parentDevice->friendlyName();
- }
- else {
- m_friendlyName = i18n("Generic Input Device");
- }
- }
- // Guess by driver
- else if (!m_deviceDriver.isNull()) {
- TQString friendlyDriverName = m_deviceDriver.lower();
- friendlyDriverName[0] = friendlyDriverName[0].upper();
- m_friendlyName = i18n("Generic %1 Device").arg(friendlyDriverName);
- }
- else if (m_systemPath.lower().startsWith("/sys/devices/virtual")) {
- TQString friendlyDriverName = systemPath();
- friendlyDriverName.truncate(friendlyDriverName.length()-1);
- friendlyDriverName.remove(0, friendlyDriverName.findRev("/")+1);
- if (!friendlyDriverName.isNull()) {
- m_friendlyName = i18n("Virtual Device %1").arg(friendlyDriverName);
- }
- else {
- m_friendlyName = i18n("Unknown Virtual Device");
- }
- }
- else {
- // I really have no idea what this peripheral is; say so!
- m_friendlyName = i18n("Unknown Device") + " " + name();
- }
- }
-
- return m_friendlyName;
-}
-
-TDEStorageDevice::TDEStorageDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn), m_mediaInserted(true) {
- m_diskType = TDEDiskDeviceType::Null;
- m_diskStatus = TDEDiskDeviceStatus::Null;
-}
-
-TDEStorageDevice::~TDEStorageDevice() {
-}
-
-TDEDiskDeviceType::TDEDiskDeviceType TDEStorageDevice::diskType() {
- return m_diskType;
-}
-
-void TDEStorageDevice::internalSetDiskType(TDEDiskDeviceType::TDEDiskDeviceType dt) {
- m_diskType = dt;
-}
-
-bool TDEStorageDevice::isDiskOfType(TDEDiskDeviceType::TDEDiskDeviceType tf) {
- return ((m_diskType&tf)!=TDEDiskDeviceType::Null);
-}
-
-TDEDiskDeviceStatus::TDEDiskDeviceStatus TDEStorageDevice::diskStatus() {
- return m_diskStatus;
-}
-
-void TDEStorageDevice::internalSetDiskStatus(TDEDiskDeviceStatus::TDEDiskDeviceStatus st) {
- m_diskStatus = st;
-}
-
-bool TDEStorageDevice::checkDiskStatus(TDEDiskDeviceStatus::TDEDiskDeviceStatus sf) {
- return ((m_diskStatus&sf)!=(TDEDiskDeviceStatus::TDEDiskDeviceStatus)0);
-}
-
-bool TDEStorageDevice::lockDriveMedia(bool lock) {
- int fd = open(deviceNode().ascii(), O_RDWR | O_NONBLOCK);
- if (fd < 0) {
- return false;
- }
- if (ioctl(fd, CDROM_LOCKDOOR, (lock)?1:0) != 0) {
- close(fd);
- return false;
- }
- else {
- close(fd);
- return true;
- }
-}
-
-bool ejectDriveUDisks(TDEStorageDevice* sdevice) {
-#ifdef WITH_UDISKS
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQString blockDeviceString = sdevice->deviceNode();
- blockDeviceString.replace("/dev/", "");
- blockDeviceString = "/org/freedesktop/UDisks/devices/" + blockDeviceString;
-
- // Eject the drive!
- TQT_DBusError error;
- TQT_DBusProxy driveControl("org.freedesktop.UDisks", blockDeviceString, "org.freedesktop.UDisks.Device", dbusConn);
- if (driveControl.canSend()) {
- TQValueList<TQT_DBusData> params;
- TQT_DBusDataList options;
- params << TQT_DBusData::fromList(options);
- TQT_DBusMessage reply = driveControl.sendWithReply("DriveEject", params, &error);
- if (error.isValid()) {
- // Error!
- printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
- return FALSE;
- }
- else {
- return TRUE;
- }
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
-#else // WITH_UDISKS
- return FALSE;
-#endif // WITH_UDISKS
-}
-
-bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
-#ifdef WITH_UDISKS2
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQString blockDeviceString = sdevice->deviceNode();
- blockDeviceString.replace("/dev/", "");
- blockDeviceString = "/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
- TQT_DBusProxy hardwareControl("org.freedesktop.UDisks2", blockDeviceString, "org.freedesktop.DBus.Properties", dbusConn);
- if (hardwareControl.canSend()) {
- // get associated udisks2 drive path
- TQT_DBusError error;
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromString("org.freedesktop.UDisks2.Block") << TQT_DBusData::fromString("Drive");
- TQT_DBusMessage reply = hardwareControl.sendWithReply("Get", params, &error);
- if (error.isValid()) {
- // Error!
- printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
- return FALSE;
- }
- else {
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
- TQT_DBusObjectPath driveObjectPath = reply[0].toVariant().value.toObjectPath();
- if (!driveObjectPath.isValid()) {
- return FALSE;
- }
-
- error = TQT_DBusError();
- TQT_DBusProxy driveInformation("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.DBus.Properties", dbusConn);
- // can eject?
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromString("org.freedesktop.UDisks2.Drive") << TQT_DBusData::fromString("Ejectable");
- TQT_DBusMessage reply = driveInformation.sendWithReply("Get", params, &error);
- if (error.isValid()) {
- // Error!
- printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
- return FALSE;
- }
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
- bool ejectable = reply[0].toVariant().value.toBool();
- if (!ejectable) {
- return FALSE;
- }
-
- // Eject the drive!
- TQT_DBusProxy driveControl("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.UDisks2.Drive", dbusConn);
- TQValueList<TQT_DBusData> params;
- TQT_DBusDataMap<TQString> options(TQT_DBusData::Variant);
- params << TQT_DBusData::fromStringKeyMap(options);
- TQT_DBusMessage reply = driveControl.sendWithReply("Eject", params, &error);
- if (error.isValid()) {
- // Error!
- printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
- return FALSE;
- }
- else {
- return TRUE;
- }
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
- }
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
-#else // WITH_UDISKS2
- return FALSE;
-#endif // WITH_UDISKS2
-}
-
-bool TDEStorageDevice::ejectDrive() {
- if (ejectDriveUDisks2(this)) {
- return TRUE;
- }
- else {
-#ifdef WITH_UDISKS2
- printf("[tdehwlib] Failed to eject drive '%s' via udisks2, falling back to alternate mechanism\n", deviceNode().ascii());
-#endif // WITH_UDISKS2
- if (ejectDriveUDisks(this)) {
- return TRUE;
- }
- else {
-#ifdef WITH_UDISKS
- printf("[tdehwlib] Failed to eject drive '%s' via udisks, falling back to alternate mechanism\n", deviceNode().ascii());
-#endif // WITH_UDISKS
- TQString command = TQString("eject -v '%1' 2>&1").arg(deviceNode());
-
- FILE *exepipe = popen(command.ascii(), "r");
- if (exepipe) {
- TQString pmount_output;
- char buffer[8092];
- pmount_output = fgets(buffer, sizeof(buffer), exepipe);
- int retcode = pclose(exepipe);
- if (retcode == 0) {
- return TRUE;
- }
- else {
- printf("[tdehwlib] Failed to eject drive '%s' via 'eject' command\n", deviceNode().ascii());
- return FALSE;
- }
- }
- else {
- printf("[tdehwlib] Failed to eject drive '%s' via 'eject' command\n", deviceNode().ascii());
- return FALSE;
- }
- }
- }
-}
-
-bool TDEStorageDevice::ejectDriveMedia() {
- int fd = open(deviceNode().ascii(), O_RDWR | O_NONBLOCK);
- if (fd < 0) {
- return false;
- }
- if (ioctl(fd, CDROMEJECT) != 0) {
- close(fd);
- return false;
- }
- else {
- close(fd);
- return true;
- }
-}
-
-TQString TDEStorageDevice::diskLabel() {
- return m_diskName;
-}
-
-void TDEStorageDevice::internalSetDiskLabel(TQString dn) {
- m_diskName = dn;
-}
-
-bool TDEStorageDevice::mediaInserted() {
- return m_mediaInserted;
-}
-
-void TDEStorageDevice::internalSetMediaInserted(bool inserted) {
- m_mediaInserted = inserted;
-}
-
-TQString TDEStorageDevice::fileSystemName() {
- return m_fileSystemName;
-}
-
-void TDEStorageDevice::internalSetFileSystemName(TQString fn) {
- m_fileSystemName = fn;
-}
-
-TQString TDEStorageDevice::fileSystemUsage() {
- return m_fileSystemUsage;
-}
-
-void TDEStorageDevice::internalSetFileSystemUsage(TQString fu) {
- m_fileSystemUsage = fu;
-}
-
-TQString TDEStorageDevice::diskUUID() {
- return m_diskUUID;
-}
-
-void TDEStorageDevice::internalSetDiskUUID(TQString id) {
- m_diskUUID = id;
-}
-
-TQStringList TDEStorageDevice::holdingDevices() {
- return m_holdingDevices;
-}
-
-void TDEStorageDevice::internalSetHoldingDevices(TQStringList hd) {
- m_holdingDevices = hd;
-}
-
-TQStringList TDEStorageDevice::slaveDevices() {
- return m_slaveDevices;
-}
-
-void TDEStorageDevice::internalSetSlaveDevices(TQStringList sd) {
- m_slaveDevices = sd;
-}
-
-TQString TDEStorageDevice::friendlyName() {
- // Return the actual storage device name
- TQString devicevendorid = vendorEncoded();
- TQString devicemodelid = modelEncoded();
-
- devicevendorid.replace("\\x20", " ");
- devicemodelid.replace("\\x20", " ");
-
- devicevendorid = devicevendorid.stripWhiteSpace();
- devicemodelid = devicemodelid.stripWhiteSpace();
- devicevendorid = devicevendorid.simplifyWhiteSpace();
- devicemodelid = devicemodelid.simplifyWhiteSpace();
-
- TQString devicename = devicevendorid + " " + devicemodelid;
-
- devicename = devicename.stripWhiteSpace();
- devicename = devicename.simplifyWhiteSpace();
-
- if (devicename != "") {
- return devicename;
- }
-
- if (isDiskOfType(TDEDiskDeviceType::Camera)) {
- return TDEGenericDevice::friendlyName();
- }
-
- if (isDiskOfType(TDEDiskDeviceType::Floppy)) {
- return friendlyDeviceType();
- }
-
- TQString label = diskLabel();
- if (label.isNull()) {
- if (deviceSize() > 0) {
- if (checkDiskStatus(TDEDiskDeviceStatus::Hotpluggable)) {
- label = i18n("%1 Removable Device").arg(deviceFriendlySize());
- }
- else {
- label = i18n("%1 Fixed Storage Device").arg(deviceFriendlySize());
- }
- }
- }
-
- if (!label.isNull()) {
- return label;
- }
-
- return friendlyDeviceType();
-}
-
-TQString TDEStorageDevice::friendlyDeviceType() {
- TQString ret = i18n("Hard Disk Drive");
-
- // Keep this in sync with TDEStorageDevice::icon(TDEIcon::StdSizes size) below
- if (isDiskOfType(TDEDiskDeviceType::Floppy)) {
- ret = i18n("Floppy Drive");
- }
- if (isDiskOfType(TDEDiskDeviceType::Optical)) {
- ret = i18n("Optical Drive");
- }
- if (isDiskOfType(TDEDiskDeviceType::CDROM)) {
- ret = i18n("CDROM Drive");
- }
- if (isDiskOfType(TDEDiskDeviceType::CDRW)) {
- ret = i18n("CDRW Drive");
- }
- if (isDiskOfType(TDEDiskDeviceType::DVDROM)) {
- ret = i18n("DVD Drive");
- }
- if (isDiskOfType(TDEDiskDeviceType::DVDRW)) {
- ret = i18n("DVDRW Drive");
- }
- if (isDiskOfType(TDEDiskDeviceType::DVDRAM)) {
- ret = i18n("DVDRAM Drive");
- }
- if (isDiskOfType(TDEDiskDeviceType::Zip)) {
- ret = i18n("Zip Drive");
- }
- if (isDiskOfType(TDEDiskDeviceType::Tape)) {
- ret = i18n("Tape Drive");
- }
- if (isDiskOfType(TDEDiskDeviceType::Camera)) {
- ret = i18n("Digital Camera");
- }
-
- if (isDiskOfType(TDEDiskDeviceType::HDD)) {
- ret = i18n("Hard Disk Drive");
- if (checkDiskStatus(TDEDiskDeviceStatus::Hotpluggable)) {
- ret = i18n("Removable Storage");
- }
- if (isDiskOfType(TDEDiskDeviceType::CompactFlash)) {
- ret = i18n("Compact Flash");
- }
- if (isDiskOfType(TDEDiskDeviceType::MemoryStick)) {
- ret = i18n("Memory Stick");
- }
- if (isDiskOfType(TDEDiskDeviceType::SmartMedia)) {
- ret = i18n("Smart Media");
- }
- if (isDiskOfType(TDEDiskDeviceType::SDMMC)) {
- ret = i18n("Secure Digital");
- }
- }
-
- if (isDiskOfType(TDEDiskDeviceType::RAM)) {
- ret = i18n("Random Access Memory");
- }
- if (isDiskOfType(TDEDiskDeviceType::Loop)) {
- ret = i18n("Loop Device");
- }
-
- return ret;
-}
-
-TQPixmap TDEStorageDevice::icon(TDEIcon::StdSizes size) {
- TQPixmap ret = DesktopIcon("hdd_unmount", size);
-
- if (isDiskOfType(TDEDiskDeviceType::Floppy)) {
- ret = DesktopIcon("3floppy_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::Optical)) {
- ret = DesktopIcon("cdrom_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::CDROM)) {
- ret = DesktopIcon("cdrom_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::CDRW)) {
- ret = DesktopIcon("cdwriter_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::DVDROM)) {
- ret = DesktopIcon("dvd_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::DVDRW)) {
- ret = DesktopIcon("dvd_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::DVDRAM)) {
- ret = DesktopIcon("dvd_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::Zip)) {
- ret = DesktopIcon("zip_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::Tape)) {
- ret = DesktopIcon("tape_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::Camera)) {
- ret = DesktopIcon("camera_unmount");
- }
-
- if (isDiskOfType(TDEDiskDeviceType::HDD)) {
- ret = DesktopIcon("hdd_unmount", size);
- if (checkDiskStatus(TDEDiskDeviceStatus::Hotpluggable)) {
- ret = DesktopIcon("usbpendrive_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::CompactFlash)) {
- ret = DesktopIcon("compact_flash_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::MemoryStick)) {
- ret = DesktopIcon("memory_stick_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::SmartMedia)) {
- ret = DesktopIcon("smart_media_unmount", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::SDMMC)) {
- ret = DesktopIcon("sd_mmc_unmount", size);
- }
- }
-
- if (isDiskOfType(TDEDiskDeviceType::RAM)) {
- ret = DesktopIcon("memory", size);
- }
- if (isDiskOfType(TDEDiskDeviceType::Loop)) {
- ret = DesktopIcon("blockdevice", size);
- }
-
- return ret;
-}
-
-unsigned long long TDEStorageDevice::deviceSize() {
- TQString bsnodename = systemPath();
- bsnodename.append("/queue/physical_block_size");
- TQFile bsfile( bsnodename );
- TQString blocksize;
- if ( bsfile.open( IO_ReadOnly ) ) {
- TQTextStream stream( &bsfile );
- blocksize = stream.readLine();
- bsfile.close();
- }
- else {
- // Drat, I can't get a guaranteed block size. Assume a block size of 512, as everything I have read indicates that /sys/block/<dev>/size is given in terms of a 512 byte block...
- blocksize = "512";
- }
-
- TQString dsnodename = systemPath();
- dsnodename.append("/size");
- TQFile dsfile( dsnodename );
- TQString devicesize;
- if ( dsfile.open( IO_ReadOnly ) ) {
- TQTextStream stream( &dsfile );
- devicesize = stream.readLine();
- dsfile.close();
- }
-
- return ((unsigned long long)blocksize.toULong()*(unsigned long long)devicesize.toULong());
-}
-
-TQString TDEStorageDevice::deviceFriendlySize() {
- return TDEHardwareDevices::bytesToFriendlySizeString(deviceSize());
-}
-
-TQString TDEStorageDevice::mountPath() {
- // See if this device node is mounted
- // This requires parsing /proc/mounts, looking for deviceNode()
-
- // The Device Mapper throws a monkey wrench into this
- // It likes to advertise mounts as /dev/mapper/<something>,
- // where <something> is listed in <system path>/dm/name
-
- // First, ensure that all device information (mainly holders/slaves) is accurate
- TDEGlobal::hardwareDevices()->rescanDeviceInformation(this);
-
- TQString dmnodename = systemPath();
- dmnodename.append("/dm/name");
- TQFile namefile( dmnodename );
- TQString dmaltname;
- if ( namefile.open( IO_ReadOnly ) ) {
- TQTextStream stream( &namefile );
- dmaltname = stream.readLine();
- namefile.close();
- }
- if (!dmaltname.isNull()) {
- dmaltname.prepend("/dev/mapper/");
- }
-
- TQStringList lines;
- TQFile file( "/proc/mounts" );
- if ( file.open( IO_ReadOnly ) ) {
- TQTextStream stream( &file );
- TQString line;
- while ( !stream.atEnd() ) {
- line = stream.readLine();
- TQStringList mountInfo = TQStringList::split(" ", line, true);
- TQString testNode = *mountInfo.at(0);
- // Check for match
- if ((testNode == deviceNode()) || (testNode == dmaltname) || (testNode == ("/dev/disk/by-uuid/" + diskUUID()))) {
- TQString ret = *mountInfo.at(1);
- ret.replace("\\040", " ");
- return ret;
- }
- lines += line;
- }
- file.close();
- }
-
- // While this device is not directly mounted, it could conceivably be mounted via the Device Mapper
- // If so, try to retrieve the mount path...
- TQStringList slaveDeviceList = holdingDevices();
- for ( TQStringList::Iterator slavedevit = slaveDeviceList.begin(); slavedevit != slaveDeviceList.end(); ++slavedevit ) {
- // Try to locate this device path in the TDE device tree
- TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
- TDEGenericDevice *hwdevice = hwdevices->findBySystemPath(*slavedevit);
- if ((hwdevice) && (hwdevice->type() == TDEGenericDeviceType::Disk)) {
- TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(hwdevice);
- return sdevice->mountPath();
- }
- }
-
- return TQString::null;
-}
-
-TQString TDEStorageDevice::mountDevice(TQString mediaName, TDEStorageMountOptions mountOptions, TQString* errRet, int* retcode) {
- int internal_retcode;
- if (!retcode) {
- retcode = &internal_retcode;
- }
-
- TQString ret = mountPath();
-
- if (!ret.isNull()) {
- return ret;
- }
-
- // Create dummy password file
- KTempFile passwordFile(TQString::null, "tmp", 0600);
- passwordFile.setAutoDelete(true);
-
- TQString optionString;
- if (mountOptions["ro"] == "true") {
- optionString.append(" -r");
- }
-
- if (mountOptions["atime"] != "true") {
- optionString.append(" -A");
- }
-
- if (mountOptions["utf8"] == "true") {
- optionString.append(" -c utf8");
- }
-
- if (mountOptions["sync"] == "true") {
- optionString.append(" -s");
- }
-
- if (mountOptions.contains("filesystem")) {
- optionString.append(TQString(" -t %1").arg(mountOptions["filesystem"]));
- }
-
- if (mountOptions.contains("locale")) {
- optionString.append(TQString(" -c %1").arg(mountOptions["locale"]));
- }
-
- TQString passFileName = passwordFile.name();
- TQString devNode = deviceNode();
- passFileName.replace("'", "'\\''");
- devNode.replace("'", "'\\''");
- mediaName.replace("'", "'\\''");
- TQString command = TQString("pmount -p '%1' %2 '%3' '%4' 2>&1").arg(passFileName).arg(optionString).arg(devNode).arg(mediaName);
-
- FILE *exepipe = popen(command.ascii(), "r");
- if (exepipe) {
- TQString pmount_output;
- char buffer[8092];
- pmount_output = fgets(buffer, sizeof(buffer), exepipe);
- *retcode = pclose(exepipe);
- if (errRet) {
- *errRet = pmount_output;
- }
- }
-
- // Update internal mount data
- TDEGlobal::hardwareDevices()->processModifiedMounts();
-
- ret = mountPath();
-
- return ret;
-}
-
-TQString TDEStorageDevice::mountEncryptedDevice(TQString passphrase, TQString mediaName, TDEStorageMountOptions mountOptions, TQString* errRet, int* retcode) {
- int internal_retcode;
- if (!retcode) {
- retcode = &internal_retcode;
- }
-
- TQString ret = mountPath();
-
- if (!ret.isNull()) {
- return ret;
- }
-
- // Create dummy password file
- KTempFile passwordFile(TQString::null, "tmp", 0600);
- passwordFile.setAutoDelete(true);
- TQFile* pwFile = passwordFile.file();
- if (!pwFile) {
- return TQString::null;
- }
-
- pwFile->writeBlock(passphrase.ascii(), passphrase.length());
- pwFile->flush();
-
- TQString optionString;
- if (mountOptions["ro"] == "true") {
- optionString.append(" -r");
- }
-
- if (mountOptions["atime"] != "true") {
- optionString.append(" -A");
- }
-
- if (mountOptions["utf8"] == "true") {
- optionString.append(" -c utf8");
- }
-
- if (mountOptions["sync"] == "true") {
- optionString.append(" -s");
- }
-
- if (mountOptions.contains("filesystem")) {
- optionString.append(TQString(" -t %1").arg(mountOptions["filesystem"]));
- }
-
- if (mountOptions.contains("locale")) {
- optionString.append(TQString(" -c %1").arg(mountOptions["locale"]));
- }
-
- TQString passFileName = passwordFile.name();
- TQString devNode = deviceNode();
- passFileName.replace("'", "'\\''");
- devNode.replace("'", "'\\''");
- mediaName.replace("'", "'\\''");
- TQString command = TQString("pmount -p '%1' %2 '%3' '%4' 2>&1").arg(passFileName).arg(optionString).arg(devNode).arg(mediaName);
-
- FILE *exepipe = popen(command.ascii(), "r");
- if (exepipe) {
- TQString pmount_output;
- char buffer[8092];
- pmount_output = fgets(buffer, sizeof(buffer), exepipe);
- *retcode = pclose(exepipe);
- if (errRet) {
- *errRet = pmount_output;
- }
- }
-
- // Update internal mount data
- TDEGlobal::hardwareDevices()->processModifiedMounts();
-
- ret = mountPath();
-
- return ret;
-}
-
-bool TDEStorageDevice::unmountDevice(TQString* errRet, int* retcode) {
- int internal_retcode;
- if (!retcode) {
- retcode = &internal_retcode;
- }
-
- TQString mountpoint = mountPath();
-
- if (mountpoint.isNull()) {
- return true;
- }
-
- mountpoint.replace("'", "'\\''");
- TQString command = TQString("pumount '%1' 2>&1").arg(mountpoint);
- FILE *exepipe = popen(command.ascii(), "r");
- if (exepipe) {
- TQString pmount_output;
- char buffer[8092];
- pmount_output = fgets(buffer, sizeof(buffer), exepipe);
- *retcode = pclose(exepipe);
- if (*retcode == 0) {
- return true;
- }
- else {
- if (errRet) {
- *errRet = pmount_output;
- }
- }
- }
-
- // Update internal mount data
- TDEGlobal::hardwareDevices()->processModifiedMounts();
-
- return false;
-}
-
-TDECPUDevice::TDECPUDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
- m_frequency = -1;
- m_minfrequency = -1;
- m_maxfrequency = -1;
- m_corenumber = -1;
- m_transitionlatency = -1;
-}
-
-TDECPUDevice::~TDECPUDevice() {
-}
-
-double TDECPUDevice::frequency() {
- return m_frequency;
-}
-
-void TDECPUDevice::internalSetFrequency(double fr) {
- m_frequency = fr;
-}
-
-double TDECPUDevice::minFrequency() {
- return m_minfrequency;
-}
-
-void TDECPUDevice::internalSetMinFrequency(double fr) {
- m_minfrequency = fr;
-}
-
-double TDECPUDevice::maxFrequency() {
- return m_maxfrequency;
-}
-
-void TDECPUDevice::internalSetMaxFrequency(double fr) {
- m_maxfrequency = fr;
-}
-
-double TDECPUDevice::transitionLatency() {
- return m_transitionlatency;
-}
-
-void TDECPUDevice::internalSetTransitionLatency(double tl) {
- m_transitionlatency = tl;
-}
-
-TQString TDECPUDevice::governor() {
- return m_governor;
-}
-
-void TDECPUDevice::internalSetGovernor(TQString gr) {
- m_governor = gr;
-}
-
-TQString TDECPUDevice::scalingDriver() {
- return m_scalingdriver;
-}
-
-void TDECPUDevice::internalSetScalingDriver(TQString dr) {
- m_scalingdriver = dr;
-}
-
-TQStringList TDECPUDevice::dependentProcessors() {
- return m_tiedprocs;
-}
-
-void TDECPUDevice::internalSetDependentProcessors(TQStringList dp) {
- m_tiedprocs = dp;
-}
-
-TQStringList TDECPUDevice::availableFrequencies() {
- return m_frequencies;
-}
-
-void TDECPUDevice::internalSetAvailableFrequencies(TQStringList af) {
- m_frequencies = af;
-}
-
-TQStringList TDECPUDevice::availableGovernors() {
- return m_governers;
-}
-
-void TDECPUDevice::internalSetAvailableGovernors(TQStringList gp) {
- m_governers = gp;
-}
-
-void TDECPUDevice::internalSetCoreNumber(int cn) {
- m_corenumber = cn;
-}
-
-bool TDECPUDevice::canSetGovernor() {
- TQString governornode = systemPath() + "/cpufreq/scaling_governor";
- int rval = access (governornode.ascii(), W_OK);
- if (rval == 0) {
- return TRUE;
- }
- else {
-#ifdef WITH_UPOWER
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.CPUGovernor", dbusConn);
- if (hardwareControl.canSend()) {
- // can set CPU governor?
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromInt32(coreNumber());
- TQT_DBusMessage reply = hardwareControl.sendWithReply("CanSetCPUGovernor", params);
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
- return reply[0].toVariant().value.toBool();
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
-#else // WITH_UPOWER
- return FALSE;
-#endif// WITH_UPOWER
- }
-}
-
-void TDECPUDevice::setGovernor(TQString gv) {
- TQString governornode = systemPath() + "/cpufreq/scaling_governor";
- TQFile file( governornode );
- if ( file.open( IO_WriteOnly ) ) {
- TQTextStream stream( &file );
- stream << gv.lower();
- file.close();
- }
-#ifdef WITH_UPOWER
- else {
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.CPUGovernor", dbusConn);
- if (hardwareControl.canSend()) {
- // set CPU governor
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromInt32(coreNumber()) << TQT_DBusData::fromString(gv.lower());
- hardwareControl.sendWithReply("SetCPUGovernor", params);
- }
- else {
- return;
- }
- }
- else {
- return;
- }
- }
-#endif // WITH_UPOWER
-
- // Force update of the device information object
- TDEGlobal::hardwareDevices()->processModifiedCPUs();
-}
-
-bool TDECPUDevice::canSetMaximumScalingFrequency() {
- TQString freqnode = systemPath() + "/cpufreq/scaling_max_freq";
- int rval = access (freqnode.ascii(), W_OK);
- if (rval == 0) {
- return TRUE;
- }
- else {
- return FALSE;
- }
-}
-
-void TDECPUDevice::setMaximumScalingFrequency(double fr) {
- TQString freqnode = systemPath() + "/cpufreq/scaling_max_freq";
- TQFile file( freqnode );
- if ( file.open( IO_WriteOnly ) ) {
- TQTextStream stream( &file );
- stream << TQString("%1").arg(fr*1000000.0, 0, 'f', 0);
- file.close();
- }
-
- // Force update of the device information object
- TDEGlobal::hardwareDevices()->processModifiedCPUs();
-}
-
-int TDECPUDevice::coreNumber() {
- return m_corenumber;
-}
-
-TDESensorDevice::TDESensorDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
-}
-
-TDESensorDevice::~TDESensorDevice() {
-}
-
-TDESensorClusterMap TDESensorDevice::values() {
- return m_sensorValues;
-}
-
-void TDESensorDevice::internalSetValues(TDESensorClusterMap cl) {
- m_sensorValues = cl;
-}
-
-TDERootSystemDevice::TDERootSystemDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
- m_hibernationSpace = -1;
-}
-
-TDERootSystemDevice::~TDERootSystemDevice() {
-}
-
-TDESystemFormFactor::TDESystemFormFactor TDERootSystemDevice::formFactor() {
- return m_formFactor;
-}
-
-void TDERootSystemDevice::internalSetFormFactor(TDESystemFormFactor::TDESystemFormFactor ff) {
- m_formFactor = ff;
-}
-
-TDESystemPowerStateList TDERootSystemDevice::powerStates() {
- return m_powerStates;
-}
-
-void TDERootSystemDevice::internalSetPowerStates(TDESystemPowerStateList ps) {
- m_powerStates = ps;
-}
-
-TDESystemHibernationMethodList TDERootSystemDevice::hibernationMethods() {
- return m_hibernationMethods;
-}
-
-void TDERootSystemDevice::internalSetHibernationMethods(TDESystemHibernationMethodList hm) {
- m_hibernationMethods = hm;
-}
-
-TDESystemHibernationMethod::TDESystemHibernationMethod TDERootSystemDevice::hibernationMethod() {
- return m_hibernationMethod;
-}
-
-void TDERootSystemDevice::internalSetHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm) {
- m_hibernationMethod = hm;
-}
-
-unsigned long TDERootSystemDevice::diskSpaceNeededForHibernation() {
- return m_hibernationSpace;
-}
-
-void TDERootSystemDevice::internalSetDiskSpaceNeededForHibernation(unsigned long sz) {
- m_hibernationSpace = sz;
-}
-
-bool TDERootSystemDevice::canSetHibernationMethod() {
- TQString hibernationnode = "/sys/power/disk";
- int rval = access (hibernationnode.ascii(), W_OK);
- if (rval == 0) {
- return TRUE;
- }
- else {
- return FALSE;
- }
-}
-
-bool TDERootSystemDevice::canStandby() {
- TQString statenode = "/sys/power/state";
- int rval = access (statenode.ascii(), W_OK);
- if (rval == 0) {
- if (powerStates().contains(TDESystemPowerState::Standby)) {
- return TRUE;
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
-}
-
-bool TDERootSystemDevice::canSuspend() {
- TQString statenode = "/sys/power/state";
- int rval = access (statenode.ascii(), W_OK);
- if (rval == 0) {
- if (powerStates().contains(TDESystemPowerState::Suspend)) {
- return TRUE;
- }
- else {
- return FALSE;
- }
- }
- else {
-#ifdef WITH_UPOWER
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQT_DBusProxy upowerProperties("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.DBus.Properties", dbusConn);
- if (upowerProperties.canSend()) {
- // can suspend?
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromString(upowerProperties.interface()) << TQT_DBusData::fromString("CanSuspend");
- TQT_DBusMessage reply = upowerProperties.sendWithReply("Get", params);
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
- return reply[0].toVariant().value.toBool();
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
-#else // WITH_UPOWER
- return FALSE;
-#endif// WITH_UPOWER
- }
-}
-
-bool TDERootSystemDevice::canHibernate() {
- TQString statenode = "/sys/power/state";
- int rval = access (statenode.ascii(), W_OK);
- if (rval == 0) {
- if (powerStates().contains(TDESystemPowerState::Hibernate)) {
- return TRUE;
- }
- else {
- return FALSE;
- }
- }
- else {
-#ifdef WITH_UPOWER
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQT_DBusProxy upowerProperties("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.DBus.Properties", dbusConn);
- if (upowerProperties.canSend()) {
- // can hibernate?
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromString(upowerProperties.interface()) << TQT_DBusData::fromString("CanHibernate");
- TQT_DBusMessage reply = upowerProperties.sendWithReply("Get", params);
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
- return reply[0].toVariant().value.toBool();
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
-#else // WITH_UPOWER
- return FALSE;
-#endif// WITH_UPOWER
- }
-}
-
-bool TDERootSystemDevice::canPowerOff() {
- TDEConfig *config = TDEGlobal::config();
- config->reparseConfiguration(); // config may have changed in the KControl module
-
- config->setGroup("General" );
- bool maysd = false;
-#ifdef WITH_CONSOLEKIT
- if (config->readBoolEntry( "offerShutdown", true )) {
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQT_DBusProxy consoleKitManager("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", dbusConn);
- if (consoleKitManager.canSend()) {
- // can power off?
- TQValueList<TQT_DBusData> params;
- TQT_DBusMessage reply = consoleKitManager.sendWithReply("CanStop", params);
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
- maysd = reply[0].toBool();
- }
- else {
- maysd = false;
- }
- }
- else {
- maysd = false;
- }
- }
- else {
- maysd = false;
- }
- }
-#else // WITH_CONSOLEKIT
- // FIXME
- // Can we power down this system?
- // This should probably be checked via DCOP and therefore interface with KDM
- if (config->readBoolEntry( "offerShutdown", true )/* && DM().canShutdown()*/) { // FIXME
- maysd = true;
- }
-#endif // WITH_CONSOLEKIT
-
- return maysd;
-}
-
-bool TDERootSystemDevice::canReboot() {
- TDEConfig *config = TDEGlobal::config();
- config->reparseConfiguration(); // config may have changed in the KControl module
-
- config->setGroup("General" );
- bool mayrb = false;
-#ifdef WITH_CONSOLEKIT
- if (config->readBoolEntry( "offerShutdown", true )) {
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQT_DBusProxy consoleKitManager("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", dbusConn);
- if (consoleKitManager.canSend()) {
- // can reboot?
- TQValueList<TQT_DBusData> params;
- TQT_DBusMessage reply = consoleKitManager.sendWithReply("CanRestart", params);
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
- mayrb = reply[0].toBool();
- }
- else {
- mayrb = false;
- }
- }
- else {
- mayrb = false;
- }
- }
- else {
- mayrb = false;
- }
- }
-#else // WITH_CONSOLEKIT
- // FIXME
- // Can we power down this system?
- // This should probably be checked via DCOP and therefore interface with KDM
- if (config->readBoolEntry( "offerShutdown", true )/* && DM().canShutdown()*/) { // FIXME
- mayrb = true;
- }
-#endif // WITH_CONSOLEKIT
-
- return mayrb;
-}
-
-void TDERootSystemDevice::setHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm) {
- TQString hibernationnode = "/sys/power/disk";
- TQFile file( hibernationnode );
- if ( file.open( IO_WriteOnly ) ) {
- TQString hibernationCommand;
- if (hm == TDESystemHibernationMethod::Platform) {
- hibernationCommand = "platform";
- }
- if (hm == TDESystemHibernationMethod::Shutdown) {
- hibernationCommand = "shutdown";
- }
- if (hm == TDESystemHibernationMethod::Reboot) {
- hibernationCommand = "reboot";
- }
- if (hm == TDESystemHibernationMethod::TestProc) {
- hibernationCommand = "testproc";
- }
- if (hm == TDESystemHibernationMethod::Test) {
- hibernationCommand = "test";
- }
- TQTextStream stream( &file );
- stream << hibernationCommand;
- file.close();
- }
-}
-
-bool TDERootSystemDevice::setPowerState(TDESystemPowerState::TDESystemPowerState ps) {
- if ((ps == TDESystemPowerState::Standby) || (ps == TDESystemPowerState::Suspend) || (ps == TDESystemPowerState::Hibernate)) {
- TQString statenode = "/sys/power/state";
- TQFile file( statenode );
- if ( file.open( IO_WriteOnly ) ) {
- TQString powerCommand;
- if (ps == TDESystemPowerState::Standby) {
- powerCommand = "standby";
- }
- if (ps == TDESystemPowerState::Suspend) {
- powerCommand = "mem";
- }
- if (ps == TDESystemPowerState::Hibernate) {
- powerCommand = "disk";
- }
- TQTextStream stream( &file );
- stream << powerCommand;
- file.close();
- return true;
- }
- else {
-#ifdef WITH_UPOWER
- TQT_DBusConnection dbusConn;
- dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if ( dbusConn.isConnected() ) {
- if (ps == TDESystemPowerState::Suspend) {
- TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
- "org.freedesktop.UPower",
- "/org/freedesktop/UPower",
- "org.freedesktop.UPower",
- "Suspend");
- dbusConn.sendWithReply(msg);
- return true;
- }
- else if (ps == TDESystemPowerState::Hibernate) {
- TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
- "org.freedesktop.UPower",
- "/org/freedesktop/UPower",
- "org.freedesktop.UPower",
- "Hibernate");
- dbusConn.sendWithReply(msg);
- return true;
- }
- else {
- return false;
- }
- }
- else {
- return false;
- }
-#else // WITH_UPOWER
- return false;
-#endif // WITH_UPOWER
- }
- }
- else if (ps == TDESystemPowerState::PowerOff) {
-#ifdef WITH_CONSOLEKIT
- TDEConfig *config = TDEGlobal::config();
- config->reparseConfiguration(); // config may have changed in the KControl module
- config->setGroup("General" );
- if (config->readBoolEntry( "offerShutdown", true )) {
- TQT_DBusConnection dbusConn;
- dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if ( dbusConn.isConnected() ) {
- TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
- "org.freedesktop.ConsoleKit",
- "/org/freedesktop/ConsoleKit/Manager",
- "org.freedesktop.ConsoleKit.Manager",
- "Stop");
- dbusConn.sendWithReply(msg);
- return true;
- }
- else {
- return false;
- }
- }
- else {
- return false;
- }
-#else // WITH_CONSOLEKIT
- // Power down the system using a DCOP command
- // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387
- TQByteArray data;
- TQDataStream arg(data, IO_WriteOnly);
- arg << (int)0 << (int)2 << (int)2;
- if ( kapp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data) ) {
- return true;
- }
- return false;
-#endif // WITH_CONSOLEKIT
- }
- else if (ps == TDESystemPowerState::Reboot) {
-#ifdef WITH_CONSOLEKIT
- TDEConfig *config = TDEGlobal::config();
- config->reparseConfiguration(); // config may have changed in the KControl module
- config->setGroup("General" );
- if (config->readBoolEntry( "offerShutdown", true )) {
- TQT_DBusConnection dbusConn;
- dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if ( dbusConn.isConnected() ) {
- TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
- "org.freedesktop.ConsoleKit",
- "/org/freedesktop/ConsoleKit/Manager",
- "org.freedesktop.ConsoleKit.Manager",
- "Restart");
- dbusConn.sendWithReply(msg);
- return true;
- }
- else {
- return false;
- }
- }
- else {
- return false;
- }
-#else // WITH_CONSOLEKIT
- // Power down the system using a DCOP command
- // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387
- TQByteArray data;
- TQDataStream arg(data, IO_WriteOnly);
- arg << (int)0 << (int)1 << (int)2;
- if ( kapp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data) ) {
- return true;
- }
- return false;
-#endif // WITH_CONSOLEKIT
- }
- else if (ps == TDESystemPowerState::Active) {
- // Ummm...we're already active...
- return true;
- }
-
- return false;
-}
-
-TDEBatteryDevice::TDEBatteryDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
-}
-
-TDEBatteryDevice::~TDEBatteryDevice() {
-}
-
-double TDEBatteryDevice::voltage() {
- return m_currentVoltage;
-}
-
-void TDEBatteryDevice::internalSetVoltage(double vt) {
- m_currentVoltage = vt;
-}
-
-double TDEBatteryDevice::maximumVoltage() {
- return m_maximumVoltage;
-}
-
-void TDEBatteryDevice::internalSetMaximumVoltage(double vt) {
- m_maximumVoltage = vt;
-}
-
-double TDEBatteryDevice::minimumVoltage() {
- return m_minimumVoltage;
-}
-
-void TDEBatteryDevice::internalSetMinimumVoltage(double vt) {
- m_minimumVoltage = vt;
-}
-
-double TDEBatteryDevice::maximumDesignVoltage() {
- return m_maximumDesignVoltage;
-}
-
-void TDEBatteryDevice::internalSetMaximumDesignVoltage(double vt) {
- m_maximumDesignVoltage = vt;
-}
-
-double TDEBatteryDevice::energy() {
- return m_currentEnergy;
-}
-
-void TDEBatteryDevice::internalSetEnergy(double vt) {
- m_currentEnergy = vt;
-}
-
-double TDEBatteryDevice::alarmEnergy() {
- return m_alarmEnergy;
-}
-
-void TDEBatteryDevice::internalSetAlarmEnergy(double vt) {
- m_alarmEnergy = vt;
-}
-
-double TDEBatteryDevice::maximumEnergy() {
- return m_maximumEnergy;
-}
-
-void TDEBatteryDevice::internalSetMaximumEnergy(double vt) {
- m_maximumEnergy = vt;
-}
-
-double TDEBatteryDevice::maximumDesignEnergy() {
- return m_maximumDesignEnergy;
-}
-
-void TDEBatteryDevice::internalSetMaximumDesignEnergy(double vt) {
- m_maximumDesignEnergy = vt;
-}
-
-double TDEBatteryDevice::dischargeRate() {
- return m_dischargeRate;
-}
-
-void TDEBatteryDevice::internalSetDischargeRate(double vt) {
- m_dischargeRate = vt;
-}
-
-double TDEBatteryDevice::timeRemaining() {
- return m_timeRemaining;
-}
-
-void TDEBatteryDevice::internalSetTimeRemaining(double tr) {
- m_timeRemaining = tr;
-}
-
-TQString TDEBatteryDevice::technology() {
- return m_technology;
-}
-
-void TDEBatteryDevice::internalSetTechnology(TQString tc) {
- m_technology = tc;
-}
-
-TDEBatteryStatus::TDEBatteryStatus TDEBatteryDevice::status() {
- return m_status;
-}
-
-void TDEBatteryDevice::internalSetStatus(TQString tc) {
- tc = tc.lower();
-
- if (tc == "charging") {
- m_status = TDEBatteryStatus::Charging;
- }
- else if (tc == "discharging") {
- m_status = TDEBatteryStatus::Discharging;
- }
- else if (tc == "full") {
- m_status = TDEBatteryStatus::Full;
- }
- else {
- m_status = TDEBatteryStatus::Unknown;
- }
-}
-
-bool TDEBatteryDevice::installed() {
- return m_installed;
-}
-
-void TDEBatteryDevice::internalSetInstalled(bool tc) {
- m_installed = tc;
-}
-
-double TDEBatteryDevice::chargePercent() {
- return (m_currentEnergy/m_maximumEnergy)*100.0;
-}
-
-TDEMainsPowerDevice::TDEMainsPowerDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
-}
-
-TDEMainsPowerDevice::~TDEMainsPowerDevice() {
-}
-
-bool TDEMainsPowerDevice::online() {
- return m_online;
-}
-
-void TDEMainsPowerDevice::internalSetOnline(bool tc) {
- m_online = tc;
-}
-
-TDENetworkDevice::TDENetworkDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
- m_rxbytes = -1;
- m_txbytes = -1;
- m_rxpackets = -1;
- m_txpackets = -1;
- m_connectionManager = NULL;
-}
-
-TDENetworkDevice::~TDENetworkDevice() {
- if (m_connectionManager) {
- delete m_connectionManager;
- }
-}
-
-TQString TDENetworkDevice::macAddress() {
- return m_macAddress;
-}
-
-void TDENetworkDevice::internalSetMacAddress(TQString ma) {
- m_macAddress = ma;
-}
-
-TQString TDENetworkDevice::state() {
- return m_state;
-}
-
-void TDENetworkDevice::internalSetState(TQString st) {
- m_state = st;
-}
-
-bool TDENetworkDevice::carrierPresent() {
- return m_carrier;
-}
-
-void TDENetworkDevice::internalSetCarrierPresent(bool cp) {
- m_carrier = cp;
-}
-
-bool TDENetworkDevice::dormant() {
- return m_dormant;
-}
-
-void TDENetworkDevice::internalSetDormant(bool dm) {
- m_dormant = dm;
-}
-
-TQString TDENetworkDevice::ipV4Address() {
- return m_ipV4Address;
-}
-
-void TDENetworkDevice::internalSetIpV4Address(TQString ad) {
- m_ipV4Address = ad;
-}
-
-TQString TDENetworkDevice::ipV6Address() {
- return m_ipV6Address;
-}
-
-void TDENetworkDevice::internalSetIpV6Address(TQString ad) {
- m_ipV6Address = ad;
-}
-
-TQString TDENetworkDevice::ipV4Netmask() {
- return m_ipV4Netmask;
-}
-
-void TDENetworkDevice::internalSetIpV4Netmask(TQString nm) {
- m_ipV4Netmask = nm;
-}
-
-TQString TDENetworkDevice::ipV6Netmask() {
- return m_ipV6Netmask;
-}
-
-void TDENetworkDevice::internalSetIpV6Netmask(TQString nm) {
- m_ipV6Netmask = nm;
-}
-
-TQString TDENetworkDevice::ipV4Broadcast() {
- return m_ipV4Broadcast;
-}
-
-void TDENetworkDevice::internalSetIpV4Broadcast(TQString br) {
- m_ipV4Broadcast = br;
-}
-
-TQString TDENetworkDevice::ipV6Broadcast() {
- return m_ipV6Broadcast;
-}
-
-void TDENetworkDevice::internalSetIpV6Broadcast(TQString br) {
- m_ipV6Broadcast = br;
-}
-
-TQString TDENetworkDevice::ipV4Destination() {
- return m_ipV4Destination;
-}
-
-void TDENetworkDevice::internalSetIpV4Destination(TQString ds) {
- m_ipV4Destination = ds;
-}
-
-TQString TDENetworkDevice::ipV6Destination() {
- return m_ipV6Destination;
-}
-
-void TDENetworkDevice::internalSetIpV6Destination(TQString ds) {
- m_ipV6Destination = ds;
-}
-
-double TDENetworkDevice::rxBytes() {
- return m_rxbytes;
-}
-
-void TDENetworkDevice::internalSetRxBytes(double rx) {
- m_rxbytes = rx;
-}
-
-double TDENetworkDevice::txBytes() {
- return m_txbytes;
-}
-
-void TDENetworkDevice::internalSetTxBytes(double tx) {
- m_txbytes = tx;
-}
-
-double TDENetworkDevice::rxPackets() {
- return m_rxpackets;
-}
-
-void TDENetworkDevice::internalSetRxPackets(double rx) {
- m_rxpackets = rx;
-}
-
-double TDENetworkDevice::txPackets() {
- return m_txpackets;
-}
-
-void TDENetworkDevice::internalSetTxPackets(double tx) {
- m_txpackets = tx;
-}
-
-TDENetworkConnectionManager* TDENetworkDevice::connectionManager() {
-#ifdef WITH_NETWORK_MANAGER_BACKEND
- if (!m_connectionManager) {
- m_connectionManager = new TDENetworkConnectionManager_BackendNM(m_macAddress);
- }
-#endif // WITH_NETWORK_MANAGER_BACKEND
-
- return m_connectionManager;
-}
-
-void TDENetworkDevice::internalSetConnectionManager(TDENetworkConnectionManager* mgr) {
- m_connectionManager = mgr;
-}
-
-TDEBacklightDevice::TDEBacklightDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
-}
-
-TDEBacklightDevice::~TDEBacklightDevice() {
-}
-
-TDEDisplayPowerLevel::TDEDisplayPowerLevel TDEBacklightDevice::powerLevel() {
- return m_powerLevel;
-}
-
-void TDEBacklightDevice::internalSetPowerLevel(TDEDisplayPowerLevel::TDEDisplayPowerLevel pl) {
- m_powerLevel = pl;
-}
-
-void TDEBacklightDevice::internalSetMaximumRawBrightness(int br) {
- m_maximumBrightness = br;
-}
-
-void TDEBacklightDevice::internalSetCurrentRawBrightness(int br) {
- m_currentBrightness = br;
-}
-
-int TDEBacklightDevice::brightnessSteps() {
- return m_maximumBrightness + 1;
-}
-
-double TDEBacklightDevice::brightnessPercent() {
- return (((m_currentBrightness*1.0)/m_maximumBrightness)*100.0);
-}
-
-bool TDEBacklightDevice::canSetBrightness() {
- TQString brightnessnode = systemPath() + "/brightness";
- int rval = access (brightnessnode.ascii(), W_OK);
- if (rval == 0) {
- return TRUE;
- }
- else {
-#ifdef WITH_UPOWER
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.Brightness", dbusConn);
- if (hardwareControl.canSend()) {
- // can set brightness?
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromString(brightnessnode);
- TQT_DBusMessage reply = hardwareControl.sendWithReply("CanSetBrightness", params);
- if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
- return reply[0].toVariant().value.toBool();
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
- }
- else {
- return FALSE;
- }
-#else // WITH_UPOWER
- return FALSE;
-#endif// WITH_UPOWER
- }
-}
-
-int TDEBacklightDevice::rawBrightness() {
- return m_currentBrightness;
-}
-
-void TDEBacklightDevice::setRawBrightness(int br) {
- TQString brightnessnode = systemPath() + "/brightness";
- TQString brightnessCommand = TQString("%1").arg(br);
- TQFile file( brightnessnode );
- if ( file.open( IO_WriteOnly ) ) {
- TQTextStream stream( &file );
- stream << brightnessCommand;
- file.close();
- }
-#ifdef WITH_UPOWER
- else {
- TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
- if (dbusConn.isConnected()) {
- TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.Brightness", dbusConn);
- if (hardwareControl.canSend()) {
- // set brightness
- TQValueList<TQT_DBusData> params;
- params << TQT_DBusData::fromString(brightnessnode) << TQT_DBusData::fromString(brightnessCommand);
- hardwareControl.sendWithReply("SetBrightness", params);
- }
- else {
- return;
- }
- }
- else {
- return;
- }
- }
-#endif // WITH_UPOWER
-}
-
-TDEMonitorDevice::TDEMonitorDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
-}
-
-TDEMonitorDevice::~TDEMonitorDevice() {
-}
-
-bool TDEMonitorDevice::connected() {
- return m_connected;
-}
-
-void TDEMonitorDevice::internalSetConnected(bool cn) {
- m_connected = cn;
-}
-
-bool TDEMonitorDevice::enabled() {
- return m_enabled;
-}
-
-void TDEMonitorDevice::internalSetEnabled(bool en) {
- m_enabled = en;
-}
-
-TQByteArray TDEMonitorDevice::edid() {
- return m_edid;
-}
-
-void TDEMonitorDevice::internalSetEdid(TQByteArray ed) {
- m_edid = ed;
-}
-
-TDEResolutionList TDEMonitorDevice::resolutions() {
- return m_resolutions;
-}
-
-void TDEMonitorDevice::internalSetResolutions(TDEResolutionList rs) {
- m_resolutions = rs;
-}
-
-TQString TDEMonitorDevice::portType() {
- return m_portType;
-}
-
-void TDEMonitorDevice::internalSetPortType(TQString pt) {
- m_portType = pt;
-}
-
-TDEDisplayPowerLevel::TDEDisplayPowerLevel TDEMonitorDevice::powerLevel() {
- return m_powerLevel;
-}
-
-void TDEMonitorDevice::internalSetPowerLevel(TDEDisplayPowerLevel::TDEDisplayPowerLevel pl) {
- m_powerLevel = pl;
-}
-
-TDEEventDevice::TDEEventDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
- m_fd = -1;
- m_fdMonitorActive = false;
-}
-
-TDEEventDevice::~TDEEventDevice() {
- if (m_fd >= 0) {
- close(m_fd);
- }
-}
-
-TDEEventDeviceType::TDEEventDeviceType TDEEventDevice::eventType() {
- return m_eventType;
-}
-
-void TDEEventDevice::internalSetEventType(TDEEventDeviceType::TDEEventDeviceType et) {
- m_eventType = et;
-}
-
-TDESwitchType::TDESwitchType TDEEventDevice::providedSwitches() {
- return m_providedSwitches;
-}
-
-void TDEEventDevice::internalSetProvidedSwitches(TDESwitchType::TDESwitchType sl) {
- m_providedSwitches = sl;
-}
-
-TDESwitchType::TDESwitchType TDEEventDevice::activeSwitches() {
- return m_switchActive;
-}
-
-void TDEEventDevice::internalSetActiveSwitches(TDESwitchType::TDESwitchType sl) {
- m_switchActive = sl;
-}
-
-// Keep this in sync with the TDESwitchType definition in the header
-TQStringList TDEEventDevice::friendlySwitchList(TDESwitchType::TDESwitchType switches) {
- TQStringList ret;
-
- if (switches & TDESwitchType::Lid) {
- ret.append(i18n("Lid Switch"));
- }
- if (switches & TDESwitchType::TabletMode) {
- ret.append(i18n("Tablet Mode"));
- }
- if (switches & TDESwitchType::HeadphoneInsert) {
- ret.append(i18n("Headphone Inserted"));
- }
- if (switches & TDESwitchType::RFKill) {
- ret.append(i18n("Radio Frequency Device Kill Switch"));
- }
- if (switches & TDESwitchType::Radio) {
- ret.append(i18n("Enable Radio"));
- }
- if (switches & TDESwitchType::MicrophoneInsert) {
- ret.append(i18n("Microphone Inserted"));
- }
- if (switches & TDESwitchType::Dock) {
- ret.append(i18n("Docked"));
- }
- if (switches & TDESwitchType::LineOutInsert) {
- ret.append(i18n("Line Out Inserted"));
- }
- if (switches & TDESwitchType::JackPhysicalInsert) {
- ret.append(i18n("Physical Jack Inserted"));
- }
- if (switches & TDESwitchType::VideoOutInsert) {
- ret.append(i18n("Video Out Inserted"));
- }
- if (switches & TDESwitchType::CameraLensCover) {
- ret.append(i18n("Camera Lens Cover"));
- }
- if (switches & TDESwitchType::KeypadSlide) {
- ret.append(i18n("Keypad Slide"));
- }
- if (switches & TDESwitchType::FrontProximity) {
- ret.append(i18n("Front Proximity"));
- }
- if (switches & TDESwitchType::RotateLock) {
- ret.append(i18n("Rotate Lock"));
- }
- if (switches & TDESwitchType::LineInInsert) {
- ret.append(i18n("Line In Inserted"));
- }
-
- return ret;
-}
-
-void TDEEventDevice::internalStartFdMonitoring(TDEHardwareDevices* hwmanager) {
- if (!m_fdMonitorActive) {
- // For security and performance reasons, only monitor known ACPI buttons
- if (eventType() != TDEEventDeviceType::Unknown) {
- if (m_fd >= 0) {
- m_eventNotifier = new TQSocketNotifier(m_fd, TQSocketNotifier::Read, this);
- connect( m_eventNotifier, TQT_SIGNAL(activated(int)), this, TQT_SLOT(eventReceived()) );
- }
- connect( this, TQT_SIGNAL(keyPressed(unsigned int, TDEEventDevice*)), hwmanager, TQT_SLOT(processEventDeviceKeyPressed(unsigned int, TDEEventDevice*)) );
- }
- m_fdMonitorActive = true;
- }
-}
-
-void TDEEventDevice::eventReceived() {
- struct input_event ev;
- int r;
- r = read(m_fd, &ev, sizeof(struct input_event));
- if (r > 0) {
- if (ev.type == EV_KEY) {
- emit keyPressed(ev.code, this);
- }
- }
-}
-
-TDEInputDevice::TDEInputDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
-}
-
-TDEInputDevice::~TDEInputDevice() {
-}
-
-TDEInputDeviceType::TDEInputDeviceType TDEInputDevice::inputType() {
- return m_inputType;
-}
-
-void TDEInputDevice::internalSetInputType(TDEInputDeviceType::TDEInputDeviceType it) {
- m_inputType = it;
-}
-
TDEHardwareDevices::TDEHardwareDevices() {
// Initialize members
pci_id_map = 0;
@@ -3148,6 +937,8 @@ TDEDiskDeviceType::TDEDiskDeviceType classifyDiskType(udev_device* dev, const TQ
|| (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_BD_R_DL")) == "1")
|| (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_BD_PLUS_R")) == "1")
|| (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_BD_MINUS_R")) == "1")
+ || (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_DVD_PLUS_R_DL")) == "1")
+ || (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_DVD_MINUS_R_DL")) == "1")
) {
disktype = disktype | TDEDiskDeviceType::BDRW; // FIXME
disktype = disktype & ~TDEDiskDeviceType::BDROM;
@@ -3156,6 +947,8 @@ TDEDiskDeviceType::TDEDiskDeviceType classifyDiskType(udev_device* dev, const TQ
|| (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_BD_RW_DL")) == "1")
|| (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_BD_PLUS_RW")) == "1")
|| (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_BD_MINUS_RW")) == "1")
+ || (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_DVD_PLUS_RW_DL")) == "1")
+ || (TQString(udev_device_get_property_value(dev, "ID_CDROM_MEDIA_DVD_MINUS_RW_DL")) == "1")
) {
disktype = disktype | TDEDiskDeviceType::BDRW;
disktype = disktype & ~TDEDiskDeviceType::BDROM;
diff --git a/tdecore/tdehw/tdehardwaredevices.h b/tdecore/tdehw/tdehardwaredevices.h
new file mode 100644
index 000000000..c9f56d96b
--- /dev/null
+++ b/tdecore/tdehw/tdehardwaredevices.h
@@ -0,0 +1,299 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+#ifndef _TDEHARDWAREDEVICES_H
+#define _TDEHARDWAREDEVICES_H
+
+
+// TDE includes
+#include <tqobject.h>
+#include <tqptrlist.h>
+#include <tqmap.h>
+#include <tqstring.h>
+#include <tqstringlist.h>
+
+#include "tdelibs_export.h"
+#include "kicontheme.h"
+
+#include "tdehwcommontypes.h"
+
+// FIXME delete those headers after complete fixing everything in over modules
+#include "tdegenericdevice.h"
+#include "kiconloader.h"
+#include <libudev.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <locale.h>
+#include <unistd.h>
+#include "tdestoragedevice.h"
+#include "tdecpudevice.h"
+#include "tdebatterydevice.h"
+#include "tdemainspowerdevice.h"
+#include "tdenetworkdevice.h"
+#include "tdebacklightdevice.h"
+#include "tdemonitordevice.h"
+#include "tdesensordevice.h"
+#include "tderootsystemdevice.h"
+#include "tdeeventdevice.h"
+#include "tdeinputdevice.h"
+
+/**
+ * Hardware Device Access and Monitoring Library
+ *
+ * @author Timothy Pearson
+ */
+struct udev_device;
+
+class KSimpleDirWatch;
+
+class TDEGenericDevice;
+class TDEStorageDevice;
+class TDENetworkDevice;
+class TDEBacklightDevice;
+class TDEMonitorDevice;
+class TDESensorDevice;
+class TDERootSystemDevice;
+class TDEEventDevice;
+class TDEInputDevice;
+class TQSocketNotifier;
+
+typedef TQPtrList<TDEGenericDevice> TDEGenericHardwareList;
+typedef TQMap<TQString, TQString> TDEDeviceIDMap;
+
+class TDECORE_EXPORT TDEHardwareDevices : public TQObject
+{
+ Q_OBJECT
+
+ public:
+ /**
+ * Constructor.
+ */
+ TDEHardwareDevices();
+
+ /**
+ * Destructor.
+ */
+ ~TDEHardwareDevices();
+
+ /**
+ * Query all hardware capabilities on all devices
+ * This does not normally need to be called by an application, as
+ * device detection is handled internally and automatically
+ *
+ * A call to this method immediately invalidates any TDEGenericHardwareList
+ * structures returned by listAllPhysicalDevices()
+ *
+ * @return TRUE if successful
+ */
+ bool queryHardwareInformation();
+
+ /**
+ * List all hardware capabilities on all devices
+ * @return TDEGenericHardwareList containing all known hardware devices
+ */
+ TDEGenericHardwareList listAllPhysicalDevices();
+
+ /**
+ * List all hardware capabilities on all devices
+ * @param a TDEGenericDeviceType::TDEGenericDeviceType specifying the device class
+ * @return TDEGenericHardwareList containing all known hardware devices
+ */
+ TDEGenericHardwareList listByDeviceClass(TDEGenericDeviceType::TDEGenericDeviceType cl);
+
+ /**
+ * Return the device with system path @arg syspath, or 0 if no device exists for that path
+ * @return TDEGenericDevice
+ */
+ TDEGenericDevice* findBySystemPath(TQString syspath);
+
+ /**
+ * Return the device with unique ID @arg uid, or 0 if no device exists for that uid
+ * @return TDEGenericDevice
+ */
+ TDEGenericDevice* findByUniqueID(TQString uid);
+
+ /**
+ * Return the device with device node @arg devnode, or 0 if no device exists at that node
+ * @return TDEGenericDevice
+ */
+ TDEGenericDevice* findByDeviceNode(TQString devnode);
+
+ /**
+ * Return the storage device with unique ID @arg uid, or 0 if no device exists for that uid
+ * @return TDEGenericDevice
+ */
+ TDEStorageDevice* findDiskByUID(TQString uid);
+
+ /**
+ * Look up the device in the system PCI database
+ * @param vendorid a TQString containing the vendor ID in hexadecimal
+ * @param modelid a TQString containing the model ID in hexadecimal
+ * @param subvendorid a TQString containing the subvendor ID in hexadecimal
+ * @param submodelid a TQString containing the submodel ID in hexadecimal
+ * @return a TQString containing the device name, if found
+ */
+ TQString findPCIDeviceName(TQString vendorid, TQString modelid, TQString subvendorid, TQString submodelid);
+
+ /**
+ * Look up the device in the system USB database
+ * @param vendorid a TQString containing the vendor ID in hexadecimal
+ * @param modelid a TQString containing the model ID in hexadecimal
+ * @param subvendorid a TQString containing the subvendor ID in hexadecimal
+ * @param submodelid a TQString containing the submodel ID in hexadecimal
+ * @return a TQString containing the device name, if found
+ */
+ TQString findUSBDeviceName(TQString vendorid, TQString modelid, TQString subvendorid, TQString submodelid);
+
+ /**
+ * Look up the device in the system PNP database
+ * @param pnpid a TQString containing the PNP ID
+ * @return a TQString containing the device name, if found
+ */
+ TQString findPNPDeviceName(TQString pnpid);
+
+ /**
+ * Look up the monitor manufacturer in the system display database
+ * @param pnpid a TQString containing the display manufacturer ID
+ * @return a TQString containing the manufacturer name, if found
+ */
+ TQString findMonitorManufacturerName(TQString dpyid);
+
+ /**
+ * Get a friendly string describing a device type
+ * @param query a TDEGenericDeviceType::TDEGenericDeviceType specifying a device type
+ * @return a TQString containing the friendly type name
+ */
+ TQString getFriendlyDeviceTypeStringFromType(TDEGenericDeviceType::TDEGenericDeviceType query);
+
+ /**
+ * Get an icon for a device type
+ * @param query a TDEGenericDeviceType::TDEGenericDeviceType specifying a device type
+ * @param size a TDEIcon::StdSizes structure specifying the desired icon size
+ * @return a TQPixmap containing the icon for the specified type
+ */
+ TQPixmap getDeviceTypeIconFromType(TDEGenericDeviceType::TDEGenericDeviceType query, TDEIcon::StdSizes size);
+
+ /**
+ * Convenience function to obtain the root system device
+ * @return a pointer to a TDERootSystemDevice object
+ */
+ TDERootSystemDevice* rootSystemDevice();
+
+ /**
+ * Rescan a hardware device to look for changes
+ * WARNING: This method can be very expensive. Use with caution!
+ * @param hwdevice TDEGenericDevice* with the device to rescan
+ */
+ void rescanDeviceInformation(TDEGenericDevice* hwdevice);
+
+ /**
+ * Rescan a hardware device to look for changes
+ * WARNING: This method can be very expensive. Use with caution!
+ * The computational expense can be reduced somewhat if the device tree structure
+ * has not changed by calling this method with regenerateDeviceTree = FALSE.
+ * @param hwdevice TDEGenericDevice* with the device to rescan
+ * @param regenerateDeviceTree TRUE to update parent/child links in device tree
+ */
+ void rescanDeviceInformation(TDEGenericDevice* hwdevice, bool regenerateDeviceTree);
+
+ /**
+ * Enable or disable automatic state updates of triggerless hardware devices
+ * such as CPUs and network cards. When enabled, your application will use
+ * additional CPU resources to continually poll triggerless hardware devices.
+ * Automatic updates are disabled by default.
+ * @param enable a bool specifiying whether or not automatic updates should be enabled
+ */
+ void setTriggerlessHardwareUpdatesEnabled(bool enable);
+
+ /**
+ * Convert a byte count to human readable form
+ * @param bytes a double containing the number of bytes
+ * @return a TQString containing the human readable byte count
+ */
+ static TQString bytesToFriendlySizeString(double bytes);
+
+ signals:
+ void hardwareAdded(TDEGenericDevice*);
+ void hardwareRemoved(TDEGenericDevice*);
+ void hardwareUpdated(TDEGenericDevice*);
+ void mountTableModified();
+ void hardwareEvent(TDEHardwareEvent::TDEHardwareEvent, TQString uuid);
+
+ /**
+ * @param keycode the code of the key that was pressed/released
+ * See include/linux/input.h for a complete list of keycodes
+ * @param device a TDEEventDevice* with the device that received the event
+ */
+ void eventDeviceKeyPressed(unsigned int keycode, TDEEventDevice* device);
+
+ private slots:
+ void processHotPluggedHardware();
+ void processModifiedMounts();
+ void processModifiedCPUs();
+ void processStatelessDevices();
+ void processEventDeviceKeyPressed(unsigned int keycode, TDEEventDevice* edevice);
+
+ private:
+ void updateBlacklists(TDEGenericDevice* hwdevice, udev_device* dev);
+
+ private:
+ TDEGenericDevice *classifyUnknownDevice(udev_device* dev, TDEGenericDevice* existingdevice=0, bool force_full_classification=true);
+ TDEGenericDevice *classifyUnknownDeviceByExternalRules(udev_device* dev, TDEGenericDevice* existingdevice=0, bool classifySubDevices=false);
+ void updateExistingDeviceInformation(TDEGenericDevice* existingdevice, udev_device* dev=NULL);
+
+ void updateParentDeviceInformation();
+ void updateParentDeviceInformation(TDEGenericDevice* hwdevice);
+
+ void addCoreSystemDevices();
+
+ /**
+ * Get the binary monitor EDID for the specified sysfs path
+ * @return a TQByteArray containing the EDID
+ */
+ TQByteArray getEDID(TQString path);
+
+ /**
+ * Get the monitor EDID name for the specified sysfs path
+ * @return a TQPair<TQString,TQString> containing the monitor vendor and model, if available
+ */
+ TQPair<TQString,TQString> getEDIDMonitorName(TQString path);
+
+ struct udev *m_udevStruct;
+ struct udev_monitor *m_udevMonitorStruct;
+ TDEGenericHardwareList m_deviceList;
+ int m_procMountsFd;
+ KSimpleDirWatch* m_cpuWatch;
+ TQTimer* m_cpuWatchTimer;
+ TQTimer* m_deviceWatchTimer;
+
+ TQSocketNotifier* m_devScanNotifier;
+ TQSocketNotifier* m_mountScanNotifier;
+
+ TQStringList m_mountTable;
+ TQStringList m_cpuInfo;
+
+ TDEDeviceIDMap* pci_id_map;
+ TDEDeviceIDMap* usb_id_map;
+ TDEDeviceIDMap* pnp_id_map;
+ TDEDeviceIDMap* dpy_id_map;
+
+ friend class TDEGenericDevice;
+ friend class TDEStorageDevice;
+ friend class TDECPUDevice;
+};
+
+#endif // _TDEHARDWAREDEVICES_H
diff --git a/tdecore/tdehw/tdehwcommontypes.h b/tdecore/tdehw/tdehwcommontypes.h
new file mode 100644
index 000000000..095672669
--- /dev/null
+++ b/tdecore/tdehw/tdehwcommontypes.h
@@ -0,0 +1,100 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDEHWCOMMON_H
+#define _TDEHWCOMMON_H
+
+// Keep readGenericDeviceTypeFromString(), getFriendlyDeviceTypeStringFromType(), and getDeviceTypeIconFromType() in tdehardwaredevices.cpp in sync with this enum
+namespace TDEGenericDeviceType {
+enum TDEGenericDeviceType {
+ Root,
+ RootSystem,
+ CPU,
+ GPU,
+ RAM,
+ Bus,
+ I2C,
+ MDIO,
+ Mainboard,
+ Disk,
+ SCSI,
+ StorageController,
+ Mouse,
+ Keyboard,
+ HID,
+ Modem,
+ Monitor,
+ Network,
+ Printer,
+ Scanner,
+ Sound,
+ VideoCapture,
+ IEEE1394,
+ PCMCIA,
+ Camera,
+ TextIO,
+ Serial,
+ Parallel,
+ Peripheral,
+ Backlight,
+ Battery,
+ PowerSupply,
+ Dock,
+ ThermalSensor,
+ ThermalControl,
+ BlueTooth,
+ Bridge,
+ Platform,
+ Cryptography,
+ Event,
+ Input,
+ PNP,
+ OtherACPI,
+ OtherUSB,
+ OtherMultimedia,
+ OtherPeripheral,
+ OtherSensor,
+ OtherVirtual,
+ Other,
+ Last = Other
+};
+};
+
+namespace TDEDisplayPowerLevel {
+enum TDEDisplayPowerLevel {
+ On,
+ Standby,
+ Suspend,
+ Off
+};
+};
+
+namespace TDEHardwareEvent {
+enum TDEHardwareEvent {
+ HardwareListModified,
+ MountTableModified,
+ HardwareAdded,
+ HardwareRemoved,
+ HardwareUpdated,
+ Other,
+ Last = Other
+};
+};
+
+#endif // _TDEHWCOMMON_H
diff --git a/tdecore/tdehw/tdeinputdevice.cpp b/tdecore/tdehw/tdeinputdevice.cpp
new file mode 100644
index 000000000..c4e649e94
--- /dev/null
+++ b/tdecore/tdehw/tdeinputdevice.cpp
@@ -0,0 +1,38 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdeinputdevice.h"
+
+#include "config.h"
+
+TDEInputDevice::TDEInputDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+}
+
+TDEInputDevice::~TDEInputDevice() {
+}
+
+TDEInputDeviceType::TDEInputDeviceType TDEInputDevice::inputType() {
+ return m_inputType;
+}
+
+void TDEInputDevice::internalSetInputType(TDEInputDeviceType::TDEInputDeviceType it) {
+ m_inputType = it;
+}
+
+#include "tdeinputdevice.moc"
diff --git a/tdecore/tdehw/tdeinputdevice.h b/tdecore/tdehw/tdeinputdevice.h
new file mode 100644
index 000000000..410ff3e1e
--- /dev/null
+++ b/tdecore/tdehw/tdeinputdevice.h
@@ -0,0 +1,67 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDEINPUTDEVICE_H
+#define _TDEINPUTDEVICE_H
+
+#include "tdegenericdevice.h"
+
+namespace TDEInputDeviceType {
+enum TDEInputDeviceType {
+ Unknown,
+ ACPILidSwitch,
+ ACPISleepButton,
+ ACPIPowerButton,
+ Other = 0x80000000
+};
+};
+
+class TDECORE_EXPORT TDEInputDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDEInputDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDEInputDevice();
+
+ /**
+ * @return a TDEInputDeviceType::TDEInputDeviceType with the input device type, if known
+ */
+ TDEInputDeviceType::TDEInputDeviceType inputType();
+
+ protected:
+ /**
+ * @param it a TDEInputDeviceType::TDEInputDeviceType with the input device type, if known
+ * @internal
+ */
+ void internalSetInputType(TDEInputDeviceType::TDEInputDeviceType it);
+
+ private:
+ TDEInputDeviceType::TDEInputDeviceType m_inputType;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDEINPUTDEVICE_H
diff --git a/tdecore/tdehw/tdemainspowerdevice.cpp b/tdecore/tdehw/tdemainspowerdevice.cpp
new file mode 100644
index 000000000..981f0a343
--- /dev/null
+++ b/tdecore/tdehw/tdemainspowerdevice.cpp
@@ -0,0 +1,38 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdemainspowerdevice.h"
+
+#include "config.h"
+
+TDEMainsPowerDevice::TDEMainsPowerDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+}
+
+TDEMainsPowerDevice::~TDEMainsPowerDevice() {
+}
+
+bool TDEMainsPowerDevice::online() {
+ return m_online;
+}
+
+void TDEMainsPowerDevice::internalSetOnline(bool tc) {
+ m_online = tc;
+}
+
+#include "tdemainspowerdevice.moc"
diff --git a/tdecore/tdehw/tdemainspowerdevice.h b/tdecore/tdehw/tdemainspowerdevice.h
new file mode 100644
index 000000000..8dcaeeea4
--- /dev/null
+++ b/tdecore/tdehw/tdemainspowerdevice.h
@@ -0,0 +1,57 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDEMAINSPOWERDEVICE_H
+#define _TDEMAINSPOWERDEVICE_H
+
+#include "tdegenericdevice.h"
+
+class TDECORE_EXPORT TDEMainsPowerDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDEMainsPowerDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDEMainsPowerDevice();
+
+ /**
+ * @return TRUE if power supply is online via mains power, FALSE if not
+ */
+ bool online();
+
+ protected:
+ /**
+ * @param TRUE if power supply is online via mains power, FALSE if not
+ * @internal
+ */
+ void internalSetOnline(bool vt);
+
+ private:
+ bool m_online;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDEMAINSPOWERDEVICE_H
diff --git a/tdecore/tdehw/tdemonitordevice.cpp b/tdecore/tdehw/tdemonitordevice.cpp
new file mode 100644
index 000000000..94b32f7b6
--- /dev/null
+++ b/tdecore/tdehw/tdemonitordevice.cpp
@@ -0,0 +1,78 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdemonitordevice.h"
+
+#include "config.h"
+
+TDEMonitorDevice::TDEMonitorDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+}
+
+TDEMonitorDevice::~TDEMonitorDevice() {
+}
+
+bool TDEMonitorDevice::connected() {
+ return m_connected;
+}
+
+void TDEMonitorDevice::internalSetConnected(bool cn) {
+ m_connected = cn;
+}
+
+bool TDEMonitorDevice::enabled() {
+ return m_enabled;
+}
+
+void TDEMonitorDevice::internalSetEnabled(bool en) {
+ m_enabled = en;
+}
+
+TQByteArray TDEMonitorDevice::edid() {
+ return m_edid;
+}
+
+void TDEMonitorDevice::internalSetEdid(TQByteArray ed) {
+ m_edid = ed;
+}
+
+TDEResolutionList TDEMonitorDevice::resolutions() {
+ return m_resolutions;
+}
+
+void TDEMonitorDevice::internalSetResolutions(TDEResolutionList rs) {
+ m_resolutions = rs;
+}
+
+TQString TDEMonitorDevice::portType() {
+ return m_portType;
+}
+
+void TDEMonitorDevice::internalSetPortType(TQString pt) {
+ m_portType = pt;
+}
+
+TDEDisplayPowerLevel::TDEDisplayPowerLevel TDEMonitorDevice::powerLevel() {
+ return m_powerLevel;
+}
+
+void TDEMonitorDevice::internalSetPowerLevel(TDEDisplayPowerLevel::TDEDisplayPowerLevel pl) {
+ m_powerLevel = pl;
+}
+
+#include "tdemonitordevice.moc"
diff --git a/tdecore/tdehw/tdemonitordevice.h b/tdecore/tdehw/tdemonitordevice.h
new file mode 100644
index 000000000..a4fd81f49
--- /dev/null
+++ b/tdecore/tdehw/tdemonitordevice.h
@@ -0,0 +1,122 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDEMONITORDEVICE_H
+#define _TDEMONITORDEVICE_H
+
+#include "tdegenericdevice.h"
+#include "tdehwcommontypes.h"
+
+typedef TQPair<unsigned int, unsigned int> TDEResolutionPair;
+typedef TQValueList< TDEResolutionPair > TDEResolutionList;
+
+class TDECORE_EXPORT TDEMonitorDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDEMonitorDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDEMonitorDevice();
+
+ /**
+ * @return TRUE if a monitor is connected, FALSE if not
+ */
+ bool connected();
+
+ /**
+ * @return TRUE if this port is enabled, FALSE if not
+ */
+ bool enabled();
+
+ /**
+ * @return a TQByteArray containing this monitor's EDID information
+ */
+ TQByteArray edid();
+
+ /**
+ * @return a TDEResolutionList containing this monitor's supported resolutions
+ */
+ TDEResolutionList resolutions();
+
+ /**
+ * @return a TQString containing the display port type
+ */
+ TQString portType();
+
+ /**
+ * @return a TDEDisplayPowerLevel::TDEDisplayPowerLevel with the current power level
+ */
+ TDEDisplayPowerLevel::TDEDisplayPowerLevel powerLevel();
+
+ protected:
+ /**
+ * @param TRUE if a monitor is connected, FALSE if not
+ * @internal
+ */
+ void internalSetConnected(bool cn);
+
+ /**
+ * @param TRUE if this port is enabled, FALSE if not
+ * @internal
+ */
+ void internalSetEnabled(bool en);
+
+ /**
+ * @param ed a TQByteArray containing this monitor's EDID information
+ * @internal
+ */
+ void internalSetEdid(TQByteArray ed);
+
+ /**
+ * @param rs a TDEResolutionList containing this monitor's supported resolutions
+ * @internal
+ */
+ void internalSetResolutions(TDEResolutionList rs);
+
+ /**
+ * @param pt a TQString containing the display port type
+ * @internal
+ */
+ void internalSetPortType(TQString pt);
+
+ /**
+ * @param pl a TDEDisplayPowerLevel::TDEDisplayPowerLevel with the current power level
+ * @internal
+ */
+ void internalSetPowerLevel(TDEDisplayPowerLevel::TDEDisplayPowerLevel pl);
+
+ private:
+ bool m_connected;
+ bool m_enabled;
+ TQByteArray m_edid;
+ TDEResolutionList m_resolutions;
+ TQString m_portType;
+ TDEDisplayPowerLevel::TDEDisplayPowerLevel m_powerLevel;
+
+ friend class TDEHardwareDevices;
+};
+
+
+#endif // _TDEMONITORDEVICE_H
diff --git a/tdecore/tdenetworkconnections.cpp b/tdecore/tdehw/tdenetworkconnections.cpp
index 6227b095f..934c8f602 100644
--- a/tdecore/tdenetworkconnections.cpp
+++ b/tdecore/tdehw/tdenetworkconnections.cpp
@@ -19,21 +19,23 @@
#include "tdehardwaredevices.h"
#include "tdenetworkconnections.h"
-#include "config.h"
-
#include <tqtimer.h>
#include <tdelocale.h>
+#include "tdenetworkdevice.h"
// #define DEBUG_SIGNAL_QUEUE 1
+#include "config.h"
+
#ifdef WITH_NETWORK_MANAGER_BACKEND
-#include "networkbackends/network-manager/network-manager.h"
+#include "network-manager.h"
#endif // WITH_NETWORK_MANAGER_BACKEND
#define SET_BIT(x, y) (x |= 1 << y)
#define TEST_BIT(x, y) ((x & (1 << y)) >> y)
+
/*================================================================================================*/
/* TDENetworkSearchDomain */
/*================================================================================================*/
@@ -1103,4 +1105,4 @@ TDENetworkWiFiAPInfo* TDEGlobalNetworkManager::findAccessPointByBSSID(TDEMACAddr
/* End */
/*================================================================================================*/
-#include "tdenetworkconnections.moc" \ No newline at end of file
+#include "tdenetworkconnections.moc"
diff --git a/tdecore/tdenetworkconnections.h b/tdecore/tdehw/tdenetworkconnections.h
index b8425196a..b8425196a 100644
--- a/tdecore/tdenetworkconnections.h
+++ b/tdecore/tdehw/tdenetworkconnections.h
diff --git a/tdecore/tdehw/tdenetworkdevice.cpp b/tdecore/tdehw/tdenetworkdevice.cpp
new file mode 100644
index 000000000..f49eca9e6
--- /dev/null
+++ b/tdecore/tdehw/tdenetworkdevice.cpp
@@ -0,0 +1,188 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdenetworkdevice.h"
+
+// Network connection manager
+#include "tdenetworkconnections.h"
+
+#include "config.h"
+
+#ifdef WITH_NETWORK_MANAGER_BACKEND
+ #include "network-manager.h"
+#endif // WITH_NETWORK_MANAGER_BACKEND
+
+
+TDENetworkDevice::TDENetworkDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+ m_rxbytes = -1;
+ m_txbytes = -1;
+ m_rxpackets = -1;
+ m_txpackets = -1;
+ m_connectionManager = NULL;
+}
+
+TDENetworkDevice::~TDENetworkDevice() {
+ if (m_connectionManager) {
+ delete m_connectionManager;
+ }
+}
+
+TQString TDENetworkDevice::macAddress() {
+ return m_macAddress;
+}
+
+void TDENetworkDevice::internalSetMacAddress(TQString ma) {
+ m_macAddress = ma;
+}
+
+TQString TDENetworkDevice::state() {
+ return m_state;
+}
+
+void TDENetworkDevice::internalSetState(TQString st) {
+ m_state = st;
+}
+
+bool TDENetworkDevice::carrierPresent() {
+ return m_carrier;
+}
+
+void TDENetworkDevice::internalSetCarrierPresent(bool cp) {
+ m_carrier = cp;
+}
+
+bool TDENetworkDevice::dormant() {
+ return m_dormant;
+}
+
+void TDENetworkDevice::internalSetDormant(bool dm) {
+ m_dormant = dm;
+}
+
+TQString TDENetworkDevice::ipV4Address() {
+ return m_ipV4Address;
+}
+
+void TDENetworkDevice::internalSetIpV4Address(TQString ad) {
+ m_ipV4Address = ad;
+}
+
+TQString TDENetworkDevice::ipV6Address() {
+ return m_ipV6Address;
+}
+
+void TDENetworkDevice::internalSetIpV6Address(TQString ad) {
+ m_ipV6Address = ad;
+}
+
+TQString TDENetworkDevice::ipV4Netmask() {
+ return m_ipV4Netmask;
+}
+
+void TDENetworkDevice::internalSetIpV4Netmask(TQString nm) {
+ m_ipV4Netmask = nm;
+}
+
+TQString TDENetworkDevice::ipV6Netmask() {
+ return m_ipV6Netmask;
+}
+
+void TDENetworkDevice::internalSetIpV6Netmask(TQString nm) {
+ m_ipV6Netmask = nm;
+}
+
+TQString TDENetworkDevice::ipV4Broadcast() {
+ return m_ipV4Broadcast;
+}
+
+void TDENetworkDevice::internalSetIpV4Broadcast(TQString br) {
+ m_ipV4Broadcast = br;
+}
+
+TQString TDENetworkDevice::ipV6Broadcast() {
+ return m_ipV6Broadcast;
+}
+
+void TDENetworkDevice::internalSetIpV6Broadcast(TQString br) {
+ m_ipV6Broadcast = br;
+}
+
+TQString TDENetworkDevice::ipV4Destination() {
+ return m_ipV4Destination;
+}
+
+void TDENetworkDevice::internalSetIpV4Destination(TQString ds) {
+ m_ipV4Destination = ds;
+}
+
+TQString TDENetworkDevice::ipV6Destination() {
+ return m_ipV6Destination;
+}
+
+void TDENetworkDevice::internalSetIpV6Destination(TQString ds) {
+ m_ipV6Destination = ds;
+}
+
+double TDENetworkDevice::rxBytes() {
+ return m_rxbytes;
+}
+
+void TDENetworkDevice::internalSetRxBytes(double rx) {
+ m_rxbytes = rx;
+}
+
+double TDENetworkDevice::txBytes() {
+ return m_txbytes;
+}
+
+void TDENetworkDevice::internalSetTxBytes(double tx) {
+ m_txbytes = tx;
+}
+
+double TDENetworkDevice::rxPackets() {
+ return m_rxpackets;
+}
+
+void TDENetworkDevice::internalSetRxPackets(double rx) {
+ m_rxpackets = rx;
+}
+
+double TDENetworkDevice::txPackets() {
+ return m_txpackets;
+}
+
+void TDENetworkDevice::internalSetTxPackets(double tx) {
+ m_txpackets = tx;
+}
+
+TDENetworkConnectionManager* TDENetworkDevice::connectionManager() {
+#ifdef WITH_NETWORK_MANAGER_BACKEND
+ if (!m_connectionManager) {
+ m_connectionManager = new TDENetworkConnectionManager_BackendNM(m_macAddress);
+ }
+#endif // WITH_NETWORK_MANAGER_BACKEND
+
+ return m_connectionManager;
+}
+
+void TDENetworkDevice::internalSetConnectionManager(TDENetworkConnectionManager* mgr) {
+ m_connectionManager = mgr;
+}
+
+#include "tdenetworkdevice.moc"
diff --git a/tdecore/tdehw/tdenetworkdevice.h b/tdecore/tdehw/tdenetworkdevice.h
new file mode 100644
index 000000000..7b8bbf7c6
--- /dev/null
+++ b/tdecore/tdehw/tdenetworkdevice.h
@@ -0,0 +1,250 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDENETWORKDEVICE_H
+#define _TDENETWORKDEVICE_H
+
+#include "tdegenericdevice.h"
+
+class TDENetworkConnectionManager;
+
+class TDECORE_EXPORT TDENetworkDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDENetworkDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDENetworkDevice();
+
+ /**
+ * @return a TQString containing the network device's MAC address
+ */
+ TQString macAddress();
+
+ /**
+ * @return a TQString containing the network device's operational state
+ */
+ TQString state();
+
+ /**
+ * @return TRUE if carrier is present, FALSE if not
+ */
+ bool carrierPresent();
+
+ /**
+ * @return TRUE if device is dormant, FALSE if not
+ */
+ bool dormant();
+
+ /**
+ * @return a TQString containing the network device's IPv4 address
+ */
+ TQString ipV4Address();
+
+ /**
+ * @return a TQString containing the network device's IPv6 address
+ */
+ TQString ipV6Address();
+
+ /**
+ * @return a TQString containing the network device's IPv4 netmask
+ */
+ TQString ipV4Netmask();
+
+ /**
+ * @return a TQString containing the network device's IPv6 netmask
+ */
+ TQString ipV6Netmask();
+
+ /**
+ * @return a TQString containing the network device's IPv4 broadcast
+ */
+ TQString ipV4Broadcast();
+
+ /**
+ * @return a TQString containing the network device's IPv6 broadcast
+ */
+ TQString ipV6Broadcast();
+
+ /**
+ * @return a TQString containing the network device's IPv4 destination
+ */
+ TQString ipV4Destination();
+
+ /**
+ * @return a TQString containing the network device's IPv6 destination
+ */
+ TQString ipV6Destination();
+
+ /**
+ * @return a double with the number of received bytes, if available
+ */
+ double rxBytes();
+
+ /**
+ * @return a double with the number of transmitted bytes, if available
+ */
+ double txBytes();
+
+ /**
+ * @return a double with the number of received packets, if available
+ */
+ double rxPackets();
+
+ /**
+ * @return a double with the number of transmitted packets, if available
+ */
+ double txPackets();
+
+ /**
+ * @return a pointer to a TDENetworkConnectionManager object, if available
+ */
+ TDENetworkConnectionManager* connectionManager();
+
+ protected:
+ /**
+ * @param ma a TQString containing the network device's MAC address
+ * @internal
+ */
+ void internalSetMacAddress(TQString ma);
+
+ /**
+ * @param st a TQString containing the network device's operational state
+ * @internal
+ */
+ void internalSetState(TQString st);
+
+ /**
+ * @param TRUE if carrier is present, FALSE if not
+ * @internal
+ */
+ void internalSetCarrierPresent(bool cp);
+
+ /**
+ * @param TRUE if device is dormant, FALSE if not
+ * @internal
+ */
+ void internalSetDormant(bool dm);
+
+ /**
+ * @param ad a TQString containing the network device's IPv4 address
+ * @internal
+ */
+ void internalSetIpV4Address(TQString ad);
+
+ /**
+ * @param ad a TQString containing the network device's IPv6 address
+ * @internal
+ */
+ void internalSetIpV6Address(TQString ad);
+
+ /**
+ * @param nm a TQString containing the network device's IPv4 netmask
+ * @internal
+ */
+ void internalSetIpV4Netmask(TQString nm);
+
+ /**
+ * @param nm a TQString containing the network device's IPv6 netmask
+ * @internal
+ */
+ void internalSetIpV6Netmask(TQString nm);
+
+ /**
+ * @param br a TQString containing the network device's IPv4 broadcast
+ * @internal
+ */
+ void internalSetIpV4Broadcast(TQString br);
+
+ /**
+ * @param br a TQString containing the network device's IPv6 broadcast
+ * @internal
+ */
+ void internalSetIpV6Broadcast(TQString br);
+
+ /**
+ * @param ds a TQString containing the network device's IPv4 destination
+ * @internal
+ */
+ void internalSetIpV4Destination(TQString ds);
+
+ /**
+ * @param ds a TQString containing the network device's IPv6 destination
+ * @internal
+ */
+ void internalSetIpV6Destination(TQString ds);
+
+ /**
+ * @param rx a double with the number of received bytes, if available
+ * @internal
+ */
+ void internalSetRxBytes(double rx);
+
+ /**
+ * @param tx a double with the number of transmitted bytes, if available
+ * @internal
+ */
+ void internalSetTxBytes(double tx);
+
+ /**
+ * @param rx a double with the number of received packets, if available
+ * @internal
+ */
+ void internalSetRxPackets(double rx);
+
+ /**
+ * @param tx a double with the number of transmitted packets, if available
+ * @internal
+ */
+ void internalSetTxPackets(double tx);
+
+ /**
+ * @param mgr a pointer to a TDENetworkConnectionManager object, if available
+ */
+ void internalSetConnectionManager(TDENetworkConnectionManager* mgr);
+
+ private:
+ TQString m_macAddress;
+ TQString m_state;
+ bool m_carrier;
+ bool m_dormant;
+ TQString m_ipV4Address;
+ TQString m_ipV6Address;
+ TQString m_ipV4Netmask;
+ TQString m_ipV6Netmask;
+ TQString m_ipV4Broadcast;
+ TQString m_ipV6Broadcast;
+ TQString m_ipV4Destination;
+ TQString m_ipV6Destination;
+ double m_rxbytes;
+ double m_txbytes;
+ double m_rxpackets;
+ double m_txpackets;
+ TDENetworkConnectionManager* m_connectionManager;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDENETWORKDEVICE_H
diff --git a/tdecore/tdehw/tderootsystemdevice.cpp b/tdecore/tdehw/tderootsystemdevice.cpp
new file mode 100644
index 000000000..69f89df5f
--- /dev/null
+++ b/tdecore/tdehw/tderootsystemdevice.cpp
@@ -0,0 +1,442 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tderootsystemdevice.h"
+
+#include <unistd.h>
+
+#include <tqfile.h>
+
+#include <dcopclient.h>
+#include "tdeglobal.h"
+#include "tdeconfig.h"
+#include "tdeapplication.h"
+
+#include "config.h"
+
+#if defined(WITH_UPOWER) || defined(WITH_CONSOLEKIT)
+ #include <tqdbusdata.h>
+ #include <tqdbusmessage.h>
+ #include <tqdbusproxy.h>
+ #include <tqdbusvariant.h>
+ #include <tqdbusconnection.h>
+#endif // defined(WITH_UPOWER) || defined(WITH_CONSOLEKIT)
+
+TDERootSystemDevice::TDERootSystemDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+ m_hibernationSpace = -1;
+}
+
+TDERootSystemDevice::~TDERootSystemDevice() {
+}
+
+TDESystemFormFactor::TDESystemFormFactor TDERootSystemDevice::formFactor() {
+ return m_formFactor;
+}
+
+void TDERootSystemDevice::internalSetFormFactor(TDESystemFormFactor::TDESystemFormFactor ff) {
+ m_formFactor = ff;
+}
+
+TDESystemPowerStateList TDERootSystemDevice::powerStates() {
+ return m_powerStates;
+}
+
+void TDERootSystemDevice::internalSetPowerStates(TDESystemPowerStateList ps) {
+ m_powerStates = ps;
+}
+
+TDESystemHibernationMethodList TDERootSystemDevice::hibernationMethods() {
+ return m_hibernationMethods;
+}
+
+void TDERootSystemDevice::internalSetHibernationMethods(TDESystemHibernationMethodList hm) {
+ m_hibernationMethods = hm;
+}
+
+TDESystemHibernationMethod::TDESystemHibernationMethod TDERootSystemDevice::hibernationMethod() {
+ return m_hibernationMethod;
+}
+
+void TDERootSystemDevice::internalSetHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm) {
+ m_hibernationMethod = hm;
+}
+
+unsigned long TDERootSystemDevice::diskSpaceNeededForHibernation() {
+ return m_hibernationSpace;
+}
+
+void TDERootSystemDevice::internalSetDiskSpaceNeededForHibernation(unsigned long sz) {
+ m_hibernationSpace = sz;
+}
+
+bool TDERootSystemDevice::canSetHibernationMethod() {
+ TQString hibernationnode = "/sys/power/disk";
+ int rval = access (hibernationnode.ascii(), W_OK);
+ if (rval == 0) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+}
+
+bool TDERootSystemDevice::canStandby() {
+ TQString statenode = "/sys/power/state";
+ int rval = access (statenode.ascii(), W_OK);
+ if (rval == 0) {
+ if (powerStates().contains(TDESystemPowerState::Standby)) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+}
+
+bool TDERootSystemDevice::canSuspend() {
+ TQString statenode = "/sys/power/state";
+ int rval = access (statenode.ascii(), W_OK);
+ if (rval == 0) {
+ if (powerStates().contains(TDESystemPowerState::Suspend)) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+#ifdef WITH_UPOWER
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQT_DBusProxy upowerProperties("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.DBus.Properties", dbusConn);
+ if (upowerProperties.canSend()) {
+ // can suspend?
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromString(upowerProperties.interface()) << TQT_DBusData::fromString("CanSuspend");
+ TQT_DBusMessage reply = upowerProperties.sendWithReply("Get", params);
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
+ return reply[0].toVariant().value.toBool();
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+#else // WITH_UPOWER
+ return FALSE;
+#endif// WITH_UPOWER
+ }
+}
+
+bool TDERootSystemDevice::canHibernate() {
+ TQString statenode = "/sys/power/state";
+ int rval = access (statenode.ascii(), W_OK);
+ if (rval == 0) {
+ if (powerStates().contains(TDESystemPowerState::Hibernate)) {
+ return TRUE;
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+#ifdef WITH_UPOWER
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQT_DBusProxy upowerProperties("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.DBus.Properties", dbusConn);
+ if (upowerProperties.canSend()) {
+ // can hibernate?
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromString(upowerProperties.interface()) << TQT_DBusData::fromString("CanHibernate");
+ TQT_DBusMessage reply = upowerProperties.sendWithReply("Get", params);
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
+ return reply[0].toVariant().value.toBool();
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+#else // WITH_UPOWER
+ return FALSE;
+#endif// WITH_UPOWER
+ }
+}
+
+bool TDERootSystemDevice::canPowerOff() {
+ TDEConfig *config = TDEGlobal::config();
+ config->reparseConfiguration(); // config may have changed in the KControl module
+
+ config->setGroup("General" );
+ bool maysd = false;
+#ifdef WITH_CONSOLEKIT
+ if (config->readBoolEntry( "offerShutdown", true )) {
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQT_DBusProxy consoleKitManager("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", dbusConn);
+ if (consoleKitManager.canSend()) {
+ // can power off?
+ TQValueList<TQT_DBusData> params;
+ TQT_DBusMessage reply = consoleKitManager.sendWithReply("CanStop", params);
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
+ maysd = reply[0].toBool();
+ }
+ else {
+ maysd = false;
+ }
+ }
+ else {
+ maysd = false;
+ }
+ }
+ else {
+ maysd = false;
+ }
+ }
+#else // WITH_CONSOLEKIT
+ // FIXME
+ // Can we power down this system?
+ // This should probably be checked via DCOP and therefore interface with KDM
+ if (config->readBoolEntry( "offerShutdown", true )/* && DM().canShutdown()*/) { // FIXME
+ maysd = true;
+ }
+#endif // WITH_CONSOLEKIT
+
+ return maysd;
+}
+
+bool TDERootSystemDevice::canReboot() {
+ TDEConfig *config = TDEGlobal::config();
+ config->reparseConfiguration(); // config may have changed in the KControl module
+
+ config->setGroup("General" );
+ bool mayrb = false;
+#ifdef WITH_CONSOLEKIT
+ if (config->readBoolEntry( "offerShutdown", true )) {
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQT_DBusProxy consoleKitManager("org.freedesktop.ConsoleKit", "/org/freedesktop/ConsoleKit/Manager", "org.freedesktop.ConsoleKit.Manager", dbusConn);
+ if (consoleKitManager.canSend()) {
+ // can reboot?
+ TQValueList<TQT_DBusData> params;
+ TQT_DBusMessage reply = consoleKitManager.sendWithReply("CanRestart", params);
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
+ mayrb = reply[0].toBool();
+ }
+ else {
+ mayrb = false;
+ }
+ }
+ else {
+ mayrb = false;
+ }
+ }
+ else {
+ mayrb = false;
+ }
+ }
+#else // WITH_CONSOLEKIT
+ // FIXME
+ // Can we power down this system?
+ // This should probably be checked via DCOP and therefore interface with KDM
+ if (config->readBoolEntry( "offerShutdown", true )/* && DM().canShutdown()*/) { // FIXME
+ mayrb = true;
+ }
+#endif // WITH_CONSOLEKIT
+
+ return mayrb;
+}
+
+void TDERootSystemDevice::setHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm) {
+ TQString hibernationnode = "/sys/power/disk";
+ TQFile file( hibernationnode );
+ if ( file.open( IO_WriteOnly ) ) {
+ TQString hibernationCommand;
+ if (hm == TDESystemHibernationMethod::Platform) {
+ hibernationCommand = "platform";
+ }
+ if (hm == TDESystemHibernationMethod::Shutdown) {
+ hibernationCommand = "shutdown";
+ }
+ if (hm == TDESystemHibernationMethod::Reboot) {
+ hibernationCommand = "reboot";
+ }
+ if (hm == TDESystemHibernationMethod::TestProc) {
+ hibernationCommand = "testproc";
+ }
+ if (hm == TDESystemHibernationMethod::Test) {
+ hibernationCommand = "test";
+ }
+ TQTextStream stream( &file );
+ stream << hibernationCommand;
+ file.close();
+ }
+}
+
+bool TDERootSystemDevice::setPowerState(TDESystemPowerState::TDESystemPowerState ps) {
+ if ((ps == TDESystemPowerState::Standby) || (ps == TDESystemPowerState::Suspend) || (ps == TDESystemPowerState::Hibernate)) {
+ TQString statenode = "/sys/power/state";
+ TQFile file( statenode );
+ if ( file.open( IO_WriteOnly ) ) {
+ TQString powerCommand;
+ if (ps == TDESystemPowerState::Standby) {
+ powerCommand = "standby";
+ }
+ if (ps == TDESystemPowerState::Suspend) {
+ powerCommand = "mem";
+ }
+ if (ps == TDESystemPowerState::Hibernate) {
+ powerCommand = "disk";
+ }
+ TQTextStream stream( &file );
+ stream << powerCommand;
+ file.close();
+ return true;
+ }
+ else {
+#ifdef WITH_UPOWER
+ TQT_DBusConnection dbusConn;
+ dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if ( dbusConn.isConnected() ) {
+ if (ps == TDESystemPowerState::Suspend) {
+ TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
+ "org.freedesktop.UPower",
+ "/org/freedesktop/UPower",
+ "org.freedesktop.UPower",
+ "Suspend");
+ dbusConn.sendWithReply(msg);
+ return true;
+ }
+ else if (ps == TDESystemPowerState::Hibernate) {
+ TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
+ "org.freedesktop.UPower",
+ "/org/freedesktop/UPower",
+ "org.freedesktop.UPower",
+ "Hibernate");
+ dbusConn.sendWithReply(msg);
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ return false;
+ }
+#else // WITH_UPOWER
+ return false;
+#endif // WITH_UPOWER
+ }
+ }
+ else if (ps == TDESystemPowerState::PowerOff) {
+#ifdef WITH_CONSOLEKIT
+ TDEConfig *config = TDEGlobal::config();
+ config->reparseConfiguration(); // config may have changed in the KControl module
+ config->setGroup("General" );
+ if (config->readBoolEntry( "offerShutdown", true )) {
+ TQT_DBusConnection dbusConn;
+ dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if ( dbusConn.isConnected() ) {
+ TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
+ "org.freedesktop.ConsoleKit",
+ "/org/freedesktop/ConsoleKit/Manager",
+ "org.freedesktop.ConsoleKit.Manager",
+ "Stop");
+ dbusConn.sendWithReply(msg);
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ return false;
+ }
+#else // WITH_CONSOLEKIT
+ // Power down the system using a DCOP command
+ // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387
+ TQByteArray data;
+ TQDataStream arg(data, IO_WriteOnly);
+ arg << (int)0 << (int)2 << (int)2;
+ if ( kapp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data) ) {
+ return true;
+ }
+ return false;
+#endif // WITH_CONSOLEKIT
+ }
+ else if (ps == TDESystemPowerState::Reboot) {
+#ifdef WITH_CONSOLEKIT
+ TDEConfig *config = TDEGlobal::config();
+ config->reparseConfiguration(); // config may have changed in the KControl module
+ config->setGroup("General" );
+ if (config->readBoolEntry( "offerShutdown", true )) {
+ TQT_DBusConnection dbusConn;
+ dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if ( dbusConn.isConnected() ) {
+ TQT_DBusMessage msg = TQT_DBusMessage::methodCall(
+ "org.freedesktop.ConsoleKit",
+ "/org/freedesktop/ConsoleKit/Manager",
+ "org.freedesktop.ConsoleKit.Manager",
+ "Restart");
+ dbusConn.sendWithReply(msg);
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ return false;
+ }
+#else // WITH_CONSOLEKIT
+ // Power down the system using a DCOP command
+ // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387
+ TQByteArray data;
+ TQDataStream arg(data, IO_WriteOnly);
+ arg << (int)0 << (int)1 << (int)2;
+ if ( kapp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data) ) {
+ return true;
+ }
+ return false;
+#endif // WITH_CONSOLEKIT
+ }
+ else if (ps == TDESystemPowerState::Active) {
+ // Ummm...we're already active...
+ return true;
+ }
+
+ return false;
+}
+
+#include "tderootsystemdevice.moc"
diff --git a/tdecore/tdehw/tderootsystemdevice.h b/tdecore/tdehw/tderootsystemdevice.h
new file mode 100644
index 000000000..1c94fe1eb
--- /dev/null
+++ b/tdecore/tdehw/tderootsystemdevice.h
@@ -0,0 +1,182 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDEROOTSYSTEMDEVICE_H
+#define _TDEROOTSYSTEMDEVICE_H
+
+#include "tdegenericdevice.h"
+#include "tdehwcommontypes.h"
+
+namespace TDESystemFormFactor {
+enum TDESystemFormFactor {
+ Unclassified,
+ Desktop,
+ Laptop,
+ Server,
+ Other = 0x80000000
+};
+};
+
+namespace TDESystemPowerState {
+enum TDESystemPowerState {
+ Active,
+ Standby,
+ Suspend,
+ Hibernate,
+ PowerOff,
+ Reboot
+};
+};
+
+namespace TDESystemHibernationMethod {
+enum TDESystemHibernationMethod {
+ Unsupported,
+ Platform,
+ Shutdown,
+ Reboot,
+ TestProc,
+ Test
+};
+};
+
+typedef TQValueList<TDESystemPowerState::TDESystemPowerState> TDESystemPowerStateList;
+typedef TQValueList<TDESystemHibernationMethod::TDESystemHibernationMethod> TDESystemHibernationMethodList;
+
+class TDECORE_EXPORT TDERootSystemDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDERootSystemDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDERootSystemDevice();
+
+ /**
+ * @return a TDESystemFormFactor::TDESystemFormFactor with the system's form factor
+ */
+ TDESystemFormFactor::TDESystemFormFactor formFactor();
+
+ /**
+ * @return a TDESystemPowerStateList with all available power states
+ */
+ TDESystemPowerStateList powerStates();
+
+ /**
+ * @return a TDESystemHibernationMethodList with all available hibernation methods
+ */
+ TDESystemHibernationMethodList hibernationMethods();
+
+ /**
+ * @return a TDESystemHibernationMethod::TDESystemHibernationMethod with the current hibernation method
+ */
+ TDESystemHibernationMethod::TDESystemHibernationMethod hibernationMethod();
+
+ /**
+ * @return an unsigned long with the number of bytes required to hibernate
+ */
+ unsigned long diskSpaceNeededForHibernation();
+
+ /**
+ * @return TRUE if permissions allow the hibernation method to be set, FALSE if not
+ */
+ bool canSetHibernationMethod();
+
+ /**
+ * @return TRUE if hardware and permissions allow the system to enter standby, FALSE if not
+ */
+ bool canStandby();
+
+ /**
+ * @return TRUE if hardware and permissions allow the system to be suspended, FALSE if not
+ */
+ bool canSuspend();
+
+ /**
+ * @return TRUE if hardware and permissions allow the system to be hibernated, FALSE if not
+ */
+ bool canHibernate();
+
+ /**
+ * @return TRUE if permissions allow the system to be powered down, FALSE if not
+ */
+ bool canPowerOff();
+
+ /**
+ * @return TRUE if permissions allow the system to be rebooted, FALSE if not
+ */
+ bool canReboot();
+
+ /**
+ * @param hm a TDESystemHibernationMethod::TDESystemHibernationMethod with the desired hibernation method
+ */
+ void setHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm);
+
+ /**
+ * @param ps a TDESystemPowerState::TDESystemPowerState with the desired power state
+ * @return TRUE if power state was set
+ */
+ bool setPowerState(TDESystemPowerState::TDESystemPowerState ps);
+
+ protected:
+ /**
+ * @param ff a TDESystemFormFactor::TDESystemFormFactor with the system's form factor
+ * @internal
+ */
+ void internalSetFormFactor(TDESystemFormFactor::TDESystemFormFactor ff);
+
+ /**
+ * @param ps a TDESystemPowerStateList with all available power states
+ * @internal
+ */
+ void internalSetPowerStates(TDESystemPowerStateList ps);
+
+ /**
+ * @param hm a TDESystemHibernationMethodList with all available hibernation methods
+ * @internal
+ */
+ void internalSetHibernationMethods(TDESystemHibernationMethodList hm);
+
+ /**
+ * @param hm a TDESystemHibernationMethod::TDESystemHibernationMethod with the current hibernation method
+ * @internal
+ */
+ void internalSetHibernationMethod(TDESystemHibernationMethod::TDESystemHibernationMethod hm);
+
+ /**
+ * @param sz an unsigned long with the number of bytes required to hibernate
+ * @internal
+ */
+ void internalSetDiskSpaceNeededForHibernation(unsigned long sz);
+
+ private:
+ TDESystemFormFactor::TDESystemFormFactor m_formFactor;
+ TDESystemPowerStateList m_powerStates;
+ TDESystemHibernationMethodList m_hibernationMethods;
+ TDESystemHibernationMethod::TDESystemHibernationMethod m_hibernationMethod;
+ unsigned long m_hibernationSpace;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDEROOTSYSTEMDEVICE_H
diff --git a/tdecore/tdehw/tdesensordevice.cpp b/tdecore/tdehw/tdesensordevice.cpp
new file mode 100644
index 000000000..11c8b65bf
--- /dev/null
+++ b/tdecore/tdehw/tdesensordevice.cpp
@@ -0,0 +1,47 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdesensordevice.h"
+
+#include "config.h"
+
+TDESensorCluster::TDESensorCluster() {
+ label = TQString::null;
+ current = -1;
+ minimum = -1;
+ maximum = -1;
+ warning = -1;
+ critical = -1;
+}
+
+TDESensorDevice::TDESensorDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
+}
+
+TDESensorDevice::~TDESensorDevice() {
+}
+
+TDESensorClusterMap TDESensorDevice::values() {
+ return m_sensorValues;
+}
+
+void TDESensorDevice::internalSetValues(TDESensorClusterMap cl) {
+ m_sensorValues = cl;
+}
+
+#include "tdesensordevice.moc"
diff --git a/tdecore/tdehw/tdesensordevice.h b/tdecore/tdehw/tdesensordevice.h
new file mode 100644
index 000000000..fb36ca589
--- /dev/null
+++ b/tdecore/tdehw/tdesensordevice.h
@@ -0,0 +1,75 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDESENSORDEVICE_H
+#define _TDESENSORDEVICE_H
+
+#include "tdegenericdevice.h"
+
+class TDECORE_EXPORT TDESensorCluster
+{
+ public:
+ /**
+ * Constructor.
+ */
+ TDESensorCluster();
+
+ TQString label;
+ double current;
+ double minimum;
+ double maximum;
+ double warning;
+ double critical;
+};
+
+typedef TQMap<TQString, TDESensorCluster> TDESensorClusterMap;
+
+class TDECORE_EXPORT TDESensorDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDESensorDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDESensorDevice();
+
+ /**
+ * @return a TDESensorClusterMap with the current sensor values
+ */
+ TDESensorClusterMap values();
+
+ protected:
+ /**
+ * @param a TDESensorClusterMap with the current sensor values
+ * @internal
+ */
+ void internalSetValues(TDESensorClusterMap cl);
+
+ private:
+ TDESensorClusterMap m_sensorValues;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDESENSORDEVICE_H
diff --git a/tdecore/tdehw/tdestoragedevice.cpp b/tdecore/tdehw/tdestoragedevice.cpp
new file mode 100644
index 000000000..f13146b00
--- /dev/null
+++ b/tdecore/tdehw/tdestoragedevice.cpp
@@ -0,0 +1,772 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "tdestoragedevice.h"
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <linux/cdrom.h>
+
+#include <tqpixmap.h>
+#include <tqfile.h>
+
+#include "tdelocale.h"
+#include "tdeglobal.h"
+#include "kiconloader.h"
+#include "tdetempfile.h"
+
+#include "tdehardwaredevices.h"
+
+#include "config.h"
+
+// uDisks2 integration
+#if defined(WITH_UDISKS) || defined(WITH_UDISKS2)
+ #include <tqdbusdata.h>
+ #include <tqdbusmessage.h>
+ #include <tqdbusproxy.h>
+ #include <tqdbusvariant.h>
+ #include <tqdbusconnection.h>
+ #include <tqdbuserror.h>
+ #include <tqdbusdatamap.h>
+ #include <tqdbusobjectpath.h>
+#endif // defined(WITH_UDISKS) || defined(WITH_UDISKS2)
+#if defined(WITH_UDISKS)
+ #include "tqdbusdatalist.h"
+#endif // ddefined(WITH_UDISKS)
+
+TDEStorageDevice::TDEStorageDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn), m_mediaInserted(true) {
+ m_diskType = TDEDiskDeviceType::Null;
+ m_diskStatus = TDEDiskDeviceStatus::Null;
+}
+
+TDEStorageDevice::~TDEStorageDevice() {
+}
+
+TDEDiskDeviceType::TDEDiskDeviceType TDEStorageDevice::diskType() {
+ return m_diskType;
+}
+
+void TDEStorageDevice::internalSetDiskType(TDEDiskDeviceType::TDEDiskDeviceType dt) {
+ m_diskType = dt;
+}
+
+bool TDEStorageDevice::isDiskOfType(TDEDiskDeviceType::TDEDiskDeviceType tf) {
+ return ((m_diskType&tf)!=TDEDiskDeviceType::Null);
+}
+
+TDEDiskDeviceStatus::TDEDiskDeviceStatus TDEStorageDevice::diskStatus() {
+ return m_diskStatus;
+}
+
+void TDEStorageDevice::internalSetDiskStatus(TDEDiskDeviceStatus::TDEDiskDeviceStatus st) {
+ m_diskStatus = st;
+}
+
+bool TDEStorageDevice::checkDiskStatus(TDEDiskDeviceStatus::TDEDiskDeviceStatus sf) {
+ return ((m_diskStatus&sf)!=(TDEDiskDeviceStatus::TDEDiskDeviceStatus)0);
+}
+
+bool TDEStorageDevice::lockDriveMedia(bool lock) {
+ int fd = open(deviceNode().ascii(), O_RDWR | O_NONBLOCK);
+ if (fd < 0) {
+ return false;
+ }
+ if (ioctl(fd, CDROM_LOCKDOOR, (lock)?1:0) != 0) {
+ close(fd);
+ return false;
+ }
+ else {
+ close(fd);
+ return true;
+ }
+}
+
+bool ejectDriveUDisks(TDEStorageDevice* sdevice) {
+#ifdef WITH_UDISKS
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQString blockDeviceString = sdevice->deviceNode();
+ blockDeviceString.replace("/dev/", "");
+ blockDeviceString = "/org/freedesktop/UDisks/devices/" + blockDeviceString;
+
+ // Eject the drive!
+ TQT_DBusError error;
+ TQT_DBusProxy driveControl("org.freedesktop.UDisks", blockDeviceString, "org.freedesktop.UDisks.Device", dbusConn);
+ if (driveControl.canSend()) {
+ TQValueList<TQT_DBusData> params;
+ TQT_DBusDataList options;
+ params << TQT_DBusData::fromList(options);
+ TQT_DBusMessage reply = driveControl.sendWithReply("DriveEject", params, &error);
+ if (error.isValid()) {
+ // Error!
+ printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
+ return FALSE;
+ }
+ else {
+ return TRUE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+#else // WITH_UDISKS
+ return FALSE;
+#endif // WITH_UDISKS
+}
+
+bool ejectDriveUDisks2(TDEStorageDevice* sdevice) {
+#ifdef WITH_UDISKS2
+ TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
+ if (dbusConn.isConnected()) {
+ TQString blockDeviceString = sdevice->deviceNode();
+ blockDeviceString.replace("/dev/", "");
+ blockDeviceString = "/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
+ TQT_DBusProxy hardwareControl("org.freedesktop.UDisks2", blockDeviceString, "org.freedesktop.DBus.Properties", dbusConn);
+ if (hardwareControl.canSend()) {
+ // get associated udisks2 drive path
+ TQT_DBusError error;
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromString("org.freedesktop.UDisks2.Block") << TQT_DBusData::fromString("Drive");
+ TQT_DBusMessage reply = hardwareControl.sendWithReply("Get", params, &error);
+ if (error.isValid()) {
+ // Error!
+ printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
+ return FALSE;
+ }
+ else {
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
+ TQT_DBusObjectPath driveObjectPath = reply[0].toVariant().value.toObjectPath();
+ if (!driveObjectPath.isValid()) {
+ return FALSE;
+ }
+
+ error = TQT_DBusError();
+ TQT_DBusProxy driveInformation("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.DBus.Properties", dbusConn);
+ // can eject?
+ TQValueList<TQT_DBusData> params;
+ params << TQT_DBusData::fromString("org.freedesktop.UDisks2.Drive") << TQT_DBusData::fromString("Ejectable");
+ TQT_DBusMessage reply = driveInformation.sendWithReply("Get", params, &error);
+ if (error.isValid()) {
+ // Error!
+ printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
+ return FALSE;
+ }
+ if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
+ bool ejectable = reply[0].toVariant().value.toBool();
+ if (!ejectable) {
+ return FALSE;
+ }
+
+ // Eject the drive!
+ TQT_DBusProxy driveControl("org.freedesktop.UDisks2", driveObjectPath, "org.freedesktop.UDisks2.Drive", dbusConn);
+ TQValueList<TQT_DBusData> params;
+ TQT_DBusDataMap<TQString> options(TQT_DBusData::Variant);
+ params << TQT_DBusData::fromStringKeyMap(options);
+ TQT_DBusMessage reply = driveControl.sendWithReply("Eject", params, &error);
+ if (error.isValid()) {
+ // Error!
+ printf("[ERROR] %s\n", error.name().ascii()); fflush(stdout);
+ return FALSE;
+ }
+ else {
+ return TRUE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+ }
+ }
+ else {
+ return FALSE;
+ }
+ }
+ else {
+ return FALSE;
+ }
+#else // WITH_UDISKS2
+ return FALSE;
+#endif // WITH_UDISKS2
+}
+
+bool TDEStorageDevice::ejectDrive() {
+ if (ejectDriveUDisks2(this)) {
+ return TRUE;
+ }
+ else {
+#ifdef WITH_UDISKS2
+ printf("[tdehwlib] Failed to eject drive '%s' via udisks2, falling back to alternate mechanism\n", deviceNode().ascii());
+#endif // WITH_UDISKS2
+ if (ejectDriveUDisks(this)) {
+ return TRUE;
+ }
+ else {
+#ifdef WITH_UDISKS
+ printf("[tdehwlib] Failed to eject drive '%s' via udisks, falling back to alternate mechanism\n", deviceNode().ascii());
+#endif // WITH_UDISKS
+ TQString command = TQString("eject -v '%1' 2>&1").arg(deviceNode());
+
+ FILE *exepipe = popen(command.ascii(), "r");
+ if (exepipe) {
+ TQString pmount_output;
+ char buffer[8092];
+ pmount_output = fgets(buffer, sizeof(buffer), exepipe);
+ int retcode = pclose(exepipe);
+ if (retcode == 0) {
+ return TRUE;
+ }
+ else {
+ printf("[tdehwlib] Failed to eject drive '%s' via 'eject' command\n", deviceNode().ascii());
+ return FALSE;
+ }
+ }
+ else {
+ printf("[tdehwlib] Failed to eject drive '%s' via 'eject' command\n", deviceNode().ascii());
+ return FALSE;
+ }
+ }
+ }
+}
+
+bool TDEStorageDevice::ejectDriveMedia() {
+ int fd = open(deviceNode().ascii(), O_RDWR | O_NONBLOCK);
+ if (fd < 0) {
+ return false;
+ }
+ if (ioctl(fd, CDROMEJECT) != 0) {
+ close(fd);
+ return false;
+ }
+ else {
+ close(fd);
+ return true;
+ }
+}
+
+TQString TDEStorageDevice::diskLabel() {
+ return m_diskName;
+}
+
+void TDEStorageDevice::internalSetDiskLabel(TQString dn) {
+ m_diskName = dn;
+}
+
+bool TDEStorageDevice::mediaInserted() {
+ return m_mediaInserted;
+}
+
+void TDEStorageDevice::internalSetMediaInserted(bool inserted) {
+ m_mediaInserted = inserted;
+}
+
+TQString TDEStorageDevice::fileSystemName() {
+ return m_fileSystemName;
+}
+
+void TDEStorageDevice::internalSetFileSystemName(TQString fn) {
+ m_fileSystemName = fn;
+}
+
+TQString TDEStorageDevice::fileSystemUsage() {
+ return m_fileSystemUsage;
+}
+
+void TDEStorageDevice::internalSetFileSystemUsage(TQString fu) {
+ m_fileSystemUsage = fu;
+}
+
+TQString TDEStorageDevice::diskUUID() {
+ return m_diskUUID;
+}
+
+void TDEStorageDevice::internalSetDiskUUID(TQString id) {
+ m_diskUUID = id;
+}
+
+TQStringList TDEStorageDevice::holdingDevices() {
+ return m_holdingDevices;
+}
+
+void TDEStorageDevice::internalSetHoldingDevices(TQStringList hd) {
+ m_holdingDevices = hd;
+}
+
+TQStringList TDEStorageDevice::slaveDevices() {
+ return m_slaveDevices;
+}
+
+void TDEStorageDevice::internalSetSlaveDevices(TQStringList sd) {
+ m_slaveDevices = sd;
+}
+
+TQString TDEStorageDevice::friendlyName() {
+ // Return the actual storage device name
+ TQString devicevendorid = vendorEncoded();
+ TQString devicemodelid = modelEncoded();
+
+ devicevendorid.replace("\\x20", " ");
+ devicemodelid.replace("\\x20", " ");
+
+ devicevendorid = devicevendorid.stripWhiteSpace();
+ devicemodelid = devicemodelid.stripWhiteSpace();
+ devicevendorid = devicevendorid.simplifyWhiteSpace();
+ devicemodelid = devicemodelid.simplifyWhiteSpace();
+
+ TQString devicename = devicevendorid + " " + devicemodelid;
+
+ devicename = devicename.stripWhiteSpace();
+ devicename = devicename.simplifyWhiteSpace();
+
+ if (devicename != "") {
+ return devicename;
+ }
+
+ if (isDiskOfType(TDEDiskDeviceType::Camera)) {
+ return TDEGenericDevice::friendlyName();
+ }
+
+ if (isDiskOfType(TDEDiskDeviceType::Floppy)) {
+ return friendlyDeviceType();
+ }
+
+ TQString label = diskLabel();
+ if (label.isNull()) {
+ if (deviceSize() > 0) {
+ if (checkDiskStatus(TDEDiskDeviceStatus::Hotpluggable)) {
+ label = i18n("%1 Removable Device").arg(deviceFriendlySize());
+ }
+ else {
+ label = i18n("%1 Fixed Storage Device").arg(deviceFriendlySize());
+ }
+ }
+ }
+
+ if (!label.isNull()) {
+ return label;
+ }
+
+ return friendlyDeviceType();
+}
+
+TQString TDEStorageDevice::friendlyDeviceType() {
+ TQString ret = i18n("Hard Disk Drive");
+
+ // Keep this in sync with TDEStorageDevice::icon(TDEIcon::StdSizes size) below
+ if (isDiskOfType(TDEDiskDeviceType::Floppy)) {
+ ret = i18n("Floppy Drive");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Optical)) {
+ ret = i18n("Optical Drive");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::CDROM)) {
+ ret = i18n("CDROM Drive");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::CDRW)) {
+ ret = i18n("CDRW Drive");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::DVDROM)) {
+ ret = i18n("DVD Drive");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::DVDRW)) {
+ ret = i18n("DVDRW Drive");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::DVDRAM)) {
+ ret = i18n("DVDRAM Drive");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Zip)) {
+ ret = i18n("Zip Drive");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Tape)) {
+ ret = i18n("Tape Drive");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Camera)) {
+ ret = i18n("Digital Camera");
+ }
+
+ if (isDiskOfType(TDEDiskDeviceType::HDD)) {
+ ret = i18n("Hard Disk Drive");
+ if (checkDiskStatus(TDEDiskDeviceStatus::Hotpluggable)) {
+ ret = i18n("Removable Storage");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::CompactFlash)) {
+ ret = i18n("Compact Flash");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::MemoryStick)) {
+ ret = i18n("Memory Stick");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::SmartMedia)) {
+ ret = i18n("Smart Media");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::SDMMC)) {
+ ret = i18n("Secure Digital");
+ }
+ }
+
+ if (isDiskOfType(TDEDiskDeviceType::RAM)) {
+ ret = i18n("Random Access Memory");
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Loop)) {
+ ret = i18n("Loop Device");
+ }
+
+ return ret;
+}
+
+TQPixmap TDEStorageDevice::icon(TDEIcon::StdSizes size) {
+ TQPixmap ret = DesktopIcon("hdd_unmount", size);
+
+ if (isDiskOfType(TDEDiskDeviceType::Floppy)) {
+ ret = DesktopIcon("3floppy_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Optical)) {
+ ret = DesktopIcon("cdrom_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::CDROM)) {
+ ret = DesktopIcon("cdrom_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::CDRW)) {
+ ret = DesktopIcon("cdwriter_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::DVDROM)) {
+ ret = DesktopIcon("dvd_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::DVDRW)) {
+ ret = DesktopIcon("dvd_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::DVDRAM)) {
+ ret = DesktopIcon("dvd_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Zip)) {
+ ret = DesktopIcon("zip_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Tape)) {
+ ret = DesktopIcon("tape_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Camera)) {
+ ret = DesktopIcon("camera_unmount");
+ }
+
+ if (isDiskOfType(TDEDiskDeviceType::HDD)) {
+ ret = DesktopIcon("hdd_unmount", size);
+ if (checkDiskStatus(TDEDiskDeviceStatus::Hotpluggable)) {
+ ret = DesktopIcon("usbpendrive_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::CompactFlash)) {
+ ret = DesktopIcon("compact_flash_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::MemoryStick)) {
+ ret = DesktopIcon("memory_stick_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::SmartMedia)) {
+ ret = DesktopIcon("smart_media_unmount", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::SDMMC)) {
+ ret = DesktopIcon("sd_mmc_unmount", size);
+ }
+ }
+
+ if (isDiskOfType(TDEDiskDeviceType::RAM)) {
+ ret = DesktopIcon("memory", size);
+ }
+ if (isDiskOfType(TDEDiskDeviceType::Loop)) {
+ ret = DesktopIcon("blockdevice", size);
+ }
+
+ return ret;
+}
+
+unsigned long long TDEStorageDevice::deviceSize() {
+ TQString bsnodename = systemPath();
+ bsnodename.append("/queue/physical_block_size");
+ TQFile bsfile( bsnodename );
+ TQString blocksize;
+ if ( bsfile.open( IO_ReadOnly ) ) {
+ TQTextStream stream( &bsfile );
+ blocksize = stream.readLine();
+ bsfile.close();
+ }
+ else {
+ // Drat, I can't get a guaranteed block size. Assume a block size of 512, as everything I have read indicates that /sys/block/<dev>/size is given in terms of a 512 byte block...
+ blocksize = "512";
+ }
+
+ TQString dsnodename = systemPath();
+ dsnodename.append("/size");
+ TQFile dsfile( dsnodename );
+ TQString devicesize;
+ if ( dsfile.open( IO_ReadOnly ) ) {
+ TQTextStream stream( &dsfile );
+ devicesize = stream.readLine();
+ dsfile.close();
+ }
+
+ return ((unsigned long long)blocksize.toULong()*(unsigned long long)devicesize.toULong());
+}
+
+TQString TDEStorageDevice::deviceFriendlySize() {
+ return TDEHardwareDevices::bytesToFriendlySizeString(deviceSize());
+}
+
+TQString TDEStorageDevice::mountPath() {
+ // See if this device node is mounted
+ // This requires parsing /proc/mounts, looking for deviceNode()
+
+ // The Device Mapper throws a monkey wrench into this
+ // It likes to advertise mounts as /dev/mapper/<something>,
+ // where <something> is listed in <system path>/dm/name
+
+ // First, ensure that all device information (mainly holders/slaves) is accurate
+ TDEGlobal::hardwareDevices()->rescanDeviceInformation(this);
+
+ TQString dmnodename = systemPath();
+ dmnodename.append("/dm/name");
+ TQFile namefile( dmnodename );
+ TQString dmaltname;
+ if ( namefile.open( IO_ReadOnly ) ) {
+ TQTextStream stream( &namefile );
+ dmaltname = stream.readLine();
+ namefile.close();
+ }
+ if (!dmaltname.isNull()) {
+ dmaltname.prepend("/dev/mapper/");
+ }
+
+ TQStringList lines;
+ TQFile file( "/proc/mounts" );
+ if ( file.open( IO_ReadOnly ) ) {
+ TQTextStream stream( &file );
+ TQString line;
+ while ( !stream.atEnd() ) {
+ line = stream.readLine();
+ TQStringList mountInfo = TQStringList::split(" ", line, true);
+ TQString testNode = *mountInfo.at(0);
+ // Check for match
+ if ((testNode == deviceNode()) || (testNode == dmaltname) || (testNode == ("/dev/disk/by-uuid/" + diskUUID()))) {
+ TQString ret = *mountInfo.at(1);
+ ret.replace("\\040", " ");
+ return ret;
+ }
+ lines += line;
+ }
+ file.close();
+ }
+
+ // While this device is not directly mounted, it could concievably be mounted via the Device Mapper
+ // If so, try to retrieve the mount path...
+ TQStringList slaveDeviceList = holdingDevices();
+ for ( TQStringList::Iterator slavedevit = slaveDeviceList.begin(); slavedevit != slaveDeviceList.end(); ++slavedevit ) {
+ // Try to locate this device path in the TDE device tree
+ TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices();
+ TDEGenericDevice *hwdevice = hwdevices->findBySystemPath(*slavedevit);
+ if ((hwdevice) && (hwdevice->type() == TDEGenericDeviceType::Disk)) {
+ TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(hwdevice);
+ return sdevice->mountPath();
+ }
+ }
+
+ return TQString::null;
+}
+
+TQString TDEStorageDevice::mountDevice(TQString mediaName, TDEStorageMountOptions mountOptions, TQString* errRet, int* retcode) {
+ int internal_retcode;
+ if (!retcode) {
+ retcode = &internal_retcode;
+ }
+
+ TQString ret = mountPath();
+
+ if (!ret.isNull()) {
+ return ret;
+ }
+
+ // Create dummy password file
+ KTempFile passwordFile(TQString::null, "tmp", 0600);
+ passwordFile.setAutoDelete(true);
+
+ TQString optionString;
+ if (mountOptions["ro"] == "true") {
+ optionString.append(" -r");
+ }
+
+ if (mountOptions["atime"] != "true") {
+ optionString.append(" -A");
+ }
+
+ if (mountOptions["utf8"] == "true") {
+ optionString.append(" -c utf8");
+ }
+
+ if (mountOptions["sync"] == "true") {
+ optionString.append(" -s");
+ }
+
+ if (mountOptions.contains("filesystem")) {
+ optionString.append(TQString(" -t %1").arg(mountOptions["filesystem"]));
+ }
+
+ if (mountOptions.contains("locale")) {
+ optionString.append(TQString(" -c %1").arg(mountOptions["locale"]));
+ }
+
+ TQString passFileName = passwordFile.name();
+ TQString devNode = deviceNode();
+ passFileName.replace("'", "'\\''");
+ devNode.replace("'", "'\\''");
+ mediaName.replace("'", "'\\''");
+ TQString command = TQString("pmount -p '%1' %2 '%3' '%4' 2>&1").arg(passFileName).arg(optionString).arg(devNode).arg(mediaName);
+
+ FILE *exepipe = popen(command.ascii(), "r");
+ if (exepipe) {
+ TQString pmount_output;
+ char buffer[8092];
+ pmount_output = fgets(buffer, sizeof(buffer), exepipe);
+ *retcode = pclose(exepipe);
+ if (errRet) {
+ *errRet = pmount_output;
+ }
+ }
+
+ // Update internal mount data
+ TDEGlobal::hardwareDevices()->processModifiedMounts();
+
+ ret = mountPath();
+
+ return ret;
+}
+
+TQString TDEStorageDevice::mountEncryptedDevice(TQString passphrase, TQString mediaName, TDEStorageMountOptions mountOptions, TQString* errRet, int* retcode) {
+ int internal_retcode;
+ if (!retcode) {
+ retcode = &internal_retcode;
+ }
+
+ TQString ret = mountPath();
+
+ if (!ret.isNull()) {
+ return ret;
+ }
+
+ // Create dummy password file
+ KTempFile passwordFile(TQString::null, "tmp", 0600);
+ passwordFile.setAutoDelete(true);
+ TQFile* pwFile = passwordFile.file();
+ if (!pwFile) {
+ return TQString::null;
+ }
+
+ pwFile->writeBlock(passphrase.ascii(), passphrase.length());
+ pwFile->flush();
+
+ TQString optionString;
+ if (mountOptions["ro"] == "true") {
+ optionString.append(" -r");
+ }
+
+ if (mountOptions["atime"] != "true") {
+ optionString.append(" -A");
+ }
+
+ if (mountOptions["utf8"] == "true") {
+ optionString.append(" -c utf8");
+ }
+
+ if (mountOptions["sync"] == "true") {
+ optionString.append(" -s");
+ }
+
+ if (mountOptions.contains("filesystem")) {
+ optionString.append(TQString(" -t %1").arg(mountOptions["filesystem"]));
+ }
+
+ if (mountOptions.contains("locale")) {
+ optionString.append(TQString(" -c %1").arg(mountOptions["locale"]));
+ }
+
+ TQString passFileName = passwordFile.name();
+ TQString devNode = deviceNode();
+ passFileName.replace("'", "'\\''");
+ devNode.replace("'", "'\\''");
+ mediaName.replace("'", "'\\''");
+ TQString command = TQString("pmount -p '%1' %2 '%3' '%4' 2>&1").arg(passFileName).arg(optionString).arg(devNode).arg(mediaName);
+
+ FILE *exepipe = popen(command.ascii(), "r");
+ if (exepipe) {
+ TQString pmount_output;
+ char buffer[8092];
+ pmount_output = fgets(buffer, sizeof(buffer), exepipe);
+ *retcode = pclose(exepipe);
+ if (errRet) {
+ *errRet = pmount_output;
+ }
+ }
+
+ // Update internal mount data
+ TDEGlobal::hardwareDevices()->processModifiedMounts();
+
+ ret = mountPath();
+
+ return ret;
+}
+
+bool TDEStorageDevice::unmountDevice(TQString* errRet, int* retcode) {
+ int internal_retcode;
+ if (!retcode) {
+ retcode = &internal_retcode;
+ }
+
+ TQString mountpoint = mountPath();
+
+ if (mountpoint.isNull()) {
+ return true;
+ }
+
+ mountpoint.replace("'", "'\\''");
+ TQString command = TQString("pumount '%1' 2>&1").arg(mountpoint);
+ FILE *exepipe = popen(command.ascii(), "r");
+ if (exepipe) {
+ TQString pmount_output;
+ char buffer[8092];
+ pmount_output = fgets(buffer, sizeof(buffer), exepipe);
+ *retcode = pclose(exepipe);
+ if (*retcode == 0) {
+ return true;
+ }
+ else {
+ if (errRet) {
+ *errRet = pmount_output;
+ }
+ }
+ }
+
+ // Update internal mount data
+ TDEGlobal::hardwareDevices()->processModifiedMounts();
+
+ return false;
+}
+
+#include "tdestoragedevice.moc"
diff --git a/tdecore/tdehw/tdestoragedevice.h b/tdecore/tdehw/tdestoragedevice.h
new file mode 100644
index 000000000..7c80f5ea5
--- /dev/null
+++ b/tdecore/tdehw/tdestoragedevice.h
@@ -0,0 +1,344 @@
+/* This file is part of the TDE libraries
+ Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ (C) 2013 Golubev Alexander <fatzer2@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TDESTORAGEDEVICE_H
+#define _TDESTORAGEDEVICE_H
+
+#include "tdegenericdevice.h"
+
+// Keep readDiskDeviceSubtypeFromString() in tdehardwaredevices.cpp in sync with this enum
+namespace TDEDiskDeviceType {
+enum TDEDiskDeviceType {
+ Null = 0x00000000,
+ MediaDevice = 0x00000001,
+ Floppy = 0x00000002,
+ CDROM = 0x00000004,
+ CDRW = 0x00000008,
+ DVDROM = 0x00000010,
+ DVDRAM = 0x00000020,
+ DVDRW = 0x00000040,
+ BDROM = 0x00000080,
+ BDRW = 0x00000100,
+ Zip = 0x00000200,
+ Jaz = 0x00000400,
+ Camera = 0x00000800,
+ LUKS = 0x00001000,
+ OtherCrypted = 0x00002000,
+ CDAudio = 0x00004000,
+ CDVideo = 0x00008000,
+ DVDVideo = 0x00010000,
+ BDVideo = 0x00020000,
+ Flash = 0x00040000,
+ USB = 0x00080000,
+ Tape = 0x00100000,
+ HDD = 0x00200000,
+ Optical = 0x00400000,
+ RAM = 0x00800000,
+ Loop = 0x01000000,
+ CompactFlash = 0x02000000,
+ MemoryStick = 0x04000000,
+ SmartMedia = 0x08000000,
+ SDMMC = 0x10000000,
+ UnlockedCrypt = 0x20000000,
+ Other = 0x80000000
+};
+
+inline TDEDiskDeviceType operator|(TDEDiskDeviceType a, TDEDiskDeviceType b)
+{
+ return static_cast<TDEDiskDeviceType>(static_cast<int>(a) | static_cast<int>(b));
+}
+
+inline TDEDiskDeviceType operator&(TDEDiskDeviceType a, TDEDiskDeviceType b)
+{
+ return static_cast<TDEDiskDeviceType>(static_cast<int>(a) & static_cast<int>(b));
+}
+
+inline TDEDiskDeviceType operator~(TDEDiskDeviceType a)
+{
+ return static_cast<TDEDiskDeviceType>(~static_cast<int>(a));
+}
+};
+
+namespace TDEDiskDeviceStatus {
+enum TDEDiskDeviceStatus {
+ Null = 0x00000000,
+ Mountable = 0x00000001,
+ Removable = 0x00000002,
+ Inserted = 0x00000004,
+ Blank = 0x00000008,
+ UsedByDevice = 0x00000010,
+ UsesDevice = 0x00000020,
+ ContainsFilesystem = 0x00000040,
+ Hotpluggable = 0x00000080,
+ Other = 0x80000000
+};
+
+inline TDEDiskDeviceStatus operator|(TDEDiskDeviceStatus a, TDEDiskDeviceStatus b)
+{
+ return static_cast<TDEDiskDeviceStatus>(static_cast<int>(a) | static_cast<int>(b));
+}
+
+inline TDEDiskDeviceStatus operator&(TDEDiskDeviceStatus a, TDEDiskDeviceStatus b)
+{
+ return static_cast<TDEDiskDeviceStatus>(static_cast<int>(a) & static_cast<int>(b));
+}
+
+inline TDEDiskDeviceStatus operator~(TDEDiskDeviceStatus a)
+{
+ return static_cast<TDEDiskDeviceStatus>(~static_cast<int>(a));
+}
+};
+
+typedef TQMap<TQString,TQString> TDEStorageMountOptions;
+
+class TDECORE_EXPORT TDEStorageDevice : public TDEGenericDevice
+{
+ public:
+ /**
+ * Constructor.
+ * @param Device type
+ */
+ TDEStorageDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
+
+ /**
+ * Destructor.
+ */
+ ~TDEStorageDevice();
+
+ /**
+ * @return a TQString with the disk or partition label, if any
+ */
+ TQString diskLabel();
+
+ /**
+ * @return a TQString with the disk UUID, if any
+ */
+ TQString diskUUID();
+
+ /**
+ * @return an OR-ed combination of TDEDiskDeviceType::TDEDiskDeviceType type flags
+ */
+ TDEDiskDeviceType::TDEDiskDeviceType diskType();
+
+ /**
+ * @return an OR-ed combination of TDEDiskDeviceStatus::TDEDiskDeviceStatus type flags
+ */
+ TDEDiskDeviceStatus::TDEDiskDeviceStatus diskStatus();
+
+ /**
+ * @return true if media inserted, false if no media available
+ */
+ bool mediaInserted();
+
+ /**
+ * @return a TQString with the filesystem name, if any
+ */
+ TQString fileSystemName();
+
+ /**
+ * @return a TQString with the filesystem usage string, if any
+ */
+ TQString fileSystemUsage();
+
+ /**
+ * @return a TQStringList containing system paths to all devices with a lock on this device, if any
+ */
+ TQStringList holdingDevices();
+
+ /**
+ * @return a TQStringList containing system paths to all devices locked by this device, if any
+ */
+ TQStringList slaveDevices();
+
+ /**
+ * Mounts the device if not encrypted
+ *
+ * @param a TQString containing a requested mount name under /media, if desired
+ * @param a TQString containing any mount options for pmount, if desired
+ * @param a pointer to a TQString which will be populated with any error messages from pmount, if desired
+ * @param a pointer to an integer which will be populated with the return code from pmount, if desired
+ *
+ * @return a TQString with the mount path, if successful
+ */
+ TQString mountDevice(TQString mediaName=TQString::null, TDEStorageMountOptions mountOptions=TDEStorageMountOptions(), TQString* errRet=0, int* retcode=0);
+
+ /**
+ * Mounts the encrypted device if the correct passphrase is given
+ *
+ * @param a TQString containing the passphrase
+ * @param a TQString containing a requested mount name under /media, if desired
+ * @param a TQString containing any mount options for pmount, if desired
+ * @param a pointer to a TQString which will be populated with any error messages from pmount, if desired
+ * @param a pointer to an integer which will be populated with the return code from pmount, if desired
+ *
+ * @return a TQString with the mount path, if successful
+ */
+ TQString mountEncryptedDevice(TQString passphrase, TQString mediaName=TQString::null, TDEStorageMountOptions mountOptions=TDEStorageMountOptions(), TQString* errRet=0, int* retcode=0);
+
+ /**
+ * Unmounts the device
+ *
+ * @param a pointer to a TQString which will be populated with any error messages from pmount, if desired
+ * @param a pointer to an integer which will be populated with the return code from pmount, if desired
+ *
+ * @return TRUE if unmount was successful
+ */
+ bool unmountDevice(TQString* errRet, int* retcode=0);
+
+ /**
+ * @return a TQString with the mount path, if mounted
+ */
+ TQString mountPath();
+
+ /**
+ * @return an unsigned long with the device size in bytes
+ */
+ unsigned long long deviceSize();
+
+ /**
+ * @return a TQString with the device size in human readable form
+ */
+ TQString deviceFriendlySize();
+
+ /**
+ * Get an icon for this device
+ * @param size a TDEIcon::StdSizes structure specifying the desired icon size
+ * @return a TQPixmap containing the icon for the specified type
+ *
+ * This method overrides TDEGenericDevice::icon(TDEIcon::StdSizes size)
+ */
+ TQPixmap icon(TDEIcon::StdSizes size);
+
+ /**
+ * @return a TQString with a friendly name
+ *
+ * This method overrides TDEGenericDevice::friendlyName()
+ */
+ TQString friendlyName();
+
+ /**
+ * @return a TQString containing the friendly type name
+ *
+ * This method overrides TDEGenericDevice::friendlyDeviceType()
+ */
+ TQString friendlyDeviceType();
+
+ /**
+ * @param an OR-ed combination of TDEDiskDeviceType::TDEDiskDeviceType type flags
+ */
+ bool isDiskOfType(TDEDiskDeviceType::TDEDiskDeviceType tf);
+
+ /**
+ * @param an OR-ed combination of TDEDiskDeviceStatus::TDEDiskDeviceStatus type flags
+ */
+ bool checkDiskStatus(TDEDiskDeviceStatus::TDEDiskDeviceStatus sf);
+
+ /**
+ * @param TRUE to engage media lock, FALSE to disable it
+ * @return TRUE on success, FALSE on failure
+ *
+ * This method currently works on CD-ROM drives and similar devices
+ */
+ bool lockDriveMedia(bool lock);
+
+ /**
+ * @return TRUE on success, FALSE on failure
+ *
+ * This method currently works on CD-ROM drives and similar devices
+ */
+ bool ejectDriveMedia();
+
+ /**
+ * @return TRUE on success, FALSE on failure
+ *
+ * This method currently works on all removable storage devices
+ */
+ bool ejectDrive();
+
+ protected:
+ /**
+ * @param a TQString with the disk or partition label, if any
+ * @internal
+ */
+ void internalSetDiskLabel(TQString dn);
+
+ /**
+ * @param a TQString with the disk UUID, if any
+ * @internal
+ */
+ void internalSetDiskUUID(TQString id);
+
+ /**
+ * @param an OR-ed combination of TDEDiskDeviceType::TDEDiskDeviceType type flags
+ * @internal
+ */
+ void internalSetDiskType(TDEDiskDeviceType::TDEDiskDeviceType tf);
+
+ /**
+ * @param an OR-ed combination of TDEDiskDeviceStatus::TDEDiskDeviceStatus type flags
+ * @internal
+ */
+ void internalSetDiskStatus(TDEDiskDeviceStatus::TDEDiskDeviceStatus st);
+
+ /**
+ * @param a bool with the media status
+ * @internal
+ */
+ void internalSetMediaInserted(bool inserted);
+
+ /**
+ * @param a TQString with the filesystem name, if any
+ * @internal
+ */
+ void internalSetFileSystemName(TQString fn);
+
+ /**
+ * @param a TQString with the filesystem usage string, if any
+ * @internal
+ */
+ void internalSetFileSystemUsage(TQString fu);
+
+ /**
+ * @param a TQStringList containing system paths to all devices with a lock on this device, if any
+ * @internal
+ */
+ void internalSetHoldingDevices(TQStringList hd);
+
+ /**
+ * @param a TQStringList containing system paths to all devices locked by this device, if any
+ * @internal
+ */
+ void internalSetSlaveDevices(TQStringList sd);
+
+ private:
+ TDEDiskDeviceType::TDEDiskDeviceType m_diskType;
+ TDEDiskDeviceStatus::TDEDiskDeviceStatus m_diskStatus;
+ TQString m_diskName;
+ TQString m_diskUUID;
+ TQString m_fileSystemName;
+ TQString m_fileSystemUsage;
+ bool m_mediaInserted;
+ TQString m_mountPath;
+ TQStringList m_holdingDevices;
+ TQStringList m_slaveDevices;
+
+ friend class TDEHardwareDevices;
+};
+
+#endif // _TDESTORAGEDEVICE_H