--- kioslave/media/mediamanager/halbackend.cpp.orig 2007-09-19 10:55:32.000000000 +0200 +++ kioslave/media/mediamanager/halbackend.cpp 2007-09-19 10:58:20.000000000 +0200 @@ -210,10 +211,26 @@ { /* We only list volume that have a filesystem or volume that have an audio track*/ if ( libhal_device_get_property_QString(m_halContext, udi, "volume.fsusage") != "filesystem" && + libhal_device_get_property_QString(m_halContext, udi, "volume.fsusage") != "crypto" && !libhal_device_get_property_bool(m_halContext, udi, "volume.disc.has_audio", NULL) && !libhal_device_get_property_bool(m_halContext, udi, "volume.disc.is_blank", NULL) ) return; + /* For crypto_LUKS devices check its dm-device, if it is already mounted*/ + if ( libhal_device_get_property_QString(m_halContext, udi, "volume.fstype") == "crypto_LUKS" && + !libhal_device_get_property_bool(m_halContext, udi, "volume.ignore", NULL) ) { + int num; + char **dm_uuid = libhal_manager_find_device_string_match(m_halContext, "volume.crypto_luks.clear.backing_volume",udi,&num,NULL); + /* if a dm device is found the volume is already decrypted */ + if (num == 0) { + // TODO: Check for kryptomedia binary. + KProcess proc; + proc << "kryptomedia" << udi; + proc.start(KProcess::DontCare); + return; + } + } + /* Query drive udi */ QString driveUdi = libhal_device_get_property_QString(m_halContext, udi, "block.storage_device"); if ( driveUdi.isNull() ) // no storage - no fun