summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2019-06-02 15:45:44 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2019-07-08 10:33:34 +0900
commitb4754b0e6fc213e0880947cb2c01dfab834fa264 (patch)
tree3086eb9f5c497c4d8fd9c747f0b8c2922bcb330b
parente44487e1b855106ddf00ade92a25493e11589ca1 (diff)
downloadtdebase-b4754b0e6fc213e0880947cb2c01dfab834fa264.tar.gz
tdebase-b4754b0e6fc213e0880947cb2c01dfab834fa264.zip
Extended media manager dcop interface by adding functions to
mount/unmount/decrypt/undecrypt a medium by device node (for example /dev/sdc). Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
-rw-r--r--tdeioslave/media/mediamanager/medialist.cpp17
-rw-r--r--tdeioslave/media/mediamanager/medialist.h8
-rw-r--r--tdeioslave/media/mediamanager/mediamanager.cpp48
-rw-r--r--tdeioslave/media/mediamanager/mediamanager.h5
4 files changed, 74 insertions, 4 deletions
diff --git a/tdeioslave/media/mediamanager/medialist.cpp b/tdeioslave/media/mediamanager/medialist.cpp
index d9c4f0eb3..fa7aef5f5 100644
--- a/tdeioslave/media/mediamanager/medialist.cpp
+++ b/tdeioslave/media/mediamanager/medialist.cpp
@@ -52,6 +52,15 @@ const Medium *MediaList::findByName(const TQString &name) const
return m_nameMap[name];
}
+const Medium *MediaList::findByNode(const TQString &node) const
+{
+ kdDebug(1219) << "MediaList::findByNode(" << node << ")" << endl;
+
+ if ( !m_nodeMap.contains(node) ) return 0L;
+
+ return m_nodeMap[node];
+}
+
const Medium *MediaList::findByClearUdi(const TQString &name)
{
kdDebug(1219) << "MediaList::findByClearUdi(" << name << ")" << endl;
@@ -64,7 +73,6 @@ const Medium *MediaList::findByClearUdi(const TQString &name)
return 0L;
}
-
TQString MediaList::addMedium(Medium *medium, bool allowNotification)
{
kdDebug(1219) << "MediaList::addMedium(@" << medium->id() << ")" << endl;
@@ -75,6 +83,12 @@ TQString MediaList::addMedium(Medium *medium, bool allowNotification)
m_nameMap[name] = medium;
}
+ TQString node = medium->deviceNode();
+ if (!m_nodeMap.contains(node))
+ {
+ m_nodeMap[node] = medium;
+ }
+
TQString id = medium->id();
if (m_idMap.contains(id))
{
@@ -101,6 +115,7 @@ bool MediaList::removeMedium(const TQString &id, bool allowNotification)
Medium *medium = m_idMap[id];
m_idMap.remove(id);
m_nameMap.remove(medium->name());
+ m_nodeMap.remove(medium->deviceNode());
TQString name = medium->name();
m_media.remove(medium);
diff --git a/tdeioslave/media/mediamanager/medialist.h b/tdeioslave/media/mediamanager/medialist.h
index 59ddb6bd2..f4b088526 100644
--- a/tdeioslave/media/mediamanager/medialist.h
+++ b/tdeioslave/media/mediamanager/medialist.h
@@ -1,5 +1,5 @@
/* This file is part of the KDE Project
- Copyright (c) 2004 Kévin Ottens <ervin ipsquad net>
+ Copyright (c) 2004 Kévin Ottens <ervin ipsquad net>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -34,6 +34,7 @@ public:
const TQPtrList<Medium> list() const;
const Medium *findById(const TQString &id) const;
const Medium *findByName(const TQString &name) const;
+ const Medium *findByNode(const TQString &node) const;
const Medium *findByClearUdi(const TQString &name);
public:
@@ -73,8 +74,9 @@ signals:
private:
TQPtrList<Medium> m_media;
- TQMap<TQString,Medium*> m_nameMap;
- TQMap<TQString,Medium*> m_idMap;
+ TQMap<TQString, Medium*> m_idMap;
+ TQMap<TQString, Medium*> m_nameMap;
+ TQMap<TQString, Medium*> m_nodeMap;
};
#endif
diff --git a/tdeioslave/media/mediamanager/mediamanager.cpp b/tdeioslave/media/mediamanager/mediamanager.cpp
index ef6721999..6f498ffc8 100644
--- a/tdeioslave/media/mediamanager/mediamanager.cpp
+++ b/tdeioslave/media/mediamanager/mediamanager.cpp
@@ -355,6 +355,54 @@ TQStringVariantMap MediaManager::undecrypt(const TQString &uid)
#endif
}
+TQStringVariantMap MediaManager::mountByNode(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 mount(medium->id());
+}
+
+TQStringVariantMap MediaManager::unmountByNode(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 unmount(medium->id());
+}
+
+TQStringVariantMap MediaManager::decryptByNode(const TQString &deviceNode, const TQString &password)
+{
+ 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 decrypt(medium->id(), password);
+}
+
+TQStringVariantMap MediaManager::undecryptByNode(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 undecrypt(medium->id());
+}
+
TQString MediaManager::nameForLabel(const TQString &label)
{
const TQPtrList<Medium> media = m_mediaList.list();
diff --git a/tdeioslave/media/mediamanager/mediamanager.h b/tdeioslave/media/mediamanager/mediamanager.h
index 673629cf9..667626370 100644
--- a/tdeioslave/media/mediamanager/mediamanager.h
+++ b/tdeioslave/media/mediamanager/mediamanager.h
@@ -52,6 +52,11 @@ k_dcop:
TQStringVariantMap decrypt(const TQString &uid, const TQString &password);
TQStringVariantMap undecrypt(const TQString &uid);
+ TQStringVariantMap mountByNode(const TQString &deviceNode);
+ TQStringVariantMap unmountByNode(const TQString &deviceNode);
+ TQStringVariantMap decryptByNode(const TQString &deviceNode, const TQString &password);
+ TQStringVariantMap undecryptByNode(const TQString &deviceNode);
+
TQString nameForLabel(const TQString &label);
ASYNC setUserLabel(const TQString &name, const TQString &label);