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

tdecore

  • tdecore
  • tdehw
tdegenericdevice.cpp
1/* This file is part of the TDE libraries
2 Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
3 (C) 2013 Golubev Alexander <fatzer2@gmail.com>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License version 2 as published by the Free Software Foundation.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20#include "tdegenericdevice.h"
21
22#include <tqpixmap.h>
23
24#include "tdeglobal.h"
25#include "tdelocale.h"
26
27#include "tdehardwaredevices.h"
28
29#include "config.h"
30
31TDEGenericDevice::TDEGenericDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TQObject() {
32 m_deviceType = dt;
33 m_deviceName = dn;
34
35 m_parentDevice = 0;
36 m_friendlyName = TQString::null;
37 m_blacklistedForUpdate = false;
38}
39
40TDEGenericDevice::~TDEGenericDevice() {
41}
42
43TDEGenericDeviceType::TDEGenericDeviceType TDEGenericDevice::type() {
44 return m_deviceType;
45}
46
47TQString TDEGenericDevice::name() {
48 return m_deviceName;
49}
50
51void TDEGenericDevice::internalSetName(TQString dn) {
52 m_deviceName = dn;
53}
54
55TQString TDEGenericDevice::vendorName() {
56 return m_vendorName;
57}
58
59void TDEGenericDevice::internalSetVendorName(TQString vn) {
60 m_vendorName = vn;
61}
62
63TQString TDEGenericDevice::vendorModel() {
64 return m_vendorModel;
65}
66
67void TDEGenericDevice::internalSetVendorModel(TQString vm) {
68 m_vendorModel = vm;
69}
70
71TQString TDEGenericDevice::serialNumber() {
72 return m_serialNumber;
73}
74
75void TDEGenericDevice::internalSetSerialNumber(TQString sn) {
76 m_serialNumber = sn;
77}
78
79TQString TDEGenericDevice::systemPath() {
80 if (!m_systemPath.endsWith("/")) {
81 m_systemPath += "/";
82 }
83 return m_systemPath;
84}
85
86void TDEGenericDevice::internalSetSystemPath(TQString sp) {
87 m_systemPath = sp;
88}
89
90TQString TDEGenericDevice::deviceNode() {
91 return m_deviceNode;
92}
93
94void TDEGenericDevice::internalSetDeviceNode(TQString dn) {
95 m_deviceNode = dn;
96}
97
98TQString TDEGenericDevice::deviceBus() {
99 return m_deviceBus;
100}
101
102void TDEGenericDevice::internalSetDeviceBus(TQString db) {
103 m_deviceBus = db;
104}
105
106TQString TDEGenericDevice::uniqueID() {
107 m_uniqueID = m_systemPath+m_deviceNode;
108 return m_uniqueID;
109}
110
111TQString TDEGenericDevice::vendorID() {
112 return m_vendorID;
113}
114
115void TDEGenericDevice::internalSetVendorID(TQString id) {
116 m_vendorID = id;
117 m_vendorID.replace("0x", "");
118}
119
120TQString TDEGenericDevice::modelID() {
121 return m_modelID;
122}
123
124void TDEGenericDevice::internalSetModelID(TQString id) {
125 m_modelID = id;
126 m_modelID.replace("0x", "");
127}
128
129TQString TDEGenericDevice::vendorEncoded() {
130 return m_vendorenc;
131}
132
133void TDEGenericDevice::internalSetVendorEncoded(TQString id) {
134 m_vendorenc = id;
135}
136
137TQString TDEGenericDevice::modelEncoded() {
138 return m_modelenc;
139}
140
141void TDEGenericDevice::internalSetModelEncoded(TQString id) {
142 m_modelenc = id;
143}
144
145TQString TDEGenericDevice::subVendorID() {
146 return m_subvendorID;
147}
148
149void TDEGenericDevice::internalSetSubVendorID(TQString id) {
150 m_subvendorID = id;
151 m_subvendorID.replace("0x", "");
152}
153
154TQString TDEGenericDevice::PCIClass() {
155 return m_pciClass;
156}
157
158void TDEGenericDevice::internalSetPCIClass(TQString cl) {
159 m_pciClass = cl;
160 m_pciClass.replace("0x", "");
161}
162
163TQString TDEGenericDevice::moduleAlias() {
164 return m_modAlias;
165}
166
167void TDEGenericDevice::internalSetModuleAlias(TQString ma) {
168 m_modAlias = ma;
169}
170
171TQString TDEGenericDevice::deviceDriver() {
172 return m_deviceDriver;
173}
174
175void TDEGenericDevice::internalSetDeviceDriver(TQString dr) {
176 m_deviceDriver = dr;
177}
178
179TQString TDEGenericDevice::subsystem() {
180 return m_subsystem;
181}
182
183void TDEGenericDevice::internalSetSubsystem(TQString ss) {
184 m_subsystem = ss;
185}
186
187TQString TDEGenericDevice::subModelID() {
188 return m_submodelID;
189}
190
191void TDEGenericDevice::internalSetSubModelID(TQString id) {
192 m_submodelID = id;
193 m_submodelID.replace("0x", "");
194}
195
196void TDEGenericDevice::internalSetParentDevice(TDEGenericDevice* pd) {
197 m_parentDevice = pd;
198}
199
200TDEGenericDevice* TDEGenericDevice::parentDevice() {
201 return m_parentDevice;
202}
203
204TQPixmap TDEGenericDevice::icon(TDEIcon::StdSizes size) {
205 return TDEGlobal::hardwareDevices()->getDeviceTypeIconFromType(type(), size);
206}
207
208bool TDEGenericDevice::blacklistedForUpdate() {
209 return m_blacklistedForUpdate;
210}
211
212void TDEGenericDevice::internalSetBlacklistedForUpdate(bool bl) {
213 m_blacklistedForUpdate = bl;
214}
215
216TQString TDEGenericDevice::friendlyDeviceType() {
217 return TDEGlobal::hardwareDevices()->getFriendlyDeviceTypeStringFromType(type());
218}
219
220TQString TDEGenericDevice::busID() {
221 TQString busid = m_systemPath;
222 busid = busid.remove(0, busid.findRev("/")+1);
223 busid = busid.remove(0, busid.find(":")+1);
224 return busid;
225}
226
227TQString TDEGenericDevice::friendlyName() {
228 if (m_friendlyName.isNull()) {
229 if (type() == TDEGenericDeviceType::RootSystem) {
230 m_friendlyName = "Linux System";
231 }
232 else if (type() == TDEGenericDeviceType::Root) {
233 TQString friendlyDriverName = systemPath();
234 friendlyDriverName.truncate(friendlyDriverName.length()-1);
235 friendlyDriverName.remove(0, friendlyDriverName.findRev("/")+1);
236 m_friendlyName = friendlyDriverName;
237 }
238 else if (m_modAlias.lower().startsWith("pci")) {
239 m_friendlyName = TDEGlobal::hardwareDevices()->findPCIDeviceName(m_vendorID, m_modelID, m_subvendorID, m_submodelID);
240 }
241 else if (m_modAlias.lower().startsWith("usb")) {
242 m_friendlyName = TDEGlobal::hardwareDevices()->findUSBDeviceName(m_vendorID, m_modelID, m_subvendorID, m_submodelID);
243 }
244 else {
245 TQString acpigentype = systemPath();
246 acpigentype.truncate(acpigentype.length()-1);
247 acpigentype.remove(0, acpigentype.findRev("/")+1);
248 TQString pnpgentype = acpigentype;
249 pnpgentype.truncate(pnpgentype.find(":"));
250 if (pnpgentype.startsWith("PNP")) {
251 m_friendlyName = TDEGlobal::hardwareDevices()->findPNPDeviceName(pnpgentype);
252 }
253 else if (acpigentype.startsWith("device:")) {
254 acpigentype.remove(0, acpigentype.findRev(":")+1);
255 acpigentype.prepend("0x");
256 m_friendlyName = i18n("ACPI Node %1").arg(acpigentype.toUInt(0,0));
257 }
258 }
259 }
260
261 if (m_friendlyName.isNull()) {
262 // Could not identify based on model/vendor codes
263 // Try to construct something from the model/vendor strings if they are available
264 if (!m_vendorName.isNull() && !m_vendorModel.isNull()) {
265 m_friendlyName = m_vendorName + " " + m_vendorModel;
266 }
267 }
268
269 if (m_friendlyName.isNull()) {
270 // Could not identify based on model/vendor
271 // Guess by type
272 if (type() == TDEGenericDeviceType::CPU) {
273 m_friendlyName = name();
274 }
275 else if (type() == TDEGenericDeviceType::Event) {
276 if (m_systemPath.contains("PNP0C0D")) {
277 m_friendlyName = i18n("ACPI Lid Switch");
278 }
279 else if (m_systemPath.contains("PNP0C0E") || m_systemPath.contains("/LNXSLPBN")) {
280 m_friendlyName = i18n("ACPI Sleep Button");
281 }
282 else if (m_systemPath.contains("PNP0C0C") || m_systemPath.contains("/LNXPWRBN")) {
283 m_friendlyName = i18n("ACPI Power Button");
284 }
285 else if (m_parentDevice) {
286 // Use parent node name
287 return m_parentDevice->friendlyName();
288 }
289 else {
290 m_friendlyName = i18n("Generic Event Device");
291 }
292 }
293 else if (type() == TDEGenericDeviceType::Input) {
294 if (m_systemPath.contains("PNP0C0D")) {
295 m_friendlyName = i18n("ACPI Lid Switch");
296 }
297 else if (m_systemPath.contains("PNP0C0E") || m_systemPath.contains("/LNXSLPBN")) {
298 m_friendlyName = i18n("ACPI Sleep Button");
299 }
300 else if (m_systemPath.contains("PNP0C0C") || m_systemPath.contains("/LNXPWRBN")) {
301 m_friendlyName = i18n("ACPI Power Button");
302 }
303 else if (m_parentDevice) {
304 // Use parent node name
305 return m_parentDevice->friendlyName();
306 }
307 else {
308 m_friendlyName = i18n("Generic Input Device");
309 }
310 }
311 // Guess by driver
312 else if (!m_deviceDriver.isNull()) {
313 TQString friendlyDriverName = m_deviceDriver.lower();
314 friendlyDriverName[0] = friendlyDriverName[0].upper();
315 m_friendlyName = i18n("Generic %1 Device").arg(friendlyDriverName);
316 }
317 else if (m_systemPath.lower().startsWith("/sys/devices/virtual")) {
318 TQString friendlyDriverName = systemPath();
319 friendlyDriverName.truncate(friendlyDriverName.length()-1);
320 friendlyDriverName.remove(0, friendlyDriverName.findRev("/")+1);
321 if (!friendlyDriverName.isNull()) {
322 m_friendlyName = i18n("Virtual Device %1").arg(friendlyDriverName);
323 }
324 else {
325 m_friendlyName = i18n("Unknown Virtual Device");
326 }
327 }
328 else {
329 // I really have no idea what this peripheral is; say so!
330 m_friendlyName = i18n("Unknown Device") + " " + name();
331 }
332 }
333
334 return m_friendlyName;
335}
336
337TQString TDEGenericDevice::detailedFriendlyName() {
338 return friendlyName();
339}
340
341#include "tdegenericdevice.moc"
TDEIcon::StdSizes
StdSizes
These are the standard sizes for icons.
Definition: kicontheme.h:112
TDELocale::i18n
TQString i18n(const char *text)
i18n is the function that does everything you need to translate a string.
Definition: tdelocale.cpp:1976
KStdAction::name
const char * name(StdAction id)
tdelocale.h

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.9.4
This website is maintained by Timothy Pearson.