diff options
Diffstat (limited to 'tdeioslave/media/mediamanager/mediamanager.cpp')
-rw-r--r-- | tdeioslave/media/mediamanager/mediamanager.cpp | 322 |
1 files changed, 153 insertions, 169 deletions
diff --git a/tdeioslave/media/mediamanager/mediamanager.cpp b/tdeioslave/media/mediamanager/mediamanager.cpp index 7a8262eec..66c456a24 100644 --- a/tdeioslave/media/mediamanager/mediamanager.cpp +++ b/tdeioslave/media/mediamanager/mediamanager.cpp @@ -36,10 +36,6 @@ #include "tdehardwarebackend.h" #endif // COMPILE_TDEHARDWAREBACKEND -#ifdef COMPILE_HALBACKEND -#include "halbackend.h" -#endif //COMPILE_HALBACKEND - #ifdef COMPILE_LINUXCDPOLLING #include "linuxcdpolling.h" #endif //COMPILE_LINUXCDPOLLING @@ -47,15 +43,15 @@ MediaManager::MediaManager(const TQCString &obj) : KDEDModule(obj), m_dirNotify(m_mediaList) { - connect( &m_mediaList, TQT_SIGNAL(mediumAdded(const TQString&, const TQString&, bool)), - TQT_SLOT(slotMediumAdded(const TQString&, const TQString&, bool)) ); - connect( &m_mediaList, TQT_SIGNAL(mediumRemoved(const TQString&, const TQString&, bool)), - TQT_SLOT(slotMediumRemoved(const TQString&, const TQString&, bool)) ); + connect( &m_mediaList, TQ_SIGNAL(mediumAdded(const TQString&, const TQString&, bool)), + TQ_SLOT(slotMediumAdded(const TQString&, const TQString&, bool)) ); + connect( &m_mediaList, TQ_SIGNAL(mediumRemoved(const TQString&, const TQString&, bool)), + TQ_SLOT(slotMediumRemoved(const TQString&, const TQString&, bool)) ); connect( &m_mediaList, - TQT_SIGNAL(mediumStateChanged(const TQString&, const TQString&, bool, bool)), - TQT_SLOT(slotMediumChanged(const TQString&, const TQString&, bool, bool)) ); + TQ_SIGNAL(mediumStateChanged(const TQString&, const TQString&, bool, bool)), + TQ_SLOT(slotMediumChanged(const TQString&, const TQString&, bool, bool)) ); - TQTimer::singleShot( 10, this, TQT_SLOT( loadBackends() ) ); + TQTimer::singleShot( 10, this, TQ_SLOT( loadBackends() ) ); } MediaManager::~MediaManager() @@ -80,33 +76,9 @@ void MediaManager::loadBackends() } mp_removableBackend = 0L; - m_halbackend = 0L; m_tdebackend = 0L; m_fstabbackend = 0L; -#ifdef COMPILE_HALBACKEND - if ( MediaManagerSettings::self()->halBackendEnabled() ) - { - m_mediaList.blockSignals(false); - m_halbackend = new HALBackend(m_mediaList, this); - if (m_halbackend->InitHal()) - { - m_backends.append( m_halbackend ); - m_fstabbackend = new FstabBackend(m_mediaList, true); - m_backends.append( m_fstabbackend ); - // No need to load something else... - m_mediaList.blockSignals(false); - return; - } - else - { - delete m_halbackend; - m_halbackend = 0; - m_mediaList.blockSignals(true); - } - } -#endif // COMPILE_HALBACKEND - #ifdef COMPILE_TDEHARDWAREBACKEND if ( MediaManagerSettings::self()->tdeHardwareBackendEnabled() ) { @@ -136,39 +108,22 @@ void MediaManager::loadBackends() m_mediaList.blockSignals(false); } - -TQStringList MediaManager::fullList() -{ - TQPtrList<Medium> list = m_mediaList.list(); - - TQStringList result; - - TQPtrList<Medium>::const_iterator it = list.begin(); - TQPtrList<Medium>::const_iterator end = list.end(); - for (; it!=end; ++it) - { - result+= (*it)->properties(); - result+= Medium::SEPARATOR; - } - - return result; -} - -TQStringList MediaManager::properties(const TQString &name) +const Medium* MediaManager::getMediumByName(const TQString &name) { const Medium *m = m_mediaList.findByName(name); - if (!m) { KURL u(name); - kdDebug() << "Media::prop " << name << " " << u.isValid() << endl; + kdDebug() << "Media::getMediumByName " << name << " " << u.isValid() << endl; if (u.isValid()) { if (u.protocol() == "system") { TQString path = u.path(); if (path.startsWith("/media/")) + { path = path.mid(strlen("/media/")); + } m = m_mediaList.findByName(path); kdDebug() << "findByName " << path << m << endl; } @@ -189,170 +144,162 @@ TQStringList MediaManager::properties(const TQString &name) { path = TDEStandardDirs::realFilePath(u.path()); kdDebug() << "comparing " << (*it)->mountPoint() << " " << path << " " << (*it)->deviceNode() << endl; - if ((*it)->mountPoint() == path || (*it)->deviceNode() == path) { - m = *it; - break; + if ((*it)->mountPoint() == path || (*it)->deviceNode() == path) + { + m = *it; + break; } } } } } + return m; +} + +TQStringList MediaManager::fullList() +{ + TQPtrList<Medium> list = m_mediaList.list(); + + TQStringList result; + + TQPtrList<Medium>::const_iterator it = list.begin(); + TQPtrList<Medium>::const_iterator end = list.end(); + for (; it!=end; ++it) + { + result+= (*it)->properties(); + result+= Medium::SEPARATOR; + } + + return result; +} - if (m) { +TQStringList MediaManager::properties(const TQString &name) +{ + const Medium *m = getMediumByName(name); + if (m) + { return m->properties(); } - else { + else + { return TQStringList(); } } TQStringList MediaManager::mountoptions(const TQString &name) { -#ifdef COMPILE_HALBACKEND - if (!m_halbackend) - return TQStringList(); - return m_halbackend->mountoptions(name); -#else // COMPILE_HALBACKEND - #ifdef COMPILE_TDEHARDWAREBACKEND - if (!m_tdebackend) - return TQStringList(); +#ifdef COMPILE_TDEHARDWAREBACKEND + if (m_tdebackend) + { return m_tdebackend->mountoptions(name); - #else // COMPILE_TDEHARDWAREBACKEND - return TQStringList(); - #endif // COMPILE_TDEHARDWAREBACKEND -#endif // COMPILE_HALBACKEND + } +#endif + return TQStringList(); } bool MediaManager::setMountoptions(const TQString &name, const TQStringList &options) { -#ifdef COMPILE_HALBACKEND - if (!m_halbackend) - return false; - return m_halbackend->setMountoptions(name, options); -#else // COMPILE_HALBACKEND - #ifdef COMPILE_TDEHARDWAREBACKEND - if (!m_tdebackend) - return false; +#ifdef COMPILE_TDEHARDWAREBACKEND + if (m_tdebackend) + { return m_tdebackend->setMountoptions(name, options); - #else // COMPILE_TDEHARDWAREBACKEND - return false; - #endif // COMPILE_TDEHARDWAREBACKEND -#endif // COMPILE_HALBACKEND + } +#endif + return false; } TQStringVariantMap MediaManager::mount(const TQString &uid) { - TQStringVariantMap result; #ifdef COMPILE_TDEHARDWAREBACKEND - if (!m_tdebackend) { - result["errStr"] = i18n("Feature only available with the TDE hardware backend"); - result["result"] = false; - return result; + if (m_tdebackend) + { + return m_tdebackend->mount(uid); } - return m_tdebackend->mount(uid); -#elif defined COMPILE_HALBACKEND - if (!m_halbackend) { - result["errStr"] = i18n("Feature only available with HAL"); - result["result"] = false; - return result; - } - return m_halbackend->mount(uid); #else - if (!m_fstabbackend) { - result["errStr"] = i18n("Feature only available with HAL or TDE hardware backend"); - result["result"] = false; - return result; + if (m_fstabbackend) + { + return m_fstabbackend->mount(uid); } - return m_fstabbackend->mount(uid); #endif + TQStringVariantMap result; + result["errStr"] = i18n("Feature only available with the TDE hardware or fstab backend"); + result["result"] = false; + return result; } TQStringVariantMap MediaManager::unmount(const TQString &uid) { - TQStringVariantMap result; #ifdef COMPILE_TDEHARDWAREBACKEND - if (!m_tdebackend) { - result["errStr"] = i18n("Feature only available with the TDE hardware backend"); - result["result"] = false; - return result; + if (m_tdebackend) + { + return m_tdebackend->unmount(uid); } - return m_tdebackend->unmount(uid); -#elif defined COMPILE_HALBACKEND - if (!m_halbackend) { - result["errStr"] = i18n("Feature only available with HAL"); - result["result"] = false; - return result; - } - return m_halbackend->unmount(uid); #else - if (!m_fstabbackend) { - result["errStr"] = i18n("Feature only available with HAL or TDE hardware backend"); - result["result"] = false; - return result; + if (m_fstabbackend) + { + return m_fstabbackend->unmount(uid); } - return m_fstabbackend->unmount(uid); #endif + TQStringVariantMap result; + result["errStr"] = i18n("Feature only available with the TDE hardware or fstab backend"); + result["result"] = false; + return result; } TQStringVariantMap MediaManager::unlock(const TQString &uid, const TQString &password) { - TQStringVariantMap result; -/* #ifdef COMPILE_TDEHARDWAREBACKEND - if (!m_tdebackend) { - result["errStr"] = i18n("Feature only available with the TDE hardware backend"); - result["result"] = false; - return result; - } - return m_tdebackend->unlock(uid, password); -#elif defined COMPILE_HALBACKEND -*/ -#if defined COMPILE_HALBACKEND - if (!m_halbackend) { - result["errStr"] = i18n("Feature only available with HAL"); - result["result"] = false; - return result; + if (m_tdebackend) + { + return m_tdebackend->unlock(uid, password); } - return m_halbackend->unlock(uid, password); - -#else -// if (!m_fstabbackend) { - result["errStr"] = i18n("Feature only available with HAL or TDE hardware backend"); - result["result"] = false; - return result; -// } -// return m_fstabbackend->unlock(uid, password); #endif + TQStringVariantMap result; + result["errStr"] = i18n("Feature only available with the TDE hardware backend"); + result["result"] = false; + return result; } -TQStringVariantMap MediaManager::lock(const TQString &uid) +TQStringVariantMap MediaManager::lock(const TQString &uid, bool releaseHolders) { +#ifdef COMPILE_TDEHARDWAREBACKEND + if (m_tdebackend) + { + return m_tdebackend->lock(uid, releaseHolders); + } +#endif TQStringVariantMap result; -/* + result["errStr"] = i18n("Feature only available with the TDE hardware backend"); + result["result"] = false; + return result; +} + +TQStringVariantMap MediaManager::eject(const TQString &uid) +{ #ifdef COMPILE_TDEHARDWAREBACKEND - if (!m_tdebackend) { - result["errStr"] = i18n("Feature only available with the TDE hardware backend"); - result["result"] = false; - return result; + if (m_tdebackend) + { + return m_tdebackend->eject(uid); } - return m_tdebackend->lock(uid); -#elif defined COMPILE_HALBACKEND -*/ -#if defined COMPILE_HALBACKEND - if (!m_halbackend) { - result["errStr"] = i18n("Feature only available with HAL"); - result["result"] = false; - return result; +#endif + TQStringVariantMap result; + result["errStr"] = i18n("Feature only available with the TDE hardware backend"); + result["result"] = false; + return result; +} + +TQStringVariantMap MediaManager::safeRemove(const TQString &uid) +{ +#ifdef COMPILE_TDEHARDWAREBACKEND + if (m_tdebackend) + { + return m_tdebackend->safeRemove(uid); } - return m_halbackend->lock(uid); -#else -// if (!m_fstabbackend) { - result["errStr"] = i18n("Feature only available with HAL or TDE hardware backend"); - result["result"] = false; - return result; -// } -// return m_fstabbackend->lock(uid); #endif + TQStringVariantMap result; + result["errStr"] = i18n("Feature only available with the TDE hardware backend"); + result["result"] = false; + return result; } TQStringVariantMap MediaManager::mountByNode(const TQString &deviceNode) @@ -391,7 +338,7 @@ TQStringVariantMap MediaManager::unlockByNode(const TQString &deviceNode, const return unlock(medium->id(), password); } -TQStringVariantMap MediaManager::lockByNode(const TQString &deviceNode) +TQStringVariantMap MediaManager::lockByNode(const TQString &deviceNode, bool releaseHolders) { const Medium *medium = m_mediaList.findByNode(deviceNode); if (!medium) { @@ -400,7 +347,44 @@ TQStringVariantMap MediaManager::lockByNode(const TQString &deviceNode) result["result"] = false; return result; } - return lock(medium->id()); + return lock(medium->id(), releaseHolders); +} + +TQStringVariantMap MediaManager::ejectByNode(const TQString &deviceNode) +{ + const Medium *medium = m_mediaList.findByNode(deviceNode); + if (!medium) { + TQStringVariantMap result; + result["errStr"] = i18n("No such medium: %1").arg(deviceNode); + result["result"] = false; + return result; + } + return eject(medium->id()); +} + +TQStringVariantMap MediaManager::safeRemoveByNode(const TQString &deviceNode) +{ + const Medium *medium = m_mediaList.findByNode(deviceNode); + if (!medium) { + TQStringVariantMap result; + result["errStr"] = i18n("No such medium: %1").arg(deviceNode); + result["result"] = false; + return result; + } + return safeRemove(medium->id()); +} + +TQString MediaManager::mimeType(const TQString &name) +{ + const Medium *m = getMediumByName(name); + if (m) + { + return m->mimeType(); + } + else + { + return TQString::null; + } } TQString MediaManager::nameForLabel(const TQString &label) |