diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-11-11 05:24:51 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-11-11 05:24:51 +0000 |
| commit | ecd95ef11c94e7442728df4fc7307b387769d7eb (patch) | |
| tree | 8b4f5212a5af2efb16e21244a5e5488aac958d4d /src/plugins/Output | |
| parent | 93a629f11d3b8ff9454093378d15cb75629919e7 (diff) | |
| download | qmmp-ecd95ef11c94e7442728df4fc7307b387769d7eb.tar.gz qmmp-ecd95ef11c94e7442728df4fc7307b387769d7eb.tar.bz2 qmmp-ecd95ef11c94e7442728df4fc7307b387769d7eb.zip | |
adding support of Qt Multimedia output (patch by Ivan Ponomarev)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5741 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output')
14 files changed, 699 insertions, 0 deletions
diff --git a/src/plugins/Output/CMakeLists.txt b/src/plugins/Output/CMakeLists.txt index 239199a8e..ad01f575f 100644 --- a/src/plugins/Output/CMakeLists.txt +++ b/src/plugins/Output/CMakeLists.txt @@ -6,6 +6,7 @@ SET(USE_PULSE TRUE CACHE BOOL "enable/disable pulse audio plugin") SET(USE_NULL TRUE CACHE BOOL "enable/disable null output plugin") SET(USE_WAVEOUT TRUE CACHE BOOL "enable/disable Win32 waveout plugin") SET(USE_DSOUND TRUE CACHE BOOL "enable/disable DirectSound plugin") +SET(USE_QTMULTIMEDIA TRUE CACHE BOOL "enable/disable Qt Multimedia output plugin") IF(USE_ALSA) add_subdirectory(alsa) @@ -38,3 +39,7 @@ ENDIF(USE_WAVEOUT) IF(USE_DSOUND) add_subdirectory(directsound) ENDIF(USE_DSOUND) + +IF(USE_QTMULTIMEDIA) +add_subdirectory(qtmultimedia) +ENDIF(USE_QTMULTIMEDIA) diff --git a/src/plugins/Output/Output.pro b/src/plugins/Output/Output.pro index d07513257..8b4d45b6a 100644 --- a/src/plugins/Output/Output.pro +++ b/src/plugins/Output/Output.pro @@ -28,4 +28,8 @@ contains(CONFIG, OSS4_PLUGIN){ SUBDIRS += oss4 } +contains(CONFIG, QTMULTIMEDIA_PLUGIN){ + SUBDIRS += qtmultimedia +} + } diff --git a/src/plugins/Output/qtmultimedia/CMakeLists.txt b/src/plugins/Output/qtmultimedia/CMakeLists.txt new file mode 100644 index 000000000..686739002 --- /dev/null +++ b/src/plugins/Output/qtmultimedia/CMakeLists.txt @@ -0,0 +1,56 @@ +project(libqtmultimedia) + +cmake_minimum_required(VERSION 2.4.7) + +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}) + +SET(QT_INCLUDES + ${QT_INCLUDES} + ${CMAKE_CURRENT_SOURCE_DIR}/../../../ +) + +# libqmmp +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../) +link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmp) + +SET(libqtmultimedia_SRCS + outputqtmultimedia.cpp + outputqtmultimediafactory.cpp + settingsdialog.cpp +) + +SET(libqtmultimedia_HDRS + outputqtmultimedia.h +) + +SET(libqtmultimedia_RCCS translations/translations.qrc) + +QT4_ADD_RESOURCES(libqtmultimedia_RCC_SRCS ${libqtmultimedia_RCCS}) + +SET(libqtmultimedia_UIS + settingsdialog.ui +) +QT4_WRAP_UI(libqtmultimedia_UIS_H ${libqtmultimedia_UIS}) + +# Don't forget to include output directory, otherwise +# the UI file won't be wrapped! +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +IF(${QT_QTMULTIMEDIA_FOUND}) + ADD_LIBRARY(qtmultimedia MODULE ${libqtmultimedia_SRCS} ${libqtmultimedia_UIS_H} ${libqtmultimedia_RCC_SRCS} ${libqtmultimedia_HDRS}) + add_dependencies(qtmultimedia qmmp) + target_link_libraries(qtmultimedia ${QT_LIBRARIES} -lqmmp) + install(TARGETS qtmultimedia DESTINATION ${LIB_DIR}/qmmp/Output) +ENDIF(${QT_QTMULTIMEDIA_FOUND})
\ No newline at end of file diff --git a/src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp b/src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp new file mode 100644 index 000000000..142292bdd --- /dev/null +++ b/src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp @@ -0,0 +1,136 @@ +/*************************************************************************** + * Copyright (C) 2015 by Ivan Ponomarev * + * ivantrue@gmail.com * + * * + * 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 "outputqtmultimedia.h" + +#include <QAudioOutput> +#include <QAudioFormat> +#include <QAudioDeviceInfo> +#include <QBuffer> +#include <QSettings> +#include <QDebug> + + +OutputQtMultimedia::OutputQtMultimedia() : Output(), m_buffer(NULL) +{ +} + +OutputQtMultimedia::~OutputQtMultimedia() +{ +} + +bool OutputQtMultimedia::initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat format) +{ + QAudioFormat qformat; + qformat.setCodec("audio/pcm"); + qformat.setFrequency(freq); + qformat.setByteOrder(QAudioFormat::LittleEndian); + qformat.setChannels(map.size()); + qformat.setSampleType(QAudioFormat::SignedInt); + switch (format) + { + case Qmmp::PCM_S8: + qformat.setSampleSize(8); + break; + case Qmmp::PCM_S16LE: + qformat.setSampleSize(16); + break; + case Qmmp::PCM_S24LE: + qformat.setSampleSize(24); + break; + case Qmmp::PCM_S32LE: + qformat.setSampleSize(32); + break; + default: + break; + } + + if (!qformat.isValid()) + return false; + + const QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + const QString saved_device_name = settings.value("QTMULTIMEDIA/device").toString(); + + QAudioDeviceInfo device_info; + if (!saved_device_name.isEmpty()) + { + const QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); + foreach (const QAudioDeviceInfo &info, devices) + { + if (info.deviceName()==saved_device_name) + { + if (info.isFormatSupported(qformat)) + { + device_info = info; + break; + } + else + qDebug() << "OutputQtMultimedia: Output device: " << saved_device_name << " is not supported"; + } + } + } + + if (device_info.isNull()) + { + device_info = QAudioDeviceInfo::defaultOutputDevice(); + if (!device_info.isFormatSupported(qformat)) + return false; + } + + qDebug() << "OutputQtMultimedia: Using output device: " << device_info.deviceName(); + + m_output.reset(new QAudioOutput(device_info, qformat)); + m_buffer = m_output->start(); + + configure(freq, map, format); + return true; +} + + +qint64 OutputQtMultimedia::latency() +{ + return 0; +} + +qint64 OutputQtMultimedia::writeAudio(unsigned char *data, qint64 maxSize) +{ + return m_buffer->write((const char*)data, maxSize); +} + +void OutputQtMultimedia::drain() +{ + m_buffer->waitForBytesWritten(-1); +} + +void OutputQtMultimedia::reset() +{ + m_buffer->reset(); + m_buffer = m_output->start(); +} + +void OutputQtMultimedia::suspend() +{ + m_output->suspend(); +} + +void OutputQtMultimedia::resume() +{ + m_output->resume(); +} diff --git a/src/plugins/Output/qtmultimedia/outputqtmultimedia.h b/src/plugins/Output/qtmultimedia/outputqtmultimedia.h new file mode 100644 index 000000000..ab60ce290 --- /dev/null +++ b/src/plugins/Output/qtmultimedia/outputqtmultimedia.h @@ -0,0 +1,53 @@ +/*************************************************************************** + * Copyright (C) 2015 by Ivan Ponomarev * + * ivantrue@gmail.com * + * * + * 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 OUTPUTQTMULTIMEDIA_H +#define OUTPUTQTMULTIMEDIA_H + +#include <qmmp/output.h> +#include <QScopedPointer> + +/** + @author Ivan Ponomarev ivantrue@gmail.com +*/ +class QAudioOutput; +class QIODevice; + +class OutputQtMultimedia : public Output +{ +public: + OutputQtMultimedia(); + ~OutputQtMultimedia(); + + virtual bool initialize(quint32, ChannelMap map, Qmmp::AudioFormat format); + virtual qint64 latency(); + virtual qint64 writeAudio(unsigned char *data, qint64 maxSize); + virtual void drain(); + virtual void reset(); + virtual void suspend(); + virtual void resume(); + +private: + QScopedPointer<QAudioOutput> m_output; + QIODevice *m_buffer; +}; + + +#endif // OUTPUTQTMULTIMEDIA_H diff --git a/src/plugins/Output/qtmultimedia/outputqtmultimediafactory.cpp b/src/plugins/Output/qtmultimedia/outputqtmultimediafactory.cpp new file mode 100644 index 000000000..93a698391 --- /dev/null +++ b/src/plugins/Output/qtmultimedia/outputqtmultimediafactory.cpp @@ -0,0 +1,70 @@ +/*************************************************************************** + * Copyright (C) 2015 by Ivan Ponomarev * + * ivantrue@gmail.com * + * * + * 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 "outputqtmultimediafactory.h" +#include "settingsdialog.h" + +#include <QtGui> +#include <qmmp/qmmp.h> +#include "outputqtmultimedia.h" + + +const OutputProperties OutputQtMultimediaFactory::properties() const +{ + OutputProperties properties; + properties.name = tr("Qt Multimedia Plugin"); + properties.hasAbout = true; + properties.hasSettings = true; + properties.shortName = "qtmultimedia"; + return properties; +} + +Output* OutputQtMultimediaFactory::create() +{ + return new OutputQtMultimedia(); +} + +Volume *OutputQtMultimediaFactory::createVolume() +{ + return 0; +} + +void OutputQtMultimediaFactory::showSettings(QWidget* parent) +{ + SettingsDialog *s = new SettingsDialog(parent); + s->show(); +} + +void OutputQtMultimediaFactory::showAbout(QWidget *parent) +{ + QMessageBox::about (parent, tr("About Qt Multimedia Output Plugin"), + tr("Qmmp Qt Multimedia Output Plugin")+"\n"+ + tr("Written by: Ivan Ponomarev <ivantrue@gmail.com>")); +} + +QTranslator *OutputQtMultimediaFactory::createTranslator(QObject *parent) +{ + QTranslator *translator = new QTranslator(parent); + QString locale = Qmmp::systemLanguageID(); + translator->load(QString(":/qtmultimedia_plugin_") + locale); + return translator; +} + +Q_EXPORT_PLUGIN2(qtmultimedia, OutputQtMultimediaFactory) diff --git a/src/plugins/Output/qtmultimedia/outputqtmultimediafactory.h b/src/plugins/Output/qtmultimedia/outputqtmultimediafactory.h new file mode 100644 index 000000000..d8ccbf97c --- /dev/null +++ b/src/plugins/Output/qtmultimedia/outputqtmultimediafactory.h @@ -0,0 +1,47 @@ +/*************************************************************************** + * Copyright (C) 2015 by Ivan Ponomarev * + * ivantrue@gmail.com * + * * + * 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 OUTPUTQTMULTIMEDIAFACTORY_H +#define OUTPUTQTMULTIMEDIAFACTORY_H + + +#include <QObject> +#include <QString> +#include <QIODevice> +#include <QWidget> + +#include <qmmp/output.h> +#include <qmmp/outputfactory.h> + + +class OutputQtMultimediaFactory : public QObject, OutputFactory +{ +Q_OBJECT +Q_INTERFACES(OutputFactory) + +public: + virtual const OutputProperties properties() const; + virtual Output* create(); + virtual Volume *createVolume(); + virtual void showSettings(QWidget* parent); + virtual void showAbout(QWidget *parent); + virtual QTranslator *createTranslator(QObject *parent); +}; + +#endif diff --git a/src/plugins/Output/qtmultimedia/qtmultimedia.pro b/src/plugins/Output/qtmultimedia/qtmultimedia.pro new file mode 100644 index 000000000..f9e92d75d --- /dev/null +++ b/src/plugins/Output/qtmultimedia/qtmultimedia.pro @@ -0,0 +1,42 @@ +include(../../plugins.pri) + +QT += multimedia + +FORMS += settingsdialog.ui + +HEADERS += outputqtmultimediafactory.h \ + outputqtmultimedia.h \ + settingsdialog.h + +SOURCES += outputqtmultimediafactory.cpp \ + outputqtmultimedia.cpp \ + settingsdialog.cpp + +TARGET=$$PLUGINS_PREFIX/Output/qtmultimedia + +INCLUDEPATH += ../../../ +QMAKE_LIBDIR += ../../../../lib + +CONFIG += warn_on \ +thread \ +plugin + +TEMPLATE = lib + +RESOURCES = translations/translations.qrc + +unix { + isEmpty (LIB_DIR){ + LIB_DIR = /lib + } + + target.path = $$LIB_DIR/qmmp/Output + INSTALLS += target + LIBS += -lqmmp + QMAKE_CLEAN =$$PLUGINS_PREFIX/Output/libqtmultimedia.so +} + +win32 { + LIBS += -lqmmp0 + QMAKE_LIBDIR += ../../../../bin +} diff --git a/src/plugins/Output/qtmultimedia/settingsdialog.cpp b/src/plugins/Output/qtmultimedia/settingsdialog.cpp new file mode 100644 index 000000000..7b4fd0600 --- /dev/null +++ b/src/plugins/Output/qtmultimedia/settingsdialog.cpp @@ -0,0 +1,62 @@ +/*************************************************************************** + * Copyright (C) 2015 by Ivan Ponomarev * + * ivantrue@gmail.com * + * * + * 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 <QAudioDeviceInfo> +#include <QDebug> +#include <qmmp/qmmp.h> + +#include "settingsdialog.h" + +SettingsDialog::SettingsDialog (QWidget *parent) : QDialog (parent) +{ + ui.setupUi(this); + setAttribute(Qt::WA_DeleteOnClose); + + const QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + const QString default_device = settings.value("QTMULTIMEDIA/device").toString(); + + //Default item always has index = 0 + ui.deviceComboBox->addItem(tr("Default")); + ui.deviceComboBox->setCurrentIndex(0); + + const QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); + int index = 1; + foreach (const QAudioDeviceInfo &info, devices) + { + const QString device_name = info.deviceName(); + ui.deviceComboBox->addItem(device_name); + if (device_name==default_device) + ui.deviceComboBox->setCurrentIndex(index); + ++index; + } +} + +SettingsDialog::~SettingsDialog() +{ +} + +void SettingsDialog::accept() +{ + qDebug("%s", Q_FUNC_INFO); + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + //0 index means default value, we save empty string for it. + settings.setValue("QTMULTIMEDIA/device", ui.deviceComboBox->currentIndex() ? ui.deviceComboBox->currentText() : QString()); + QDialog::accept(); +} diff --git a/src/plugins/Output/qtmultimedia/settingsdialog.h b/src/plugins/Output/qtmultimedia/settingsdialog.h new file mode 100644 index 000000000..19fc13386 --- /dev/null +++ b/src/plugins/Output/qtmultimedia/settingsdialog.h @@ -0,0 +1,41 @@ +/*************************************************************************** + * Copyright (C) 2015 by Ivan Ponomarev * + * ivantrue@gmail.com * + * * + * 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 Ivan Ponomarev <ivantrue@gmail.com> +*/ +class SettingsDialog : public QDialog +{ +Q_OBJECT +public: + SettingsDialog(QWidget *parent); + ~SettingsDialog(); + +private: + virtual void accept(); + Ui::SettingsDialog ui; +}; + +#endif diff --git a/src/plugins/Output/qtmultimedia/settingsdialog.ui b/src/plugins/Output/qtmultimedia/settingsdialog.ui new file mode 100644 index 000000000..582b86511 --- /dev/null +++ b/src/plugins/Output/qtmultimedia/settingsdialog.ui @@ -0,0 +1,87 @@ +<?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>276</width> + <height>86</height> + </rect> + </property> + <property name="windowTitle"> + <string>Qt Multimedia Plugin Settings</string> + </property> + <layout class="QGridLayout"> + <item row="0" column="1" colspan="2"> + <widget class="QComboBox" name="deviceComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="editable"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="0" colspan="3"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Maximum" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Device:</string> + </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>179</x> + <y>51</y> + </hint> + <hint type="destinationlabel"> + <x>274</x> + <y>2</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>SettingsDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>231</x> + <y>46</y> + </hint> + <hint type="destinationlabel"> + <x>271</x> + <y>44</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/src/plugins/Output/qtmultimedia/translations/qtmultimedia_plugin_en.ts b/src/plugins/Output/qtmultimedia/translations/qtmultimedia_plugin_en.ts new file mode 100644 index 000000000..728e9cfb1 --- /dev/null +++ b/src/plugins/Output/qtmultimedia/translations/qtmultimedia_plugin_en.ts @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="en_US"> +<context> + <name>OutputQtMultimediaFactory</name> + <message> + <location filename="../outputqtmultimediafactory.cpp" line="32"/> + <source>Qt Multimedia Plugin</source> + <translation></translation> + </message> + <message> + <location filename="../outputqtmultimediafactory.cpp" line="57"/> + <source>About Qt Multimedia Output Plugin</source> + <translation></translation> + </message> + <message> + <location filename="../outputqtmultimediafactory.cpp" line="58"/> + <source>Qmmp Qt Multimedia Output Plugin</source> + <translation></translation> + </message> + <message> + <location filename="../outputqtmultimediafactory.cpp" line="59"/> + <source>Written by: Ivan Ponomarev <ivantrue@gmail.com></source> + <translation></translation> + </message> +</context> +<context> + <name>SettingsDialog</name> + <message> + <location filename="../settingsdialog.ui" line="14"/> + <source>Qt Multimedia Plugin Settings</source> + <translation></translation> + </message> + <message> + <location filename="../settingsdialog.ui" line="46"/> + <source>Device:</source> + <translation></translation> + </message> + <message> + <location filename="../settingsdialog.cpp" line="36"/> + <source>Default</source> + <translation></translation> + </message> +</context> +</TS> diff --git a/src/plugins/Output/qtmultimedia/translations/qtmultimedia_plugin_ru.ts b/src/plugins/Output/qtmultimedia/translations/qtmultimedia_plugin_ru.ts new file mode 100644 index 000000000..bbee87585 --- /dev/null +++ b/src/plugins/Output/qtmultimedia/translations/qtmultimedia_plugin_ru.ts @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ru_RU"> +<context> + <name>OutputQtMultimediaFactory</name> + <message> + <location filename="../outputqtmultimediafactory.cpp" line="32"/> + <source>Qt Multimedia Plugin</source> + <translation>Модуль Qt Multimedia</translation> + </message> + <message> + <location filename="../outputqtmultimediafactory.cpp" line="57"/> + <source>About Qt Multimedia Output Plugin</source> + <translation>О модуле вывода Qt Multimedia</translation> + </message> + <message> + <location filename="../outputqtmultimediafactory.cpp" line="58"/> + <source>Qmmp Qt Multimedia Output Plugin</source> + <translation>Модуль вывода Qt Multimedia для Qmmp</translation> + </message> + <message> + <location filename="../outputqtmultimediafactory.cpp" line="59"/> + <source>Written by: Ivan Ponomarev <ivantrue@gmail.com></source> + <translation>Разработчик: Иван Пономарев <ivantrue@gmail.com></translation> + </message> +</context> +<context> + <name>SettingsDialog</name> + <message> + <location filename="../settingsdialog.ui" line="14"/> + <source>Qt Multimedia Plugin Settings</source> + <translation>Настройки модуля Qt Multimedia</translation> + </message> + <message> + <location filename="../settingsdialog.ui" line="46"/> + <source>Device:</source> + <translation>Устройство:</translation> + </message> + <message> + <location filename="../settingsdialog.cpp" line="36"/> + <source>Default</source> + <translation>По умолчанию</translation> + </message> +</context> +</TS> diff --git a/src/plugins/Output/qtmultimedia/translations/translations.qrc b/src/plugins/Output/qtmultimedia/translations/translations.qrc new file mode 100644 index 000000000..f6d2dbb40 --- /dev/null +++ b/src/plugins/Output/qtmultimedia/translations/translations.qrc @@ -0,0 +1,6 @@ +<RCC> + <qresource prefix="/"> + <file>qtmultimedia_plugin_en.qm</file> + <file>qtmultimedia_plugin_ru.qm</file> + </qresource> +</RCC> |
