20 #include "disksHelper.h" 22 #include "tdestoragedevice.h" 23 #include <tqdbusdata.h> 24 #include <tqdbusmessage.h> 25 #include <tqdbusproxy.h> 26 #include <tqdbusvariant.h> 27 #include <tqdbusconnection.h> 28 #include <tqdbuserror.h> 29 #include <tqdbusdatamap.h> 30 #include <tqdbusobjectpath.h> 31 #include "tqdbusdatalist.h" 36 TQStringVariantMap UDisksEjectDrive(TDEStorageDevice *sdevice) {
37 TQStringVariantMap result;
38 result[
"result"] =
false;
40 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
41 if (dbusConn.isConnected()) {
42 TQString blockDeviceString = sdevice->deviceNode();
43 blockDeviceString.replace(
"/dev/",
"");
44 blockDeviceString.replace(
"-",
"_2d");
45 blockDeviceString =
"/org/freedesktop/UDisks/devices/" + blockDeviceString;
49 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks", blockDeviceString,
"org.freedesktop.UDisks.Device", dbusConn);
50 if (driveControl.canSend()) {
51 TQValueList<TQT_DBusData> params;
52 TQT_DBusDataList options;
53 params << TQT_DBusData::fromList(options);
54 TQT_DBusMessage reply = driveControl.sendWithReply(
"DriveEject", params, &error);
55 if (error.isValid()) {
57 result[
"errStr"] = error.name() +
": " + error.message();
61 result[
"result"] =
true;
69 TQStringVariantMap UDisksMountDrive(TQString deviceNode, TQString fileSystemType, TQStringList mountOptions) {
70 TQStringVariantMap result;
71 result[
"result"] =
false;
72 result[
"retcode"] = -2;
74 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
75 if (dbusConn.isConnected()) {
76 TQString blockDeviceString = deviceNode;
77 blockDeviceString.replace(
"/dev/",
"");
78 blockDeviceString.replace(
"-",
"_2d");
79 blockDeviceString =
"/org/freedesktop/UDisks/devices/" + blockDeviceString;
83 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks", blockDeviceString,
"org.freedesktop.UDisks.Device", dbusConn);
84 if (driveControl.canSend()) {
85 TQValueList<TQT_DBusData> params;
86 params << TQT_DBusData::fromString(fileSystemType);
87 params << TQT_DBusData::fromList(TQT_DBusDataList(mountOptions));
88 TQT_DBusMessage reply = driveControl.sendWithReply(
"FilesystemMount", params, &error);
89 if (!error.isValid()) {
91 result[
"retcode"] = 0;
92 result[
"result"] =
true;
97 if (error.name() ==
"org.freedesktop.DBus.Error.ServiceUnknown") {
101 result[
"errStr"] = error.name() +
": " + error.message();
102 result[
"retcode"] = -1;
111 TQStringVariantMap UDisksUnmountDrive(TQString deviceNode, TQStringList unmountOptions) {
112 TQStringVariantMap result;
113 result[
"result"] =
false;
114 result[
"retcode"] = -2;
116 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
117 if (dbusConn.isConnected()) {
118 TQString blockDeviceString = deviceNode;
119 blockDeviceString.replace(
"/dev/",
"");
120 blockDeviceString.replace(
"-",
"_2d");
121 blockDeviceString =
"/org/freedesktop/UDisks/devices/" + blockDeviceString;
125 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks", blockDeviceString,
"org.freedesktop.UDisks.Device", dbusConn);
126 if (driveControl.canSend()) {
127 TQValueList<TQT_DBusData> params;
128 params << TQT_DBusData::fromList(TQT_DBusDataList(unmountOptions));
129 TQT_DBusMessage reply = driveControl.sendWithReply(
"FilesystemUnmount", params, &error);
130 if (!error.isValid()) {
132 result[
"retcode"] = 0;
133 result[
"result"] =
true;
138 if (error.name() ==
"org.freedesktop.DBus.Error.ServiceUnknown") {
142 result[
"errStr"] = error.name() +
": " + error.message();
143 result[
"retcode"] = -1;
155 TQStringVariantMap UDisks2EjectDrive(TDEStorageDevice *sdevice) {
156 TQStringVariantMap result;
157 result[
"result"] =
false;
159 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
160 if (dbusConn.isConnected()) {
161 TQString blockDeviceString = sdevice->deviceNode();
162 blockDeviceString.replace(
"/dev/",
"");
163 blockDeviceString.replace(
"-",
"_2d");
164 blockDeviceString =
"/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
165 TQT_DBusProxy hardwareControl(
"org.freedesktop.UDisks2", blockDeviceString,
"org.freedesktop.DBus.Properties", dbusConn);
166 if (hardwareControl.canSend()) {
169 TQValueList<TQT_DBusData> params;
170 params << TQT_DBusData::fromString(
"org.freedesktop.UDisks2.Block") << TQT_DBusData::fromString(
"Drive");
171 TQT_DBusMessage reply = hardwareControl.sendWithReply(
"Get", params, &error);
172 if (error.isValid()) {
174 result[
"errStr"] = error.name() +
": " + error.message();
178 if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
179 TQT_DBusObjectPath driveObjectPath = reply[0].toVariant().value.toObjectPath();
180 if (!driveObjectPath.isValid()) {
183 error = TQT_DBusError();
184 TQT_DBusProxy driveInformation(
"org.freedesktop.UDisks2", driveObjectPath,
185 "org.freedesktop.DBus.Properties", dbusConn);
187 TQValueList<TQT_DBusData> params;
188 params << TQT_DBusData::fromString(
"org.freedesktop.UDisks2.Drive") << TQT_DBusData::fromString(
"Ejectable");
189 TQT_DBusMessage reply = driveInformation.sendWithReply(
"Get", params, &error);
190 if (error.isValid()) {
192 result[
"errStr"] = error.name() +
": " + error.message();
196 if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
197 bool ejectable = reply[0].toVariant().value.toBool();
199 result[
"errStr"] =
i18n(
"Media not ejectable");
204 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks2", driveObjectPath,
"org.freedesktop.UDisks2.Drive", dbusConn);
205 TQValueList<TQT_DBusData> params;
206 TQT_DBusDataMap<TQString> options(TQT_DBusData::Variant);
207 params << TQT_DBusData::fromStringKeyMap(options);
208 TQT_DBusMessage reply = driveControl.sendWithReply(
"Eject", params, &error);
209 if (error.isValid()) {
211 result[
"errStr"] = error.name() +
": " + error.message();
215 result[
"result"] =
true;
225 TQStringVariantMap UDisks2MountDrive(TQString deviceNode, TQString fileSystemType, TQString mountOptions) {
226 TQStringVariantMap result;
227 result[
"result"] =
false;
228 result[
"retcode"] = -2;
230 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
231 if (dbusConn.isConnected()) {
232 TQString blockDeviceString = deviceNode;
233 blockDeviceString.replace(
"/dev/",
"");
234 blockDeviceString.replace(
"-",
"_2d");
235 blockDeviceString =
"/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
239 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks2", blockDeviceString,
"org.freedesktop.UDisks2.Filesystem", dbusConn);
240 if (driveControl.canSend()) {
241 TQValueList<TQT_DBusData> params;
242 TQMap<TQString, TQT_DBusData> optionsMap;
243 if (fileSystemType !=
"") {
244 optionsMap[
"fstype"] = (TQT_DBusData::fromString(fileSystemType)).getAsVariantData();
246 optionsMap[
"options"] = (TQT_DBusData::fromString(mountOptions)).getAsVariantData();
247 params << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap<TQString>(optionsMap));
248 TQT_DBusMessage reply = driveControl.sendWithReply(
"Mount", params, &error);
249 if (!error.isValid()) {
251 result[
"retcode"] = 0;
252 result[
"result"] =
true;
257 if (error.name() ==
"org.freedesktop.DBus.Error.ServiceUnknown") {
261 result[
"errStr"] = error.name() +
": " + error.message();
262 result[
"retcode"] = -1;
271 TQStringVariantMap UDisks2UnmountDrive(TQString deviceNode, TQString unmountOptions) {
272 TQStringVariantMap result;
273 result[
"result"] =
false;
274 result[
"retcode"] = -2;
276 TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
277 if (dbusConn.isConnected()) {
278 TQString blockDeviceString = deviceNode;
279 blockDeviceString.replace(
"/dev/",
"");
280 blockDeviceString.replace(
"-",
"_2d");
281 blockDeviceString =
"/org/freedesktop/UDisks2/block_devices/" + blockDeviceString;
285 TQT_DBusProxy driveControl(
"org.freedesktop.UDisks2", blockDeviceString,
"org.freedesktop.UDisks2.Filesystem", dbusConn);
286 if (driveControl.canSend()) {
287 TQValueList<TQT_DBusData> params;
288 TQMap<TQString, TQT_DBusData> optionsMap;
289 optionsMap[
"options"] = (TQT_DBusData::fromString(unmountOptions)).getAsVariantData();
290 params << TQT_DBusData::fromStringKeyMap(TQT_DBusDataMap<TQString>(optionsMap));
291 TQT_DBusMessage reply = driveControl.sendWithReply(
"Unmount", params, &error);
292 if (!error.isValid()) {
294 result[
"retcode"] = 0;
295 result[
"result"] =
true;
300 if (error.name() ==
"org.freedesktop.DBus.Error.ServiceUnknown") {
304 result[
"errStr"] = error.name() +
": " + error.message();
305 result[
"retcode"] = -1;
TQString i18n(const char *text)