Michele Calgaro 10 years ago
commit 777f25f20f

@ -402,8 +402,8 @@ void TDEHardwareDevices::processHotPluggedHardware() {
TDEGenericDevice *hwdevice; TDEGenericDevice *hwdevice;
for (hwdevice = m_deviceList.first(); hwdevice; hwdevice = m_deviceList.next()) { for (hwdevice = m_deviceList.first(); hwdevice; hwdevice = m_deviceList.next()) {
if (hwdevice->systemPath() == systempath) { if (hwdevice->systemPath() == systempath) {
emit hardwareRemoved(hwdevice); // Temporarily disable auto-deletion to ensure object validity when calling the Removed events below
emit hardwareEvent(TDEHardwareEvent::HardwareRemoved, hwdevice->uniqueID()); m_deviceList.setAutoDelete(false);
// If the device is a storage device and has a slave, update it as well // If the device is a storage device and has a slave, update it as well
if (hwdevice->type() == TDEGenericDeviceType::Disk) { if (hwdevice->type() == TDEGenericDeviceType::Disk) {
@ -423,6 +423,13 @@ void TDEHardwareDevices::processHotPluggedHardware() {
m_deviceList.remove(hwdevice); m_deviceList.remove(hwdevice);
} }
emit hardwareRemoved(hwdevice);
emit hardwareEvent(TDEHardwareEvent::HardwareRemoved, hwdevice->uniqueID());
// Reenable auto-deletion and delete the removed device object
m_deviceList.setAutoDelete(true);
delete hwdevice;
break; break;
} }
} }

@ -25,6 +25,7 @@
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <linux/cdrom.h> #include <linux/cdrom.h>
#include <tqregexp.h>
#include <tqpixmap.h> #include <tqpixmap.h>
#include <tqfile.h> #include <tqfile.h>
@ -489,13 +490,26 @@ void TDEStorageDevice::internalSetSlaveDevices(TQStringList sd) {
m_slaveDevices = sd; m_slaveDevices = sd;
} }
TQString decodeHexEncoding(TQString str) {
TQRegExp hexEncRegExp("\\\\x[0-9A-Fa-f]{1,2}");
hexEncRegExp.setMinimal(false);
hexEncRegExp.setCaseSensitive(true);
int s = -1;
while((s = hexEncRegExp.search(str, s+1))>=0){
str.replace(s, hexEncRegExp.cap(0).length(), TQChar((char)strtol(hexEncRegExp.cap(0).mid(2).ascii(), NULL, 16)));
}
return str;
}
TQString TDEStorageDevice::friendlyName() { TQString TDEStorageDevice::friendlyName() {
// Return the actual storage device name // Return the actual storage device name
TQString devicevendorid = vendorEncoded(); TQString devicevendorid = vendorEncoded();
TQString devicemodelid = modelEncoded(); TQString devicemodelid = modelEncoded();
devicevendorid.replace("\\x20", " "); devicevendorid = decodeHexEncoding(devicevendorid);
devicemodelid.replace("\\x20", " "); devicemodelid = decodeHexEncoding(devicemodelid);
devicevendorid = devicevendorid.stripWhiteSpace(); devicevendorid = devicevendorid.stripWhiteSpace();
devicemodelid = devicemodelid.stripWhiteSpace(); devicemodelid = devicemodelid.stripWhiteSpace();
@ -637,7 +651,7 @@ TQPixmap TDEStorageDevice::icon(TDEIcon::StdSizes size) {
ret = DesktopIcon("tape_unmount", size); ret = DesktopIcon("tape_unmount", size);
} }
if (isDiskOfType(TDEDiskDeviceType::Camera)) { if (isDiskOfType(TDEDiskDeviceType::Camera)) {
ret = DesktopIcon("camera_unmount"); ret = DesktopIcon("camera_unmount", size);
} }
if (isDiskOfType(TDEDiskDeviceType::HDD)) { if (isDiskOfType(TDEDiskDeviceType::HDD)) {

Loading…
Cancel
Save