diff --git a/data/data.qrc b/data/data.qrc
index cfc4c149e..a113e7884 100644
--- a/data/data.qrc
+++ b/data/data.qrc
@@ -252,5 +252,8 @@
hypnotoad.gif
blank.ttf
schema-16.sql
+ icons/22x22/media-eject.png
+ icons/32x32/media-eject.png
+ icons/48x48/media-eject.png
diff --git a/data/icons/22x22/media-eject.png b/data/icons/22x22/media-eject.png
new file mode 100644
index 000000000..06c4c5372
Binary files /dev/null and b/data/icons/22x22/media-eject.png differ
diff --git a/data/icons/32x32/media-eject.png b/data/icons/32x32/media-eject.png
new file mode 100644
index 000000000..96f7ea9bb
Binary files /dev/null and b/data/icons/32x32/media-eject.png differ
diff --git a/data/icons/48x48/media-eject.png b/data/icons/48x48/media-eject.png
new file mode 100644
index 000000000..dcab20269
Binary files /dev/null and b/data/icons/48x48/media-eject.png differ
diff --git a/src/devices/devicekitlister.cpp b/src/devices/devicekitlister.cpp
index ecf77b010..354341046 100644
--- a/src/devices/devicekitlister.cpp
+++ b/src/devices/devicekitlister.cpp
@@ -239,3 +239,33 @@ QUrl DeviceKitLister::MakeDeviceUrl(const QString& id) {
return MakeUrlFromLocalPath(mount_point);
}
+
+void DeviceKitLister::UnmountDevice(const QString& id) {
+ QString path = LockAndGetDeviceInfo(id, &DeviceData::dbus_path);
+
+ OrgFreedesktopUDisksDeviceInterface device(
+ OrgFreedesktopUDisksInterface::staticInterfaceName(),
+ path, QDBusConnection::systemBus());
+ if (!device.isValid()) {
+ qWarning() << "Error connecting to the device interface on" << path;
+ return;
+ }
+
+ // Get the device's parent drive
+ QString drive_path = device.partitionSlave().path();
+ OrgFreedesktopUDisksDeviceInterface drive(
+ OrgFreedesktopUDisksInterface::staticInterfaceName(),
+ drive_path, QDBusConnection::systemBus());
+ if (!drive.isValid()) {
+ qWarning() << "Error connecting to the drive interface on" << drive_path;
+ return;
+ }
+
+ // Unmount the filesystem
+ QDBusPendingReply<> reply = device.FilesystemUnmount(QStringList());
+ reply.waitForFinished();
+
+ // Eject the drive
+ drive.DriveEject(QStringList());
+ // Don't bother waiting for the eject to finish
+}
diff --git a/src/devices/devicekitlister.h b/src/devices/devicekitlister.h
index b6ffcd378..2a4225248 100644
--- a/src/devices/devicekitlister.h
+++ b/src/devices/devicekitlister.h
@@ -44,9 +44,10 @@ public:
QVariantMap DeviceHardwareInfo(const QString& id);
QString MakeFriendlyName(const QString &id);
-
QUrl MakeDeviceUrl(const QString &id);
+ void UnmountDevice(const QString &id);
+
protected:
void Init();
diff --git a/src/devices/devicelister.h b/src/devices/devicelister.h
index 8b45814d7..0fe23ef60 100644
--- a/src/devices/devicelister.h
+++ b/src/devices/devicelister.h
@@ -50,9 +50,11 @@ public:
virtual QVariantMap DeviceHardwareInfo(const QString& id) = 0;
virtual QString MakeFriendlyName(const QString& id) = 0;
-
virtual QUrl MakeDeviceUrl(const QString& id) = 0;
+ // Do whatever needs to be done to safely remove the device.
+ virtual void UnmountDevice(const QString& id) = 0;
+
signals:
void DeviceAdded(const QString& id);
void DeviceRemoved(const QString& id);
diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp
index 4f97b96e0..a9c5aedfb 100644
--- a/src/devices/devicemanager.cpp
+++ b/src/devices/devicemanager.cpp
@@ -563,3 +563,15 @@ void DeviceManager::TasksChanged() {
emit dataChanged(index, index);
}
}
+
+void DeviceManager::Unmount(int row) {
+ DeviceInfo& info = devices_[row];
+ if (info.database_id_ == -1)
+ return;
+
+ if (info.device_)
+ Disconnect(row);
+
+ if (info.BestBackend()->lister_)
+ info.BestBackend()->lister_->UnmountDevice(info.BestBackend()->unique_id_);
+}
diff --git a/src/devices/devicemanager.h b/src/devices/devicemanager.h
index 360b759a5..4280ceb36 100644
--- a/src/devices/devicemanager.h
+++ b/src/devices/devicemanager.h
@@ -79,6 +79,7 @@ public:
boost::shared_ptr Connect(int row);
void Disconnect(int row);
void Forget(int row);
+ void Unmount(int row);
void SetDeviceIdentity(int row, const QString& friendly_name,
const QString& icon_name);
diff --git a/src/devices/deviceview.cpp b/src/devices/deviceview.cpp
index 3b6c214de..6d5479b72 100644
--- a/src/devices/deviceview.cpp
+++ b/src/devices/deviceview.cpp
@@ -121,10 +121,8 @@ DeviceView::DeviceView(QWidget* parent)
library_menu_(new QMenu(this))
{
// Device menu items
- connect_action_ = device_menu_->addAction(
- IconLoader::Load("list-add"), tr("Connect device"), this, SLOT(Connect()));
- disconnect_action_ = device_menu_->addAction(
- IconLoader::Load("list-remove"), tr("Disconnect device"), this, SLOT(Disconnect()));
+ eject_action_ = device_menu_->addAction(
+ IconLoader::Load("media-eject"), tr("Safely remove device"), this, SLOT(Unmount()));
forget_action_ = device_menu_->addAction(
IconLoader::Load("list-remove"), tr("Forget device"), this, SLOT(Forget()));
device_menu_->addSeparator();
@@ -187,16 +185,11 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) {
const QModelIndex library_index = MapToLibrary(menu_index_);
if (device_index.isValid()) {
- const bool is_connected = manager_->GetConnectedDevice(device_index.row());
const bool is_plugged_in = manager_->GetLister(device_index.row());
const bool is_remembered = manager_->GetDatabaseId(device_index.row()) != -1;
- connect_action_->setEnabled(is_plugged_in);
- disconnect_action_->setEnabled(is_plugged_in);
forget_action_->setEnabled(is_remembered);
-
- connect_action_->setVisible(!is_connected);
- disconnect_action_->setVisible(is_connected);
+ eject_action_->setEnabled(is_plugged_in);
device_menu_->popup(e->globalPos());
} else if (library_index.isValid()) {
@@ -254,11 +247,6 @@ void DeviceView::Connect() {
expand(menu_index_);
}
-void DeviceView::Disconnect() {
- QModelIndex device_idx = MapToDevice(menu_index_);
- manager_->Disconnect(device_idx.row());
-}
-
void DeviceView::DeviceDisconnected(int row) {
merged_model_->RemoveSubModel(sort_model_->mapFromSource(manager_->index(row)));
}
@@ -343,3 +331,8 @@ void DeviceView::Organise() {
organise_dialog_->SetFilenames(filenames);
organise_dialog_->show();
}
+
+void DeviceView::Unmount() {
+ QModelIndex device_idx = MapToDevice(menu_index_);
+ manager_->Unmount(device_idx.row());
+}
diff --git a/src/devices/deviceview.h b/src/devices/deviceview.h
index 9a4a2b3b1..67060e62b 100644
--- a/src/devices/deviceview.h
+++ b/src/devices/deviceview.h
@@ -62,7 +62,7 @@ protected:
private slots:
// Device menu actions
void Connect();
- void Disconnect();
+ void Unmount();
void Forget();
void Properties();
@@ -89,8 +89,7 @@ private:
boost::scoped_ptr organise_dialog_;
QMenu* device_menu_;
- QAction* connect_action_;
- QAction* disconnect_action_;
+ QAction* eject_action_;
QAction* forget_action_;
QAction* properties_action_;
diff --git a/src/devices/giolister.cpp b/src/devices/giolister.cpp
index 3ba694981..c7e7d8a4b 100644
--- a/src/devices/giolister.cpp
+++ b/src/devices/giolister.cpp
@@ -21,6 +21,8 @@
#include
#include
+#include
+
QString GioLister::MountInfo::unique_id() const {
return QString("Gio/%1/%2/%3").arg(uuid, filesystem_type).arg(filesystem_size);
}
@@ -139,7 +141,14 @@ void GioLister::MountChanged(GMount *mount) {
if (id.isNull())
return;
- mounts_[id] = ReadMountInfo(mount);
+ MountInfo new_info = ReadMountInfo(mount);
+
+ // Ignore the change if the new info is useless
+ if ((mounts_[id].filesystem_size != 0 && new_info.filesystem_size == 0) ||
+ (!mounts_[id].filesystem_type.isEmpty() && new_info.filesystem_type.isEmpty())) {
+ return;
+ }
+ mounts_[id] = new_info;
}
emit DeviceChanged(id);
@@ -242,3 +251,56 @@ QString GioLister::FindUniqueIdByMount(GMount *mount) const {
}
return QString();
}
+
+template
+void OperationFinished(F f, GObject *object, GAsyncResult *result) {
+ T* obj = reinterpret_cast(object);
+ GError* error = NULL;
+
+ f(obj, result, &error);
+
+ if (error) {
+ qDebug() << "Unmount error:" << error->message;
+ g_error_free(error);
+ }
+}
+
+void GioLister::VolumeEjectFinished(GObject *object, GAsyncResult *result, gpointer) {
+ OperationFinished(boost::bind(
+ g_volume_eject_with_operation_finish, _1, _2, _3), object, result);
+}
+
+void GioLister::MountEjectFinished(GObject *object, GAsyncResult *result, gpointer) {
+ OperationFinished(boost::bind(
+ g_mount_eject_with_operation_finish, _1, _2, _3), object, result);
+}
+
+void GioLister::MountUnmountFinished(GObject *object, GAsyncResult *result, gpointer) {
+ OperationFinished(boost::bind(
+ g_mount_unmount_with_operation_finish, _1, _2, _3), object, result);
+}
+
+void GioLister::UnmountDevice(const QString &id) {
+ GMount* mount = LockAndGetMountInfo(id, &MountInfo::mount);
+ if (!mount)
+ return;
+
+ GVolume* volume = g_mount_get_volume(mount);
+ if (volume) {
+ if (g_volume_can_eject(volume)) {
+ g_volume_eject(volume, G_MOUNT_UNMOUNT_NONE, NULL,
+ (GAsyncReadyCallback) VolumeEjectFinished, NULL);
+ g_object_unref(volume);
+ return;
+ }
+ g_object_unref(volume);
+ }
+
+ if (g_mount_can_eject(mount)) {
+ g_mount_eject(mount, G_MOUNT_UNMOUNT_NONE, NULL,
+ (GAsyncReadyCallback) MountEjectFinished, NULL);
+ } else if (g_mount_can_unmount(mount)) {
+ g_mount_unmount(mount, G_MOUNT_UNMOUNT_NONE, NULL,
+ (GAsyncReadyCallback) MountUnmountFinished, NULL);
+ }
+}
diff --git a/src/devices/giolister.h b/src/devices/giolister.h
index 15c013e6a..86018c1f3 100644
--- a/src/devices/giolister.h
+++ b/src/devices/giolister.h
@@ -42,9 +42,10 @@ public:
QVariantMap DeviceHardwareInfo(const QString& id);
QString MakeFriendlyName(const QString &id);
-
QUrl MakeDeviceUrl(const QString &id);
+ void UnmountDevice(const QString &id);
+
protected:
void Init();
@@ -74,6 +75,10 @@ private:
static void MountChangedCallback(GVolumeMonitor*, GMount*, gpointer);
static void MountRemovedCallback(GVolumeMonitor*, GMount*, gpointer);
+ static void VolumeEjectFinished(GObject *object, GAsyncResult *result, gpointer);
+ static void MountEjectFinished(GObject *object, GAsyncResult *result, gpointer);
+ static void MountUnmountFinished(GObject *object, GAsyncResult *result, gpointer);
+
static QString ConvertAndFree(char* str);
static MountInfo ReadMountInfo(GMount* mount);
diff --git a/src/devices/macdevicelister.h b/src/devices/macdevicelister.h
index f9f614b9e..26120cf2b 100644
--- a/src/devices/macdevicelister.h
+++ b/src/devices/macdevicelister.h
@@ -25,6 +25,8 @@ class MacDeviceLister : public DeviceLister {
virtual QString MakeFriendlyName(const QString& id);
virtual QUrl MakeDeviceUrl(const QString& id);
+ virtual void UnmountDevice(const QString &id);
+
private:
virtual void Init();
diff --git a/src/devices/macdevicelister.mm b/src/devices/macdevicelister.mm
index 24cd4adca..b96b9f590 100644
--- a/src/devices/macdevicelister.mm
+++ b/src/devices/macdevicelister.mm
@@ -327,3 +327,7 @@ quint64 MacDeviceLister::DeviceFreeSpace(const QString& serial){
}
QVariantMap MacDeviceLister::DeviceHardwareInfo(const QString& id){return QVariantMap();}
+
+void MacDeviceLister::UnmountDevice(const QString &id) {
+ qFatal("Fixme");
+}
diff --git a/src/translations/ar.po b/src/translations/ar.po
index 7a87dc19f..b21ead180 100644
--- a/src/translations/ar.po
+++ b/src/translations/ar.po
@@ -521,9 +521,6 @@ msgstr ""
msgid "Disc"
msgstr "قرص مدمج"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1299,6 +1296,9 @@ msgstr ""
msgid "Rock"
msgstr ""
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr ""
diff --git a/src/translations/bg.po b/src/translations/bg.po
index 10a9ae714..a14e627c9 100644
--- a/src/translations/bg.po
+++ b/src/translations/bg.po
@@ -521,9 +521,6 @@ msgstr ""
msgid "Disc"
msgstr ""
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1299,6 +1296,9 @@ msgstr ""
msgid "Rock"
msgstr ""
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr ""
diff --git a/src/translations/cs.po b/src/translations/cs.po
index e147eda74..e8d9587c5 100644
--- a/src/translations/cs.po
+++ b/src/translations/cs.po
@@ -522,9 +522,6 @@ msgstr "Zakázáno"
msgid "Disc"
msgstr "Disk"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr "Volby zobrazení"
@@ -1303,6 +1300,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Vzorkovací frekvence"
diff --git a/src/translations/da.po b/src/translations/da.po
index e8f2fe43d..19a0e71e2 100644
--- a/src/translations/da.po
+++ b/src/translations/da.po
@@ -522,9 +522,6 @@ msgstr "Deaktiveret"
msgid "Disc"
msgstr "Disk"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1304,6 +1301,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Samplingsrate"
diff --git a/src/translations/de.po b/src/translations/de.po
index 0cb466405..b51bd87b4 100644
--- a/src/translations/de.po
+++ b/src/translations/de.po
@@ -530,9 +530,6 @@ msgstr "Deaktiviert"
msgid "Disc"
msgstr "CD/DVD"
-msgid "Disconnect device"
-msgstr "Gerät trennen"
-
msgid "Display options"
msgstr "Anzeigeoptionen"
@@ -1318,6 +1315,9 @@ msgstr "Nur ASCII-Zeichen benutzen"
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Abtastrate"
@@ -1774,6 +1774,9 @@ msgstr "Anhalten"
msgid "track %1"
msgstr "Stück %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Gerät trennen"
+
#~ msgid "Connected"
#~ msgstr "Verbunden"
diff --git a/src/translations/el.po b/src/translations/el.po
index f0bbe1edc..3a3a10598 100644
--- a/src/translations/el.po
+++ b/src/translations/el.po
@@ -533,9 +533,6 @@ msgstr "Απενεργοποιημένο"
msgid "Disc"
msgstr "Δίσκος"
-msgid "Disconnect device"
-msgstr "Αποσύνδεση συσκευής"
-
msgid "Display options"
msgstr "Επιλογές απεικόνισης"
@@ -1320,6 +1317,9 @@ msgstr "Περιορισμός σε χαρακτήρες ASCII"
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Ρυθμός δειγματοληψίας"
@@ -1779,6 +1779,9 @@ msgstr "διακοπή"
msgid "track %1"
msgstr "κομμάτι %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Αποσύνδεση συσκευής"
+
#~ msgid "Connected"
#~ msgstr "Συνδέθηκε"
diff --git a/src/translations/en_CA.po b/src/translations/en_CA.po
index 78c96656d..f7fee69c7 100644
--- a/src/translations/en_CA.po
+++ b/src/translations/en_CA.po
@@ -523,9 +523,6 @@ msgstr "Disabled"
msgid "Disc"
msgstr "Disc"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr "Display options"
@@ -1304,6 +1301,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Sample rate"
diff --git a/src/translations/en_GB.po b/src/translations/en_GB.po
index 49f907517..06182bd0e 100644
--- a/src/translations/en_GB.po
+++ b/src/translations/en_GB.po
@@ -521,9 +521,6 @@ msgstr "Disabled"
msgid "Disc"
msgstr "Disc"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1301,6 +1298,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Sample rate"
diff --git a/src/translations/es.po b/src/translations/es.po
index ea8623448..3dec7b282 100644
--- a/src/translations/es.po
+++ b/src/translations/es.po
@@ -533,9 +533,6 @@ msgstr "Desactivado"
msgid "Disc"
msgstr "Disco"
-msgid "Disconnect device"
-msgstr "Desconectar el dispositivo"
-
msgid "Display options"
msgstr "Opciones de visualización"
@@ -1324,6 +1321,9 @@ msgstr "Restringir a caracteres ASCII"
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Tasa de muestreo"
@@ -1780,6 +1780,9 @@ msgstr "detener"
msgid "track %1"
msgstr "Pista %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Desconectar el dispositivo"
+
#~ msgid "Connected"
#~ msgstr "Conectado"
diff --git a/src/translations/fi.po b/src/translations/fi.po
index d96d439e5..eb0b13c68 100644
--- a/src/translations/fi.po
+++ b/src/translations/fi.po
@@ -521,9 +521,6 @@ msgstr ""
msgid "Disc"
msgstr "Levy"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1301,6 +1298,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr ""
diff --git a/src/translations/fr.po b/src/translations/fr.po
index 43efb8f2c..ff71cd115 100644
--- a/src/translations/fr.po
+++ b/src/translations/fr.po
@@ -526,9 +526,6 @@ msgstr "Désactivées"
msgid "Disc"
msgstr "CD"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1311,6 +1308,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Échantillonnage"
diff --git a/src/translations/gl.po b/src/translations/gl.po
index 24659927c..64b02c9fd 100644
--- a/src/translations/gl.po
+++ b/src/translations/gl.po
@@ -521,9 +521,6 @@ msgstr ""
msgid "Disc"
msgstr "Disco"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1301,6 +1298,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Taxa de mostra"
diff --git a/src/translations/it.po b/src/translations/it.po
index 37b751835..5c565844c 100644
--- a/src/translations/it.po
+++ b/src/translations/it.po
@@ -532,9 +532,6 @@ msgstr "Disabilitata"
msgid "Disc"
msgstr "Disco"
-msgid "Disconnect device"
-msgstr "Disconnetti dispositivo"
-
msgid "Display options"
msgstr "Opzioni di visualizzazione"
@@ -1323,6 +1320,9 @@ msgstr "Limita ai caratteri ASCII"
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Campionamento"
@@ -1784,6 +1784,9 @@ msgstr "ferma"
msgid "track %1"
msgstr "traccia %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Disconnetti dispositivo"
+
#~ msgid "Connected"
#~ msgstr "Connesso"
diff --git a/src/translations/kk.po b/src/translations/kk.po
index 3bdfcec3a..7993b93be 100644
--- a/src/translations/kk.po
+++ b/src/translations/kk.po
@@ -521,9 +521,6 @@ msgstr ""
msgid "Disc"
msgstr "Диск"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1301,6 +1298,9 @@ msgstr ""
msgid "Rock"
msgstr "Рок"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr ""
diff --git a/src/translations/lt.po b/src/translations/lt.po
index 9ff27f98d..3350e0bf2 100644
--- a/src/translations/lt.po
+++ b/src/translations/lt.po
@@ -521,9 +521,6 @@ msgstr ""
msgid "Disc"
msgstr ""
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1299,6 +1296,9 @@ msgstr ""
msgid "Rock"
msgstr ""
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr ""
diff --git a/src/translations/nb.po b/src/translations/nb.po
index 5fe12c4f7..efe930190 100644
--- a/src/translations/nb.po
+++ b/src/translations/nb.po
@@ -521,9 +521,6 @@ msgstr "Deaktivert"
msgid "Disc"
msgstr "Disk"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1302,6 +1299,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Samplingsrate"
diff --git a/src/translations/nl.po b/src/translations/nl.po
index 420bb3d38..29bcfbb54 100644
--- a/src/translations/nl.po
+++ b/src/translations/nl.po
@@ -529,9 +529,6 @@ msgstr "Uitgeschakeld"
msgid "Disc"
msgstr "Schijf"
-msgid "Disconnect device"
-msgstr "Verbinding met apparaat verbreken"
-
msgid "Display options"
msgstr "Weergaveopties"
@@ -1318,6 +1315,9 @@ msgstr "Beperken tot ASCII karakters"
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Samplerate"
@@ -1773,6 +1773,9 @@ msgstr "stoppen"
msgid "track %1"
msgstr "track %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Verbinding met apparaat verbreken"
+
#~ msgid "Connected"
#~ msgstr "Verbonden"
diff --git a/src/translations/oc.po b/src/translations/oc.po
index 11d7dc81f..ac1ee08a6 100644
--- a/src/translations/oc.po
+++ b/src/translations/oc.po
@@ -521,9 +521,6 @@ msgstr "Desactivat"
msgid "Disc"
msgstr "Disc"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1299,6 +1296,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr ""
diff --git a/src/translations/pl.po b/src/translations/pl.po
index ba9aab9d0..3902931eb 100644
--- a/src/translations/pl.po
+++ b/src/translations/pl.po
@@ -527,9 +527,6 @@ msgstr "Wyłączone"
msgid "Disc"
msgstr "Płyta"
-msgid "Disconnect device"
-msgstr "Odłącz urządzenie"
-
msgid "Display options"
msgstr "Opcje wyświetlania"
@@ -1310,6 +1307,9 @@ msgstr ""
msgid "Rock"
msgstr ""
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr ""
@@ -1755,6 +1755,9 @@ msgstr ""
msgid "track %1"
msgstr "utwór %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Odłącz urządzenie"
+
#~ msgid "Connected"
#~ msgstr "Podłączono"
diff --git a/src/translations/pt.po b/src/translations/pt.po
index 78409a0f3..e8d65fb3e 100644
--- a/src/translations/pt.po
+++ b/src/translations/pt.po
@@ -530,9 +530,6 @@ msgstr "Desactivado"
msgid "Disc"
msgstr "Disco"
-msgid "Disconnect device"
-msgstr "Desligar o dispositivo"
-
msgid "Display options"
msgstr "Opções de exibição"
@@ -1315,6 +1312,9 @@ msgstr "Restringir a caracteres ASCII"
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Taxa de amostragem"
@@ -1770,6 +1770,9 @@ msgstr "parar"
msgid "track %1"
msgstr "faixa %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Desligar o dispositivo"
+
#~ msgid "Connected"
#~ msgstr "Ligado"
diff --git a/src/translations/pt_BR.po b/src/translations/pt_BR.po
index 1cda10762..9173b824e 100644
--- a/src/translations/pt_BR.po
+++ b/src/translations/pt_BR.po
@@ -526,9 +526,6 @@ msgstr "Desativado"
msgid "Disc"
msgstr "Disco"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr "Exibir opções"
@@ -1311,6 +1308,9 @@ msgstr "Restringir a caracteres ASCII"
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Taxa de amostragem"
diff --git a/src/translations/ro.po b/src/translations/ro.po
index 88769a958..bf7925fcc 100644
--- a/src/translations/ro.po
+++ b/src/translations/ro.po
@@ -521,9 +521,6 @@ msgstr "Dezactivat"
msgid "Disc"
msgstr "Disc"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1300,6 +1297,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Rată de eșantionare"
diff --git a/src/translations/ru.po b/src/translations/ru.po
index 2ce3988cb..e15d205cc 100644
--- a/src/translations/ru.po
+++ b/src/translations/ru.po
@@ -528,9 +528,6 @@ msgstr "Отключено"
msgid "Disc"
msgstr "Диск"
-msgid "Disconnect device"
-msgstr "Отсоединение устройства"
-
msgid "Display options"
msgstr "Настройки отображения"
@@ -1313,6 +1310,9 @@ msgstr "Ограничить только символами ASCII"
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Частота"
@@ -1770,6 +1770,9 @@ msgstr "Остановить"
msgid "track %1"
msgstr "композиция %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Отсоединение устройства"
+
#~ msgid "Connected"
#~ msgstr "Подключено"
diff --git a/src/translations/sk.po b/src/translations/sk.po
index b52f74eb2..b0e7d534a 100644
--- a/src/translations/sk.po
+++ b/src/translations/sk.po
@@ -530,9 +530,6 @@ msgstr "Zakázané"
msgid "Disc"
msgstr "Disk"
-msgid "Disconnect device"
-msgstr "Odpojiť zariadenie"
-
msgid "Display options"
msgstr "Možnosti zobrazovania"
@@ -1314,6 +1311,9 @@ msgstr "Obmedziť na ASCII písmená"
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Rýchlosť vzorkovania"
@@ -1768,6 +1768,9 @@ msgstr "zastaviť"
msgid "track %1"
msgstr "skladba %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Odpojiť zariadenie"
+
#~ msgid "Connected"
#~ msgstr "Pripojené"
diff --git a/src/translations/sr.po b/src/translations/sr.po
index b320c1fe1..2f742e4f9 100644
--- a/src/translations/sr.po
+++ b/src/translations/sr.po
@@ -523,9 +523,6 @@ msgstr "Искључено"
msgid "Disc"
msgstr "Диск"
-msgid "Disconnect device"
-msgstr "Прекини везу са уређајем"
-
msgid "Display options"
msgstr "Опције приказа"
@@ -1304,6 +1301,9 @@ msgstr "Ограничи се на аски знакове"
msgid "Rock"
msgstr "Рок"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "узорковање"
@@ -1751,6 +1751,9 @@ msgstr "Заустави"
msgid "track %1"
msgstr "нумера %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Прекини везу са уређајем"
+
#~ msgid "Connected"
#~ msgstr "Повезан"
diff --git a/src/translations/sv.po b/src/translations/sv.po
index 1b874b37b..0eff668a0 100644
--- a/src/translations/sv.po
+++ b/src/translations/sv.po
@@ -523,9 +523,6 @@ msgstr "Inaktiverad"
msgid "Disc"
msgstr "Skiva"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr "Visningsalternativ"
@@ -1304,6 +1301,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Samplingsfrekvens"
diff --git a/src/translations/tr.po b/src/translations/tr.po
index 24eb6f749..a365ef9e0 100644
--- a/src/translations/tr.po
+++ b/src/translations/tr.po
@@ -521,9 +521,6 @@ msgstr "Devre Dışı"
msgid "Disc"
msgstr "Disk"
-msgid "Disconnect device"
-msgstr "Aygıt bağlantısını kes"
-
msgid "Display options"
msgstr "Gösterim seçenekleri"
@@ -1305,6 +1302,9 @@ msgstr ""
msgid "Rock"
msgstr "Rock"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Örneklem oranı"
@@ -1750,6 +1750,9 @@ msgstr ""
msgid "track %1"
msgstr "parça %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Aygıt bağlantısını kes"
+
#~ msgid "Connected"
#~ msgstr "Bağlı"
diff --git a/src/translations/translations.pot b/src/translations/translations.pot
index 48dcec084..053f41a7e 100644
--- a/src/translations/translations.pot
+++ b/src/translations/translations.pot
@@ -511,9 +511,6 @@ msgstr ""
msgid "Disc"
msgstr ""
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1289,6 +1286,9 @@ msgstr ""
msgid "Rock"
msgstr ""
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr ""
diff --git a/src/translations/uk.po b/src/translations/uk.po
index 211fec615..3ddc97a90 100644
--- a/src/translations/uk.po
+++ b/src/translations/uk.po
@@ -529,9 +529,6 @@ msgstr "Вимкнено"
msgid "Disc"
msgstr "Диск"
-msgid "Disconnect device"
-msgstr "Роз'єднати пристрій"
-
msgid "Display options"
msgstr "Параметри показу"
@@ -1314,6 +1311,9 @@ msgstr "Обмежитись символами ASCII"
msgid "Rock"
msgstr "Рок"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "Частота вибірки"
@@ -1769,6 +1769,9 @@ msgstr "зупинити"
msgid "track %1"
msgstr "доріжка %1"
+#~ msgid "Disconnect device"
+#~ msgstr "Роз'єднати пристрій"
+
#~ msgid "Connected"
#~ msgstr "З'єднано"
diff --git a/src/translations/zh_CN.po b/src/translations/zh_CN.po
index 510b8eac6..ec6da652a 100644
--- a/src/translations/zh_CN.po
+++ b/src/translations/zh_CN.po
@@ -521,9 +521,6 @@ msgstr ""
msgid "Disc"
msgstr "盘片"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr ""
@@ -1299,6 +1296,9 @@ msgstr ""
msgid "Rock"
msgstr ""
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "采样率"
diff --git a/src/translations/zh_TW.po b/src/translations/zh_TW.po
index e20784819..e1b067920 100644
--- a/src/translations/zh_TW.po
+++ b/src/translations/zh_TW.po
@@ -525,9 +525,6 @@ msgstr "停用"
msgid "Disc"
msgstr "唱片"
-msgid "Disconnect device"
-msgstr ""
-
msgid "Display options"
msgstr "顯示選項"
@@ -1304,6 +1301,9 @@ msgstr "限制為 ASCII字符"
msgid "Rock"
msgstr "搖滾"
+msgid "Safely remove device"
+msgstr ""
+
msgid "Sample rate"
msgstr "取樣頻率"