aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Effect
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-02-28 11:05:43 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-02-28 11:05:43 +0000
commit41f66e32ed817ac2da74f5d0e319fda6b02a6242 (patch)
tree31c8b2f96e8a2868787139429b6f3e51ac06ffd8 /src/plugins/Effect
parentce3cede8e1a681db0ad13477881058f6c3c5a6c6 (diff)
downloadqmmp-41f66e32ed817ac2da74f5d0e319fda6b02a6242.tar.gz
qmmp-41f66e32ed817ac2da74f5d0e319fda6b02a6242.tar.bz2
qmmp-41f66e32ed817ac2da74f5d0e319fda6b02a6242.zip
updated bs2b plugin. Now it uses updated bs2b library and enabled by default
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@810 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Effect')
-rw-r--r--src/plugins/Effect/CMakeLists.txt5
-rw-r--r--src/plugins/Effect/Effect.pro8
-rw-r--r--src/plugins/Effect/bs2b/CMakeLists.txt71
-rw-r--r--src/plugins/Effect/bs2b/bs2b.pro39
-rw-r--r--src/plugins/Effect/bs2b/bs2bplugin.cpp73
-rw-r--r--src/plugins/Effect/bs2b/bs2bplugin.h45
-rw-r--r--src/plugins/Effect/bs2b/effectbs2bfactory.cpp69
-rw-r--r--src/plugins/Effect/bs2b/effectbs2bfactory.h46
-rw-r--r--src/plugins/Effect/bs2b/settingsdialog.cpp53
-rw-r--r--src/plugins/Effect/bs2b/settingsdialog.h46
-rw-r--r--src/plugins/Effect/bs2b/settingsdialog.ui99
-rw-r--r--src/plugins/Effect/bs2b/translations/bs2b_plugin_cs.ts90
-rw-r--r--src/plugins/Effect/bs2b/translations/bs2b_plugin_de.ts90
-rw-r--r--src/plugins/Effect/bs2b/translations/bs2b_plugin_ru.ts90
-rw-r--r--src/plugins/Effect/bs2b/translations/bs2b_plugin_uk_UA.ts90
-rw-r--r--src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_CN.ts90
-rw-r--r--src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_TW.ts90
-rw-r--r--src/plugins/Effect/bs2b/translations/translations.qrc11
18 files changed, 1104 insertions, 1 deletions
diff --git a/src/plugins/Effect/CMakeLists.txt b/src/plugins/Effect/CMakeLists.txt
index d2303428b..fcd9a8a88 100644
--- a/src/plugins/Effect/CMakeLists.txt
+++ b/src/plugins/Effect/CMakeLists.txt
@@ -1,5 +1,10 @@
SET(USE_SRC TRUE CACHE BOOL "enable/disable SRC plugin")
+SET(USE_BS2B TRUE CACHE BOOL "enable/disable bs2b plugin")
IF(USE_SRC)
add_subdirectory(srconverter)
ENDIF(USE_SRC)
+
+IF(USE_BS2B)
+add_subdirectory(bs2b)
+ENDIF(USE_BS2B)
diff --git a/src/plugins/Effect/Effect.pro b/src/plugins/Effect/Effect.pro
index b03c8a598..50c42609d 100644
--- a/src/plugins/Effect/Effect.pro
+++ b/src/plugins/Effect/Effect.pro
@@ -1,4 +1,10 @@
+include (../../../qmmp.pri)
TEMPLATE = subdirs
SUBDIRS += srconverter
-
+contains(CONFIG, BS2B_PLUGIN){
+message(***********************)
+message(* BS2B plugin enabled *)
+message(***********************)
+SUBDIRS += bs2b
+}
diff --git a/src/plugins/Effect/bs2b/CMakeLists.txt b/src/plugins/Effect/bs2b/CMakeLists.txt
new file mode 100644
index 000000000..57f5f44d5
--- /dev/null
+++ b/src/plugins/Effect/bs2b/CMakeLists.txt
@@ -0,0 +1,71 @@
+project(libbs2b)
+
+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)
+
+pkg_check_modules(SAMPLERATE samplerate)
+
+include_directories(${BS2B_INCLUDE_DIRS})
+link_directories(${BS2B_LIBRARY_DIRS})
+
+SET(libbs2b_SRCS
+ bs2bplugin.cpp
+ settingsdialog.cpp
+ effectbs2bfactory.cpp
+)
+
+SET(libbs2b_MOC_HDRS
+ bs2bplugin.h
+ settingsdialog.h
+ effectbs2bfactory.h
+)
+
+SET(libbs2b_RCCS translations/translations.qrc)
+
+QT4_ADD_RESOURCES(libbs2b_RCC_SRCS ${libbs2b_RCCS})
+
+QT4_WRAP_CPP(libbs2b_MOC_SRCS ${libbs2b_MOC_HDRS})
+
+pkg_search_module(BS2B libbs2b)
+
+# user interface
+
+
+SET(libbs2b_UIS
+ settingsdialog.ui
+)
+
+QT4_WRAP_UI(libbs2b_UIS_H ${libbs2b_UIS})
+# Don't forget to include output directory, otherwise
+# the UI file won't be wrapped!
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+IF(BS2B_FOUND)
+ADD_LIBRARY(bs2b SHARED ${libbs2b_SRCS} ${libbs2b_MOC_SRCS} ${libbs2b_UIS_H}
+ ${libbs2b_RCC_SRCS})
+add_dependencies(bs2b qmmp)
+target_link_libraries(bs2b ${QT_LIBRARIES} -lqmmp ${BS2B_LDFLAGS} ${BS2B_CFLAGS})
+install(TARGETS bs2b DESTINATION ${LIB_DIR}/qmmp/Effect)
+ENDIF(BS2B_FOUND)
diff --git a/src/plugins/Effect/bs2b/bs2b.pro b/src/plugins/Effect/bs2b/bs2b.pro
new file mode 100644
index 000000000..ed7af50cb
--- /dev/null
+++ b/src/plugins/Effect/bs2b/bs2b.pro
@@ -0,0 +1,39 @@
+include(../../plugins.pri)
+
+HEADERS += bs2bplugin.h \
+ effectbs2bfactory.h \
+ settingsdialog.h
+
+SOURCES += bs2bplugin.cpp \
+ effectbs2bfactory.cpp \
+ settingsdialog.cpp
+
+TARGET =$$PLUGINS_PREFIX/Effect/bs2b
+QMAKE_CLEAN =$$PLUGINS_PREFIX/Effect/libbs2b.so
+INCLUDEPATH += ../../../
+CONFIG += release \
+warn_on \
+plugin \
+link_pkgconfig
+
+PKGCONFIG += libbs2b
+TEMPLATE = lib
+QMAKE_LIBDIR += ../../../../lib
+LIBS += -lqmmp -L/usr/lib -I/usr/include
+
+TRANSLATIONS = translations/bs2b_plugin_cs.ts \
+ translations/bs2b_plugin_de.ts \
+ translations/bs2b_plugin_zh_CN.ts \
+ translations/bs2b_plugin_zh_TW.ts \
+ translations/bs2b_plugin_uk_UA.ts \
+ translations/bs2b_plugin_ru.ts
+RESOURCES = translations/translations.qrc
+
+isEmpty(LIB_DIR){
+ LIB_DIR = /lib
+}
+target.path = $$LIB_DIR/qmmp/Effect
+INSTALLS += target
+
+
+FORMS += settingsdialog.ui
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.cpp b/src/plugins/Effect/bs2b/bs2bplugin.cpp
new file mode 100644
index 000000000..59a9faad2
--- /dev/null
+++ b/src/plugins/Effect/bs2b/bs2bplugin.cpp
@@ -0,0 +1,73 @@
+/***************************************************************************
+ * Copyright (C) 2009 by Ilya Kotov <forkotov02@hotmail.ru> *
+ * Copyright (C) 2009 by Sebastian Pipping <sebastian@pipping.org> *
+ * *
+ * 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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include <QSettings>
+#include <math.h>
+#include <stdlib.h>
+#include <qmmp/qmmp.h>
+#include "bs2bplugin.h"
+
+Bs2bPlugin::Bs2bPlugin(QObject* parent) : Effect(parent)
+{
+ m_bs2b_handler = bs2b_open();
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ bs2b_set_level(m_bs2b_handler, settings.value("bs2b/level", BS2B_DEFAULT_CLEVEL).toInt());
+}
+
+Bs2bPlugin::~Bs2bPlugin()
+{
+ bs2b_clear(m_bs2b_handler);
+}
+
+#define CASE_BS2B(bitsPerSample, dataType, functionToCall, samples, out_data) \
+ case bitsPerSample: \
+ { \
+ dataType * data = reinterpret_cast<dataType *>(*out_data); \
+ while (samples--) { \
+ functionToCall(m_bs2b_handler, data); \
+ data += 2; \
+ } \
+ } \
+ break;
+
+ulong Bs2bPlugin::process(char *in_data, const ulong size, char **out_data)
+{
+ memcpy(*out_data, in_data, size);
+ if (channels() != 2)
+ return size;
+
+ uint samples = size / (bitsPerSample() / 8) / 2;
+ switch (bitsPerSample())
+ {
+ CASE_BS2B(8, char, bs2b_cross_feed_s8, samples, out_data)
+ CASE_BS2B(16, short, bs2b_cross_feed_16, samples, out_data)
+ CASE_BS2B(32, long, bs2b_cross_feed_32, samples, out_data)
+ default:
+ ; // noop
+ }
+ return size;
+}
+
+void Bs2bPlugin::configure(quint32 freq, int chan, int res)
+{
+ Effect::configure(freq, chan, res);
+ bs2b_set_srate(m_bs2b_handler,freq);
+ bs2b_set_level(m_bs2b_handler, BS2B_DEFAULT_CLEVEL);
+}
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.h b/src/plugins/Effect/bs2b/bs2bplugin.h
new file mode 100644
index 000000000..1ac94323f
--- /dev/null
+++ b/src/plugins/Effect/bs2b/bs2bplugin.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * Copyright (C) 2009 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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef BS2BPLUGIN_H
+#define BS2BPLUGIN_H
+
+#include <bs2b/bs2b.h>
+#include <qmmp/effect.h>
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+
+class Bs2bPlugin : public Effect
+{
+ Q_OBJECT
+public:
+ Bs2bPlugin(QObject *parent = 0);
+
+ virtual ~Bs2bPlugin();
+
+ ulong process(char *in_data, const ulong size, char **out_data);
+ void configure(quint32 freq, int chan, int res);
+
+private:
+ t_bs2bdp m_bs2b_handler;
+};
+
+#endif
diff --git a/src/plugins/Effect/bs2b/effectbs2bfactory.cpp b/src/plugins/Effect/bs2b/effectbs2bfactory.cpp
new file mode 100644
index 000000000..b594b41d1
--- /dev/null
+++ b/src/plugins/Effect/bs2b/effectbs2bfactory.cpp
@@ -0,0 +1,69 @@
+/***************************************************************************
+ * Copyright (C) 2009 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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include <QtGui>
+#include <bs2b/bs2bversion.h>
+#include "effectbs2bfactory.h"
+#include "settingsdialog.h"
+#include "bs2bplugin.h"
+
+const EffectProperties EffectBs2bFactory::properties() const
+{
+ EffectProperties properties;
+ properties.name = tr("BS2B Plugin");
+ properties.shortName = "bs2b";
+ properties.hasSettings = TRUE;
+ properties.hasAbout = TRUE;
+ return properties;
+};
+
+Effect *EffectBs2bFactory::create(QObject *parent)
+{
+ return new Bs2bPlugin(parent);
+};
+
+void EffectBs2bFactory::showSettings(QWidget *parent)
+{
+ SettingsDialog *s = new SettingsDialog(parent);
+ s ->show();
+};
+
+void EffectBs2bFactory::showAbout(QWidget *parent)
+{
+ QMessageBox::about (parent, tr("About BS2B Effect Plugin"),
+ "<p>"+tr("This is the Qmmp plugin version of Boris Mikhaylov's headphone DSP "
+ "effect \"Bauer stereophonic-to-binaural\", abbreviated bs2b.")+"</p>"+
+ QString("<p>" + tr("Visit %1 for more details")+"</p>")
+ .arg("<a href=\"http://bs2b.sourceforge.net/\">http://bs2b.sourceforge.net/</a>")+
+ QString("<p>" + tr("Compiled against libbs2b-%1") + "</p>").arg(BS2B_VERSION_STR)+
+ "<p>"+tr("Developers:")+"<br>"+
+ tr("Ilya Kotov") + " &lt;forkotov02@hotmail.ru&gt;"+"<br>"+
+ tr("Sebastian Pipping") + " &lt;sebastian@pipping.org&gt;"+"</p>");
+};
+
+QTranslator *EffectBs2bFactory::createTranslator(QObject *parent)
+{
+ QTranslator *translator = new QTranslator(parent);
+ QString locale = QLocale::system().name();
+ translator->load(QString(":/bs2b_plugin_") + locale);
+ return translator;
+};
+
+Q_EXPORT_PLUGIN(EffectBs2bFactory)
diff --git a/src/plugins/Effect/bs2b/effectbs2bfactory.h b/src/plugins/Effect/bs2b/effectbs2bfactory.h
new file mode 100644
index 000000000..231315605
--- /dev/null
+++ b/src/plugins/Effect/bs2b/effectbs2bfactory.h
@@ -0,0 +1,46 @@
+/***************************************************************************
+ * Copyright (C) 2009 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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef EFFECTBS2BFACTORY_H
+#define EFFECTBS2BFACTORY_H
+
+
+#include <QObject>
+
+#include <qmmp/effectfactory.h>
+#include <qmmp/effect.h>
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class EffectBs2bFactory : public QObject, public EffectFactory
+{
+Q_OBJECT
+Q_INTERFACES(EffectFactory);
+
+public:
+ const EffectProperties properties() const;
+ Effect *create(QObject *parent);
+ void showSettings(QWidget *parent);
+ void showAbout(QWidget *parent);
+ QTranslator *createTranslator(QObject *parent);
+};
+
+
+#endif
diff --git a/src/plugins/Effect/bs2b/settingsdialog.cpp b/src/plugins/Effect/bs2b/settingsdialog.cpp
new file mode 100644
index 000000000..1030815e5
--- /dev/null
+++ b/src/plugins/Effect/bs2b/settingsdialog.cpp
@@ -0,0 +1,53 @@
+/***************************************************************************
+ * Copyright (C) 2009 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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include <QSettings>
+#include <bs2b/bs2b.h>
+#include <qmmp/qmmp.h>
+
+#include "settingsdialog.h"
+
+SettingsDialog::SettingsDialog(QWidget *parent)
+ : QDialog(parent)
+{
+ ui.setupUi(this);
+ setAttribute(Qt::WA_DeleteOnClose, TRUE);
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ ui.levelComboBox->addItem (tr("low"), BS2B_LOW_CLEVEL);
+ ui.levelComboBox->addItem (tr("middle"), BS2B_MIDDLE_CLEVEL);
+ ui.levelComboBox->addItem (tr("high"), BS2B_HIGH_CLEVEL);
+ ui.levelComboBox->addItem (tr("low (easy version)"), BS2B_LOW_ECLEVEL);
+ ui.levelComboBox->addItem (tr("middle (easy version)"), BS2B_MIDDLE_ECLEVEL);
+ ui.levelComboBox->addItem (tr("hight (easy version)"), BS2B_HIGH_ECLEVEL);
+ int index = ui.levelComboBox->findData(settings.value("bs2b/level", BS2B_DEFAULT_CLEVEL).toInt());
+ if (index >= 0)
+ ui.levelComboBox->setCurrentIndex(index);
+}
+
+SettingsDialog::~SettingsDialog()
+{
+}
+
+void SettingsDialog::accept()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue("bs2b/level", ui.levelComboBox->itemData(ui.levelComboBox->currentIndex()).toInt());
+ QDialog::accept();
+}
diff --git a/src/plugins/Effect/bs2b/settingsdialog.h b/src/plugins/Effect/bs2b/settingsdialog.h
new file mode 100644
index 000000000..0cc842fb4
--- /dev/null
+++ b/src/plugins/Effect/bs2b/settingsdialog.h
@@ -0,0 +1,46 @@
+/***************************************************************************
+ * Copyright (C) 2008 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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 ui;
+
+};
+
+#endif
diff --git a/src/plugins/Effect/bs2b/settingsdialog.ui b/src/plugins/Effect/bs2b/settingsdialog.ui
new file mode 100644
index 000000000..72f54da02
--- /dev/null
+++ b/src/plugins/Effect/bs2b/settingsdialog.ui
@@ -0,0 +1,99 @@
+<?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>293</width>
+ <height>69</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>BS2B Plugin Settings</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="leftMargin">
+ <number>6</number>
+ </property>
+ <property name="rightMargin">
+ <number>6</number>
+ </property>
+ <property name="bottomMargin">
+ <number>6</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Crossfeed level:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" colspan="2">
+ <widget class="QComboBox" name="levelComboBox"/>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>228</width>
+ <height>24</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="2">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <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>270</x>
+ <y>76</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>91</x>
+ <y>88</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>SettingsDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>326</x>
+ <y>78</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>139</x>
+ <y>60</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_cs.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_cs.ts
new file mode 100644
index 000000000..19ebc91b1
--- /dev/null
+++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_cs.ts
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>EffectBs2bFactory</name>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="30"/>
+ <source>BS2B Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="50"/>
+ <source>About BS2B Effect Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="51"/>
+ <source>This is the Qmmp plugin version of Boris Mikhaylov&apos;s headphone DSP effect &quot;Bauer stereophonic-to-binaural&quot;, abbreviated bs2b.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="53"/>
+ <source>Visit %1 for more details</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="55"/>
+ <source>Compiled against libbs2b-%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="56"/>
+ <source>Developers:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="57"/>
+ <source>Ilya Kotov</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="58"/>
+ <source>Sebastian Pipping</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.cpp" line="33"/>
+ <source>low</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="34"/>
+ <source>middle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="35"/>
+ <source>high</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="36"/>
+ <source>low (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="37"/>
+ <source>middle (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="38"/>
+ <source>hight (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>BS2B Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>Crossfeed level:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_de.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_de.ts
new file mode 100644
index 000000000..19ebc91b1
--- /dev/null
+++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_de.ts
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>EffectBs2bFactory</name>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="30"/>
+ <source>BS2B Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="50"/>
+ <source>About BS2B Effect Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="51"/>
+ <source>This is the Qmmp plugin version of Boris Mikhaylov&apos;s headphone DSP effect &quot;Bauer stereophonic-to-binaural&quot;, abbreviated bs2b.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="53"/>
+ <source>Visit %1 for more details</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="55"/>
+ <source>Compiled against libbs2b-%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="56"/>
+ <source>Developers:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="57"/>
+ <source>Ilya Kotov</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="58"/>
+ <source>Sebastian Pipping</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.cpp" line="33"/>
+ <source>low</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="34"/>
+ <source>middle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="35"/>
+ <source>high</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="36"/>
+ <source>low (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="37"/>
+ <source>middle (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="38"/>
+ <source>hight (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>BS2B Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>Crossfeed level:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_ru.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_ru.ts
new file mode 100644
index 000000000..c6ed80e0a
--- /dev/null
+++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_ru.ts
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru_RU" sourcelanguage="ru_RU">
+<context>
+ <name>EffectBs2bFactory</name>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="30"/>
+ <source>BS2B Plugin</source>
+ <translation>Модуль BS2B</translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="50"/>
+ <source>About BS2B Effect Plugin</source>
+ <translation>О модуле эффектов BS2B</translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="51"/>
+ <source>This is the Qmmp plugin version of Boris Mikhaylov&apos;s headphone DSP effect &quot;Bauer stereophonic-to-binaural&quot;, abbreviated bs2b.</source>
+ <translation>Этот модуль добавляет эффект &quot;Bauer stereophonic-to-binaural&quot; (сокращённо bs2b) Бориса Михайлова.</translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="53"/>
+ <source>Visit %1 for more details</source>
+ <translation>Для получения информации посетите %1</translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="55"/>
+ <source>Compiled against libbs2b-%1</source>
+ <translation>Собрано с libbs2b-%1</translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="56"/>
+ <source>Developers:</source>
+ <translation>Разработчики:</translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="57"/>
+ <source>Ilya Kotov</source>
+ <translation>Илья Котов</translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="58"/>
+ <source>Sebastian Pipping</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.cpp" line="33"/>
+ <source>low</source>
+ <translation>низкий</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="34"/>
+ <source>middle</source>
+ <translation>средний</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="35"/>
+ <source>high</source>
+ <translation>высокий</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="36"/>
+ <source>low (easy version)</source>
+ <translation>низкий (упрощённая версия)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="37"/>
+ <source>middle (easy version)</source>
+ <translation>средний (упрощённая версия)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="38"/>
+ <source>hight (easy version)</source>
+ <translation>высокий (упрощённая версия)</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>BS2B Plugin Settings</source>
+ <translation>Настройки модуля BS2B</translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>Crossfeed level:</source>
+ <translation>Уровень взаимосмешения:</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_uk_UA.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_uk_UA.ts
new file mode 100644
index 000000000..19ebc91b1
--- /dev/null
+++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_uk_UA.ts
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>EffectBs2bFactory</name>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="30"/>
+ <source>BS2B Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="50"/>
+ <source>About BS2B Effect Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="51"/>
+ <source>This is the Qmmp plugin version of Boris Mikhaylov&apos;s headphone DSP effect &quot;Bauer stereophonic-to-binaural&quot;, abbreviated bs2b.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="53"/>
+ <source>Visit %1 for more details</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="55"/>
+ <source>Compiled against libbs2b-%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="56"/>
+ <source>Developers:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="57"/>
+ <source>Ilya Kotov</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="58"/>
+ <source>Sebastian Pipping</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.cpp" line="33"/>
+ <source>low</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="34"/>
+ <source>middle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="35"/>
+ <source>high</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="36"/>
+ <source>low (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="37"/>
+ <source>middle (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="38"/>
+ <source>hight (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>BS2B Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>Crossfeed level:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_CN.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_CN.ts
new file mode 100644
index 000000000..19ebc91b1
--- /dev/null
+++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_CN.ts
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>EffectBs2bFactory</name>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="30"/>
+ <source>BS2B Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="50"/>
+ <source>About BS2B Effect Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="51"/>
+ <source>This is the Qmmp plugin version of Boris Mikhaylov&apos;s headphone DSP effect &quot;Bauer stereophonic-to-binaural&quot;, abbreviated bs2b.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="53"/>
+ <source>Visit %1 for more details</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="55"/>
+ <source>Compiled against libbs2b-%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="56"/>
+ <source>Developers:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="57"/>
+ <source>Ilya Kotov</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="58"/>
+ <source>Sebastian Pipping</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.cpp" line="33"/>
+ <source>low</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="34"/>
+ <source>middle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="35"/>
+ <source>high</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="36"/>
+ <source>low (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="37"/>
+ <source>middle (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="38"/>
+ <source>hight (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>BS2B Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>Crossfeed level:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_TW.ts b/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_TW.ts
new file mode 100644
index 000000000..19ebc91b1
--- /dev/null
+++ b/src/plugins/Effect/bs2b/translations/bs2b_plugin_zh_TW.ts
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>EffectBs2bFactory</name>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="30"/>
+ <source>BS2B Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="50"/>
+ <source>About BS2B Effect Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="51"/>
+ <source>This is the Qmmp plugin version of Boris Mikhaylov&apos;s headphone DSP effect &quot;Bauer stereophonic-to-binaural&quot;, abbreviated bs2b.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="53"/>
+ <source>Visit %1 for more details</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="55"/>
+ <source>Compiled against libbs2b-%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="56"/>
+ <source>Developers:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="57"/>
+ <source>Ilya Kotov</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../effectbs2bfactory.cpp" line="58"/>
+ <source>Sebastian Pipping</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SettingsDialog</name>
+ <message>
+ <location filename="../settingsdialog.cpp" line="33"/>
+ <source>low</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="34"/>
+ <source>middle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="35"/>
+ <source>high</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="36"/>
+ <source>low (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="37"/>
+ <source>middle (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.cpp" line="38"/>
+ <source>hight (easy version)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="14"/>
+ <source>BS2B Plugin Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../settingsdialog.ui" line="29"/>
+ <source>Crossfeed level:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Effect/bs2b/translations/translations.qrc b/src/plugins/Effect/bs2b/translations/translations.qrc
new file mode 100644
index 000000000..732c289e1
--- /dev/null
+++ b/src/plugins/Effect/bs2b/translations/translations.qrc
@@ -0,0 +1,11 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>bs2b_plugin_cs.qm</file>
+ <file>bs2b_plugin_de.qm</file>
+ <file>bs2b_plugin_zh_CN.qm</file>
+ <file>bs2b_plugin_zh_TW.qm</file>
+ <file>bs2b_plugin_uk_UA.qm</file>
+ <file>bs2b_plugin_ru.qm</file>
+ </qresource>
+</RCC>