tdeioslave media: fixed handling of mountable state for encrypted devices.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/35/head
Michele Calgaro 5 years ago
parent d34f23f403
commit b54fcda719
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -178,9 +178,16 @@ void Medium::setDeviceNode(const TQString &deviceNode)
} }
void Medium::setMountPoint(const TQString &mountPoint) void Medium::setMountPoint(const TQString &mountPoint)
{
if (isMountable())
{ {
m_properties[MOUNT_POINT] = mountPoint; m_properties[MOUNT_POINT] = mountPoint;
} }
else
{
m_properties[MOUNT_POINT] = TQString::null;
}
}
void Medium::setFsType(const TQString &fsType) void Medium::setFsType(const TQString &fsType)
{ {
@ -188,9 +195,16 @@ void Medium::setFsType(const TQString &fsType)
} }
void Medium::setMounted(bool mounted) void Medium::setMounted(bool mounted)
{
if (isMountable())
{ {
m_properties[MOUNTED] = mounted ? "true" : "false"; m_properties[MOUNTED] = mounted ? "true" : "false";
} }
else
{
m_properties[MOUNTED] = "false";
}
}
void Medium::setBaseURL(const TQString &baseURL) void Medium::setBaseURL(const TQString &baseURL)
{ {

@ -365,6 +365,11 @@ void MediaImpl::slotStatResult(TDEIO::Job *job)
TDEIO::UDSEntry MediaImpl::extractUrlInfos(const KURL &url) TDEIO::UDSEntry MediaImpl::extractUrlInfos(const KURL &url)
{ {
if (url.isEmpty())
{
return TDEIO::UDSEntry();
}
m_entryBuffer.clear(); m_entryBuffer.clear();
TDEIO::StatJob *job = TDEIO::stat(url, false); TDEIO::StatJob *job = TDEIO::stat(url, false);

@ -660,8 +660,6 @@ void HALBackend::setVolumeProperties(Medium* medium)
case LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER: case LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER:
{ {
medium->setIconName("ipod" + MOUNTED_ICON_SUFFIX); medium->setIconName("ipod" + MOUNTED_ICON_SUFFIX);
medium->setMountable(false);
if (libhal_device_get_property_QString(m_halContext, driveUdi.latin1(), "info.product") == "iPod" && if (libhal_device_get_property_QString(m_halContext, driveUdi.latin1(), "info.product") == "iPod" &&
KProtocolInfo::isKnownProtocol( TQString("ipod") ) ) KProtocolInfo::isKnownProtocol( TQString("ipod") ) )
{ {

@ -135,7 +135,6 @@ bool MediaList::changeMediumState(const Medium &medium, bool allowNotification)
m->setMountable(medium.isMountable()); m->setMountable(medium.isMountable());
if (medium.isMountable()) if (medium.isMountable())
{ {
m->setMountable(true);
m->setDeviceNode(medium.deviceNode()); m->setDeviceNode(medium.deviceNode());
m->setClearDeviceUdi(medium.clearDeviceUdi()); m->setClearDeviceUdi(medium.clearDeviceUdi());
m->setMountPoint(medium.mountPoint()); m->setMountPoint(medium.mountPoint());
@ -226,6 +225,11 @@ bool MediaList::changeMediumState(const TQString &id,
Medium *medium = m_idMap[id]; Medium *medium = m_idMap[id];
if (medium->deviceNode().isEmpty() || !medium->isMountable())
{
return false;
}
medium->setMountable(true); medium->setMountable(true);
medium->setDeviceNode(deviceNode); medium->setDeviceNode(deviceNode);
medium->setMountPoint(mountPoint); medium->setMountPoint(mountPoint);
@ -267,13 +271,13 @@ bool MediaList::changeMediumState(const TQString &id, bool mounted,
Medium *medium = m_idMap[id]; Medium *medium = m_idMap[id];
medium->setMountable(true);
medium->setMounted(mounted);
if (medium->deviceNode().isEmpty() || !medium->isMountable()) if (medium->deviceNode().isEmpty() || !medium->isMountable())
{ {
return false; return false;
} }
medium->setMounted(mounted);
if (!mimeType.isEmpty()) if (!mimeType.isEmpty())
{ {
medium->setMimeType( mimeType ); medium->setMimeType( mimeType );

@ -465,7 +465,15 @@ void TDEBackend::setVolumeProperties(Medium* medium)
medium->setEncrypted(false); medium->setEncrypted(false);
} }
if (sdevice->isDiskOfType(TDEDiskDeviceType::LUKS) || sdevice->isDiskOfType(TDEDiskDeviceType::OtherCrypted) ||
sdevice->fileSystemUsage().upper() == "RAID") {
// Encrypted disks or device underlying other devices are not mountable
medium->setMountable(false);
}
else {
medium->setMountable(true); medium->setMountable(true);
}
medium->setDeviceNode(sdevice->deviceNode()); medium->setDeviceNode(sdevice->deviceNode());
medium->setMountPoint(sdevice->mountPath()); medium->setMountPoint(sdevice->mountPath());
medium->setFsType(sdevice->fileSystemName()); medium->setFsType(sdevice->fileSystemName());
@ -785,7 +793,6 @@ void TDEBackend::setVolumeProperties(Medium* medium)
} }
if (sdevice->isDiskOfType(TDEDiskDeviceType::MediaDevice)) { if (sdevice->isDiskOfType(TDEDiskDeviceType::MediaDevice)) {
medium->setIconName("ipod" + MOUNTED_ICON_SUFFIX); medium->setIconName("ipod" + MOUNTED_ICON_SUFFIX);
medium->setMountable(false);
if (sdevice->vendorModel().upper().contains("IPOD") && KProtocolInfo::isKnownProtocol(TQString("ipod"))) { if (sdevice->vendorModel().upper().contains("IPOD") && KProtocolInfo::isKnownProtocol(TQString("ipod"))) {
medium->setBaseURL("ipod:/"); medium->setBaseURL("ipod:/");
medium->setMountable(true); medium->setMountable(true);
@ -829,7 +836,15 @@ bool TDEBackend::setFloppyProperties(Medium* medium)
medium->setEncrypted(false); medium->setEncrypted(false);
} }
if (sdevice->isDiskOfType(TDEDiskDeviceType::LUKS) || sdevice->isDiskOfType(TDEDiskDeviceType::OtherCrypted) ||
sdevice->fileSystemUsage().upper() == "RAID") {
// Encrypted disks or device underlying other devices are not mountable
medium->setMountable(false);
}
else {
medium->setMountable(true); medium->setMountable(true);
}
medium->setDeviceNode(sdevice->deviceNode()); medium->setDeviceNode(sdevice->deviceNode());
medium->setMountPoint(sdevice->mountPath()); medium->setMountPoint(sdevice->mountPath());
medium->setFsType(sdevice->fileSystemName()); medium->setFsType(sdevice->fileSystemName());

@ -81,9 +81,9 @@ MountHelper::MountHelper() : TDEApplication()
return; return;
} }
if (!medium.isMountable() && !args->isSet("e") && !args->isSet("s")) if (!medium.isMountable() && !medium.isEncrypted() && !args->isSet("e") && !args->isSet("s"))
{ {
m_errorStr = i18n("%1 is not a mountable media.").arg(url.prettyURL()); m_errorStr = i18n("%1 is not a mountable or encrypted media.").arg(url.prettyURL());
TQTimer::singleShot(0, this, TQT_SLOT(error())); TQTimer::singleShot(0, this, TQT_SLOT(error()));
return; return;
} }

Loading…
Cancel
Save