tdecore
tdegenericdevice.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
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
00263
00264 if (!m_vendorName.isNull() && !m_vendorModel.isNull()) {
00265 m_friendlyName = m_vendorName + " " + m_vendorModel;
00266 }
00267 }
00268
00269 if (m_friendlyName.isNull()) {
00270
00271
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
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
00305 return m_parentDevice->friendlyName();
00306 }
00307 else {
00308 m_friendlyName = i18n("Generic Input Device");
00309 }
00310 }
00311
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
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"