SVN commit 1211505 by jacopods: forwardport r1211499: do the "dbus dance" for the fstab backend
We should investigate whether it is sane or not to implement the "dbus dance" for all backends separately or find a better way. Ideas and suggestions are welcome. CCMAIL: [email protected] M +41 -6 fstabstorageaccess.cpp M +7 -0 fstabstorageaccess.h --- trunk/KDE/kdelibs/solid/solid/backends/fstab/fstabstorageaccess.cpp #1211504:1211505 @@ -25,6 +25,8 @@ #include <solid/backends/fstab/fstabservice.h> #include <QtCore/QStringList> +#include <QTimer> + #define MTAB "/etc/mtab" using namespace Solid::Backends::Fstab; @@ -36,12 +38,25 @@ m_currentMountPoints = FstabHandling::currentMountPoints(); connect(FstabWatcher::instance(), SIGNAL(mtabChanged()), this, SLOT(onMtabChanged())); + QTimer::singleShot(0, this, SLOT(connectDBusSignals())); } FstabStorageAccess::~FstabStorageAccess() { } + +void FstabStorageAccess::connectDBusSignals() +{ + m_fstabDevice->registerAction("setup", this, + SLOT(slotSetupRequested()), + SLOT(slotSetupDone(int, const QString&))); + + m_fstabDevice->registerAction("teardown", this, + SLOT(slotTeardownRequested()), + SLOT(slotTeardownDone(int, const QString&))); +} + const Solid::Backends::Fstab::FstabDevice *FstabStorageAccess::fstabDevice() const { return m_fstabDevice; @@ -76,45 +91,65 @@ if (filePath().isEmpty()) { return false; } - emit setupRequested(m_fstabDevice->udi()); + m_fstabDevice->broadcastActionRequested("setup"); m_process = FstabHandling::callSystemCommand("mount", filePath(), this, SLOT(slotSetupFinished(int, QProcess::ExitStatus))); return m_process!=0; } +void FstabStorageAccess::slotSetupRequested() +{ + emit setupRequested(m_fstabDevice->udi()); +} + bool FstabStorageAccess::teardown() { if (filePath().isEmpty()) { return false; } - emit teardownRequested(m_fstabDevice->udi()); + m_fstabDevice->broadcastActionRequested("teardown"); m_process = FstabHandling::callSystemCommand("umount", filePath(), this, SLOT(slotTeardownFinished(int, QProcess::ExitStatus))); return m_process!=0; } +void FstabStorageAccess::slotTeardownRequested() +{ + emit teardownRequested(m_fstabDevice->udi()); +} + void FstabStorageAccess::slotSetupFinished(int exitCode, QProcess::ExitStatus /*exitStatus*/) { if (exitCode==0) { - emit setupDone(Solid::NoError, QVariant(), m_fstabDevice->udi()); + m_fstabDevice->broadcastActionDone("setup", Solid::NoError, QString()); } else { - emit setupDone(Solid::UnauthorizedOperation, m_process->readAllStandardError(), m_fstabDevice->udi()); + m_fstabDevice->broadcastActionDone("setup", Solid::UnauthorizedOperation, m_process->readAllStandardError()); } delete m_process; } +void FstabStorageAccess::slotSetupDone(int error, const QString &errorString) +{ + emit setupDone(static_cast<Solid::ErrorType>(error), errorString, m_fstabDevice->udi()); +} + void FstabStorageAccess::slotTeardownFinished(int exitCode, QProcess::ExitStatus /*exitStatus*/) { if (exitCode==0) { - emit teardownDone(Solid::NoError, QVariant(), m_fstabDevice->udi()); + m_fstabDevice->broadcastActionDone("teardown", Solid::NoError, QString()); } else { - emit teardownDone(Solid::UnauthorizedOperation, m_process->readAllStandardError(), m_fstabDevice->udi()); + m_fstabDevice->broadcastActionDone("teardown", Solid::UnauthorizedOperation, m_process->readAllStandardError()); } delete m_process; } +void FstabStorageAccess::slotTeardownDone(int error, const QString &errorString) +{ + emit teardownDone(static_cast<Solid::ErrorType>(error), errorString, m_fstabDevice->udi()); +} + void FstabStorageAccess::onMtabChanged() { QStringList currentMountPoints = FstabHandling::currentMountPoints(); --- trunk/KDE/kdelibs/solid/solid/backends/fstab/fstabstorageaccess.h #1211504:1211505 @@ -71,6 +71,13 @@ void slotSetupFinished(int exitCode, QProcess::ExitStatus exitStatus); void slotTeardownFinished(int exitCode, QProcess::ExitStatus exitStatus); void onMtabChanged(); + void connectDBusSignals(); + + void slotSetupRequested(); + void slotSetupDone(int error, const QString &errorString); + void slotTeardownRequested(); + void slotTeardownDone(int error, const QString &errorString); + private: Solid::Backends::Fstab::FstabDevice *m_fstabDevice; QProcess *m_process; _______________________________________________ Kde-hardware-devel mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-hardware-devel
