aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/udisks2
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-02-06 19:03:14 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-02-06 19:03:14 +0000
commit75100e3b80d2fa4daa4a1d3b61c5aad48f5d07a3 (patch)
treec3307a62f699d26c64bfbb0dea0dca1128fa8605 /src/plugins/General/udisks2
parentb25e5fab02cebed362c74c01e649e9c165641fe1 (diff)
downloadqmmp-75100e3b80d2fa4daa4a1d3b61c5aad48f5d07a3.tar.gz
qmmp-75100e3b80d2fa4daa4a1d3b61c5aad48f5d07a3.tar.bz2
qmmp-75100e3b80d2fa4daa4a1d3b61c5aad48f5d07a3.zip
added udisks2 plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3200 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/udisks2')
-rw-r--r--src/plugins/General/udisks2/CMakeLists.txt66
-rw-r--r--src/plugins/General/udisks2/settingsdialog.cpp55
-rw-r--r--src/plugins/General/udisks2/settingsdialog.h45
-rw-r--r--src/plugins/General/udisks2/settingsdialog.ui122
-rw-r--r--src/plugins/General/udisks2/translations/translations.qrc24
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_cs.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_de.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_es.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_fr.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_he.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_hu.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_it.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_ja.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_kk.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_lt.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_nl.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_pl.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_pl_PL.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_pt_BR.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_ru.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_sk.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_tr.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_uk_UA.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_zh_CN.ts83
-rw-r--r--src/plugins/General/udisks2/translations/udisks2_plugin_zh_TW.ts83
-rw-r--r--src/plugins/General/udisks2/udisks2.pro54
-rw-r--r--src/plugins/General/udisks2/udisks2device.cpp115
-rw-r--r--src/plugins/General/udisks2/udisks2device.h93
-rw-r--r--src/plugins/General/udisks2/udisks2factory.cpp64
-rw-r--r--src/plugins/General/udisks2/udisks2factory.h45
-rw-r--r--src/plugins/General/udisks2/udisks2manager.cpp93
-rw-r--r--src/plugins/General/udisks2/udisks2manager.h59
-rw-r--r--src/plugins/General/udisks2/udisks2plugin.cpp264
-rw-r--r--src/plugins/General/udisks2/udisks2plugin.h65
34 files changed, 2824 insertions, 0 deletions
diff --git a/src/plugins/General/udisks2/CMakeLists.txt b/src/plugins/General/udisks2/CMakeLists.txt
new file mode 100644
index 000000000..fde34f804
--- /dev/null
+++ b/src/plugins/General/udisks2/CMakeLists.txt
@@ -0,0 +1,66 @@
+project(libudisks2)
+
+cmake_minimum_required(VERSION 2.4.8 FATAL_ERROR)
+
+SET (QT_USE_QTDBUS TRUE)
+
+INCLUDE(FindQt4)
+
+include(${QT_USE_FILE})
+
+if(COMMAND cmake_policy)
+cmake_policy(SET CMP0003 NEW)
+endif(COMMAND cmake_policy)
+
+# qt plugin
+ADD_DEFINITIONS( -Wall )
+ADD_DEFINITIONS(${QT_DEFINITIONS})
+ADD_DEFINITIONS(-DQT_PLUGIN)
+ADD_DEFINITIONS(-DQT_NO_DEBUG)
+ADD_DEFINITIONS(-DQT_SHARED)
+ADD_DEFINITIONS(-DQT_THREAD)
+
+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(libudisks2_SRCS
+ udisks2factory.cpp
+ udisks2manager.cpp
+ udisks2plugin.cpp
+ udisks2device.cpp
+ settingsdialog.cpp
+)
+
+SET(libudisks2_MOC_HDRS
+ udisks2factory.h
+ udisks2manager.h
+ udisks2plugin.h
+ udisks2device.h
+ settingsdialog.h
+)
+
+SET(libudisks2_RCCS translations/translations.qrc)
+
+QT4_ADD_RESOURCES(libudisks2_RCC_SRCS ${libudisks2_RCCS})
+
+QT4_WRAP_CPP(libudisks2_MOC_SRCS ${libudisks2_MOC_HDRS})
+
+# user interface
+
+SET(libudisks2_UIS
+ settingsdialog.ui
+)
+
+QT4_WRAP_UI(libudisks2_UIS_H ${libudisks2_UIS})
+# Don't forget to include output directory, otherwise
+# the UI file won't be wrapped!
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+ADD_LIBRARY(udisks2 MODULE ${libudisks2_SRCS} ${libudisks2_MOC_SRCS} ${libudisks2_UIS_H} ${libudisks2_RCC_SRCS})
+add_dependencies(udisks2 qmmpui)
+target_link_libraries(udisks2 ${QT_LIBRARIES} -lqmmpui -lqmmp)
+install(TARGETS udisks2 DESTINATION ${LIB_DIR}/qmmp/General)
diff --git a/src/plugins/General/udisks2/settingsdialog.cpp b/src/plugins/General/udisks2/settingsdialog.cpp
new file mode 100644
index 000000000..c83bd772a
--- /dev/null
+++ b/src/plugins/General/udisks2/settingsdialog.cpp
@@ -0,0 +1,55 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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("UDisks2");
+ 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("UDisks2");
+ 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/udisks2/settingsdialog.h b/src/plugins/General/udisks2/settingsdialog.h
new file mode 100644
index 000000000..6ee3e2b05
--- /dev/null
+++ b/src/plugins/General/udisks2/settingsdialog.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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@hotmail.ru>
+*/
+class SettingsDialog : public QDialog
+{
+Q_OBJECT
+public:
+ SettingsDialog(QWidget *parent = 0);
+
+ ~SettingsDialog();
+
+
+public slots:
+ virtual void accept();
+
+private:
+ Ui::SettingsDialog m_ui;
+};
+
+#endif
diff --git a/src/plugins/General/udisks2/settingsdialog.ui b/src/plugins/General/udisks2/settingsdialog.ui
new file mode 100644
index 000000000..5b039a88c
--- /dev/null
+++ b/src/plugins/General/udisks2/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/udisks2/translations/translations.qrc b/src/plugins/General/udisks2/translations/translations.qrc
new file mode 100644
index 000000000..dddea0001
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/translations.qrc
@@ -0,0 +1,24 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>udisks2_plugin_ru.qm</file>
+ <file>udisks2_plugin_uk_UA.qm</file>
+ <file>udisks2_plugin_zh_CN.qm</file>
+ <file>udisks2_plugin_zh_TW.qm</file>
+ <file>udisks2_plugin_tr.qm</file>
+ <file>udisks2_plugin_cs.qm</file>
+ <file>udisks2_plugin_pt_BR.qm</file>
+ <file>udisks2_plugin_de.qm</file>
+ <file>udisks2_plugin_pl_PL.qm</file>
+ <file>udisks2_plugin_fr.qm</file>
+ <file>udisks2_plugin_it.qm</file>
+ <file>udisks2_plugin_kk.qm</file>
+ <file>udisks2_plugin_lt.qm</file>
+ <file>udisks2_plugin_hu.qm</file>
+ <file>udisks2_plugin_nl.qm</file>
+ <file>udisks2_plugin_ja.qm</file>
+ <file>udisks2_plugin_sk.qm</file>
+ <file>udisks2_plugin_es.qm</file>
+ <file>udisks2_plugin_he.qm</file>
+ </qresource>
+</RCC>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_cs.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_cs.ts
new file mode 100644
index 000000000..669cf691f
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_cs.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs">
+<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>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 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Autor: Ilja Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">Přidat CD „%1“</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">Přidat svazek „%1“</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_de.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_de.ts
new file mode 100644
index 000000000..4c074e7e4
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_de.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de_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>Erkennung von Audio-CDs</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>Erkennung von Wechseldatenträgern</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 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Autor: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">CD „%1“ hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">Gerät „%1“ hinzufügen</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_es.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_es.ts
new file mode 100644
index 000000000..84f544d3b
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_es.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" 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 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Escrito por: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">Añadir CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">Añadir volumen &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_fr.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_fr.ts
new file mode 100644
index 000000000..f1088d85c
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_fr.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<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@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_he.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_he.ts
new file mode 100644
index 000000000..17f5b5058
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_he.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="he_IL">
+<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@hotmail.ru&gt;</source>
+ <translation type="unfinished">חוברה על ידי: Ilya Kotov ‫&lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">הוסף CD ‫&quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">הוסף כרך &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_hu.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_hu.ts
new file mode 100644
index 000000000..44a03c848
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_hu.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hu_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@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_it.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_it.ts
new file mode 100644
index 000000000..26b4fcc19
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_it.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="it">
+<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>Rilevamento CD Audio</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Aggiungi automaticamente i titoli alla lista dei brani</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Rimuovi automaticamente i titoli dalla lista dei brani</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 brani automaticamente alla lista</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Rimuovi automaticamente i brani dalla lista</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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Autore: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">Aggiungi CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">Aggiungi libreria &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_ja.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_ja.ts
new file mode 100644
index 000000000..33cc827c2
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_ja.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" 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 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">制作: Илья Котов (Ilya Kotov) &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">CD &quot;%1&quot; を追加</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">量目 &quot;%1&quot; を追加</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_kk.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_kk.ts
new file mode 100644
index 000000000..6ffc6af9c
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_kk.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" 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@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_lt.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_lt.ts
new file mode 100644
index 000000000..5ec0c154f
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_lt.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" 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 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Sukūrė: Ilya Kotov</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">Pridėti CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">Pridėti tomą &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_nl.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_nl.ts
new file mode 100644
index 000000000..a5d5bc880
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_nl.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="nl">
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>UDisks Plugin Settings</source>
+ <translation>UDisks Module Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>CD Audio Detection</source>
+ <translation>CD Audio Detectie</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="38"/>
+ <source>Add tracks to playlist automatically</source>
+ <translation>Voeg nummers automatisch toe aan speellijst</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="45"/>
+ <source>Remove tracks from playlist automatically</source>
+ <translation>Verwijder nummers automatisch uit afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="55"/>
+ <source>Removable Device Detection</source>
+ <translation>Detectie van Verwisselbare Stations</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="64"/>
+ <source>Add files to playlist automatically</source>
+ <translation>Voeg bestanden automatisch toe aan afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="71"/>
+ <source>Remove files from playlist automatically</source>
+ <translation>Verwijder bestanden automatisch uit afspeellijst</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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Auteur: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">Voeg CD &quot;%1&quot; toe</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">Voeg Station &quot;%1&quot; toe</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_pl.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_pl.ts
new file mode 100644
index 000000000..30c37463d
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_pl.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="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>UDisksFactory</name>
+ <message>
+ <location filename="../udisksfactory.cpp" line="30"/>
+ <source>UDisks Plugin</source>
+ <translation>Wtyczka UDisks</translation>
+ </message>
+ <message>
+ <location filename="../udisksfactory.cpp" line="50"/>
+ <source>About UDisks Plugin</source>
+ <translation>O wtyczce UDisks</translation>
+ </message>
+ <message>
+ <location filename="../udisksfactory.cpp" line="51"/>
+ <source>Qmmp UDisks Plugin</source>
+ <translation>Wtyczka UDisks dla Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../udisksfactory.cpp" line="52"/>
+ <source>This plugin provides removable devices detection using UDisks</source>
+ <translation>Ta wtyczka umożliwia wykrywanie urządzeń przenośnych przy użyciu UDisks</translation>
+ </message>
+ <message>
+ <location filename="../udisksfactory.cpp" line="53"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Autor: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisksPlugin</name>
+ <message>
+ <location filename="../udisksplugin.cpp" line="154"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation>Dodaj CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisksplugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation>Dodaj urządzenie &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_pl_PL.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_pl_PL.ts
new file mode 100644
index 000000000..42ae3fd3f
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_pl_PL.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="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 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Autor: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">Dodaj CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">Dodaj urządzenie &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_pt_BR.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_pt_BR.ts
new file mode 100644
index 000000000..109bbdd6c
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_pt_BR.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pt_BR">
+<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@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_ru.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_ru.ts
new file mode 100644
index 000000000..141e0f214
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_ru.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru_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 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Разработчик: Илья Котов</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">Добавить CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">Добавить том &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_sk.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_sk.ts
new file mode 100644
index 000000000..b399fd529
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_sk.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sk_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@hotmail.ru&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_tr.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_tr.ts
new file mode 100644
index 000000000..fa7ae73b2
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_tr.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="tr_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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Yazan: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">CD &quot;%1&quot; Ekle</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">&quot;%1&quot; Aygıtını Ekle</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_uk_UA.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_uk_UA.ts
new file mode 100644
index 000000000..de6b8b2d2
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_uk_UA.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" 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 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">Розробник: Ілля Котов &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">Додати CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">Додати том &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_zh_CN.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_zh_CN.ts
new file mode 100644
index 000000000..a841ecf4a
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_zh_CN.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" 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 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">添加 CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">添加卷 &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/translations/udisks2_plugin_zh_TW.ts b/src/plugins/General/udisks2/translations/udisks2_plugin_zh_TW.ts
new file mode 100644
index 000000000..5a26cfc09
--- /dev/null
+++ b/src/plugins/General/udisks2/translations/udisks2_plugin_zh_TW.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" 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@hotmail.ru&gt;</source>
+ <translation type="unfinished">作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>UDisks2Plugin</name>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="153"/>
+ <source>Add CD &quot;%1&quot;</source>
+ <translation type="unfinished">添加 CD &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../udisks2plugin.cpp" line="160"/>
+ <source>Add Volume &quot;%1&quot;</source>
+ <translation type="unfinished">添加卷 &quot;%1&quot;</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/udisks2/udisks2.pro b/src/plugins/General/udisks2/udisks2.pro
new file mode 100644
index 000000000..2d3b0a474
--- /dev/null
+++ b/src/plugins/General/udisks2/udisks2.pro
@@ -0,0 +1,54 @@
+include(../../plugins.pri)
+
+CONFIG += release \
+warn_on \
+plugin \
+ lib \
+ qdbus
+
+TARGET = $$PLUGINS_PREFIX/General/udisks2
+QMAKE_CLEAN = $$PLUGINS_PREFIX/General/libudisks2.so
+
+TEMPLATE = lib
+QMAKE_LIBDIR += ../../../../lib
+
+TRANSLATIONS = translations/udisks2_plugin_cs.ts \
+ translations/udisks2_plugin_de.ts \
+ translations/udisks2_plugin_zh_CN.ts \
+ translations/udisks2_plugin_zh_TW.ts \
+ translations/udisks2_plugin_ru.ts \
+ translations/udisks2_plugin_pl.ts \
+ translations/udisks2_plugin_uk_UA.ts \
+ translations/udisks2_plugin_it.ts \
+ translations/udisks2_plugin_tr.ts \
+ translations/udisks2_plugin_lt.ts \
+ translations/udisks2_plugin_nl.ts \
+ translations/udisks2_plugin_ja.ts \
+ translations/udisks2_plugin_es.ts
+
+RESOURCES = translations/translations.qrc
+
+isEmpty(LIB_DIR){
+ LIB_DIR = /lib
+}
+target.path = $$LIB_DIR/qmmp/General
+INSTALLS += target
+
+
+HEADERS += udisks2factory.h \
+ udisks2plugin.h \
+ udisks2manager.h \
+ udisks2device.h \
+ settingsdialog.h
+
+SOURCES += udisks2factory.cpp \
+ udisks2plugin.cpp \
+ udisks2manager.cpp \
+ udisks2device.cpp \
+ settingsdialog.cpp
+
+INCLUDEPATH += ../../../../src
+
+LIBS += -lqmmpui -lqmmp
+
+FORMS += settingsdialog.ui
diff --git a/src/plugins/General/udisks2/udisks2device.cpp b/src/plugins/General/udisks2/udisks2device.cpp
new file mode 100644
index 000000000..0733c9931
--- /dev/null
+++ b/src/plugins/General/udisks2/udisks2device.cpp
@@ -0,0 +1,115 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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>
+#include "udisks2device.h"
+
+UDisks2Device::UDisks2Device(QDBusObjectPath o, QObject *parent)
+ : QObject(parent)
+{
+ m_block_interface = new QDBusInterface("org.freedesktop.UDisks2", o.path(),
+ "org.freedesktop.UDisks2.Block", QDBusConnection::systemBus(),
+ this);
+ m_fs_interface = new QDBusInterface("org.freedesktop.UDisks2", o.path(),
+ "org.freedesktop.UDisks2.Filesystem", 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;
+}
+
+UDisks2Device::~UDisks2Device()
+{
+}
+
+QVariant UDisks2Device::property(const QString &key) const
+{
+ return m_block_interface->property(key.toAscii().data());
+}
+
+bool UDisks2Device::isRemovable() const
+{
+ return m_drive_interface->property("Removable").toBool();
+}
+
+bool UDisks2Device::isMediaRemovable() const
+{
+ return m_drive_interface->property("MediaRemovable").toBool();
+}
+
+bool UDisks2Device::isAudio() const
+{
+ return m_drive_interface->property("OpticalNumAudioTracks").toInt() > 0;
+}
+
+bool UDisks2Device::isMounted() const
+{
+ return !mountPoints().isEmpty();
+}
+
+bool UDisks2Device::isOptical() const
+{
+ return m_drive_interface->property("Optical").toBool();
+}
+
+QStringList UDisks2Device::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);
+
+ QList<QVariant> args = reply.arguments();
+
+ foreach (QVariant arg, args)
+ {
+ QByteArrayList list;
+ arg.value<QDBusVariant>().variant().value<QDBusArgument>() >> list;
+
+ foreach (QByteArray p, list)
+ points.append(p);
+ }
+ return points;
+}
+
+QString UDisks2Device::deviceFile() const
+{
+ return QString::fromAscii(m_block_interface->property("Device").toByteArray());
+}
+
+QDBusObjectPath UDisks2Device::objectPath() const
+{
+ return m_path;
+}
diff --git a/src/plugins/General/udisks2/udisks2device.h b/src/plugins/General/udisks2/udisks2device.h
new file mode 100644
index 000000000..8d1473fb0
--- /dev/null
+++ b/src/plugins/General/udisks2/udisks2device.h
@@ -0,0 +1,93 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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@hotmail.ru>
+*/
+class UDisks2Device : public QObject
+{
+ Q_OBJECT
+public:
+ UDisks2Device(QDBusObjectPath o, QObject *parent = 0);
+
+ ~UDisks2Device();
+
+ 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;
+ QDBusInterface *m_fs_interface;
+ QDBusObjectPath m_path;
+};
+
+#endif
diff --git a/src/plugins/General/udisks2/udisks2factory.cpp b/src/plugins/General/udisks2/udisks2factory.cpp
new file mode 100644
index 000000000..58c7ef2de
--- /dev/null
+++ b/src/plugins/General/udisks2/udisks2factory.cpp
@@ -0,0 +1,64 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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 <QtGui>
+#include <qmmp/qmmp.h>
+#include "settingsdialog.h"
+#include "udisks2plugin.h"
+#include "udisks2factory.h"
+
+const GeneralProperties UDisks2Factory::properties() const
+{
+ GeneralProperties properties;
+ properties.name = tr("UDisks2 Plugin");
+ properties.shortName = "udisks2";
+ properties.hasAbout = true;
+ properties.hasSettings = true;
+ properties.visibilityControl = false;
+ return properties;
+}
+
+QObject *UDisks2Factory::create(QObject *parent)
+{
+ return new UDisks2Plugin(parent);
+}
+
+QDialog *UDisks2Factory::createConfigDialog(QWidget *parent)
+{
+ return new SettingsDialog(parent);
+}
+
+void UDisks2Factory::showAbout(QWidget *parent)
+{
+ QMessageBox::about (parent, tr("About UDisks2 Plugin"),
+ tr("Qmmp UDisks2 Plugin") + "\n" +
+ tr("This plugin provides removable devices detection using UDisks2") + "\n" +
+ tr("Written by: Ilya Kotov <forkotov02@hotmail.ru>"));
+}
+
+QTranslator *UDisks2Factory::createTranslator(QObject *parent)
+{
+ QTranslator *translator = new QTranslator(parent);
+ QString locale = Qmmp::systemLanguageID();
+ translator->load(QString(":/udisks2_plugin_") + locale);
+ return translator;
+}
+
+Q_EXPORT_PLUGIN2(udisks2, UDisks2Factory)
diff --git a/src/plugins/General/udisks2/udisks2factory.h b/src/plugins/General/udisks2/udisks2factory.h
new file mode 100644
index 000000000..3d28e80a0
--- /dev/null
+++ b/src/plugins/General/udisks2/udisks2factory.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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@hotmail.ru>
+*/
+#include <QObject>
+#include <QTranslator>
+
+#include <qmmpui/general.h>
+#include <qmmpui/generalfactory.h>
+
+class UDisks2Factory : public QObject, public GeneralFactory
+{
+Q_OBJECT
+Q_INTERFACES(GeneralFactory)
+public:
+ const GeneralProperties properties() const;
+ QObject *create(QObject *parent);
+ QDialog *createConfigDialog(QWidget *parent);
+ void showAbout(QWidget *parent);
+ QTranslator *createTranslator(QObject *parent);
+
+};
+
+#endif
diff --git a/src/plugins/General/udisks2/udisks2manager.cpp b/src/plugins/General/udisks2/udisks2manager.cpp
new file mode 100644
index 000000000..48858404e
--- /dev/null
+++ b/src/plugins/General/udisks2/udisks2manager.cpp
@@ -0,0 +1,93 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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 "udisks2manager.h"
+
+UDisks2Manager::UDisks2Manager(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)));
+}
+
+
+UDisks2Manager::~UDisks2Manager()
+{
+}
+
+QList<QDBusObjectPath> UDisks2Manager::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 UDisks2Manager::onInterfacesAdded(const QDBusObjectPath &object_path, const QVariantMapMap &)
+{
+ if(object_path.path().startsWith("/org/freedesktop/UDisks2/jobs"))
+ return;
+ qDebug("UDisks2Manager: interfaces added: %s", qPrintable(object_path.path()));
+ emit deviceAdded(object_path);
+}
+
+void UDisks2Manager::onInterfacesRemoved(const QDBusObjectPath &object_path, const QStringList &)
+{
+ if(object_path.path().startsWith("/org/freedesktop/UDisks2/jobs"))
+ return;
+ qDebug("UDisks2Manager: interfaces removed: %s", qPrintable(object_path.path()));
+ emit deviceRemoved(object_path);
+}
diff --git a/src/plugins/General/udisks2/udisks2manager.h b/src/plugins/General/udisks2/udisks2manager.h
new file mode 100644
index 000000000..da539bc61
--- /dev/null
+++ b/src/plugins/General/udisks2/udisks2manager.h
@@ -0,0 +1,59 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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@hotmail.ru>
+*/
+class UDisks2Manager : public QObject
+{
+Q_OBJECT
+public:
+ UDisks2Manager(QObject *parent = 0);
+
+ ~UDisks2Manager();
+
+ 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/udisks2/udisks2plugin.cpp b/src/plugins/General/udisks2/udisks2plugin.cpp
new file mode 100644
index 000000000..3ee249c79
--- /dev/null
+++ b/src/plugins/General/udisks2/udisks2plugin.cpp
@@ -0,0 +1,264 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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/mediaplayer.h>
+#include <qmmpui/playlistmanager.h>
+#include <qmmpui/playlistitem.h>
+#include <qmmp/qmmp.h>
+#include "udisks2device.h"
+#include "udisks2manager.h"
+#include "udisks2plugin.h"
+
+UDisks2Plugin::UDisks2Plugin(QObject *parent) : QObject(parent)
+{
+ qDBusRegisterMetaType<QVariantMapMap>();
+ qDBusRegisterMetaType<QByteArrayList>();
+
+ m_manager = new UDisks2Manager(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
+ QList<QDBusObjectPath> devs = m_manager->findAllDevices();
+ foreach(QDBusObjectPath o, 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();
+}
+
+UDisks2Plugin::~UDisks2Plugin()
+{
+}
+
+void UDisks2Plugin::removeDevice(QDBusObjectPath o)
+{
+ foreach(UDisks2Device *device, m_devices)
+ {
+ if (device->objectPath() == o)
+ {
+ m_devices.removeAll(device);
+ delete device;
+ qDebug("UDisks2Plugin: device \"%s\" removed", qPrintable(o.path()));
+ updateActions();
+ break;
+ }
+ }
+}
+
+void UDisks2Plugin::addDevice(QDBusObjectPath o)
+{
+ foreach(UDisks2Device *device, m_devices) //is it already exists?
+ {
+ if (device->objectPath() == o)
+ return;
+ }
+ UDisks2Device *device = new UDisks2Device(o, this);
+
+ //audio cd
+ if (device->isAudio())
+ {
+ if (m_detectCDA)
+ {
+ qDebug("UDisks2Plugin: device \"%s\" added (cd audio)", qPrintable(o.path()));
+ m_devices << device;
+ connect(device, SIGNAL(changed()), SLOT(updateActions()));
+ updateActions();
+ }
+ else
+ delete device;
+ return;
+ }
+
+ if(!device->isRemovable())
+ {
+ delete device;
+ return;
+ }
+
+ if (device->property("Size").toLongLong() < 17000000000LL &&
+ (device->property("IdType").toString() == "vfat" ||
+ device->property("IdType").toString() == "iso9660" ||
+ device->property("IdType").toString() == "udf" ||
+ device->property("IdType").toString() == "ext2"))
+ {
+ if (m_detectRemovable)
+ {
+ qDebug("UDisks2Plugin: device \"%s\" added (removable)", qPrintable(o.path()));
+ m_devices << device;
+ updateActions();
+ connect(device, SIGNAL(changed()), SLOT(updateActions()));
+ }
+ else
+ delete device;
+ return;
+ }
+ delete device;
+}
+
+void UDisks2Plugin::updateActions()
+{
+ // add action for cd audio or mounted volume
+ foreach(UDisks2Device *device, m_devices)
+ {
+ QString dev_path;
+ if (device->isAudio()) //cd audio
+ {
+ dev_path = "cdda://" + device->deviceFile();
+ qDebug("dev path = %s", qPrintable(dev_path));
+ }
+ else if (device->isMounted()) //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));
+
+ action->setText(actionText);
+ action->setData(dev_path);
+ m_actions->addAction(action);
+ UiHelper::instance()->addAction(action, UiHelper::TOOLS_MENU);
+ addPath(dev_path);
+ }
+ }
+ // remove action if device is unmounted/removed
+ foreach(QAction *action, m_actions->actions ())
+ {
+ if (!findDevice(action))
+ {
+ m_actions->removeAction(action);
+ UiHelper::instance()->removeAction(action);
+ removePath(action->data().toString());
+ action->deleteLater();
+ }
+ }
+}
+
+void UDisks2Plugin::processAction(QAction *action)
+{
+ qDebug("UDisks2Plugin: action triggered: %s", qPrintable(action->data().toString()));
+ QString path = action->data().toString();
+ MediaPlayer::instance()->playListManager()->selectedPlayList()->add(path);
+}
+
+QAction *UDisks2Plugin::findAction(const QString &dev_path)
+{
+ foreach(QAction *action, m_actions->actions ())
+ {
+ if (action->data().toString() == dev_path)
+ return action;
+ }
+ return 0;
+}
+
+UDisks2Device *UDisks2Plugin::findDevice(QAction *action)
+{
+ foreach(UDisks2Device *device, 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 0;
+}
+
+void UDisks2Plugin::addPath(const QString &path)
+{
+ foreach(PlayListItem *item, PlayListManager::instance()->selectedPlayList()->items()) // Is it already exist?
+ {
+ if (item->url().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 UDisks2Plugin::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->item(i)->url().startsWith(path))
+ model->removeAt (i);
+ else
+ ++i;
+ }
+}
diff --git a/src/plugins/General/udisks2/udisks2plugin.h b/src/plugins/General/udisks2/udisks2plugin.h
new file mode 100644
index 000000000..c545de378
--- /dev/null
+++ b/src/plugins/General/udisks2/udisks2plugin.h
@@ -0,0 +1,65 @@
+/***************************************************************************
+ * Copyright (C) 2013 by Ilya Kotov *
+ * forkotov02@hotmail.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 UDisks2Manager;
+class UDisks2Device;
+class QActionGroup;
+class QAction;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+
+class UDisks2Plugin : public QObject
+{
+Q_OBJECT
+public:
+ UDisks2Plugin(QObject *parent = 0);
+
+ ~UDisks2Plugin();
+
+private slots:
+ void removeDevice(QDBusObjectPath);
+ void addDevice(QDBusObjectPath);
+ void processAction(QAction *action);
+ void updateActions();
+
+private:
+ QAction *findAction(const QString &dev_path);
+ UDisks2Device *findDevice(QAction *action);
+ void addPath(const QString &path);
+ void removePath(const QString &path);
+ UDisks2Manager *m_manager;
+ QList <UDisks2Device *> 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