20 #include "disksHelper.h" 22 #include "tdestoragedevice.h" 24 #if defined(WITH_UDISKS) || defined(WITH_UDISKS2) 25 #include <tqdbusdata.h> 26 #include <tqdbusmessage.h> 27 #include <tqdbusproxy.h> 28 #include <tqdbusvariant.h> 29 #include <tqdbusconnection.h> 30 #include <tqdbuserror.h> 31 #include <tqdbusdatamap.h> 32 #include <tqdbusobjectpath.h> 33 #include "tqdbusdatalist.h" 41 TQStringVariantMap UDisksEjectDrive(TDEStorageDevice *sdevice) {
42 TQStringVariantMap result;
43 result[
"result"] =
false;
45 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
46 if (dbusConn.isConnected()) {
47 TQString blockDeviceString = sdevice->deviceNode();
48 blockDeviceString.replace(
"/dev/",
"");
49 blockDeviceString.replace(
"-",
"_2d");
50 blockDeviceString =
"/org/freedesktop/UDisks/devices/" + blockDeviceString;
54 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks", blockDeviceString,
"org.freedesktop.UDisks.Device", dbusConn);
55 if (driveControl.canSend()) {
56 TQValueList<TQT_DBusData> params;
57 TQT_DBusDataList options;
58 params << TQT_DBusData::fromList(options);
59 TQT_DBusMessage reply = driveControl.sendWithReply(
"DriveEject", params, &error);
60 if (error.isValid()) {
62 result[
"errStr"] = error.name() +
": " + error.message();
66 result[
"result"] =
true;
74 TQStringVariantMap UDisksMountDrive(TQString deviceNode, TQString fileSystemType, TQStringList mountOptions) {
75 TQStringVariantMap result;
76 result[
"result"] =
false;
77 result[
"retcode"] = -2;
79 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
80 if (dbusConn.isConnected()) {
81 TQString blockDeviceString = deviceNode;
82 blockDeviceString.replace(
"/dev/",
"");
83 blockDeviceString.replace(
"-",
"_2d");
84 blockDeviceString =
"/org/freedesktop/UDisks/devices/" + blockDeviceString;
88 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks", blockDeviceString,
"org.freedesktop.UDisks.Device", dbusConn);
89 if (driveControl.canSend()) {
90 TQValueList<TQT_DBusData> params;
91 params << TQT_DBusData::fromString(fileSystemType);
92 params << TQT_DBusData::fromList(TQT_DBusDataList(mountOptions));
93 TQT_DBusMessage reply = driveControl.sendWithReply(
"FilesystemMount", params, &error);
94 if (!error.isValid()) {
96 result[
"retcode"] = 0;
97 result[
"result"] =
true;
102 if (error.name() ==
"org.freedesktop.DBus.Error.ServiceUnknown") {
106 result[
"errStr"] = error.name() +
": " + error.message();
107 result[
"retcode"] = -1;
116 TQStringVariantMap UDisksUnmountDrive(TQString deviceNode, TQStringList unmountOptions) {
117 TQStringVariantMap result;
118 result[
"result"] =
false;
119 result[
"retcode"] = -2;
121 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
122 if (dbusConn.isConnected()) {
123 TQString blockDeviceString = deviceNode;
124 blockDeviceString.replace(
"/dev/",
"");
125 blockDeviceString.replace(
"-",
"_2d");
126 blockDeviceString =
"/org/freedesktop/UDisks/devices/" + blockDeviceString;
130 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks", blockDeviceString,
"org.freedesktop.UDisks.Device", dbusConn);
131 if (driveControl.canSend()) {
132 TQValueList<TQT_DBusData> params;
133 params << TQT_DBusData::fromList(TQT_DBusDataList(unmountOptions));
134 TQT_DBusMessage reply = driveControl.sendWithReply(
"FilesystemUnmount", params, &error);
135 if (!error.isValid()) {
137 result[
"retcode"] = 0;
138 result[
"result"] =
true;
143 if (error.name() ==
"org.freedesktop.DBus.Error.ServiceUnknown") {
147 result[
"errStr"] = error.name() +
": " + error.message();
148 result[
"retcode"] = -1;
163 TQStringVariantMap UDisks2EjectDrive(TDEStorageDevice *sdevice) {
164 TQStringVariantMap result;
165 result[
"result"] =
false;
167 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
168 if (dbusConn.isConnected()) {
169 TQString blockDeviceString = sdevice->deviceNode();
170 blockDeviceString.replace(
"/dev/",
"");
171 blockDeviceString.replace(
"-",
"_2d");
172 blockDeviceString =
"/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
173 TQT_DBusProxy hardwareControl(
"org.freedesktop.UDisks2", blockDeviceString,
"org.freedesktop.DBus.Properties", dbusConn);
174 if (hardwareControl.canSend()) {
177 TQValueList<TQT_DBusData> params;
178 params << TQT_DBusData::fromString(
"org.freedesktop.UDisks2.Block") << TQT_DBusData::fromString(
"Drive");
179 TQT_DBusMessage reply = hardwareControl.sendWithReply(
"Get", params, &error);
180 if (error.isValid()) {
182 result[
"errStr"] = error.name() +
": " + error.message();
186 if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
187 TQT_DBusObjectPath driveObjectPath = reply[0].toVariant().value.toObjectPath();
188 if (!driveObjectPath.isValid()) {
191 error = TQT_DBusError();
192 TQT_DBusProxy driveInformation(
"org.freedesktop.UDisks2", driveObjectPath,
193 "org.freedesktop.DBus.Properties", dbusConn);
195 TQValueList<TQT_DBusData> params;
196 params << TQT_DBusData::fromString(
"org.freedesktop.UDisks2.Drive") << TQT_DBusData::fromString(
"Ejectable");
197 TQT_DBusMessage reply = driveInformation.sendWithReply(
"Get", params, &error);
198 if (error.isValid()) {
200 result[
"errStr"] = error.name() +
": " + error.message();
204 if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
205 bool ejectable = reply[0].toVariant().value.toBool();
207 result[
"errStr"] =
i18n(
"Media not ejectable");
212 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks2", driveObjectPath,
"org.freedesktop.UDisks2.Drive", dbusConn);
213 TQValueList<TQT_DBusData> params;
214 TQT_DBusDataMap<TQString> options(TQT_DBusData::Variant);
215 params << TQT_DBusData::fromStringKeyMap(options);
216 TQT_DBusMessage reply = driveControl.sendWithReply(
"Eject", params, &error);
217 if (error.isValid()) {
219 result[
"errStr"] = error.name() +
": " + error.message();
223 result[
"result"] =
true;
233 TQStringVariantMap UDisks2MountDrive(TQString deviceNode, TQString fileSystemType, TQString mountOptions) {
234 TQStringVariantMap result;
235 result[
"result"] =
false;
236 result[
"retcode"] = -2;
238 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
239 if (dbusConn.isConnected()) {
240 TQString blockDeviceString = deviceNode;
241 blockDeviceString.replace(
"/dev/",
"");
242 blockDeviceString.replace(
"-",
"_2d");
243 blockDeviceString =
"/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
247 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks2", blockDeviceString,
"org.freedesktop.UDisks2.Filesystem", dbusConn);
248 if (driveControl.canSend()) {
249 TQValueList<TQT_DBusData> params;
250 TQMap<TQString, TQT_DBusData> optionsMap;
251 if (fileSystemType !=
"") {
252 optionsMap[
"fstype"] = (TQT_DBusData::fromString(fileSystemType)).getAsVariantData();
254 optionsMap[
"options"] = (TQT_DBusData::fromString(mountOptions)).getAsVariantData();
255 params << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap<TQString>(optionsMap));
256 TQT_DBusMessage reply = driveControl.sendWithReply(
"Mount", params, &error);
257 if (!error.isValid()) {
259 result[
"retcode"] = 0;
260 result[
"result"] =
true;
265 if (error.name() ==
"org.freedesktop.DBus.Error.ServiceUnknown") {
269 result[
"errStr"] = error.name() +
": " + error.message();
270 result[
"retcode"] = -1;
279 TQStringVariantMap UDisks2UnmountDrive(TQString deviceNode, TQString unmountOptions) {
280 TQStringVariantMap result;
281 result[
"result"] =
false;
282 result[
"retcode"] = -2;
284 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
285 if (dbusConn.isConnected()) {
286 TQString blockDeviceString = deviceNode;
287 blockDeviceString.replace(
"/dev/",
"");
288 blockDeviceString.replace(
"-",
"_2d");
289 blockDeviceString =
"/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
293 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks2", blockDeviceString,
"org.freedesktop.UDisks2.Filesystem", dbusConn);
294 if (driveControl.canSend()) {
295 TQValueList<TQT_DBusData> params;
296 TQMap<TQString, TQT_DBusData> optionsMap;
297 optionsMap[
"options"] = (TQT_DBusData::fromString(unmountOptions)).getAsVariantData();
298 params << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap<TQString>(optionsMap));
299 TQT_DBusMessage reply = driveControl.sendWithReply(
"Unmount", params, &error);
300 if (!error.isValid()) {
302 result[
"retcode"] = 0;
303 result[
"result"] =
true;
308 if (error.name() ==
"org.freedesktop.DBus.Error.ServiceUnknown") {
312 result[
"errStr"] = error.name() +
": " + error.message();
313 result[
"retcode"] = -1;
TQString i18n(const char *text)