• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdecore
 

tdecore

tdegenericdevice.cpp
00001 /* This file is part of the TDE libraries
00002    Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
00003              (C) 2013 Golubev Alexander <fatzer2@gmail.com>
00004 
00005    This library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Library General Public
00007    License version 2 as published by the Free Software Foundation.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017    Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #include "tdegenericdevice.h"
00021 
00022 #include <tqpixmap.h>
00023 
00024 #include "tdeglobal.h" 
00025 #include "tdelocale.h" 
00026 
00027 #include "tdehardwaredevices.h" 
00028 
00029 #include "config.h"
00030 
00031 TDEGenericDevice::TDEGenericDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TQObject() {
00032     m_deviceType = dt;
00033     m_deviceName = dn;
00034 
00035     m_parentDevice = 0;
00036     m_friendlyName = TQString::null;
00037     m_blacklistedForUpdate = false;
00038 }
00039 
00040 TDEGenericDevice::~TDEGenericDevice() {
00041 }
00042 
00043 TDEGenericDeviceType::TDEGenericDeviceType TDEGenericDevice::type() {
00044     return m_deviceType;
00045 }
00046 
00047 TQString TDEGenericDevice::name() {
00048     return m_deviceName;
00049 }
00050 
00051 void TDEGenericDevice::internalSetName(TQString dn) {
00052     m_deviceName = dn;
00053 }
00054 
00055 TQString TDEGenericDevice::vendorName() {
00056     return m_vendorName;
00057 }
00058 
00059 void TDEGenericDevice::internalSetVendorName(TQString vn) {
00060     m_vendorName = vn;
00061 }
00062 
00063 TQString TDEGenericDevice::vendorModel() {
00064     return m_vendorModel;
00065 }
00066 
00067 void TDEGenericDevice::internalSetVendorModel(TQString vm) {
00068     m_vendorModel = vm;
00069 }
00070 
00071 TQString TDEGenericDevice::serialNumber() {
00072     return m_serialNumber;
00073 }
00074 
00075 void TDEGenericDevice::internalSetSerialNumber(TQString sn) {
00076     m_serialNumber = sn;
00077 }
00078 
00079 TQString TDEGenericDevice::systemPath() {
00080     if (!m_systemPath.endsWith("/")) {
00081         m_systemPath += "/";
00082     }
00083     return m_systemPath;
00084 }
00085 
00086 void TDEGenericDevice::internalSetSystemPath(TQString sp) {
00087     m_systemPath = sp;
00088 }
00089 
00090 TQString TDEGenericDevice::deviceNode() {
00091     return m_deviceNode;
00092 }
00093 
00094 void TDEGenericDevice::internalSetDeviceNode(TQString sn) {
00095     m_deviceNode = sn;
00096 }
00097 
00098 TQString TDEGenericDevice::deviceBus() {
00099     return m_deviceBus;
00100 }
00101 
00102 void TDEGenericDevice::internalSetDeviceBus(TQString db) {
00103     m_deviceBus = db;
00104 }
00105 
00106 TQString TDEGenericDevice::uniqueID() {
00107     m_uniqueID = m_systemPath+m_deviceNode;
00108     return m_uniqueID;
00109 }
00110 
00111 TQString TDEGenericDevice::vendorID() {
00112     return m_vendorID;
00113 }
00114 
00115 void TDEGenericDevice::internalSetVendorID(TQString id) {
00116     m_vendorID = id;
00117     m_vendorID.replace("0x", "");
00118 }
00119 
00120 TQString TDEGenericDevice::modelID() {
00121     return m_modelID;
00122 }
00123 
00124 void TDEGenericDevice::internalSetModelID(TQString id) {
00125     m_modelID = id;
00126     m_modelID.replace("0x", "");
00127 }
00128 
00129 TQString TDEGenericDevice::vendorEncoded() {
00130     return m_vendorenc;
00131 }
00132 
00133 void TDEGenericDevice::internalSetVendorEncoded(TQString id) {
00134     m_vendorenc = id;
00135 }
00136 
00137 TQString TDEGenericDevice::modelEncoded() {
00138     return m_modelenc;
00139 }
00140 
00141 void TDEGenericDevice::internalSetModelEncoded(TQString id) {
00142     m_modelenc = id;
00143 }
00144 
00145 TQString TDEGenericDevice::subVendorID() {
00146     return m_subvendorID;
00147 }
00148 
00149 void TDEGenericDevice::internalSetSubVendorID(TQString id) {
00150     m_subvendorID = id;
00151     m_subvendorID.replace("0x", "");
00152 }
00153 
00154 TQString TDEGenericDevice::PCIClass() {
00155     return m_pciClass;
00156 }
00157 
00158 void TDEGenericDevice::internalSetPCIClass(TQString cl) {
00159     m_pciClass = cl;
00160     m_pciClass.replace("0x", "");
00161 }
00162 
00163 TQString TDEGenericDevice::moduleAlias() {
00164     return m_modAlias;
00165 }
00166 
00167 void TDEGenericDevice::internalSetModuleAlias(TQString ma) {
00168     m_modAlias = ma;
00169 }
00170 
00171 TQString TDEGenericDevice::deviceDriver() {
00172     return m_deviceDriver;
00173 }
00174 
00175 void TDEGenericDevice::internalSetDeviceDriver(TQString dr) {
00176     m_deviceDriver = dr;
00177 }
00178 
00179 TQString TDEGenericDevice::subsystem() {
00180     return m_subsystem;
00181 }
00182 
00183 void TDEGenericDevice::internalSetSubsystem(TQString ss) {
00184     m_subsystem = ss;
00185 }
00186 
00187 TQString TDEGenericDevice::subModelID() {
00188     return m_submodelID;
00189 }
00190 
00191 void TDEGenericDevice::internalSetSubModelID(TQString id) {
00192     m_submodelID = id;
00193     m_submodelID.replace("0x", "");
00194 }
00195 
00196 void TDEGenericDevice::internalSetParentDevice(TDEGenericDevice* pd) {
00197     m_parentDevice = pd;
00198 }
00199 
00200 TDEGenericDevice* TDEGenericDevice::parentDevice() {
00201     return m_parentDevice;
00202 }
00203 
00204 TQPixmap TDEGenericDevice::icon(TDEIcon::StdSizes size) {
00205     return TDEGlobal::hardwareDevices()->getDeviceTypeIconFromType(type(), size);
00206 }
00207 
00208 bool TDEGenericDevice::blacklistedForUpdate() {
00209     return m_blacklistedForUpdate;
00210 }
00211 
00212 void TDEGenericDevice::internalSetBlacklistedForUpdate(bool bl) {
00213     m_blacklistedForUpdate = bl;
00214 }
00215 
00216 TQString TDEGenericDevice::friendlyDeviceType() {
00217     return TDEGlobal::hardwareDevices()->getFriendlyDeviceTypeStringFromType(type());
00218 }
00219 
00220 TQString TDEGenericDevice::busID() {
00221     TQString busid = m_systemPath;
00222     busid = busid.remove(0, busid.findRev("/")+1);
00223     busid = busid.remove(0, busid.find(":")+1);
00224     return busid;
00225 }
00226 
00227 TQString TDEGenericDevice::friendlyName() {
00228     if (m_friendlyName.isNull()) {
00229         if (type() == TDEGenericDeviceType::RootSystem) {
00230             m_friendlyName = "Linux System";
00231         }
00232         else if (type() == TDEGenericDeviceType::Root) {
00233             TQString friendlyDriverName = systemPath();
00234             friendlyDriverName.truncate(friendlyDriverName.length()-1);
00235             friendlyDriverName.remove(0, friendlyDriverName.findRev("/")+1);
00236             m_friendlyName = friendlyDriverName;
00237         }
00238         else if (m_modAlias.lower().startsWith("pci")) {
00239             m_friendlyName = TDEGlobal::hardwareDevices()->findPCIDeviceName(m_vendorID, m_modelID, m_subvendorID, m_submodelID);
00240         }
00241         else if (m_modAlias.lower().startsWith("usb")) {
00242             m_friendlyName = TDEGlobal::hardwareDevices()->findUSBDeviceName(m_vendorID, m_modelID, m_subvendorID, m_submodelID);
00243         }
00244         else {
00245             TQString acpigentype = systemPath();
00246             acpigentype.truncate(acpigentype.length()-1);
00247             acpigentype.remove(0, acpigentype.findRev("/")+1);
00248             TQString pnpgentype = acpigentype;
00249             pnpgentype.truncate(pnpgentype.find(":"));
00250             if (pnpgentype.startsWith("PNP")) {
00251                 m_friendlyName = TDEGlobal::hardwareDevices()->findPNPDeviceName(pnpgentype);
00252             }
00253             else if (acpigentype.startsWith("device:")) {
00254                 acpigentype.remove(0, acpigentype.findRev(":")+1);
00255                 acpigentype.prepend("0x");
00256                 m_friendlyName = i18n("ACPI Node %1").arg(acpigentype.toUInt(0,0));
00257             }
00258         }
00259     }
00260 
00261     if (m_friendlyName.isNull()) {
00262         // Could not identify based on model/vendor codes
00263         // Try to construct something from the model/vendor strings if they are available
00264         if (!m_vendorName.isNull() && !m_vendorModel.isNull()) {
00265             m_friendlyName = m_vendorName + " " + m_vendorModel;
00266         }
00267     }
00268 
00269     if (m_friendlyName.isNull()) {
00270         // Could not identify based on model/vendor
00271         // Guess by type
00272         if (type() == TDEGenericDeviceType::CPU) {
00273             m_friendlyName = name();
00274         }
00275         else if (type() == TDEGenericDeviceType::Event) {
00276             if (m_systemPath.contains("PNP0C0D")) {
00277                 m_friendlyName = i18n("ACPI Lid Switch");
00278             }
00279             else if (m_systemPath.contains("PNP0C0E") || m_systemPath.contains("/LNXSLPBN")) {
00280                 m_friendlyName = i18n("ACPI Sleep Button");
00281             }
00282             else if (m_systemPath.contains("PNP0C0C") || m_systemPath.contains("/LNXPWRBN")) {
00283                 m_friendlyName = i18n("ACPI Power Button");
00284             }
00285             else if (m_parentDevice) {
00286                 // Use parent node name
00287                 return m_parentDevice->friendlyName();
00288             }
00289             else {
00290                 m_friendlyName = i18n("Generic Event Device");
00291             }
00292         }
00293         else if (type() == TDEGenericDeviceType::Input) {
00294             if (m_systemPath.contains("PNP0C0D")) {
00295                 m_friendlyName = i18n("ACPI Lid Switch");
00296             }
00297             else if (m_systemPath.contains("PNP0C0E") || m_systemPath.contains("/LNXSLPBN")) {
00298                 m_friendlyName = i18n("ACPI Sleep Button");
00299             }
00300             else if (m_systemPath.contains("PNP0C0C") || m_systemPath.contains("/LNXPWRBN")) {
00301                 m_friendlyName = i18n("ACPI Power Button");
00302             }
00303             else if (m_parentDevice) {
00304                 // Use parent node name
00305                 return m_parentDevice->friendlyName();
00306             }
00307             else {
00308                 m_friendlyName = i18n("Generic Input Device");
00309             }
00310         }
00311         // Guess by driver
00312         else if (!m_deviceDriver.isNull()) {
00313             TQString friendlyDriverName = m_deviceDriver.lower();
00314             friendlyDriverName[0] = friendlyDriverName[0].upper();
00315             m_friendlyName = i18n("Generic %1 Device").arg(friendlyDriverName);
00316         }
00317         else if (m_systemPath.lower().startsWith("/sys/devices/virtual")) {
00318             TQString friendlyDriverName = systemPath();
00319             friendlyDriverName.truncate(friendlyDriverName.length()-1);
00320             friendlyDriverName.remove(0, friendlyDriverName.findRev("/")+1);
00321             if (!friendlyDriverName.isNull()) {
00322                 m_friendlyName = i18n("Virtual Device %1").arg(friendlyDriverName);
00323             }
00324             else {
00325                 m_friendlyName = i18n("Unknown Virtual Device");
00326             }
00327         }
00328         else {
00329             // I really have no idea what this peripheral is; say so!
00330             m_friendlyName = i18n("Unknown Device") + " " + name();
00331         }
00332     }
00333 
00334     return m_friendlyName;
00335 }
00336 
00337 TQString TDEGenericDevice::detailedFriendlyName() {
00338     return friendlyName();
00339 }
00340 
00341 #include "tdegenericdevice.moc"

tdecore

Skip menu "tdecore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdecore

Skip menu "tdecore"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdecore by doxygen 1.7.6.1
This website is maintained by Timothy Pearson.