aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/udisks
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/General/udisks')
-rw-r--r--src/plugins/General/udisks/CMakeLists.txt36
-rw-r--r--src/plugins/General/udisks/settingsdialog.cpp55
-rw-r--r--src/plugins/General/udisks/settingsdialog.h45
-rw-r--r--src/plugins/General/udisks/settingsdialog.ui122
-rw-r--r--src/plugins/General/udisks/translations/translations.qrc33
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_bg.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_cs.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_de.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_el.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_en.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_es.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_fi.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_fr.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_gl_ES.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_he.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_hu.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_id.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_it.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_ja.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_kk.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_ko.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_lt.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_nl.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_pl_PL.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_pt.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_pt_BR.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_ru.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_sk.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_sr_BA.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_sr_RS.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_tr.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_uk_UA.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_zh_CN.ts83
-rw-r--r--src/plugins/General/udisks/translations/udisks_plugin_zh_TW.ts83
-rw-r--r--src/plugins/General/udisks/udisks.pro26
-rw-r--r--src/plugins/General/udisks/udisksdevice.cpp118
-rw-r--r--src/plugins/General/udisks/udisksdevice.h91
-rw-r--r--src/plugins/General/udisks/udisksfactory.cpp59
-rw-r--r--src/plugins/General/udisks/udisksfactory.h44
-rw-r--r--src/plugins/General/udisks/udisksmanager.cpp91
-rw-r--r--src/plugins/General/udisks/udisksmanager.h59
-rw-r--r--src/plugins/General/udisks/udisksplugin.cpp253
-rw-r--r--src/plugins/General/udisks/udisksplugin.h65
43 files changed, 3504 insertions, 0 deletions
diff --git a/src/plugins/General/udisks/CMakeLists.txt b/src/plugins/General/udisks/CMakeLists.txt
new file mode 100644
index 000000000..95209cca3
--- /dev/null
+++ b/src/plugins/General/udisks/CMakeLists.txt
@@ -0,0 +1,36 @@
+project(libudisks)
+
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+# libqmmpui & libqmmp
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../)
+link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmpui)
+link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmp)
+
+SET(libudisks_SRCS
+ udisksfactory.cpp
+ udisksmanager.cpp
+ udisksplugin.cpp
+ udisksdevice.cpp
+ settingsdialog.cpp
+)
+
+SET(libudisks_RCCS translations/translations.qrc)
+
+QT5_ADD_RESOURCES(libudisks_RCC_SRCS ${libudisks_RCCS})
+
+# user interface
+
+SET(libudisks_UIS
+ settingsdialog.ui
+)
+
+QT5_WRAP_UI(libudisks_UIS_H ${libudisks_UIS})
+# Don't forget to include output directory, otherwise
+# the UI file won't be wrapped!
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+ADD_LIBRARY(udisks MODULE ${libudisks_SRCS} ${libudisks_UIS_H} ${libudisks_RCC_SRCS})
+add_dependencies(udisks libqmmpui)
+target_link_libraries(udisks Qt5::Widgets Qt5::DBus libqmmpui libqmmp)
+install(TARGETS udisks DESTINATION ${PLUGIN_DIR}/General)
diff --git a/src/plugins/General/udisks/settingsdialog.cpp b/src/plugins/General/udisks/settingsdialog.cpp
new file mode 100644
index 000000000..b051cec0b
--- /dev/null
+++ b/src/plugins/General/udisks/settingsdialog.cpp
@@ -0,0 +1,55 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#include <QSettings>
+#include <qmmp/qmmp.h>
+#include "settingsdialog.h"
+
+SettingsDialog::SettingsDialog(QWidget *parent)
+ : QDialog(parent)
+{
+ m_ui.setupUi(this);
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("UDisks");
+ m_ui.cdGroupBox->setChecked(settings.value("cda", true).toBool());
+ m_ui.addTracksCheckBox->setChecked(settings.value("add_tracks", false).toBool());
+ m_ui.removeTracksCheckBox->setChecked(settings.value("remove_tracks", false).toBool());
+ m_ui.removableGroupBox->setChecked(settings.value("removable", true).toBool());
+ m_ui.addFilesCheckBox->setChecked(settings.value("add_files", false).toBool());
+ m_ui.removeFilesCheckBox->setChecked(settings.value("remove_files", false).toBool());
+ settings.endGroup();
+}
+
+
+SettingsDialog::~SettingsDialog()
+{}
+
+void SettingsDialog::accept()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("UDisks");
+ settings.setValue("cda", m_ui.cdGroupBox->isChecked());
+ settings.setValue("add_tracks", m_ui.addTracksCheckBox->isChecked());
+ settings.setValue("remove_tracks", m_ui.removeTracksCheckBox->isChecked());
+ settings.setValue("removable", m_ui.removableGroupBox->isChecked());
+ settings.setValue("add_files", m_ui.addFilesCheckBox->isChecked());
+ settings.setValue("remove_files", m_ui.removeFilesCheckBox->isChecked());
+ settings.endGroup();
+ QDialog::accept();
+}
diff --git a/src/plugins/General/udisks/settingsdialog.h b/src/plugins/General/udisks/settingsdialog.h
new file mode 100644
index 000000000..10fb8814f
--- /dev/null
+++ b/src/plugins/General/udisks/settingsdialog.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#ifndef SETTINGSDIALOG_H
+#define SETTINGSDIALOG_H
+
+#include <QDialog>
+#include "ui_settingsdialog.h"
+
+/**
+ @author Ilya Kotov <forkotov02@ya.ru>
+*/
+class SettingsDialog : public QDialog
+{
+Q_OBJECT
+public:
+ SettingsDialog(QWidget *parent = nullptr);
+
+ ~SettingsDialog();
+
+
+public slots:
+ virtual void accept() override;
+
+private:
+ Ui::SettingsDialog m_ui;
+};
+
+#endif
diff --git a/src/plugins/General/udisks/settingsdialog.ui b/src/plugins/General/udisks/settingsdialog.ui
new file mode 100644
index 000000000..5b039a88c
--- /dev/null
+++ b/src/plugins/General/udisks/settingsdialog.ui
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SettingsDialog</class>
+ <widget class="QDialog" name="SettingsDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>348</width>
+ <height>247</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>UDisks Plugin Settings</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="leftMargin">
+ <number>6</number>
+ </property>
+ <property name="rightMargin">
+ <number>6</number>
+ </property>
+ <property name="bottomMargin">
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="cdGroupBox">
+ <property name="title">
+ <string>CD Audio Detection</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QCheckBox" name="addTracksCheckBox">
+ <property name="text">
+ <string>Add tracks to playlist automatically</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="removeTracksCheckBox">
+ <property name="text">
+ <string>Remove tracks from playlist automatically</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="removableGroupBox">
+ <property name="title">
+ <string>Removable Device Detection</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QCheckBox" name="addFilesCheckBox">
+ <property name="text">
+ <string>Add files to playlist automatically</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="removeFilesCheckBox">
+ <property name="text">
+ <string>Remove files from playlist automatically</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>SettingsDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>199</x>
+ <y>221</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>22</x>
+ <y>242</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>SettingsDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>247</x>
+ <y>225</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>273</x>
+ <y>229</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/General/udisks/translations/translations.qrc b/src/plugins/General/udisks/translations/translations.qrc
new file mode 100644
index 000000000..8c398ef67
--- /dev/null
+++ b/src/plugins/General/udisks/translations/translations.qrc
@@ -0,0 +1,33 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>udisks_plugin_ru.qm</file>
+ <file>udisks_plugin_uk_UA.qm</file>
+ <file>udisks_plugin_zh_CN.qm</file>
+ <file>udisks_plugin_zh_TW.qm</file>
+ <file>udisks_plugin_tr.qm</file>
+ <file>udisks_plugin_cs.qm</file>
+ <file>udisks_plugin_pt_BR.qm</file>
+ <file>udisks_plugin_pt.qm</file>
+ <file>udisks_plugin_de.qm</file>
+ <file>udisks_plugin_pl_PL.qm</file>
+ <file>udisks_plugin_fr.qm</file>
+ <file>udisks_plugin_it.qm</file>
+ <file>udisks_plugin_kk.qm</file>
+ <file>udisks_plugin_ko.qm</file>
+ <file>udisks_plugin_lt.qm</file>
+ <file>udisks_plugin_hu.qm</file>
+ <file>udisks_plugin_nl.qm</file>
+ <file>udisks_plugin_ja.qm</file>
+ <file>udisks_plugin_sk.qm</file>
+ <file>udisks_plugin_es.qm</file>
+ <file>udisks_plugin_he.qm</file>
+ <file>udisks_plugin_gl_ES.qm</file>
+ <file>udisks_plugin_sr_BA.qm</file>
+ <file>udisks_plugin_sr_RS.qm</file>
+ <file>udisks_plugin_bg.qm</file>
+ <file>udisks_plugin_el.qm</file>
+ <file>udisks_plugin_id.qm</file>
+ <file>udisks_plugin_fi.qm</file>
+ </qresource>
+</RCC>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_bg.ts b/src/plugins/General/udisks/translations/udisks_plugin_bg.ts
new file mode 100644
index 000000000..f6c63b44a
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_bg.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="bg">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_cs.ts b/src/plugins/General/udisks/translations/udisks_plugin_cs.ts
new file mode 100644
index 000000000..655ea9c84
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_cs.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="cs">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Nastavení modulu UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Detekce zvukových CD</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Automaticky přidat stopy do seznamu skladeb</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Automaticky odebrat stopy ze seznamu skladeb</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Detekce odpojitelných zařízení</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Automaticky přidat soubory do seznamu skladeb</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Automaticky odebrat stopy ze seznamu skladeb</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Modul UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>O modulu UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Modul Qmmp UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Tento modul poskytuje detekci výměnných médií pomocí UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Přidat CD „%1“</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Přidat svazek „%1“</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_de.ts b/src/plugins/General/udisks/translations/udisks_plugin_de.ts
new file mode 100644
index 000000000..42dd34174
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_de.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Einstellungen UDisks-Modul</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>CD-Audio-Erkennung</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Titel automatisch zur Wiedergabeliste hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Titel automatisch von der Wiedergabeliste entfernen</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Wechsellaufwerkerkennung</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Dateien automatisch zur Wiedergabeliste hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Dateien automatisch von der Wiedergabeliste entfernen</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>UDisks2-Modul</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Über UDisks2-Modul</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Qmmp UDisks2-Modul</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Dieses Modul bietet Wechsellaufwerkerkennung unter Verwendung von UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Geschrieben von: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>CD „%1“ hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Datenträger „%1“ hinzufügen</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_el.ts b/src/plugins/General/udisks/translations/udisks_plugin_el.ts
new file mode 100644
index 000000000..eb41b22fb
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_el.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="el">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Ρυθμίσεις πρόσθετου UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Ανίχνευση CD ήχου</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Προσθήκη των κομματιών αυτόματα στη λίστα αναπαραγωγής</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Αφαίρεση των κομματιών αυτόματα από τη λίστα αναπαραγωγής</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Ανίχνευση αφαιρούμενης συσκευής</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Προσθήκη αρχείων αυτόματα στη λίστα αναπαραγωγής</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Αφαίρεση των αρχείων από τη λίστα αναπαραγωγής αυτόματα</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Πρόσθετο UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Σχετικά με το πρόσθετο UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Qmmp πρόσθετο UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Αυτό το πρόσθετο παρέχει την ανίχνευση αφαιρούμενων συσκευών μέσω UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Γράφτηκε από τον: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Προσθήκη CD «%1»</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Προσθήκη Έντασης «%1»</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_en.ts b/src/plugins/General/udisks/translations/udisks_plugin_en.ts
new file mode 100644
index 000000000..5e44b7b87
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_en.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en_US">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_es.ts b/src/plugins/General/udisks/translations/udisks_plugin_es.ts
new file mode 100644
index 000000000..907d8805d
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_es.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="es">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Configuración del módulo UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Detección de audio CD</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Añadir pistas a la lista de reproducción automáticamente</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Eliminar pistas de la lista de reproducción automáticamente</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Detectar dispositivos extraibles</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Añadir archivos a la lista de reproducción automáticamente</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Eliminar archivos de la lista de reproducción automáticamente</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Módulo UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Acerca del Módulo UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Módulo UDisks2 de Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Este módulo proporciona detección de dispositivos extraíbles mediante UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Escrito por: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Añadir CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Añadir volumen &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_fi.ts b/src/plugins/General/udisks/translations/udisks_plugin_fi.ts
new file mode 100644
index 000000000..cf41107dd
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_fi.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fi">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>UDisks-liitännäisen asetukset</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Lisää kappaleet soittolistaan automaattisesti</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Poista kappaleet soittolistalta automaattisesti</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Irrotettavan laitteen havaitseminen</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Lisää tiedostot soittolistaan automaattisesti</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Poista tiedostot soittolistasta automaattisesti</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>UDisks2-liitännäinen</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Qmmp:n UDisks2-liitännäinen</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Toteuttanut: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Lisää CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_fr.ts b/src/plugins/General/udisks/translations/udisks_plugin_fr.ts
new file mode 100644
index 000000000..5efce0a69
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_fr.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fr">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Configuration du greffon UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Détection de CD audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Ajouter automatiquement les pistes à la liste</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Enlever automatiquement les pistes de la liste</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Détection de périphérique amovible</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Ajouter automatiquement les fichiers à la liste</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Enlever automatiquement les fichiers à la liste</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Greffon UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>À propos du greffon UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Greffon UDisks2 pour Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Ce greffon fournit une détection de périphériques amovibles en utilisant UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Écrit par : Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Ajouter CD « %1 »</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Ajouter volume « %1 »</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_gl_ES.ts b/src/plugins/General/udisks/translations/udisks_plugin_gl_ES.ts
new file mode 100644
index 000000000..f95311746
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_gl_ES.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="gl_ES">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Preferencias do engadido UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Detección de CD de audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Engadir pistas á lista de reprodución automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Eliminar pistas da lista de reprodución automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Detección de dispositivos extraíbles</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Engadir ficheiros á lista de reprodución automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Eliminar ficheiros da lista de reprodución automaticamente</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Engadido UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Sobre o engadido UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Engadido UDisks2 de Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Este engadido provén detección de dispositivos extraíbles usando UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Escrito por: LLya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Engadir CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Engadir volume &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_he.ts b/src/plugins/General/udisks/translations/udisks_plugin_he.ts
new file mode 100644
index 000000000..755a13f49
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_he.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="he">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>הגדרות תוסף UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>איתור אוטומטי של תקליטור שמע</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>הוסף רצועות אוטומטית לתוך רשימת נגינה</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>הסר רצועות אוטומטית מתוך רשימת נגינה</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>איתור התקנים נשלפים</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>הוסף קבצים אוטומטית לתוך רשימת נגינה</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>הסר קבצים אוטומטית מתוך רשימת נגינה</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>תוסף UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>אודות תוסף UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>תוסף UDisks2 של Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>תוסף זה מספק איתור התקנים ברי הזזה באמצעות UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>הוסף תקליטור &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>הוסף כרך &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_hu.ts b/src/plugins/General/udisks/translations/udisks_plugin_hu.ts
new file mode 100644
index 000000000..94f6b2dfd
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_hu.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="hu">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_id.ts b/src/plugins/General/udisks/translations/udisks_plugin_id.ts
new file mode 100644
index 000000000..ce56e2aa6
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_id.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="id">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Setelan Plugin UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Deteksi Audio CD</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Tambah track ke daftarmain secara otomatis</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Buang track dari daftarmain secara otomatis</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Deteksi Perangkat Dapat-dilepas</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Tambah file ke daftarmain secara otomatis</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Buang file dari daftarmain secara otomatis</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Plugin UDisks</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Tentang Plugin UDisks</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Plugin UDisks Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Plugin ini menyediakan deteksi perangkat dapat-dilepas menggunakan UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Ditulis oleh: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Tambah CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Tambah Volume &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_it.ts b/src/plugins/General/udisks/translations/udisks_plugin_it.ts
new file mode 100644
index 000000000..56b6f4140
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_it.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Impostazioni dell&apos;estensione UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Rilevamento CD Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Aggiungi automaticamente le tracce alla scaletta</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Rimuovi automaticamente i titoli dalla scaletta</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Rilevamento dispositivi rimovibili</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Aggiungi automaticamente i file alla scaletta</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Rimuovi automaticamente i file dalla scaletta</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Estensione UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Informazioni sull&apos;estensione UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Estensione UDisks2 per Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Estensione che permette il rilevamento di dispositivi rimovibili utilizzando UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Autori: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Aggiungi CD «%1»</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Aggiungi volume «%1»</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_ja.ts b/src/plugins/General/udisks/translations/udisks_plugin_ja.ts
new file mode 100644
index 000000000..6b226722d
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_ja.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ja_JP">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>UDisks プラグイン設定</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>音楽 CD 検知</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>プレイリストにトラックを自動追加</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>プレイリストからトラックを自動除去</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>着脱可能なデバイスの検知</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>プレイリストにファイルを自動追加</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>プレイリストからファイルを自動除去</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>UDisks2 プラグイン</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>UDisks2 プラグインについて</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>QMMP UDisks2 プラグイン</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>このプラグインは着脱可能なデバイスの検知を UDisks2 により行ないます</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>制作: Илья Котов (Ilya Kotov) &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>CD &quot;%1&quot; を追加</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>量目 &quot;%1&quot; を追加</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_kk.ts b/src/plugins/General/udisks/translations/udisks_plugin_kk.ts
new file mode 100644
index 000000000..336c9269d
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_kk.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="kk_KZ">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_ko.ts b/src/plugins/General/udisks/translations/udisks_plugin_ko.ts
new file mode 100644
index 000000000..3ffaba282
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_ko.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ko">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>UDisks 플러그인 설정</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>CD 오디오 감지</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>자동으로 재생목록에 트랙 추가</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>자동으로 재생목록에 트랙 제거</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>이동식 장치 감지</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>자동으로 재생목록에 파일 추가</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>자동으로 재생목록에서 파일 제거</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>UDisks2 플러그인</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>UDisks2 플러그인 정보</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Qmmp UDisks2 플러그인</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>이 플러그인은 UDisks2를 사용하여 이동식 디바이스 감지 기능을 제공합니다</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>작성자: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>CD &quot;%1&quot; 추가</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>볼륨 &quot;%1&quot; 추가</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_lt.ts b/src/plugins/General/udisks/translations/udisks_plugin_lt.ts
new file mode 100644
index 000000000..e1b6c1ca8
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_lt.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="lt">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Udisks įskiepio nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Audio CD aptikimas</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Įdėti takelius į grojaraštį automatiškai</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Pašalinti takelius iš grojaraščio automatiškai</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Išorinių įrenginių aptikimas</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Įdėti takelius į grojaratį automatiškai</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Pašalinti takelius iš grojaraščio automatiškai</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>UDisks2 Įskiepis</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Apie UDisks2 Įskiepį </translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Qmmp UDisks2 Įskiepis </translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation type="unfinished">Šis įskiepis aptinka prijungiamus įrenginius naudodamas UDisks2 </translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Sukūrė: Ilya Kotov</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Pridėti CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Pridėti tomą &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_nl.ts b/src/plugins/General/udisks/translations/udisks_plugin_nl.ts
new file mode 100644
index 000000000..95fe9937b
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_nl.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="nl">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>CD-audiodetectie</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Nummers automatisch toevoegen aan afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Nummers automatisch verwijderen van afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Detectie van verwisselbare apparaten</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Bestanden automatisch toevoegen aan afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Bestanden automatisch verwijderen van afspeellijst</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>UDisks2-plug-in</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Over de UDisks2-plug-in</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>UDisks2-plug-in voor Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Deze plug-in faciliteert detectie van verwisselbare apparaten via UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Auteur: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>CD &quot;%1&quot; toevoegen</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Apparaat &quot;%1&quot; toevoegen</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_pl_PL.ts b/src/plugins/General/udisks/translations/udisks_plugin_pl_PL.ts
new file mode 100644
index 000000000..d37d92e72
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_pl_PL.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="pl_PL">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Ustawienia wtyczki UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Detekcja płyt CD Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Automatycznie dodaj utwory do listy</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Automatycznie usuń utwory z listy</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Detekcja urządzeń przenośnych</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Automatycznie dodaj pliki do listy</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Automatycznie usuń pliki z listy</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Wtyczka UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>O wtyczce UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Wtyczka UDisks2 dla Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Ta wtyczka pozwala na wykrywanie urządzeń przy użyciu UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Napisana przez: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Dodaj CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Dodaj głośność &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_pt.ts b/src/plugins/General/udisks/translations/udisks_plugin_pt.ts
new file mode 100644
index 000000000..de7b41eb2
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_pt.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="pt">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Definições</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Deteção de CD áudio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Adicionar faixas à lista de reprodução</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Remover faixas da lista de reprodução</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Deteção de discos amovíveis</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Adicionar ficheiros à lista de reprodução</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Remover ficheiros da lista de reprodução</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Suplemento UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Acerca de suplemento UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Suplemento Qmmp UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Este suplemento permite a deteção de discos amovíveis através do serviço UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Desenvolvido por: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Adicionar CD %1</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Adicionar volume %1</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_pt_BR.ts b/src/plugins/General/udisks/translations/udisks_plugin_pt_BR.ts
new file mode 100644
index 000000000..a62d4d5c5
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_pt_BR.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="pt_BR">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Preferências do plugin UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Detecção de áudio de CD</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Adicionar faixas à lista de reprodução</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Remover faixas da lista de reprodução</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Detecção de dispositivos removíveis</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Adicionar arquivos à lista de reprodução</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Remover arquivos da lista de reprodução</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Plugin UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Sobre o plugin UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Plugin Qmmp UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Este plugin permite a detecção de dispositivos removíveis através do serviço UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Adicionar CD %1</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Adicionar volume %1</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_ru.ts b/src/plugins/General/udisks/translations/udisks_plugin_ru.ts
new file mode 100644
index 000000000..c04130e85
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_ru.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ru">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Настройки модуля UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Автоопределение аудио-CD</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Автоматически добавлять треки в список</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Автоматически удалять треки из списка</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Автоопределение съёмных устройств</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Автоматически добавлять треки в список</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Автоматически удалять треки из списка </translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Модуль UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>О модуле UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Модуль UDisks2 для Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Это модуль отслеживает съёмные устройства с помощью UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Разработчик: Илья Котов &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Добавить CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Добавить том &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_sk.ts b/src/plugins/General/udisks/translations/udisks_plugin_sk.ts
new file mode 100644
index 000000000..a8fcd692b
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_sk.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="sk">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_sr_BA.ts b/src/plugins/General/udisks/translations/udisks_plugin_sr_BA.ts
new file mode 100644
index 000000000..bf430d5e8
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_sr_BA.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="sr_BA">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Поставке за Удискс2</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Откривање музичког диска</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Аутоматски додај нумере на листу</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Аутоматски уклони нумере са листе</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Откривање уклоњивих уређаја</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Аутоматски додај фајлове на листу</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Аутоматски уклони фајлове са листе</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Удискс2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>О прикључку за UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Кумп прикључак за UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Омогућује откривање уклоњивих уређаја користећи UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Аутор: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Додај диск „%1“</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Додај складишни простор „%1“</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_sr_RS.ts b/src/plugins/General/udisks/translations/udisks_plugin_sr_RS.ts
new file mode 100644
index 000000000..ff03960bc
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_sr_RS.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="sr_RS">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Поставке за Удискс2</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Откривање музичког диска</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Аутоматски додај нумере на листу</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Аутоматски уклони нумере са листе</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Откривање уклоњивих уређаја</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Аутоматски додај фајлове на листу</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Аутоматски уклони фајлове са листе</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Удискс2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>О прикључку за UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Кумп прикључак за UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Омогућује откривање уклоњивих уређаја користећи UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Аутор: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Додај диск „%1“</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Додај складишни простор „%1“</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_tr.ts b/src/plugins/General/udisks/translations/udisks_plugin_tr.ts
new file mode 100644
index 000000000..2031a0af3
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_tr.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="tr">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>CD Ses Algılama</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Parçaları listeye otomatik olarka ekle</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Parçaları listeden otomatik olarak kaldır</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Çıkarılabilir Aygıt Algılama</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Dosyaları listeye otomatik olarak ekle</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Dosyaları listeden otomatik olarak kaldır</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Yazan: Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>CD &quot;%1&quot; Ekle</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>&quot;%1&quot; Aygıtını Ekle</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_uk_UA.ts b/src/plugins/General/udisks/translations/udisks_plugin_uk_UA.ts
new file mode 100644
index 000000000..d43c066cc
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_uk_UA.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="uk">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>Налаштування модуля UDisks</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>Автовизначення аудіо-CD</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Автоматично додавати треки до списку</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Автоматично видаляти треки зі списку</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Виявлення змінних пристроїв</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Автоматично додавати файли до списку</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Автоматично видаляти файли зі списку</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>Модуль UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>Про модуль UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Модуль UDisks2 для Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>Цей модуль відстежує з&apos;ємні пристрої за допомогою UDisks2</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>Розробник: Ілля Котов &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Додати CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Додати том &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_zh_CN.ts b/src/plugins/General/udisks/translations/udisks_plugin_zh_CN.ts
new file mode 100644
index 000000000..c281c0f79
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_zh_CN.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_CN">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>UDisks 插件设置</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>CD 音频检测</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>自动添加音轨到播放列表</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>自动从播放列表删除音轨</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>可移动设备检测</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>自动添加文件到播放列表</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>自动从播放列表删除文件</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation>UDisk2插件</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation>关于UDisk2插件</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation>Qmmp播放器UDisk2插件</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation>本插件使用UDisk2提供对移动设备的探测功能</translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>增加CD&quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>增加音量&quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/translations/udisks_plugin_zh_TW.ts b/src/plugins/General/udisks/translations/udisks_plugin_zh_TW.ts
new file mode 100644
index 000000000..adc7ed488
--- /dev/null
+++ b/src/plugins/General/udisks/translations/udisks_plugin_zh_TW.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_TW">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>UDisks 插件設定</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>CD 音頻檢測</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>自動添加音軌到播放清單</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>自動從播放清單刪除音軌</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>可移動設備檢測</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>自動添加檔案到播放清單</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>自動從播放清單刪除檔案</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Factory</name>
+ <message>
+ <location filename="../udisks2factory.cpp" line="30"/>
+ <source>UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="50"/>
+ <source>About UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="51"/>
+ <source>Qmmp UDisks2 Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2factory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@ya.ru&gt;</source>
+ <translation>撰寫:Ilya Kotov &lt;forkotov02@ya.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="134"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>添加 CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="142"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>添加卷 &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks/udisks.pro b/src/plugins/General/udisks/udisks.pro
new file mode 100644
index 000000000..ca99c7a5e
--- /dev/null
+++ b/src/plugins/General/udisks/udisks.pro
@@ -0,0 +1,26 @@
+include(../../plugins.pri)
+
+TARGET = $$PLUGINS_PREFIX/General/udisks
+
+QT += dbus
+
+HEADERS += udisksfactory.h \
+ udisksplugin.h \
+ udisksmanager.h \
+ udisksdevice.h \
+ settingsdialog.h
+
+SOURCES += udisksfactory.cpp \
+ udisksplugin.cpp \
+ udisksmanager.cpp \
+ udisksdevice.cpp \
+ settingsdialog.cpp
+
+FORMS += settingsdialog.ui
+
+RESOURCES = translations/translations.qrc
+
+LIBS += $$QMMPUI_LIB
+
+target.path = $$PLUGIN_DIR/General
+INSTALLS += target
diff --git a/src/plugins/General/udisks/udisksdevice.cpp b/src/plugins/General/udisks/udisksdevice.cpp
new file mode 100644
index 000000000..544d5a8a0
--- /dev/null
+++ b/src/plugins/General/udisks/udisksdevice.cpp
@@ -0,0 +1,118 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <QDBusInterface>
+#include <QDBusConnection>
+#include <QByteArray>
+#include <QDBusMetaType>
+#if (QT_VERSION < QT_VERSION_CHECK(5, 7, 0)) //qAsConst template
+#include <qmmp/qmmp.h>
+#endif
+#include "udisksdevice.h"
+
+UDisksDevice::UDisksDevice(QDBusObjectPath o, QObject *parent) : QObject(parent)
+{
+ m_block_interface = new QDBusInterface("org.freedesktop.UDisks2", o.path(),
+ "org.freedesktop.UDisks2.Block", QDBusConnection::systemBus(),
+ this);
+
+ QDBusObjectPath drive_object = property("Drive").value<QDBusObjectPath>();
+
+ QDBusConnection::systemBus().connect("org.freedesktop.UDisks2", o.path(),
+ "org.freedesktop.DBus.Properties","PropertiesChanged",
+ this, SIGNAL(changed()));
+
+ m_drive_interface = new QDBusInterface("org.freedesktop.UDisks2", drive_object.path(),
+ "org.freedesktop.UDisks2.Drive", QDBusConnection::systemBus(),
+ this);
+ m_path = o;
+}
+
+UDisksDevice::~UDisksDevice()
+{
+}
+
+QVariant UDisksDevice::property(const QString &key) const
+{
+ return m_block_interface->property(key.toLatin1().data());
+}
+
+bool UDisksDevice::isRemovable() const
+{
+ return m_drive_interface->property("Removable").toBool();
+}
+
+bool UDisksDevice::isMediaRemovable() const
+{
+ return m_drive_interface->property("MediaRemovable").toBool();
+}
+
+bool UDisksDevice::isAudio() const
+{
+ return m_drive_interface->property("OpticalNumAudioTracks").toInt() > 0;
+}
+
+bool UDisksDevice::isMounted() const
+{
+ return !mountPoints().isEmpty();
+}
+
+bool UDisksDevice::isOptical() const
+{
+ return m_drive_interface->property("Optical").toBool();
+}
+
+QStringList UDisksDevice::mountPoints() const
+{
+ QStringList points;
+ QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.UDisks2", m_path.path(),
+ "org.freedesktop.DBus.Properties", "Get");
+
+ QList<QVariant> arguments;
+ arguments << "org.freedesktop.UDisks2.Filesystem" << "MountPoints";
+ message.setArguments(arguments);
+
+ QDBusMessage reply = QDBusConnection::systemBus().call(message);
+
+ const QList<QVariant> args = reply.arguments();
+
+ for(const QVariant &arg : qAsConst(args))
+ {
+ QByteArrayList list;
+ QDBusArgument a = arg.value<QDBusVariant>().variant().value<QDBusArgument>();
+ if(a.currentType() != QDBusArgument::ArrayType)
+ continue;
+ a >> list;
+
+ for(const QByteArray &p : qAsConst(list))
+ points.append(p);
+ }
+ return points;
+}
+
+QString UDisksDevice::deviceFile() const
+{
+ return QString::fromLatin1(m_block_interface->property("Device").toByteArray());
+}
+
+QDBusObjectPath UDisksDevice::objectPath() const
+{
+ return m_path;
+}
diff --git a/src/plugins/General/udisks/udisksdevice.h b/src/plugins/General/udisks/udisksdevice.h
new file mode 100644
index 000000000..e027cd2be
--- /dev/null
+++ b/src/plugins/General/udisks/udisksdevice.h
@@ -0,0 +1,91 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#ifndef UDISKS2DEVICE_H
+#define UDISKS2DEVICE_H
+
+#include <QObject>
+#include <QDBusObjectPath>
+#include <QDBusMetaType>
+#include <QDBusArgument>
+#include <QByteArray>
+#include <QList>
+#include <QVariant>
+
+class QDBusInterface;
+
+typedef QList<QByteArray> QByteArrayList;
+Q_DECLARE_METATYPE(QByteArrayList)
+
+inline const QDBusArgument &operator>>(const QDBusArgument &arg, QByteArrayList &list)
+{
+ arg.beginArray();
+ list.clear();
+
+ while (!arg.atEnd())
+ {
+ QByteArray element;
+ arg >> element;
+ list.append( element );
+ }
+ arg.endArray();
+ return arg;
+}
+
+inline QDBusArgument &operator<<(QDBusArgument &arg, const QByteArrayList &list)
+{
+ arg.beginArray(qMetaTypeId<QByteArrayList>());
+ for (int i = 0; i < list.count(); ++i)
+ arg << list[i];
+ arg.endArray();
+ return arg;
+}
+
+
+/**
+ @author Ilya Kotov <forkotov02@ya.ru>
+*/
+class UDisksDevice : public QObject
+{
+ Q_OBJECT
+public:
+ UDisksDevice(QDBusObjectPath o, QObject *parent = nullptr);
+
+ ~UDisksDevice();
+
+ QVariant property(const QString &key) const;
+ bool isRemovable() const;
+ bool isMediaRemovable() const;
+ bool isAudio() const;
+ bool isMounted() const;
+ bool isOptical() const;
+ QStringList mountPoints() const;
+ QString deviceFile() const;
+ QDBusObjectPath objectPath() const;
+
+signals:
+ void changed();
+
+private:
+ QDBusInterface *m_block_interface;
+ QDBusInterface *m_drive_interface;
+ QDBusObjectPath m_path;
+};
+
+#endif
diff --git a/src/plugins/General/udisks/udisksfactory.cpp b/src/plugins/General/udisks/udisksfactory.cpp
new file mode 100644
index 000000000..c9237f65a
--- /dev/null
+++ b/src/plugins/General/udisks/udisksfactory.cpp
@@ -0,0 +1,59 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <QMessageBox>
+#include <qmmp/qmmp.h>
+#include "settingsdialog.h"
+#include "udisksplugin.h"
+#include "udisksfactory.h"
+
+GeneralProperties UDisksFactory::properties() const
+{
+ GeneralProperties properties;
+ properties.name = tr("UDisks Plugin");
+ properties.shortName = "udisks";
+ properties.hasAbout = true;
+ properties.hasSettings = true;
+ properties.visibilityControl = false;
+ return properties;
+}
+
+QObject *UDisksFactory::create(QObject *parent)
+{
+ return new UDisksPlugin(parent);
+}
+
+QDialog *UDisksFactory::createConfigDialog(QWidget *parent)
+{
+ return new SettingsDialog(parent);
+}
+
+void UDisksFactory::showAbout(QWidget *parent)
+{
+ QMessageBox::about (parent, tr("About UDisks Plugin"),
+ tr("Qmmp UDisks Plugin") + "\n" +
+ tr("This plugin provides removable devices detection using UDisks") + "\n" +
+ tr("Written by: Ilya Kotov <forkotov02@ya.ru>"));
+}
+
+QString UDisksFactory::translation() const
+{
+ return QLatin1String(":/udisks_plugin_");
+}
diff --git a/src/plugins/General/udisks/udisksfactory.h b/src/plugins/General/udisks/udisksfactory.h
new file mode 100644
index 000000000..ceba73de5
--- /dev/null
+++ b/src/plugins/General/udisks/udisksfactory.h
@@ -0,0 +1,44 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#ifndef UDISKS2FACTORY_H
+#define UDISKS2FACTORY_H
+
+/**
+ @author Ilya Kotov <forkotov02@ya.ru>
+*/
+#include <QObject>
+
+#include <qmmpui/general.h>
+#include <qmmpui/generalfactory.h>
+
+class UDisksFactory : public QObject, public GeneralFactory
+{
+Q_OBJECT
+Q_PLUGIN_METADATA(IID "org.qmmp.qmmpui.GeneralFactoryInterface.1.0")
+Q_INTERFACES(GeneralFactory)
+public:
+ GeneralProperties properties() const override;
+ QObject *create(QObject *parent) override;
+ QDialog *createConfigDialog(QWidget *parent) override;
+ void showAbout(QWidget *parent) override;
+ QString translation() const override;
+};
+
+#endif
diff --git a/src/plugins/General/udisks/udisksmanager.cpp b/src/plugins/General/udisks/udisksmanager.cpp
new file mode 100644
index 000000000..749f36ab1
--- /dev/null
+++ b/src/plugins/General/udisks/udisksmanager.cpp
@@ -0,0 +1,91 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <QDBusInterface>
+#include <QDBusConnection>
+#include <QDBusReply>
+#include <QDBusArgument>
+#include <QDBusMetaType>
+#include <QXmlStreamReader>
+#include "udisksmanager.h"
+
+UDisksManager::UDisksManager(QObject *parent)
+ : QObject(parent)
+{
+ m_interface = new QDBusInterface("org.freedesktop.UDisks2", "/org/freedesktop/UDisks2",
+ "org.freedesktop.DBus.ObjectManager",
+ QDBusConnection::systemBus(), this);
+
+ m_interface->connection().connect("org.freedesktop.UDisks2", "/org/freedesktop/UDisks2",
+ "org.freedesktop.DBus.ObjectManager", "InterfacesAdded",
+ this, SLOT(onInterfacesAdded(QDBusObjectPath,QVariantMapMap)));
+
+ m_interface->connection().connect("org.freedesktop.UDisks2", "/org/freedesktop/UDisks2",
+ "org.freedesktop.DBus.ObjectManager", "InterfacesRemoved",
+ this, SIGNAL(onInterfacesRemoved(QDBusObjectPath, QStringList)));
+}
+
+
+UDisksManager::~UDisksManager()
+{
+}
+
+QList<QDBusObjectPath> UDisksManager::findAllDevices()
+{
+ QList<QDBusObjectPath> paths;
+ QDBusMessage call = QDBusMessage::createMethodCall("org.freedesktop.UDisks2",
+ "/org/freedesktop/UDisks2/block_devices",
+ "org.freedesktop.DBus.Introspectable",
+ "Introspect");
+ QDBusPendingReply<QString> reply = QDBusConnection::systemBus().call(call);
+
+
+ if (!reply.isValid())
+ {
+ qWarning("UDisks2Manager: error: %s", qPrintable(reply.error().name()));
+ return paths;
+ }
+ QXmlStreamReader xml(reply.value());
+ while (!xml.atEnd())
+ {
+ xml.readNext();
+ if (xml.tokenType() == QXmlStreamReader::StartElement && xml.name().toString() == "node" )
+ {
+ QString name = xml.attributes().value("name").toString();
+ if(!name.isEmpty())
+ paths << QDBusObjectPath("/org/freedesktop/UDisks2/block_devices/" + name);
+ }
+ }
+ return paths;
+}
+
+void UDisksManager::onInterfacesAdded(const QDBusObjectPath &object_path, const QVariantMapMap &)
+{
+ if(object_path.path().startsWith("/org/freedesktop/UDisks2/jobs"))
+ return;
+ emit deviceAdded(object_path);
+}
+
+void UDisksManager::onInterfacesRemoved(const QDBusObjectPath &object_path, const QStringList &)
+{
+ if(object_path.path().startsWith("/org/freedesktop/UDisks2/jobs"))
+ return;
+ emit deviceRemoved(object_path);
+}
diff --git a/src/plugins/General/udisks/udisksmanager.h b/src/plugins/General/udisks/udisksmanager.h
new file mode 100644
index 000000000..9e8fc14d2
--- /dev/null
+++ b/src/plugins/General/udisks/udisksmanager.h
@@ -0,0 +1,59 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#ifndef UDISKS2MANAGER_H
+#define UDISKS2MANAGER_H
+
+#include <QObject>
+#include <QList>
+#include <QVariantMap>
+#include <QDBusObjectPath>
+
+class QDBusInterface;
+
+typedef QMap<QString,QVariantMap> QVariantMapMap;
+Q_DECLARE_METATYPE(QVariantMapMap)
+
+/**
+ @author Ilya Kotov <forkotov02@ya.ru>
+*/
+class UDisksManager : public QObject
+{
+Q_OBJECT
+public:
+ UDisksManager(QObject *parent = nullptr);
+
+ ~UDisksManager();
+
+ QList<QDBusObjectPath> findAllDevices();
+
+signals:
+ void deviceAdded(QDBusObjectPath);
+ void deviceRemoved(QDBusObjectPath);
+
+private slots:
+ void onInterfacesAdded(const QDBusObjectPath &object_path, const QVariantMapMap &);
+ void onInterfacesRemoved(const QDBusObjectPath &object_path, const QStringList &);
+
+private:
+ QDBusInterface *m_interface;
+
+};
+
+#endif
diff --git a/src/plugins/General/udisks/udisksplugin.cpp b/src/plugins/General/udisks/udisksplugin.cpp
new file mode 100644
index 000000000..ac1559270
--- /dev/null
+++ b/src/plugins/General/udisks/udisksplugin.cpp
@@ -0,0 +1,253 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include <QtDBus>
+#include <QActionGroup>
+#include <QApplication>
+#include <QStyle>
+#include <qmmpui/uihelper.h>
+#include <qmmpui/playlistmanager.h>
+#include <qmmpui/playlistitem.h>
+#include <qmmp/qmmp.h>
+#include "udisksdevice.h"
+#include "udisksmanager.h"
+#include "udisksplugin.h"
+
+UDisksPlugin::UDisksPlugin(QObject *parent) : QObject(parent)
+{
+ qDBusRegisterMetaType<QVariantMapMap>();
+ qDBusRegisterMetaType<QByteArrayList>();
+
+ m_manager = new UDisksManager(this);
+ m_actions = new QActionGroup(this);
+ connect(m_manager,SIGNAL(deviceAdded(QDBusObjectPath)), SLOT(addDevice(QDBusObjectPath)));
+ connect(m_manager,SIGNAL(deviceRemoved(QDBusObjectPath)), SLOT(removeDevice(QDBusObjectPath)));
+ connect(m_actions,SIGNAL(triggered (QAction *)), SLOT(processAction(QAction *)));
+ //load settings
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("UDisks2");
+ m_detectCDA = settings.value("cda", true).toBool();
+ m_detectRemovable = settings.value("removable", true).toBool();
+ m_addTracks = false; //do not load tracks on startup
+ m_addFiles = false;
+ //find existing devices
+ const QList<QDBusObjectPath> devs = m_manager->findAllDevices();
+ for(const QDBusObjectPath &o : qAsConst(devs))
+ addDevice(o);
+ //load remaining settings
+ m_addTracks = settings.value("add_tracks", false).toBool();
+ m_removeTracks = settings.value("remove_tracks", false).toBool();
+ m_addFiles = settings.value("add_files", false).toBool();
+ m_removeFiles = settings.value("remove_files", false).toBool();
+ settings.endGroup();
+}
+
+UDisksPlugin::~UDisksPlugin()
+{
+}
+
+void UDisksPlugin::removeDevice(QDBusObjectPath o)
+{
+ QList<UDisksDevice *>::iterator it = m_devices.begin();
+ while(it != m_devices.end())
+ {
+ if((*it)->objectPath() == o)
+ {
+ delete (*it);
+ it = m_devices.erase(it);
+ qDebug("UDisksPlugin: removed device: \"%s\"", qPrintable(o.path()));
+ updateActions();
+ break;
+ }
+ else
+ {
+ ++it;
+ }
+ }
+}
+
+void UDisksPlugin::addDevice(QDBusObjectPath o)
+{
+ for(const UDisksDevice *device : qAsConst(m_devices)) //is it already exists?
+ {
+ if (device->objectPath() == o)
+ return;
+ }
+ UDisksDevice *device = new UDisksDevice(o, this);
+
+ if(device->isRemovable()) //detect removable devices only
+ {
+ qDebug("UDisksPlugin: added device: \"%s\"", qPrintable(o.path()));
+ m_devices << device;
+ updateActions();
+ connect(device, SIGNAL(changed()), SLOT(updateActions()));
+ }
+ else
+ delete device;
+}
+
+void UDisksPlugin::updateActions()
+{
+ // add action for cd audio or mounted volume
+ for(const UDisksDevice *device : qAsConst(m_devices))
+ {
+ QString dev_path;
+ if (m_detectCDA && device->isAudio()) //cd audio
+ {
+ dev_path = "cdda://" + device->deviceFile();
+ }
+ else if (m_detectRemovable && device->isMounted() &&
+ device->property("Size").toLongLong() < 40000000000LL &&
+ (device->property("IdType").toString() == "vfat" ||
+ device->property("IdType").toString() == "iso9660" ||
+ device->property("IdType").toString() == "udf" ||
+ device->property("IdType").toString() == "ext2")) //mounted volume
+ {
+ dev_path = device->mountPoints().first();
+ }
+ else
+ continue;
+
+ if (!findAction(dev_path))
+ {
+ QAction *action = new QAction(this);
+ QString actionText;
+ if (device->isAudio())
+ {
+ actionText = QString(tr("Add CD \"%1\"")).arg(device->deviceFile());
+ }
+ else
+ {
+ QString name = device->property("IdLabel").toString();
+ if (name.isEmpty())
+ name = dev_path;
+
+ actionText = QString(tr("Add Volume \"%1\"")).arg(name);
+ }
+
+ if (device->isOptical())
+ {
+ if(device->property("IdType").toString() == "iso9660")
+ action->setIcon(qApp->style()->standardIcon(QStyle::SP_DriveDVDIcon));
+ else
+ action->setIcon(qApp->style()->standardIcon(QStyle::SP_DriveCDIcon));
+ }
+ else
+ action->setIcon(qApp->style()->standardIcon(QStyle::SP_DriveHDIcon));
+
+ qDebug("UDisksPlugin: added menu item: \"%s\"", qPrintable(dev_path));
+
+ action->setText(actionText);
+ action->setData(dev_path);
+ m_actions->addAction(action);
+ UiHelper::instance()->addAction(action, UiHelper::ADD_MENU);
+ addPath(dev_path);
+ }
+ }
+ // remove action if device is unmounted/removed
+ for(QAction *action : m_actions->actions())
+ {
+ if (!findDevice(action))
+ {
+ qDebug("UDisksPlugin: removed menu item: \"%s\"", qPrintable(action->data().toString()));
+ m_actions->removeAction(action);
+ UiHelper::instance()->removeAction(action);
+ removePath(action->data().toString());
+ action->deleteLater();
+ }
+ }
+}
+
+void UDisksPlugin::processAction(QAction *action)
+{
+ qDebug("UDisksPlugin: action triggered: %s", qPrintable(action->data().toString()));
+ QString path = action->data().toString();
+ PlayListManager::instance()->selectedPlayList()->add(path);
+}
+
+QAction *UDisksPlugin::findAction(const QString &dev_path)
+{
+ for(QAction *action : m_actions->actions())
+ {
+ if (action->data().toString() == dev_path)
+ return action;
+ }
+ return nullptr;
+}
+
+UDisksDevice *UDisksPlugin::findDevice(QAction *action)
+{
+ for(UDisksDevice *device : qAsConst(m_devices))
+ {
+ QString dev_path;
+ if (device->isAudio())
+ {
+ dev_path = "cdda://" + device->deviceFile();
+ if (dev_path == action->data().toString())
+ return device;
+ }
+ if (device->isMounted())
+ {
+ dev_path = device->mountPoints().first();
+ if (dev_path == action->data().toString())
+ return device;
+ }
+ }
+ return nullptr;
+}
+
+void UDisksPlugin::addPath(const QString &path)
+{
+ PlayListModel *model = PlayListManager::instance()->selectedPlayList();
+
+ for(PlayListItem *item : model->items()) // Is it already exist?
+ {
+ if(item->isGroup())
+ continue;
+ if (dynamic_cast<PlayListTrack *>(item)->path().startsWith(path))
+ return;
+ }
+
+ if (path.startsWith("cdda://") && m_addTracks)
+ {
+ PlayListManager::instance()->selectedPlayList()->add(path);
+ return;
+ }
+ else if (!path.startsWith("cdda://") && m_addFiles)
+ PlayListManager::instance()->selectedPlayList()->add(path);
+}
+
+void UDisksPlugin::removePath(const QString &path)
+{
+ if ((path.startsWith("cdda://") && !m_removeTracks) ||
+ (!path.startsWith("cdda://") && !m_removeFiles)) //process settings
+ return;
+
+ PlayListModel *model = PlayListManager::instance()->selectedPlayList();
+
+ int i = 0;
+ while (model->count() > 0 && i < model->count())
+ {
+ if (model->isTrack(i) && model->track(i)->path().startsWith(path))
+ model->removeTrack(i);
+ else
+ ++i;
+ }
+}
diff --git a/src/plugins/General/udisks/udisksplugin.h b/src/plugins/General/udisks/udisksplugin.h
new file mode 100644
index 000000000..66727d941
--- /dev/null
+++ b/src/plugins/General/udisks/udisksplugin.h
@@ -0,0 +1,65 @@
+/***************************************************************************
+ * Copyright (C) 2013-2021 by Ilya Kotov *
+ * forkotov02@ya.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#ifndef UDISKS2PLUGIN_H
+#define UDISKS2PLUGIN_H
+
+#include <QDBusObjectPath>
+#include <qmmpui/general.h>
+
+class UDisksManager;
+class UDisksDevice;
+class QActionGroup;
+class QAction;
+
+/**
+ @author Ilya Kotov <forkotov02@ya.ru>
+*/
+
+class UDisksPlugin : public QObject
+{
+Q_OBJECT
+public:
+ UDisksPlugin(QObject *parent = nullptr);
+
+ ~UDisksPlugin();
+
+private slots:
+ void removeDevice(QDBusObjectPath);
+ void addDevice(QDBusObjectPath);
+ void processAction(QAction *action);
+ void updateActions();
+
+private:
+ QAction *findAction(const QString &dev_path);
+ UDisksDevice *findDevice(QAction *action);
+ void addPath(const QString &path);
+ void removePath(const QString &path);
+ UDisksManager *m_manager;
+ QList <UDisksDevice *> m_devices;
+ QActionGroup *m_actions;
+ bool m_detectCDA;
+ bool m_addTracks;
+ bool m_removeTracks;
+ bool m_detectRemovable;
+ bool m_addFiles;
+ bool m_removeFiles;
+};
+
+#endif //UDISKS2PLUGIN_H