aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/General/streambrowser
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2012-02-27 10:22:43 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2012-02-27 10:22:43 +0000
commit0bc5775baa3b0c0e70f66507e64d08e16b5e94e3 (patch)
treec2207f77f489b0f4f922b0933f41a7b72409817d /src/plugins/General/streambrowser
parentf5c896982dd61bc33c4ee0f7da7210b5e9de9360 (diff)
downloadqmmp-0bc5775baa3b0c0e70f66507e64d08e16b5e94e3.tar.gz
qmmp-0bc5775baa3b0c0e70f66507e64d08e16b5e94e3.tar.bz2
qmmp-0bc5775baa3b0c0e70f66507e64d08e16b5e94e3.zip
added stream browser plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2638 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/streambrowser')
-rw-r--r--src/plugins/General/streambrowser/streambrowser.cpp49
-rw-r--r--src/plugins/General/streambrowser/streambrowser.h50
-rw-r--r--src/plugins/General/streambrowser/streambrowser.pro51
-rw-r--r--src/plugins/General/streambrowser/streambrowserfactory.cpp63
-rw-r--r--src/plugins/General/streambrowser/streambrowserfactory.h45
-rw-r--r--src/plugins/General/streambrowser/streamwindow.cpp224
-rw-r--r--src/plugins/General/streambrowser/streamwindow.h56
-rw-r--r--src/plugins/General/streambrowser/streamwindow.ui134
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_cs.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_de.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_es.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_it.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_ja.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_lt.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_nl.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_pl.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_ru.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_tr.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_uk_UA.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_zh_CN.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/streambrowser_plugin_zh_TW.ts104
-rw-r--r--src/plugins/General/streambrowser/translations/translations.qrc18
22 files changed, 2042 insertions, 0 deletions
diff --git a/src/plugins/General/streambrowser/streambrowser.cpp b/src/plugins/General/streambrowser/streambrowser.cpp
new file mode 100644
index 000000000..4eb81e353
--- /dev/null
+++ b/src/plugins/General/streambrowser/streambrowser.cpp
@@ -0,0 +1,49 @@
+/***************************************************************************
+ * Copyright (C) 2012 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 <QAction>
+#include <QApplication>
+#include <qmmp/soundcore.h>
+#include <qmmpui/uihelper.h>
+#include <qmmpui/playlistmanager.h>
+#include <qmmpui/playlistitem.h>
+#include <qmmpui/mediaplayer.h>
+#include "streamwindow.h"
+#include "streambrowser.h"
+
+StreamBrowser::StreamBrowser(QObject *parent) : QObject(parent)
+{
+ m_action = new QAction(tr("Stream Browser"), this);
+ m_action->setIcon(QIcon::fromTheme("applications-internet"));
+ //m_action->setShortcut(tr("Ctrl+L"));
+ UiHelper::instance()->addAction(m_action, UiHelper::TOOLS_MENU);
+ connect (m_action, SIGNAL(triggered ()), SLOT(showStreamWindow()));
+}
+
+StreamBrowser::~StreamBrowser()
+{}
+
+void StreamBrowser::showStreamWindow()
+{
+ if(!m_streamWindow)
+ m_streamWindow = new StreamWindow(qApp->activeWindow ());
+ m_streamWindow->show();
+ m_streamWindow->activateWindow();
+}
diff --git a/src/plugins/General/streambrowser/streambrowser.h b/src/plugins/General/streambrowser/streambrowser.h
new file mode 100644
index 000000000..f6cd3f633
--- /dev/null
+++ b/src/plugins/General/streambrowser/streambrowser.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ * Copyright (C) 2012 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 STREAMBROWSER_H
+#define STREAMBROWSER_H
+
+#include <QPointer>
+#include <qmmpui/general.h>
+#include <qmmp/qmmp.h>
+
+class QAction;
+class StreamWindow;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+
+class StreamBrowser : public QObject
+{
+Q_OBJECT
+public:
+ StreamBrowser(QObject *parent = 0);
+
+ ~StreamBrowser();
+
+private slots:
+ void showStreamWindow();
+
+private:
+ QAction *m_action;
+ QPointer<StreamWindow> m_streamWindow;
+};
+
+#endif
diff --git a/src/plugins/General/streambrowser/streambrowser.pro b/src/plugins/General/streambrowser/streambrowser.pro
new file mode 100644
index 000000000..ba2cea795
--- /dev/null
+++ b/src/plugins/General/streambrowser/streambrowser.pro
@@ -0,0 +1,51 @@
+include(../../plugins.pri)
+
+INCLUDEPATH += ../../../../src
+CONFIG += release \
+warn_on \
+plugin
+
+TARGET =$$PLUGINS_PREFIX/General/streambrowser
+unix:QMAKE_CLEAN = $$PLUGINS_PREFIX/General/libstreambrowser.so
+
+
+TEMPLATE = lib
+unix:QMAKE_LIBDIR += ../../../../lib
+unix:LIBS += -lqmmpui -lqmmp
+
+win32:QMAKE_LIBDIR += ../../../../bin
+win32:LIBS += -lqmmpui0 -lqmmp0
+
+TRANSLATIONS = translations/streambrowser_plugin_cs.ts \
+ translations/streambrowser_plugin_de.ts \
+ translations/streambrowser_plugin_zh_CN.ts \
+ translations/streambrowser_plugin_zh_TW.ts \
+ translations/streambrowser_plugin_ru.ts \
+ translations/streambrowser_plugin_pl.ts \
+ translations/streambrowser_plugin_uk_UA.ts \
+ translations/streambrowser_plugin_it.ts \
+ translations/streambrowser_plugin_tr.ts \
+ translations/streambrowser_plugin_lt.ts \
+ translations/streambrowser_plugin_nl.ts \
+ translations/streambrowser_plugin_ja.ts \
+ translations/streambrowser_plugin_es.ts
+RESOURCES = translations/translations.qrc
+unix{
+isEmpty(LIB_DIR){
+ LIB_DIR = /lib
+}
+target.path = $$LIB_DIR/qmmp/General
+INSTALLS += target
+}
+HEADERS += streambrowserfactory.h \
+ streambrowser.h \
+ streamwindow.h
+win32:HEADERS += ../../../../src/qmmpui/general.h
+SOURCES += streambrowserfactory.cpp \
+ streambrowser.cpp \
+ streamwindow.cpp
+
+FORMS += streamwindow.ui
+
+QT += network
+
diff --git a/src/plugins/General/streambrowser/streambrowserfactory.cpp b/src/plugins/General/streambrowser/streambrowserfactory.cpp
new file mode 100644
index 000000000..a4bb0f4ba
--- /dev/null
+++ b/src/plugins/General/streambrowser/streambrowserfactory.cpp
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * Copyright (C) 2012 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 "streambrowser.h"
+#include "streambrowserfactory.h"
+
+const GeneralProperties StreamBrowserFactory::properties() const
+{
+ GeneralProperties properties;
+ properties.name = tr("Stream Browser Plugin");
+ properties.shortName = "streambrowser";
+ properties.hasAbout = true;
+ properties.hasSettings = false;
+ properties.visibilityControl = false;
+ return properties;
+}
+
+QObject *StreamBrowserFactory::create(QObject *parent)
+{
+ return new StreamBrowser(parent);
+}
+
+QDialog *StreamBrowserFactory::createConfigDialog(QWidget *parent)
+{
+ Q_UNUSED(parent);
+ return 0;
+}
+
+void StreamBrowserFactory::showAbout(QWidget *parent)
+{
+ QMessageBox::about (parent, tr("About Stream Browser Plugin"),
+ tr("Qmmp Stream Browser Plugin")+"\n"+
+ tr("This plugin allows to add stream from IceCast stream directory")+"\n"+
+ tr("Written by: Ilya Kotov <forkotov02@hotmail.ru>"));
+}
+
+QTranslator *StreamBrowserFactory::createTranslator(QObject *parent)
+{
+ QTranslator *translator = new QTranslator(parent);
+ QString locale = Qmmp::systemLanguageID();
+ translator->load(QString(":/streambrowser_plugin_") + locale);
+ return translator;
+}
+
+Q_EXPORT_PLUGIN2(streambrowser, StreamBrowserFactory)
diff --git a/src/plugins/General/streambrowser/streambrowserfactory.h b/src/plugins/General/streambrowser/streambrowserfactory.h
new file mode 100644
index 000000000..8d081cd29
--- /dev/null
+++ b/src/plugins/General/streambrowser/streambrowserfactory.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * Copyright (C) 2012 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 STREAMBROWSERFACTORY_H
+#define STREAMBROWSERFACTORY_H
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+#include <QObject>
+#include <QTranslator>
+#include <QDialog>
+
+#include <qmmpui/general.h>
+#include <qmmpui/generalfactory.h>
+
+class StreamBrowserFactory : 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/streambrowser/streamwindow.cpp b/src/plugins/General/streambrowser/streamwindow.cpp
new file mode 100644
index 000000000..4dbf86579
--- /dev/null
+++ b/src/plugins/General/streambrowser/streamwindow.cpp
@@ -0,0 +1,224 @@
+/***************************************************************************
+ * Copyright (C) 2012 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 <QNetworkAccessManager>
+#include <QNetworkReply>
+#include <QNetworkProxy>
+#include <QUrl>
+#include <QRegExp>
+#include <QStandardItemModel>
+#include <QSettings>
+#include <QDir>
+#include <QMessageBox>
+#include <QXmlStreamReader>
+#include <QXmlStreamWriter>
+#include <qmmp/qmmpsettings.h>
+#include <qmmp/qmmp.h>
+#include <qmmpui/playlistmanager.h>
+#include "streamwindow.h"
+
+StreamWindow::StreamWindow(QWidget *parent) : QWidget(parent)
+{
+ ui.setupUi(this);
+ setWindowFlags(Qt::Window);
+ setAttribute(Qt::WA_DeleteOnClose);
+ setAttribute(Qt::WA_QuitOnClose, false);
+ m_requestReply = 0;
+
+ ui.addPushButton->setIcon(QIcon::fromTheme("list-add"));
+ ui.updatePushButton->setIcon(QIcon::fromTheme("view-refresh"));
+
+
+ m_icecastModel = new QStandardItemModel(this);
+ m_icecastModel->setHorizontalHeaderLabels(QStringList() << tr("Name")
+ << tr("Genre")
+ << tr("Bitrate")
+ << tr("Format"));
+ ui.icecastTableView->setModel(m_icecastModel);
+ ui.icecastTableView->verticalHeader()->setDefaultSectionSize(fontMetrics().height());
+ ui.icecastTableView->verticalHeader()->setResizeMode(QHeaderView::Fixed);
+ ui.icecastTableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+
+ ui.statusLabel->hide();
+
+
+ m_http = new QNetworkAccessManager(this);
+ //load global proxy settings
+ QmmpSettings *gs = QmmpSettings::instance();
+ if (gs->isProxyEnabled())
+ {
+ QNetworkProxy proxy(QNetworkProxy::HttpProxy, gs->proxy().host(), gs->proxy().port());
+ if(gs->useProxyAuth())
+ {
+ proxy.setUser(gs->proxy().userName());
+ proxy.setPassword(gs->proxy().password());
+ }
+ m_http->setProxy(proxy);
+ }
+ connect(m_http, SIGNAL(finished (QNetworkReply *)), SLOT(showText(QNetworkReply *)));
+ //read settings
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("StreamBrowser");
+ restoreGeometry(settings.value("geometry").toByteArray());
+ ui.icecastTableView->horizontalHeader()->restoreState(settings.value("icecast_headers").toByteArray());
+ settings.endGroup();
+ //create cache dir
+ QString path = QFileInfo(Qmmp::configFile()).absoluteDir().path();
+ QDir dir(path);
+ if(!dir.exists("streambrowser"))
+ dir.mkdir("streambrowser");
+ //read cache
+ QFile file(path + "/streambrowser/icecast.xml");
+ if(file.open(QIODevice::ReadOnly))
+ readIceCast(&file);
+ else
+ on_updatePushButton_clicked();
+}
+
+
+StreamWindow::~StreamWindow()
+{
+}
+
+void StreamWindow::showText(QNetworkReply *reply)
+{
+ ui.statusLabel->setText(tr("Done"));
+ if (reply->error() != QNetworkReply::NoError)
+ {
+ ui.statusLabel->setText(tr("Error"));
+ QMessageBox::warning (this, tr("Error"), reply->errorString());
+ m_requestReply = 0;
+ reply->deleteLater();
+ return;
+ }
+ if(m_requestReply == reply)
+ {
+ m_requestReply = 0;
+ readIceCast(reply);
+ }
+ reply->deleteLater();
+}
+
+void StreamWindow::on_updatePushButton_clicked()
+{
+ QNetworkRequest request;
+ request.setUrl(QUrl("http://dir.xiph.org/yp.xml"));
+ request.setRawHeader("User-Agent", QString("qmmp/%1").arg(Qmmp::strVersion()).toAscii());
+ m_requestReply = m_http->get(request);
+ ui.statusLabel->setText(tr("Receiving"));
+ ui.statusLabel->show();
+}
+
+void StreamWindow::on_addPushButton_clicked()
+{
+ QModelIndexList indexes = ui.icecastTableView->selectionModel()->selectedRows(0);
+ QStringList urls;
+ foreach(QModelIndex index, indexes)
+ {
+ urls.append(m_icecastModel->item(index.row(),0)->data().toString());
+ }
+ urls.removeDuplicates();
+ PlayListManager::instance()->add(urls);
+}
+
+void StreamWindow::closeEvent(QCloseEvent *)
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("StreamBrowser");
+ settings.setValue("geometry", saveGeometry());
+ settings.setValue("icecast_headers", ui.icecastTableView->horizontalHeader()->saveState());
+ settings.endGroup();
+
+ QString path = QFileInfo(Qmmp::configFile()).absoluteDir().path();
+ QFile file(path + "/streambrowser/icecast.xml");
+ file.open(QIODevice::WriteOnly);
+
+ QXmlStreamWriter writer(&file);
+ writer.setCodec("UTF-8");
+ writer.setAutoFormatting(true);
+ writer.writeStartDocument();
+ writer.writeStartElement("directory");
+ for(int i = 0; i < m_icecastModel->rowCount(); ++i)
+ {
+ writer.writeStartElement("entry");
+ writer.writeTextElement("server_name", m_icecastModel->item(i,0)->text());
+ writer.writeTextElement("listen_url", m_icecastModel->item(i,0)->data().toString());
+ writer.writeTextElement("genre", m_icecastModel->item(i,1)->text());
+ writer.writeTextElement("bitrate", m_icecastModel->item(i,2)->text());
+ writer.writeTextElement("server_type", m_icecastModel->item(i,3)->text());
+ writer.writeEndElement();
+ }
+ writer.writeEndElement();
+ writer.writeEndDocument();
+}
+
+void StreamWindow::readIceCast(QIODevice *input)
+{
+ m_icecastModel->removeRows(0, m_icecastModel->rowCount());
+ QXmlStreamReader xml(input);
+ QString currentTag, server_name, listen_url, genre, bitrate, server_type;
+ while (!xml.atEnd())
+ {
+ xml.readNext();
+ if (xml.isStartElement())
+ {
+ currentTag = xml.name().toString();
+ }
+ else if (xml.isEndElement())
+ {
+ if (xml.name() == "entry")
+ {
+ m_icecastModel->appendRow(QList<QStandardItem *> ()
+ << new QStandardItem(server_name)
+ << new QStandardItem(genre)
+ << new QStandardItem(bitrate)
+ << new QStandardItem(server_type));
+
+ QStandardItem *item = m_icecastModel->item(m_icecastModel->rowCount()-1, 0);
+ item->setToolTip(server_name + "\n" + listen_url);
+ item->setData(listen_url);
+
+ server_name.clear();
+ listen_url.clear();
+ genre.clear();
+ bitrate.clear();
+ server_type.clear();
+ }
+
+ }
+ else if (xml.isCharacters() && !xml.isWhitespace())
+ {
+ if (currentTag == "server_name")
+ server_name += xml.text().toString();
+ else if (currentTag == "listen_url")
+ listen_url += xml.text().toString();
+ else if (currentTag == "genre")
+ genre += xml.text().toString();
+ else if (currentTag == "bitrate")
+ bitrate += xml.text().toString();
+ else if(currentTag == "server_type")
+ server_type += xml.text().toString();
+ }
+ }
+ if (xml.error() && xml.error() != QXmlStreamReader::PrematureEndOfDocumentError)
+ {
+ qWarning("StreamWindow: xml error: %lld: %s", xml.lineNumber(), qPrintable(xml.errorString()));
+ }
+}
diff --git a/src/plugins/General/streambrowser/streamwindow.h b/src/plugins/General/streambrowser/streamwindow.h
new file mode 100644
index 000000000..3bd0e69e7
--- /dev/null
+++ b/src/plugins/General/streambrowser/streamwindow.h
@@ -0,0 +1,56 @@
+/***************************************************************************
+ * Copyright (C) 2012 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 STREAMWINDOW_H
+#define STREAMWINDOW_H
+
+#include <QWidget>
+#include "ui_streamwindow.h"
+
+class QNetworkAccessManager;
+class QNetworkReply;
+class QStandardItemModel;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class StreamWindow : public QWidget
+{
+Q_OBJECT
+public:
+ StreamWindow(QWidget *parent = 0);
+
+ ~StreamWindow();
+
+private slots:
+ void showText(QNetworkReply *reply);
+ void on_updatePushButton_clicked();
+ void on_addPushButton_clicked();
+
+private:
+ void closeEvent(QCloseEvent *);
+ void readIceCast(QIODevice *input);
+ Ui::StreamWindow ui;
+ QNetworkAccessManager *m_http;
+ QNetworkReply *m_requestReply;
+ QString m_artist, m_title;
+ QStandardItemModel *m_icecastModel;
+};
+
+#endif
diff --git a/src/plugins/General/streambrowser/streamwindow.ui b/src/plugins/General/streambrowser/streamwindow.ui
new file mode 100644
index 000000000..fc8c8dad7
--- /dev/null
+++ b/src/plugins/General/streambrowser/streamwindow.ui
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>StreamWindow</class>
+ <widget class="QWidget" name="StreamWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>551</width>
+ <height>427</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Stream Browser</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" colspan="4">
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>1</number>
+ </property>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>Favorites</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QTableView" name="tableView_2">
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::SingleSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="sortingEnabled">
+ <bool>true</bool>
+ </property>
+ <attribute name="verticalHeaderVisible">
+ <bool>false</bool>
+ </attribute>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_2">
+ <attribute name="title">
+ <string>IceCast</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QTableView" name="icecastTableView">
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="sortingEnabled">
+ <bool>true</bool>
+ </property>
+ <attribute name="verticalHeaderVisible">
+ <bool>false</bool>
+ </attribute>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="addPushButton">
+ <property name="text">
+ <string>Add</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="updatePushButton">
+ <property name="text">
+ <string>Update</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QLabel" name="statusLabel">
+ <property name="text">
+ <string notr="true">?</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>StreamWindow</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>524</x>
+ <y>407</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>504</x>
+ <y>421</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_cs.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_cs.ts
new file mode 100644
index 000000000..c82c66426
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_cs.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">Hotovo</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">Chyba</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">Příjímám</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_de.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_de.ts
new file mode 100644
index 000000000..a655c2adb
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_de.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de_DE">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">Fertig</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">Fehler</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">Daten werden empfangen</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_es.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_es.ts
new file mode 100644
index 000000000..374de4cf7
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_es.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="es">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">Hecho</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">Error</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">Recibiendo</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_it.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_it.ts
new file mode 100644
index 000000000..4ba29ba44
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_it.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">Ricezione</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_ja.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_ja.ts
new file mode 100644
index 000000000..a53bc9090
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_ja.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja_JP">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">完了</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">事故</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">取得中</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_lt.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_lt.ts
new file mode 100644
index 000000000..68cd7d34a
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_lt.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="lt">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished">Sukūrė: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">Atlikta</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">Klaida</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">Gaunu</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_nl.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_nl.ts
new file mode 100644
index 000000000..15d8de383
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_nl.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="nl">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">Klaar</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">Fout</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">Bezig met ontvangen</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_pl.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_pl.ts
new file mode 100644
index 000000000..5579bf0af
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_pl.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">Gotowe</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">Błąd</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">Pobieranie</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_ru.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_ru.ts
new file mode 100644
index 000000000..d229fc3fb
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_ru.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru_RU">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation>Обзор потоков</translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation>Модуль обзора потоков</translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation>О модуле обзора потоков</translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation>Модуль обзора потоков для Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation>Этот модуль предназначен для добавления потоков из директории IceCast</translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation>Разработчик: Илья Котов &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation>Обзор потоков</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation>Избранное</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation>IceCast</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation>Добавить</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation>Обновить</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation>Имя</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation>Жанр</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation>Битовая частота</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation>Формат</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation>Готово</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation>Ошибка</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation>Получение</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_tr.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_tr.ts
new file mode 100644
index 000000000..30b96f8a5
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_tr.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="tr_TR">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">Alınıyor</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_uk_UA.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_uk_UA.ts
new file mode 100644
index 000000000..754f8e7e0
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_uk_UA.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="uk">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <source>Written by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
+ <translation type="unfinished">Розробник: Ілля Котов &lt;forkotov02@hotmail.ru&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">Готово</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">Помилка</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">Отримання</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_zh_CN.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_zh_CN.ts
new file mode 100644
index 000000000..43336e056
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_zh_CN.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_CN">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">完成</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">错误</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">接受</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/streambrowser_plugin_zh_TW.ts b/src/plugins/General/streambrowser/translations/streambrowser_plugin_zh_TW.ts
new file mode 100644
index 000000000..ae5df051f
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/streambrowser_plugin_zh_TW.ts
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
+<context>
+ <name>StreamBrowser</name>
+ <message>
+ <location filename="../streambrowser.cpp" line="33"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StreamBrowserFactory</name>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="28"/>
+ <source>Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="49"/>
+ <source>About Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="50"/>
+ <source>Qmmp Stream Browser Plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="51"/>
+ <source>This plugin allows to add stream from IceCast stream directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streambrowserfactory.cpp" line="52"/>
+ <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>StreamWindow</name>
+ <message>
+ <location filename="../streamwindow.ui" line="14"/>
+ <source>Stream Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="33"/>
+ <source>Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="59"/>
+ <source>IceCast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="88"/>
+ <source>Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.ui" line="95"/>
+ <source>Update</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="50"/>
+ <source>Name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="51"/>
+ <source>Genre</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="52"/>
+ <source>Bitrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="53"/>
+ <source>Format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="102"/>
+ <source>Done</source>
+ <translation type="unfinished">完成</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="105"/>
+ <location filename="../streamwindow.cpp" line="106"/>
+ <source>Error</source>
+ <translation type="unfinished">錯誤</translation>
+ </message>
+ <message>
+ <location filename="../streamwindow.cpp" line="125"/>
+ <source>Receiving</source>
+ <translation type="unfinished">接受</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/General/streambrowser/translations/translations.qrc b/src/plugins/General/streambrowser/translations/translations.qrc
new file mode 100644
index 000000000..246594c5e
--- /dev/null
+++ b/src/plugins/General/streambrowser/translations/translations.qrc
@@ -0,0 +1,18 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>streambrowser_plugin_it.qm</file>
+ <file>streambrowser_plugin_ru.qm</file>
+ <file>streambrowser_plugin_uk_UA.qm</file>
+ <file>streambrowser_plugin_zh_CN.qm</file>
+ <file>streambrowser_plugin_zh_TW.qm</file>
+ <file>streambrowser_plugin_cs.qm</file>
+ <file>streambrowser_plugin_pl.qm</file>
+ <file>streambrowser_plugin_de.qm</file>
+ <file>streambrowser_plugin_tr.qm</file>
+ <file>streambrowser_plugin_lt.qm</file>
+ <file>streambrowser_plugin_nl.qm</file>
+ <file>streambrowser_plugin_ja.qm</file>
+ <file>streambrowser_plugin_es.qm</file>
+ </qresource>
+</RCC>