aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-07-01 18:54:41 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-07-01 18:54:41 +0000
commitb8b7804fcc229e9c34e18dc3ec6dfafd2e3485b0 (patch)
tree1a63bd6647225ae445adf01dceb8271632723a83 /src/plugins
parentbb31a704825263be94b5528a2e362898af109cf9 (diff)
downloadqmmp-b8b7804fcc229e9c34e18dc3ec6dfafd2e3485b0.tar.gz
qmmp-b8b7804fcc229e9c34e18dc3ec6dfafd2e3485b0.tar.bz2
qmmp-b8b7804fcc229e9c34e18dc3ec6dfafd2e3485b0.zip
moved skinned ui to separate plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2252 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Ui/Ui.pro4
-rw-r--r--src/plugins/Ui/skinned/aboutdialog.cpp131
-rw-r--r--src/plugins/Ui/skinned/aboutdialog.h47
-rw-r--r--src/plugins/Ui/skinned/actionmanager.cpp147
-rw-r--r--src/plugins/Ui/skinned/actionmanager.h111
-rw-r--r--src/plugins/Ui/skinned/addurldialog.cpp134
-rw-r--r--src/plugins/Ui/skinned/addurldialog.h60
-rw-r--r--src/plugins/Ui/skinned/balancebar.cpp137
-rw-r--r--src/plugins/Ui/skinned/balancebar.h67
-rw-r--r--src/plugins/Ui/skinned/button.cpp82
-rw-r--r--src/plugins/Ui/skinned/button.h58
-rw-r--r--src/plugins/Ui/skinned/configdialog.cpp591
-rw-r--r--src/plugins/Ui/skinned/configdialog.h83
-rw-r--r--src/plugins/Ui/skinned/cursorimage.cpp118
-rw-r--r--src/plugins/Ui/skinned/cursorimage.h26
-rw-r--r--src/plugins/Ui/skinned/default/balance.pngbin0 -> 1121 bytes
-rw-r--r--src/plugins/Ui/skinned/default/cbuttons.pngbin0 -> 5583 bytes
-rw-r--r--src/plugins/Ui/skinned/default/eq_ex.pngbin0 -> 2846 bytes
-rw-r--r--src/plugins/Ui/skinned/default/eqmain.pngbin0 -> 12447 bytes
-rw-r--r--src/plugins/Ui/skinned/default/main.pngbin0 -> 10144 bytes
-rw-r--r--src/plugins/Ui/skinned/default/monoster.pngbin0 -> 1291 bytes
-rw-r--r--src/plugins/Ui/skinned/default/numbers.pngbin0 -> 1417 bytes
-rw-r--r--src/plugins/Ui/skinned/default/playpaus.pngbin0 -> 534 bytes
-rw-r--r--src/plugins/Ui/skinned/default/pledit.pngbin0 -> 6942 bytes
-rw-r--r--src/plugins/Ui/skinned/default/pledit.txt8
-rw-r--r--src/plugins/Ui/skinned/default/posbar.pngbin0 -> 300 bytes
-rw-r--r--src/plugins/Ui/skinned/default/readme.txt2
-rw-r--r--src/plugins/Ui/skinned/default/shufrep.pngbin0 -> 5044 bytes
-rw-r--r--src/plugins/Ui/skinned/default/text.pngbin0 -> 1939 bytes
-rw-r--r--src/plugins/Ui/skinned/default/titlebar.pngbin0 -> 5981 bytes
-rw-r--r--src/plugins/Ui/skinned/default/viscolor.txt24
-rw-r--r--src/plugins/Ui/skinned/default/volume.pngbin0 -> 3237 bytes
-rw-r--r--src/plugins/Ui/skinned/display.cpp357
-rw-r--r--src/plugins/Ui/skinned/display.h122
-rw-r--r--src/plugins/Ui/skinned/dock.cpp266
-rw-r--r--src/plugins/Ui/skinned/dock.h61
-rw-r--r--src/plugins/Ui/skinned/eqgraph.cpp163
-rw-r--r--src/plugins/Ui/skinned/eqgraph.h53
-rw-r--r--src/plugins/Ui/skinned/eqpreset.cpp56
-rw-r--r--src/plugins/Ui/skinned/eqpreset.h47
-rw-r--r--src/plugins/Ui/skinned/eqslider.cpp153
-rw-r--r--src/plugins/Ui/skinned/eqslider.h70
-rw-r--r--src/plugins/Ui/skinned/eqtitlebar.cpp189
-rw-r--r--src/plugins/Ui/skinned/eqtitlebar.h75
-rw-r--r--src/plugins/Ui/skinned/eqwidget.cpp446
-rw-r--r--src/plugins/Ui/skinned/eqwidget.h102
-rw-r--r--src/plugins/Ui/skinned/fft.c296
-rw-r--r--src/plugins/Ui/skinned/fft.h45
-rw-r--r--src/plugins/Ui/skinned/forms/aboutdialog.ui162
-rw-r--r--src/plugins/Ui/skinned/forms/addurldialog.ui99
-rw-r--r--src/plugins/Ui/skinned/forms/configdialog.ui1576
-rw-r--r--src/plugins/Ui/skinned/forms/jumptotrackdialog.ui152
-rw-r--r--src/plugins/Ui/skinned/forms/playlistbrowser.ui126
-rw-r--r--src/plugins/Ui/skinned/forms/popupsettings.ui251
-rw-r--r--src/plugins/Ui/skinned/forms/preseteditor.ui120
-rw-r--r--src/plugins/Ui/skinned/forms/shortcutdialog.ui120
-rw-r--r--src/plugins/Ui/skinned/images/16x16/qmmp.pngbin0 -> 520 bytes
-rw-r--r--src/plugins/Ui/skinned/images/32x32/qmmp.pngbin0 -> 1297 bytes
-rw-r--r--src/plugins/Ui/skinned/images/48x48/qmmp.pngbin0 -> 2268 bytes
-rw-r--r--src/plugins/Ui/skinned/images/56x56/qmmp.pngbin0 -> 2805 bytes
-rw-r--r--src/plugins/Ui/skinned/images/advanced.pngbin0 -> 1054 bytes
-rw-r--r--src/plugins/Ui/skinned/images/images.qrc14
-rw-r--r--src/plugins/Ui/skinned/images/interface.pngbin0 -> 1418 bytes
-rw-r--r--src/plugins/Ui/skinned/images/logo-qmmp.pngbin0 -> 22844 bytes
-rw-r--r--src/plugins/Ui/skinned/images/network.pngbin0 -> 1465 bytes
-rw-r--r--src/plugins/Ui/skinned/images/playlist.pngbin0 -> 743 bytes
-rw-r--r--src/plugins/Ui/skinned/images/plugins.pngbin0 -> 1378 bytes
-rw-r--r--src/plugins/Ui/skinned/images/replaygain.pngbin0 -> 624 bytes
-rw-r--r--src/plugins/Ui/skinned/images/scalable/qmmp-simple.svgzbin0 -> 4639 bytes
-rw-r--r--src/plugins/Ui/skinned/images/scalable/qmmp.svgzbin0 -> 4892 bytes
-rw-r--r--src/plugins/Ui/skinned/images/shortcuts.pngbin0 -> 603 bytes
-rw-r--r--src/plugins/Ui/skinned/images/ui_no_cover.pngbin0 -> 4170 bytes
-rw-r--r--src/plugins/Ui/skinned/inlines.h57
-rw-r--r--src/plugins/Ui/skinned/jumptotrackdialog.cpp138
-rw-r--r--src/plugins/Ui/skinned/jumptotrackdialog.h62
-rw-r--r--src/plugins/Ui/skinned/keyboardmanager.cpp280
-rw-r--r--src/plugins/Ui/skinned/keyboardmanager.h67
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp569
-rw-r--r--src/plugins/Ui/skinned/listwidget.h165
-rw-r--r--src/plugins/Ui/skinned/lxdesupport.cpp40
-rw-r--r--src/plugins/Ui/skinned/lxdesupport.h33
-rw-r--r--src/plugins/Ui/skinned/mainvisual.cpp613
-rw-r--r--src/plugins/Ui/skinned/mainvisual.h145
-rw-r--r--src/plugins/Ui/skinned/mainwindow.cpp616
-rw-r--r--src/plugins/Ui/skinned/mainwindow.h123
-rw-r--r--src/plugins/Ui/skinned/monostereo.cpp69
-rw-r--r--src/plugins/Ui/skinned/monostereo.h51
-rw-r--r--src/plugins/Ui/skinned/number.cpp45
-rw-r--r--src/plugins/Ui/skinned/number.h49
-rw-r--r--src/plugins/Ui/skinned/pixmapwidget.cpp47
-rw-r--r--src/plugins/Ui/skinned/pixmapwidget.h50
-rw-r--r--src/plugins/Ui/skinned/playlist.cpp616
-rw-r--r--src/plugins/Ui/skinned/playlist.h140
-rw-r--r--src/plugins/Ui/skinned/playlistbrowser.cpp117
-rw-r--r--src/plugins/Ui/skinned/playlistbrowser.h54
-rw-r--r--src/plugins/Ui/skinned/playlistcontrol.cpp58
-rw-r--r--src/plugins/Ui/skinned/playlistcontrol.h57
-rw-r--r--src/plugins/Ui/skinned/playlistselector.cpp303
-rw-r--r--src/plugins/Ui/skinned/playlistselector.h79
-rw-r--r--src/plugins/Ui/skinned/playlistslider.cpp135
-rw-r--r--src/plugins/Ui/skinned/playlistslider.h63
-rw-r--r--src/plugins/Ui/skinned/playlisttitlebar.cpp275
-rw-r--r--src/plugins/Ui/skinned/playlisttitlebar.h80
-rw-r--r--src/plugins/Ui/skinned/playstatus.cpp63
-rw-r--r--src/plugins/Ui/skinned/playstatus.h55
-rw-r--r--src/plugins/Ui/skinned/pluginitem.cpp188
-rw-r--r--src/plugins/Ui/skinned/pluginitem.h73
-rw-r--r--src/plugins/Ui/skinned/popupsettings.cpp88
-rw-r--r--src/plugins/Ui/skinned/popupsettings.h52
-rw-r--r--src/plugins/Ui/skinned/popupwidget.cpp136
-rw-r--r--src/plugins/Ui/skinned/popupwidget.h66
-rw-r--r--src/plugins/Ui/skinned/positionbar.cpp136
-rw-r--r--src/plugins/Ui/skinned/positionbar.h65
-rw-r--r--src/plugins/Ui/skinned/preseteditor.cpp82
-rw-r--r--src/plugins/Ui/skinned/preseteditor.h57
-rw-r--r--src/plugins/Ui/skinned/qmmp.desktop27
-rw-r--r--src/plugins/Ui/skinned/qmmp_enqueue.desktop24
-rw-r--r--src/plugins/Ui/skinned/shadedbar.cpp143
-rw-r--r--src/plugins/Ui/skinned/shadedbar.h76
-rw-r--r--src/plugins/Ui/skinned/shadedvisual.cpp181
-rw-r--r--src/plugins/Ui/skinned/shadedvisual.h70
-rw-r--r--src/plugins/Ui/skinned/shortcutdialog.cpp63
-rw-r--r--src/plugins/Ui/skinned/shortcutdialog.h49
-rw-r--r--src/plugins/Ui/skinned/shortcutitem.cpp39
-rw-r--r--src/plugins/Ui/skinned/shortcutitem.h45
-rw-r--r--src/plugins/Ui/skinned/skin.cpp852
-rw-r--r--src/plugins/Ui/skinned/skin.h390
-rw-r--r--src/plugins/Ui/skinned/skinned.pro166
-rw-r--r--src/plugins/Ui/skinned/skinnedfactory.cpp43
-rw-r--r--src/plugins/Ui/skinned/skinnedfactory.h42
-rw-r--r--src/plugins/Ui/skinned/skinreader.cpp207
-rw-r--r--src/plugins/Ui/skinned/skinreader.h52
-rw-r--r--src/plugins/Ui/skinned/stuff.qrc88
-rw-r--r--src/plugins/Ui/skinned/symboldisplay.cpp91
-rw-r--r--src/plugins/Ui/skinned/symboldisplay.h67
-rw-r--r--src/plugins/Ui/skinned/textscroller.cpp314
-rw-r--r--src/plugins/Ui/skinned/textscroller.h81
-rw-r--r--src/plugins/Ui/skinned/timeindicator.cpp139
-rw-r--r--src/plugins/Ui/skinned/timeindicator.h68
-rw-r--r--src/plugins/Ui/skinned/titlebar.cpp223
-rw-r--r--src/plugins/Ui/skinned/titlebar.h85
-rw-r--r--src/plugins/Ui/skinned/titlebarcontrol.cpp65
-rw-r--r--src/plugins/Ui/skinned/titlebarcontrol.h58
-rw-r--r--src/plugins/Ui/skinned/togglebutton.cpp108
-rw-r--r--src/plugins/Ui/skinned/togglebutton.h63
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_cs.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_de.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_es.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_fr.ts1081
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_hu.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_it.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_ja.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_kk.ts1247
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_locales.qrc22
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_lt.ts1837
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_nl.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_pl_PL.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_pt_BR.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_ru.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_sk.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_tr.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_uk_UA.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_zh_CN.ts1835
-rw-r--r--src/plugins/Ui/skinned/translations/qmmp_zh_TW.ts1835
-rw-r--r--src/plugins/Ui/skinned/txt/authors_cs.txt16
-rw-r--r--src/plugins/Ui/skinned/txt/authors_de.txt14
-rw-r--r--src/plugins/Ui/skinned/txt/authors_en.txt14
-rw-r--r--src/plugins/Ui/skinned/txt/authors_es.txt14
-rw-r--r--src/plugins/Ui/skinned/txt/authors_it.txt13
-rw-r--r--src/plugins/Ui/skinned/txt/authors_ja.txt14
-rw-r--r--src/plugins/Ui/skinned/txt/authors_lt.txt13
-rw-r--r--src/plugins/Ui/skinned/txt/authors_nl.txt14
-rw-r--r--src/plugins/Ui/skinned/txt/authors_pl.txt14
-rw-r--r--src/plugins/Ui/skinned/txt/authors_ru.txt13
-rw-r--r--src/plugins/Ui/skinned/txt/authors_tr.txt13
-rw-r--r--src/plugins/Ui/skinned/txt/authors_uk_UA.txt16
-rw-r--r--src/plugins/Ui/skinned/txt/authors_zh_CN.txt12
-rw-r--r--src/plugins/Ui/skinned/txt/authors_zh_TW.txt13
-rw-r--r--src/plugins/Ui/skinned/txt/description_cs.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_de.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_en.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_es.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_it.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_ja.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_lt.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_nl.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_pl.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_ru.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_tr.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_uk_UA.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_zh_CN.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/description_zh_TW.txt1
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_cs.txt3
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_de.txt17
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_en.txt21
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_es.txt17
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_it.txt3
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_ja.txt21
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_lt.txt17
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_nl.txt17
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_pl.txt21
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_ru.txt21
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_tr.txt3
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_uk_UA.txt20
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_zh_CN.txt21
-rw-r--r--src/plugins/Ui/skinned/txt/thanks_zh_TW.txt21
-rw-r--r--src/plugins/Ui/skinned/txt/translators_cs.txt24
-rw-r--r--src/plugins/Ui/skinned/txt/translators_de.txt53
-rw-r--r--src/plugins/Ui/skinned/txt/translators_en.txt56
-rw-r--r--src/plugins/Ui/skinned/txt/translators_es.txt47
-rw-r--r--src/plugins/Ui/skinned/txt/translators_it.txt34
-rw-r--r--src/plugins/Ui/skinned/txt/translators_ja.txt53
-rw-r--r--src/plugins/Ui/skinned/txt/translators_lt.txt50
-rw-r--r--src/plugins/Ui/skinned/txt/translators_nl.txt47
-rw-r--r--src/plugins/Ui/skinned/txt/translators_pl.txt53
-rw-r--r--src/plugins/Ui/skinned/txt/translators_ru.txt56
-rw-r--r--src/plugins/Ui/skinned/txt/translators_tr.txt35
-rw-r--r--src/plugins/Ui/skinned/txt/translators_uk_UA.txt53
-rw-r--r--src/plugins/Ui/skinned/txt/translators_zh_CN.txt54
-rw-r--r--src/plugins/Ui/skinned/txt/translators_zh_TW.txt53
-rw-r--r--src/plugins/Ui/skinned/visualmenu.cpp63
-rw-r--r--src/plugins/Ui/skinned/visualmenu.h57
-rw-r--r--src/plugins/Ui/skinned/volumebar.cpp127
-rw-r--r--src/plugins/Ui/skinned/volumebar.h76
-rw-r--r--src/plugins/Ui/skinned/windowsystem.cpp213
-rw-r--r--src/plugins/Ui/skinned/windowsystem.h39
-rw-r--r--src/plugins/plugins.pro3
227 files changed, 50514 insertions, 1 deletions
diff --git a/src/plugins/Ui/Ui.pro b/src/plugins/Ui/Ui.pro
new file mode 100644
index 000000000..b6c44ce0d
--- /dev/null
+++ b/src/plugins/Ui/Ui.pro
@@ -0,0 +1,4 @@
+include(../../../qmmp.pri)
+TEMPLATE = subdirs
+
+SUBDIRS += skinned
diff --git a/src/plugins/Ui/skinned/aboutdialog.cpp b/src/plugins/Ui/skinned/aboutdialog.cpp
new file mode 100644
index 000000000..5728697b9
--- /dev/null
+++ b/src/plugins/Ui/skinned/aboutdialog.cpp
@@ -0,0 +1,131 @@
+/***************************************************************************
+* Copyright (C) 2006 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 <QFile>
+#include <QTextStream>
+
+#include <qmmp/decoder.h>
+#include <qmmp/decoderfactory.h>
+#include <qmmp/output.h>
+#include <qmmp/outputfactory.h>
+#include <qmmp/visual.h>
+#include <qmmp/visualfactory.h>
+#include <qmmp/effect.h>
+#include <qmmp/effectfactory.h>
+#include <qmmp/qmmp.h>
+#include <qmmpui/general.h>
+#include <qmmpui/generalfactory.h>
+
+
+#include "aboutdialog.h"
+
+static QString getstringFromResource(const QString& res_file)
+{
+ QString ret_string;
+ QFile file(res_file);
+ if (file.open(QIODevice::ReadOnly))
+ {
+ QTextStream ts(&file);
+ ts.setCodec("UTF-8");
+ ret_string = ts.readAll();
+ file.close();
+ }
+ return ret_string;
+}
+
+AboutDialog::AboutDialog(QWidget* parent, Qt::WFlags fl)
+ : QDialog( parent, fl )
+{
+ setupUi(this);
+ setAttribute(Qt::WA_QuitOnClose, false);
+ licenseTextEdit->setPlainText(getstringFromResource(":COPYING"));
+ aboutTextEdit->setHtml(loadAbout());
+ authorsTextEdit->setPlainText(getstringFromResource(tr(":/txt/authors_en.txt")));
+ thanksToTextEdit->setPlainText(getstringFromResource(tr(":/txt/thanks_en.txt")));
+ translatorsTextEdit->setPlainText(getstringFromResource(tr(":/txt/translators_en.txt")));
+}
+
+AboutDialog::~AboutDialog()
+{}
+
+/*$SPECIALIZATION$*/
+void AboutDialog::accept()
+{
+ QDialog::accept();
+}
+
+QString AboutDialog::loadAbout()
+{
+ QString text;
+ text.append("<head>");
+ text.append("<META content=\"text/html; charset=UTF-8\">");
+ text.append("</head>");
+ text.append("<h3>"+tr("Qt-based Multimedia Player (Qmmp)")+"</h3>");
+ text.append("<h4>"+tr("Version:")+" "+ Qmmp::strVersion() + "</h4>");
+ text.append("<p>"+getstringFromResource(tr(":txt/description_en.txt"))+"</p>");
+ text.append("<h5>"+tr("Input plugins:")+"</h5>");
+ text.append("<ul type=\"square\">");
+ foreach(DecoderFactory *fact, *Decoder::factories())
+ {
+ text.append("<li>");
+ text.append(fact->properties().name);
+ text.append("</li>");
+ }
+ text.append("</ul>");
+ text.append("<h5>"+tr("Output plugins:")+"</h5>");
+ text.append("<ul type=\"square\">");
+ foreach(OutputFactory *fact, *Output::factories())
+ {
+ text.append("<li>");
+ text.append(fact->properties().name);
+ text.append("</li>");
+ }
+ text.append("</ul>");
+ text.append("<h5>"+tr("Visual plugins:")+"</h5>");
+ text.append("<ul type=\"square\">");
+ foreach(VisualFactory *fact, *Visual::factories())
+ {
+ text.append("<li>");
+ text.append(fact->properties().name);
+ text.append("</li>");
+ }
+ text.append("</ul>");
+ text.append("<h5>"+tr("Effect plugins:")+"</h5>");
+ text.append("<ul type=\"square\">");
+ foreach(EffectFactory *fact, *Effect::factories())
+ {
+ text.append("<li>");
+ text.append(fact->properties().name);
+ text.append("</li>");
+ }
+ text.append("</ul>");
+ text.append("<h5>"+tr("General plugins:")+"</h5>");
+ text.append("<ul type=\"square\">");
+ foreach(GeneralFactory *fact, *General::factories())
+ {
+ text.append("<li>");
+ text.append(fact->properties().name);
+ text.append("</li>");
+ }
+ text.append("</ul>");
+
+ return text;
+}
diff --git a/src/plugins/Ui/skinned/aboutdialog.h b/src/plugins/Ui/skinned/aboutdialog.h
new file mode 100644
index 000000000..2d8384ea4
--- /dev/null
+++ b/src/plugins/Ui/skinned/aboutdialog.h
@@ -0,0 +1,47 @@
+/***************************************************************************
+* Copyright (C) 2006 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 ABOUTDIALOG_H
+#define ABOUTDIALOG_H
+
+#include <QDialog>
+#include "ui_aboutdialog.h"
+
+/**
+ @author Vladimir Kuznetsov <vovanec@gmail.com>
+ */
+
+class AboutDialog : public QDialog, private Ui::AboutDialog
+{
+ Q_OBJECT
+public:
+ AboutDialog(QWidget* parent = 0, Qt::WFlags fl = 0 );
+ ~AboutDialog();
+
+protected slots:
+ virtual void accept();
+
+private:
+ QString loadAbout();
+
+};
+
+#endif
+
diff --git a/src/plugins/Ui/skinned/actionmanager.cpp b/src/plugins/Ui/skinned/actionmanager.cpp
new file mode 100644
index 000000000..f4689ecd0
--- /dev/null
+++ b/src/plugins/Ui/skinned/actionmanager.cpp
@@ -0,0 +1,147 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 <QAction>
+#include <QIcon>
+#include <QFile>
+#include <qmmp/qmmp.h>
+#include "actionmanager.h"
+
+ActionManager *ActionManager::m_instance = 0;
+
+ActionManager::ActionManager(QObject *parent) :
+ QObject(parent)
+{
+ m_instance = this;
+ m_settings = new QSettings(Qmmp::configFile(), QSettings::IniFormat);
+ m_settings->beginGroup("Shortcuts");
+ //playback
+ m_actions[PLAY] = createAction(tr("&Play"), "play", tr("X"), "media-playback-start");
+ m_actions[PAUSE] = createAction(tr("&Pause"), "pause", tr("C"), "media-playback-pause");
+ m_actions[STOP] = createAction(tr("&Stop"), "stop", tr("V"), "media-playback-stop");
+ m_actions[PREVIOUS] = createAction(tr("&Previous"), "previous", tr("Z"), "media-skip-backward");
+ m_actions[NEXT] = createAction(tr("&Next"), "next", tr("B"), "media-skip-forward");
+ m_actions[PLAY_PAUSE] = createAction(tr("&Play/Pause"), "play_pause", tr("Space"));
+ m_actions[JUMP] = createAction(tr("&Jump to File"), "jump", tr("J"), "go-up");
+ m_actions[REPEAT_ALL] = createAction2(tr("&Repeat Playlist"), "repeate_playlist", tr("R"));
+ m_actions[REPEAT_TRACK] = createAction2(tr("&Repeat Track"), "repeate_track", tr("Ctrl+R"));
+ m_actions[SHUFFLE] = createAction2(tr("&Shuffle"), "shuffle", tr("S"));
+ m_actions[NO_PL_ADVANCE] = createAction2(tr("&No Playlist Advance"), "no_playlist_advance",
+ tr("Ctrl+N"));
+ m_actions[STOP_AFTER_SELECTED] = createAction(tr("&Stop After Selected"), "stop_after_selected",
+ tr("Ctrl+S"));
+ m_actions[CLEAR_QUEUE] = createAction(tr("&Clear Queue"), "clear_queue", tr("Alt+Q"));
+ //view
+ m_actions[SHOW_PLAYLIST] = createAction2(tr("Show Playlist"), "show_playlist", tr("Alt+E"));
+ m_actions[SHOW_EQUALIZER] = createAction2(tr("Show Equalizer"), "show_equalizer", tr("Alt+G"));
+ m_actions[WM_ALLWAYS_ON_TOP] = createAction2(tr("Always on Top"), "always_on_top", "");
+ m_actions[WM_STICKY] = createAction2(tr("Put on All Workspaces"), "General/always_on_top", "");
+ m_actions[WM_DOUBLE_SIZE] = createAction2(tr("Double Size"), "double_size", tr("Meta+D"));
+ //playlist
+ m_actions[PL_ADD_FILE] = createAction(tr("&Add File"), "add_file", tr("F"), "audio-x-generic");
+ m_actions[PL_ADD_DIRECTORY] = createAction(tr("&Add Directory"), "add_dir", tr("D"), "folder");
+ m_actions[PL_ADD_URL] = createAction(tr("&Add Url"), "add_url", tr("U"), "network-server");
+ m_actions[PL_REMOVE_SELECTED] = createAction(tr("&Remove Selected"), "remove_selected",
+ tr("Del"), "edit-delete");
+ m_actions[PL_REMOVE_ALL] = createAction(tr("&Remove All"), "remove_all", "", "edit-clear");
+ m_actions[PL_REMOVE_UNSELECTED] = createAction(tr("&Remove Unselected"), "remove_unselected",
+ "", "edit-delete");
+ m_actions[PL_REMOVE_INVALID] = createAction(tr("Remove unavailable files"), "remove_invalid",
+ "", "dialog-error");
+ m_actions[PL_REMOVE_DUPLICATES] = createAction(tr("Remove duplicates"), "remove_duplicates", "");
+ m_actions[PL_ENQUEUE] = createAction(tr("&Queue Toggle"), "enqueue", tr("Q"));
+ m_actions[PL_INVERT_SELECTION] = createAction(tr("Invert Selection"), "invert_selection", "");
+ m_actions[PL_CLEAR_SELECTION] = createAction(tr("&Select None"), "clear_selection", "");
+ m_actions[PL_SELECT_ALL] = createAction(tr("&Select All"), "select_all",
+ tr("Ctrl+A"), "edit-select-all");
+ m_actions[PL_SHOW_INFO] = createAction(tr("&View Track Details"), "show_info", tr("Alt+I"),
+ "dialog-information");
+ m_actions[PL_NEW] = createAction(tr("&New List"), "new_pl", tr("Ctrl+T"), "document-new");
+ m_actions[PL_CLOSE] = createAction(tr("&Delete List"), "close_pl", tr("Ctrl+W"), "window-close");
+ m_actions[PL_LOAD] = createAction(tr("&Load List"), "load_pl", tr("O"), "document-open");
+ m_actions[PL_SAVE] = createAction(tr("&Save List"), "save_pl", tr("Shift+S"), "document-save-as");
+ m_actions[PL_SELECT_NEXT] = createAction(tr("&Select Next Playlist"), "next_pl",
+ tr("Ctrl+PgDown"), "go-next");
+ m_actions[PL_SELECT_PREVIOUS] = createAction(tr("&Select Previous Playlist"), "prev_pl",
+ tr("Ctrl+PgUp"), "go-previous");
+ m_actions[PL_SHOW_MANAGER] = createAction(tr("&Show Playlists"), "show_playlists",
+ tr("P"), "view-list-details");
+ //other
+ m_actions[SETTINGS] = createAction(tr("&Settings"), "show_settings", tr("Ctrl+P"), "configure");
+ m_actions[ABOUT] = createAction(tr("&About"), "about", "", ":/32x32/qmmp.png");
+ m_actions[ABOUT_QT] = createAction(tr("&About Qt"), "about_qt", "");
+ m_actions[QUIT] = createAction(tr("&Exit"), "exit", tr("Ctrl+Q"), "application-exit");
+ m_settings->endGroup();
+ delete m_settings;
+ m_settings = 0;
+}
+
+ActionManager::~ActionManager()
+{
+ m_instance = 0;
+}
+
+QAction *ActionManager::action(int type)
+{
+ return m_actions[type];
+}
+
+QAction *ActionManager::use(int type, const QObject *receiver, const char *member)
+{
+ QAction *act = m_actions[type];
+ connect(act,SIGNAL(triggered(bool)), receiver, member);
+ return act;
+}
+
+ActionManager* ActionManager::instance()
+{
+ return m_instance;
+}
+
+QAction *ActionManager::createAction(QString name, QString confKey, QString key, QString iconName)
+{
+ QAction *action = new QAction(name, this);
+ action->setShortcut(m_settings->value(confKey, key).toString());
+ action->setObjectName(confKey);
+ if(iconName.isEmpty())
+ return action;
+ if(QFile::exists(iconName))
+ action->setIcon(QIcon(iconName));
+ else
+ action->setIcon(QIcon::fromTheme(iconName));
+ return action;
+}
+
+QAction *ActionManager::createAction2(QString name, QString confKey, QString key)
+{
+ QAction *action = createAction(name, confKey, key);
+ action->setCheckable(true);
+ return action;
+}
+
+void ActionManager::saveActions()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ foreach(QAction *action, m_actions.values())
+ {
+ settings.setValue(QString("Shortcuts/")+action->objectName(), action->shortcut());
+ }
+}
diff --git a/src/plugins/Ui/skinned/actionmanager.h b/src/plugins/Ui/skinned/actionmanager.h
new file mode 100644
index 000000000..33e6302fb
--- /dev/null
+++ b/src/plugins/Ui/skinned/actionmanager.h
@@ -0,0 +1,111 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 ACTIONMANAGER_H
+#define ACTIONMANAGER_H
+
+#include <QObject>
+#include <QString>
+#include <QHash>
+
+class QAction;
+class QSettings;
+
+#define SET_ACTION(type, receiver, member) ActionManager::instance()->use(type, receiver, member)
+#define ACTION(type) ActionManager::instance()->action(type)
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class ActionManager : public QObject
+{
+ Q_OBJECT
+public:
+ explicit ActionManager(QObject *parent = 0);
+ ~ActionManager();
+
+ enum Type
+ {
+ PLAY = 0,
+ PAUSE,
+ STOP,
+ PREVIOUS,
+ NEXT,
+ PLAY_PAUSE,
+ JUMP,
+
+ REPEAT_ALL,
+ REPEAT_TRACK,
+ SHUFFLE,
+ NO_PL_ADVANCE,
+ STOP_AFTER_SELECTED,
+ CLEAR_QUEUE,
+
+ SHOW_PLAYLIST,
+ SHOW_EQUALIZER,
+
+ WM_ALLWAYS_ON_TOP,
+ WM_STICKY,
+ WM_DOUBLE_SIZE,
+
+ PL_ADD_FILE,
+ PL_ADD_DIRECTORY,
+ PL_ADD_URL,
+ PL_REMOVE_SELECTED,
+ PL_REMOVE_ALL,
+ PL_REMOVE_UNSELECTED,
+ PL_REMOVE_INVALID,
+ PL_REMOVE_DUPLICATES,
+ PL_ENQUEUE,
+ PL_INVERT_SELECTION,
+ PL_CLEAR_SELECTION,
+ PL_SELECT_ALL,
+ PL_SHOW_INFO,
+ PL_NEW,
+ PL_CLOSE,
+ PL_LOAD,
+ PL_SAVE,
+ PL_SELECT_NEXT,
+ PL_SELECT_PREVIOUS,
+ PL_SHOW_MANAGER,
+
+ SETTINGS,
+ ABOUT,
+ ABOUT_QT,
+ QUIT,
+ };
+
+ QAction *action(int type);
+ QAction *use(int type, const QObject *receiver, const char *member);
+ QList<int> actions();
+ void saveActions();
+ static ActionManager* instance();
+
+private:
+ QAction *createAction(QString name, QString confKey, QString key, QString iconName = QString());
+ QAction *createAction2(QString name, QString confKey, QString key);
+
+ QSettings *m_settings;
+ QHash <int, QAction *> m_actions;
+ static ActionManager *m_instance;
+
+};
+
+#endif // ACTIONMANAGER_H
diff --git a/src/plugins/Ui/skinned/addurldialog.cpp b/src/plugins/Ui/skinned/addurldialog.cpp
new file mode 100644
index 000000000..5b65337db
--- /dev/null
+++ b/src/plugins/Ui/skinned/addurldialog.cpp
@@ -0,0 +1,134 @@
+/***************************************************************************
+ * Copyright (C) 2006-2010 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 <QDir>
+#include <QNetworkAccessManager>
+#include <QNetworkRequest>
+#include <QNetworkReply>
+#include <QNetworkProxy>
+#include <QUrl>
+#include <QMessageBox>
+#include <qmmpui/playlistparser.h>
+#include <qmmpui/playlistformat.h>
+#include <qmmpui/playlistmodel.h>
+#include <qmmp/qmmpsettings.h>
+#include <qmmp/qmmp.h>
+#include "addurldialog.h"
+
+#define HISTORY_SIZE 10
+
+AddUrlDialog::AddUrlDialog( QWidget * parent, Qt::WindowFlags f) : QDialog(parent,f)
+{
+ setupUi(this);
+ setAttribute(Qt::WA_DeleteOnClose);
+ setAttribute(Qt::WA_QuitOnClose, false);
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ m_history = settings.value("URLDialog/history").toStringList();
+ urlComboBox->addItems(m_history);
+ 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);
+ }
+}
+
+AddUrlDialog::~AddUrlDialog()
+{
+ if ( m_history.size() > HISTORY_SIZE)
+ m_history.removeLast();
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue("URLDialog/history", m_history);
+}
+
+QPointer<AddUrlDialog> AddUrlDialog::instance = 0;
+
+void AddUrlDialog::popup(QWidget* parent,PlayListModel* model )
+{
+ if (!instance)
+ {
+ instance = new AddUrlDialog(parent);
+ instance->setModel(model);
+ }
+ instance->show();
+ instance->raise();
+}
+
+void AddUrlDialog::accept( )
+{
+ if (!urlComboBox->currentText().isEmpty())
+ {
+ QString s = urlComboBox->currentText();
+ if (!s.startsWith("http://") && !s.contains("://"))
+ s.prepend("http://");
+ m_history.removeAll(s);
+ m_history.prepend(s);
+
+ if (s.startsWith("http://"))
+ {
+ //try to download playlist
+ PlaylistFormat* prs = PlaylistParser::instance()->findByPath(s);
+ if (prs)
+ {
+ connect(m_http, SIGNAL(finished (QNetworkReply *)), SLOT(readResponse(QNetworkReply *)));
+ QNetworkRequest request;
+ request.setUrl(QUrl(s));
+ request.setRawHeader("User-Agent", QString("qmmp/%1").arg(Qmmp::strVersion()).toAscii());
+ addButton->setEnabled(false);
+ m_http->get(request);
+ return;
+ }
+ }
+ m_model->add(s);
+ }
+ QDialog::accept();
+}
+
+void AddUrlDialog::readResponse(QNetworkReply *reply)
+{
+ addButton->setEnabled(true);
+ disconnect(m_http, SIGNAL(finished (QNetworkReply *)), 0, 0);
+ if (reply->error() != QNetworkReply::NoError)
+ QMessageBox::critical (this, tr("Error"), reply->errorString ());
+ else if (!urlComboBox->currentText().isEmpty())
+ {
+ QString s = urlComboBox->currentText();
+ PlaylistFormat* prs = PlaylistParser::instance()->findByPath(s);
+ if (prs)
+ {
+ m_model->add(prs->decode(reply->readAll()));
+ QDialog::accept();
+ }
+ }
+ reply->deleteLater();
+}
+
+void AddUrlDialog::setModel( PlayListModel *m )
+{
+ m_model = m;
+}
diff --git a/src/plugins/Ui/skinned/addurldialog.h b/src/plugins/Ui/skinned/addurldialog.h
new file mode 100644
index 000000000..49858ce11
--- /dev/null
+++ b/src/plugins/Ui/skinned/addurldialog.h
@@ -0,0 +1,60 @@
+/***************************************************************************
+ * Copyright (C) 2006-2010 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 ADDURLDIALOG_H
+#define ADDURLDIALOG_H
+
+#include "ui_addurldialog.h"
+#include <QDialog>
+#include <QPointer>
+
+class QNetworkAccessManager;
+class QNetworkReply;
+class PlayListModel;
+
+/**
+ @author Vladimir Kuznetsov <vovanec@gmail.com>
+ */
+
+class AddUrlDialog : public QDialog , private Ui::AddUrlDialog
+{
+ Q_OBJECT
+public:
+ static void popup(QWidget* parent ,PlayListModel*);
+
+protected:
+ AddUrlDialog( QWidget * parent = 0, Qt::WindowFlags f = 0 );
+ ~AddUrlDialog();
+
+protected slots:
+ virtual void accept();
+
+private slots:
+ void readResponse(QNetworkReply *reply);
+
+private:
+ void setModel(PlayListModel*);
+ static QPointer<AddUrlDialog> instance;
+ PlayListModel* m_model;
+ QStringList m_history;
+ QNetworkAccessManager *m_http;
+
+};
+#endif //ADDURLDIALOG_H
diff --git a/src/plugins/Ui/skinned/balancebar.cpp b/src/plugins/Ui/skinned/balancebar.cpp
new file mode 100644
index 000000000..07a56ce7a
--- /dev/null
+++ b/src/plugins/Ui/skinned/balancebar.cpp
@@ -0,0 +1,137 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 <QMouseEvent>
+#include <QPainter>
+#include <math.h>
+#include "skin.h"
+#include "button.h"
+#include "mainwindow.h"
+#include "balancebar.h"
+
+BalanceBar::BalanceBar(QWidget *parent)
+ : PixmapWidget(parent)
+{
+ m_skin = Skin::instance();
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ setPixmap(m_skin->getBalanceBar(0));
+ m_moving = false;
+ m_min = -100;
+ m_max = 100;
+ m_old = m_value = 0;
+ draw(false);
+}
+
+
+BalanceBar::~BalanceBar()
+{}
+
+void BalanceBar::mousePressEvent(QMouseEvent *e)
+{
+ m_moving = true;
+ press_pos = e->x();
+ if(e->button() == Qt::MidButton)
+ {
+ m_value = 0;
+ emit sliderPressed();
+ emit sliderMoved(m_value);
+ }
+ else if(m_pos<e->x() && e->x()<m_pos+11*m_skin->ratio())
+ {
+ press_pos = e->x()-m_pos;
+ emit sliderPressed();
+ }
+ else
+ {
+ m_value = convert(qMax(qMin(width()-18*m_skin->ratio(),e->x()-6*m_skin->ratio()),0));
+ press_pos = 6*m_skin->ratio();
+ emit sliderPressed();
+ if (m_value != m_old)
+ {
+ emit sliderMoved(m_value);
+ }
+ }
+ draw();
+}
+
+void BalanceBar::mouseMoveEvent (QMouseEvent *e)
+{
+ if(m_moving)
+ {
+ int po = e->x();
+ po = po - press_pos;
+
+ if(0 <= po && po <= width()-13*m_skin->ratio())
+ {
+ m_value = convert(po);
+ draw();
+ emit sliderMoved(m_value);
+ }
+ }
+}
+
+void BalanceBar::mouseReleaseEvent(QMouseEvent*)
+{
+ m_moving = false;
+ draw(false);
+ m_old = m_value;
+ emit sliderReleased();
+}
+
+void BalanceBar::setValue(int v)
+{
+ if (m_moving || m_max == 0)
+ return;
+ m_value = v;
+ draw(false);
+}
+
+void BalanceBar::setMax(int max)
+{
+ m_max = max;
+ draw(false);
+}
+
+void BalanceBar::updateSkin()
+{
+ resize(m_skin->getBalanceBar(0).size());
+ draw(false);
+}
+
+void BalanceBar::draw(bool pressed)
+{
+ if(abs(m_value)<6)
+ m_value = 0;
+ int p=int(ceil(double(m_value-m_min)*(width()-13*m_skin->ratio())/(m_max-m_min)));
+ m_pixmap = m_skin->getBalanceBar(abs(27*m_value/m_max));
+ QPainter paint(&m_pixmap);
+ if(pressed)
+ paint.drawPixmap(p,m_skin->ratio(),m_skin->getButton(Skin::BT_BAL_P));
+ else
+ paint.drawPixmap(p,m_skin->ratio(),m_skin->getButton(Skin::BT_BAL_N));
+ setPixmap(m_pixmap);
+ m_pos = p;
+}
+
+int BalanceBar::convert(int p)
+{
+ return int(ceil(double(m_max-m_min)*(p)/(width()-13*m_skin->ratio())+m_min));
+}
+
diff --git a/src/plugins/Ui/skinned/balancebar.h b/src/plugins/Ui/skinned/balancebar.h
new file mode 100644
index 000000000..68e967568
--- /dev/null
+++ b/src/plugins/Ui/skinned/balancebar.h
@@ -0,0 +1,67 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 BALANCEBAR_H
+#define BALANCEBAR_H
+
+#include "pixmapwidget.h"
+
+class Skin;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class BalanceBar : public PixmapWidget
+{
+Q_OBJECT
+public:
+ BalanceBar(QWidget *parent = 0);
+
+ ~BalanceBar();
+
+ int value() {return m_value; }
+
+public slots:
+ void setValue(int);
+ void setMax(int);
+
+signals:
+ void sliderMoved (int);
+ void sliderPressed();
+ void sliderReleased();
+
+private slots:
+ void updateSkin();
+
+private:
+ Skin *m_skin;
+ bool m_moving;
+ int press_pos;
+ int m_max, m_min, m_pos, m_value, m_old;
+ QPixmap m_pixmap;
+ int convert(int); // value = convert(position);
+ void draw(bool pressed = true);
+
+protected:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/button.cpp b/src/plugins/Ui/skinned/button.cpp
new file mode 100644
index 000000000..f07088b0b
--- /dev/null
+++ b/src/plugins/Ui/skinned/button.cpp
@@ -0,0 +1,82 @@
+/***************************************************************************
+ * Copyright (C) 2007-2011 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * Based on Promoe, an XMMS2 Client *
+ * Copyright (C) 2005-2006 by XMMS2 Team *
+ * *
+ * 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 "button.h"
+#include "skin.h"
+#include <QMouseEvent>
+
+Button::Button (QWidget *parent, uint normal, uint pressed, uint cursor)
+ : PixmapWidget (parent)
+{
+ name_normal = normal;
+ name_pressed = pressed;
+ name_cursor = cursor;
+ m_pressed = false;
+ skin = Skin::instance();
+ setON (false);
+ setCursor (skin->getCursor (name_cursor));
+ connect (skin, SIGNAL (skinChanged()), this, SLOT (updateSkin()));
+}
+
+
+Button::~Button()
+{}
+
+void Button::updateSkin()
+{
+ setPixmap (skin->getButton (name_normal));
+ setCursor (skin->getCursor (name_cursor));
+}
+
+void Button::setON (bool on)
+{
+ if (on)
+ setPixmap (skin->getButton (name_pressed));
+ else
+ setPixmap (skin->getButton (name_normal));
+}
+void Button::mousePressEvent (QMouseEvent *e)
+{
+ if(e->button() != Qt::LeftButton)
+ return;
+ setON (true);
+ m_pressed = true;
+ QWidget::mousePressEvent(e);
+}
+
+void Button::mouseReleaseEvent (QMouseEvent *e)
+{
+ if (!m_pressed)
+ return;
+ m_pressed = false;
+ if(rect().contains(e->pos()))
+ {
+ setON (false);
+ emit clicked();
+ }
+}
+
+void Button::mouseMoveEvent (QMouseEvent *e)
+{
+ setON (m_pressed && rect().contains(e->pos()));
+}
diff --git a/src/plugins/Ui/skinned/button.h b/src/plugins/Ui/skinned/button.h
new file mode 100644
index 000000000..e00bd7dc7
--- /dev/null
+++ b/src/plugins/Ui/skinned/button.h
@@ -0,0 +1,58 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 BUTTON_H
+#define BUTTON_H
+
+#include "pixmapwidget.h"
+
+class Skin;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class Button : public PixmapWidget
+{
+Q_OBJECT
+public:
+ Button(QWidget *parent, uint normal, uint pressed, uint cursor);
+
+ ~Button();
+
+signals:
+ void clicked();
+
+private slots:
+ void updateSkin();
+
+private:
+ Skin *skin;
+ //bool m_cursorin;
+ bool m_pressed;
+ void setON(bool);
+ uint name_normal, name_pressed;
+ uint name_cursor;
+
+protected:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/configdialog.cpp b/src/plugins/Ui/skinned/configdialog.cpp
new file mode 100644
index 000000000..26a71e38d
--- /dev/null
+++ b/src/plugins/Ui/skinned/configdialog.cpp
@@ -0,0 +1,591 @@
+/***************************************************************************
+ * Copyright (C) 2007-2011 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 <QDir>
+#include <QSettings>
+#include <QFontDialog>
+#include <QTreeWidgetItem>
+#include <QHeaderView>
+#include <QCheckBox>
+#include <QRadioButton>
+#include <QMenu>
+#include <QMessageBox>
+#include <qmmp/decoder.h>
+#include <qmmp/output.h>
+#include <qmmp/decoderfactory.h>
+#include <qmmp/outputfactory.h>
+#include <qmmp/visualfactory.h>
+#include <qmmp/effectfactory.h>
+#include <qmmp/effect.h>
+#include <qmmp/soundcore.h>
+#include <qmmp/enginefactory.h>
+#include <qmmp/abstractengine.h>
+#include <qmmp/qmmpsettings.h>
+#include <qmmp/inputsource.h>
+#include <qmmp/inputsourcefactory.h>
+#include <qmmpui/generalfactory.h>
+#include <qmmpui/general.h>
+#include <qmmpui/generalhandler.h>
+#include <qmmpui/filedialog.h>
+#include <qmmpui/mediaplayer.h>
+#include <qmmpui/playlistmodel.h>
+#include "shortcutdialog.h"
+#include "actionmanager.h"
+#include "shortcutitem.h"
+#include "popupsettings.h"
+#include "skin.h"
+#include "pluginitem.h"
+#include "configdialog.h"
+#include "skinreader.h"
+
+ConfigDialog::ConfigDialog (QWidget *parent)
+ : QDialog (parent)
+{
+ ui.setupUi (this);
+ setAttribute(Qt::WA_QuitOnClose, false);
+ setAttribute(Qt::WA_DeleteOnClose, false);
+ ui.preferencesButton->setEnabled(false);
+ ui.informationButton->setEnabled(false);
+ connect (ui.mainFontButton, SIGNAL (clicked()), SLOT (setMainFont()));
+ connect (ui.plFontButton, SIGNAL (clicked()), SLOT (setPlFont()));
+ connect (this, SIGNAL(rejected()),SLOT(saveSettings()));
+ connect (ui.fileDialogComboBox, SIGNAL (currentIndexChanged (int)), SLOT(updateDialogButton(int)));
+ connect (ui.skinInstallButton, SIGNAL (clicked()), SLOT(installSkin()));
+ connect (ui.skinReloadButton, SIGNAL (clicked()), SLOT(loadSkins()));
+ connect (ui.listWidget, SIGNAL (itemClicked (QListWidgetItem *)), this, SLOT (changeSkin()));
+ ui.listWidget->setIconSize (QSize (105,34));
+ m_skin = Skin::instance();
+ ui.replayGainModeComboBox->addItem (tr("Track"), QmmpSettings::REPLAYGAIN_TRACK);
+ ui.replayGainModeComboBox->addItem (tr("Album"), QmmpSettings::REPLAYGAIN_ALBUM);
+ ui.replayGainModeComboBox->addItem (tr("Disabled"), QmmpSettings::REPLAYGAIN_DISABLED);
+ readSettings();
+ m_reader = new SkinReader(this);
+ loadSkins();
+ loadPluginsInfo();
+ loadShortcuts();
+ loadFonts();
+ createMenus();
+ //setup icons
+ ui.skinInstallButton->setIcon(QIcon::fromTheme("list-add"));
+ ui.skinReloadButton->setIcon(QIcon::fromTheme("view-refresh"));
+ ui.popupTemplateButton->setIcon(QIcon::fromTheme("configure"));
+ ui.preferencesButton->setIcon(QIcon::fromTheme("configure"));
+ ui.informationButton->setIcon(QIcon::fromTheme("dialog-information"));
+ ui.fdInformationButton->setIcon(QIcon::fromTheme("dialog-information"));
+ ui.outputInformationButton->setIcon(QIcon::fromTheme("dialog-information"));
+ ui.outputPreferencesButton->setIcon(QIcon::fromTheme("configure"));
+}
+
+ConfigDialog::~ConfigDialog()
+{}
+
+void ConfigDialog::readSettings()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ if (MediaPlayer *player = MediaPlayer::instance())
+ {
+ ui.formatLineEdit->setText(player->playListManager()->format());
+ ui.metadataCheckBox->setChecked(player->playListManager()->useMetadata());
+ ui.underscoresCheckBox->setChecked(player->playListManager()->convertUnderscore());
+ ui.per20CheckBox->setChecked(player->playListManager()->convertTwenty());
+ }
+ ui.protocolCheckBox->setChecked(settings.value ("PlayList/show_protocol", false).toBool());
+ ui.numbersCheckBox->setChecked(settings.value ("PlayList/show_numbers", true).toBool());
+ ui.alignCheckBox->setChecked(settings.value ("PlayList/align_numbers", false).toBool());
+ ui.anchorCheckBox->setChecked(settings.value("PlayList/show_anchor", false).toBool());
+ ui.playlistsCheckBox->setChecked(settings.value("PlayList/show_plalists", false).toBool());
+ ui.popupCheckBox->setChecked(settings.value("PlayList/show_popup", false).toBool());
+ QmmpSettings *gs = QmmpSettings::instance();
+ //proxy settings
+ ui.enableProxyCheckBox->setChecked(gs->isProxyEnabled());
+ ui.authProxyCheckBox->setChecked(gs->useProxyAuth());
+ ui.hostLineEdit->setText(gs->proxy().host());
+ if (gs->proxy().port(0))
+ ui.portLineEdit->setText(QString::number(gs->proxy().port(0)));
+ ui.proxyUserLineEdit->setText(gs->proxy().userName());
+ ui.proxyPasswLineEdit->setText(gs->proxy().password());
+
+ ui.hostLineEdit->setEnabled(ui.enableProxyCheckBox->isChecked());
+ ui.portLineEdit->setEnabled(ui.enableProxyCheckBox->isChecked());
+ ui.proxyUserLineEdit->setEnabled(ui.authProxyCheckBox->isChecked());
+ ui.proxyPasswLineEdit->setEnabled(ui.authProxyCheckBox->isChecked());
+ //transparency
+ ui.mwTransparencySlider->setValue(100 - settings.value("MainWindow/opacity", 1.0).toDouble()*100);
+ ui.eqTransparencySlider->setValue(100 - settings.value("Equalizer/opacity", 1.0).toDouble()*100);
+ ui.plTransparencySlider->setValue(100 - settings.value("PlayList/opacity", 1.0).toDouble()*100);
+ //view
+ ui.skinCursorsCheckBox->setChecked(settings.value("General/skin_cursors", false).toBool());
+ m_currentSkinName = settings.value("General/skin_name", "default").toString();
+ ui.hiddenCheckBox->setChecked(settings.value("MainWindow/start_hidden", false).toBool());
+ ui.hideOnCloseCheckBox->setChecked(settings.value("MainWindow/hide_on_close", false).toBool());
+ //resume playback
+ ui.continuePlaybackCheckBox->setChecked(settings.value("General/resume_on_startup", false).toBool());
+ //cover options
+ ui.coverIncludeLineEdit->setText(gs->coverNameFilters(true).join(","));
+ ui.coverExcludeLineEdit->setText(gs->coverNameFilters(false).join(","));
+ ui.coverDepthSpinBox->setValue(gs->coverSearchDepth());
+ ui.useCoverFilesCheckBox->setChecked(gs->useCoverFiles());
+ //replay gain
+ ui.clippingCheckBox->setChecked(gs->replayGainPreventClipping());
+ ui.replayGainModeComboBox->setCurrentIndex(ui.replayGainModeComboBox->findData(gs->replayGainMode()));
+ ui.preampDoubleSpinBox->setValue(gs->replayGainPreamp());
+ ui.defaultGainDoubleSpinBox->setValue(gs->replayGainDefaultGain());
+ //audio
+ ui.softVolumeCheckBox->setChecked(gs->useSoftVolume());
+ ui.use16BitCheckBox->setChecked(gs->use16BitOutput());
+ ui.bufferSizeSpinBox->setValue(gs->bufferSize());
+}
+
+void ConfigDialog::on_contentsWidget_currentItemChanged (QListWidgetItem *current,
+ QListWidgetItem *previous)
+{
+ if (!current)
+ current = previous;
+ ui.stackedWidget->setCurrentIndex (ui.contentsWidget->row (current));
+ ui.hiddenCheckBox->setEnabled(GeneralHandler::instance()->visibilityControl());
+ ui.hideOnCloseCheckBox->setEnabled(GeneralHandler::instance()->visibilityControl());
+}
+
+void ConfigDialog::changeSkin()
+{
+ int row = ui.listWidget->currentRow();
+ QString path;
+ if (m_skinList.at (row).isDir())
+ {
+ path = m_skinList.at (row).canonicalFilePath();
+ m_skin->setSkin (path);
+ }
+ else if (m_skinList.at (row).isFile())
+ {
+ m_reader->unpackSkin(m_skinList.at (row).canonicalFilePath());
+ m_skin->setSkin(QDir::homePath() +"/.qmmp/cache/skin");
+ }
+ if(ui.listWidget->currentItem())
+ m_currentSkinName = ui.listWidget->currentItem()->text();
+ else
+ m_currentSkinName.clear();
+}
+
+void ConfigDialog::loadSkins()
+{
+ m_reader->generateThumbs();
+ m_skinList.clear();
+ ui.listWidget->clear();
+ QFileInfo fileInfo (":/default");
+ QPixmap preview = Skin::getPixmap ("main", QDir (fileInfo.filePath()));
+ QListWidgetItem *item = new QListWidgetItem (fileInfo.fileName ());
+ item->setIcon (preview);
+ ui.listWidget->addItem (item);
+ m_skinList << fileInfo;
+ if(item->text() == m_currentSkinName)
+ ui.listWidget->setCurrentItem(item);
+
+ findSkins(QDir::homePath() +"/.qmmp/skins");
+#ifdef Q_OS_WIN32
+ findSkins(qApp->applicationDirPath()+"/skins");
+#else
+ findSkins(qApp->applicationDirPath()+"/../share/qmmp/skins");
+#endif
+ foreach(QString path, m_reader->skins())
+ {
+ QListWidgetItem *item = new QListWidgetItem (path.section('/', -1));
+ item->setIcon (m_reader->getPreview(path));
+ item->setToolTip(tr("Archived skin") + " " + path);
+ ui.listWidget->addItem (item);
+ m_skinList << QFileInfo(path);
+ if(item->text() == m_currentSkinName)
+ ui.listWidget->setCurrentItem(item);
+ }
+}
+
+void ConfigDialog::findSkins(const QString &path)
+{
+ QDir dir(path);
+ dir.setFilter (QDir::Dirs | QDir::NoDotAndDotDot);
+ QList <QFileInfo> fileList = dir.entryInfoList();
+ if (fileList.count() == 0)
+ return;
+ foreach (QFileInfo fileInfo, fileList)
+ {
+ QPixmap preview = Skin::getPixmap ("main", QDir(fileInfo.filePath ()));
+ if (!preview.isNull())
+ {
+ QListWidgetItem *item = new QListWidgetItem (fileInfo.fileName ());
+ item->setIcon (preview);
+ item->setToolTip(tr("Unarchived skin") + " " + fileInfo.filePath ());
+ ui.listWidget->addItem (item);
+ m_skinList << fileInfo;
+ }
+ }
+}
+
+void ConfigDialog::loadPluginsInfo()
+{
+ ui.treeWidget->blockSignals(true);
+ /*
+ load transport plugin information
+ */
+ QTreeWidgetItem *item = new QTreeWidgetItem (ui.treeWidget, QStringList() << tr("Transports"));
+ QList <InputSourceFactory *> *transports = InputSource::factories();
+ QStringList files = InputSource::files();
+ for (int i = 0; i < transports->count (); ++i)
+ new PluginItem (item, transports->at(i), files.at (i));
+ ui.treeWidget->addTopLevelItem(item);
+ item->setExpanded(true);
+
+ /*
+ load input plugins information
+ */
+ item = new QTreeWidgetItem (ui.treeWidget, QStringList() << tr("Decoders"));
+ QList <DecoderFactory *> *decoders = Decoder::factories();
+ files = Decoder::files();
+ for (int i = 0; i < decoders->count (); ++i)
+ new PluginItem (item, decoders->at(i), files.at (i));
+ ui.treeWidget->addTopLevelItem(item);
+ item->setExpanded(true);
+ /*
+ load audio engines information
+ */
+ item = new QTreeWidgetItem (ui.treeWidget, QStringList() << tr("Engines"));
+ QList <EngineFactory *> *engines = AbstractEngine::factories();
+ files = AbstractEngine::files();
+ for (int i = 0; i < engines->count (); ++i)
+ new PluginItem (item, engines->at(i), files.at (i));
+ ui.treeWidget->addTopLevelItem(item);
+ item->setExpanded(true);
+ /*
+ load effect plugin information
+ */
+ item = new QTreeWidgetItem (ui.treeWidget, QStringList() << tr("Effects"));
+ QList <EffectFactory *> *effects = Effect::factories();
+ files = Effect::files();
+ for (int i = 0; i < effects->count (); ++i)
+ new PluginItem (item, effects->at(i), files.at (i));
+ ui.treeWidget->addTopLevelItem(item);
+ item->setExpanded(true);
+ /*
+ load visual plugin information
+ */
+ item = new QTreeWidgetItem (ui.treeWidget, QStringList() << tr("Visualization"));
+ QList <VisualFactory *> *visuals = Visual::factories();
+ files = Visual::files();
+ for (int i = 0; i < visuals->count (); ++i)
+ new PluginItem (item, visuals->at(i), files.at (i));
+ ui.treeWidget->addTopLevelItem(item);
+ item->setExpanded(true);
+ /*
+ load general plugin information
+ */
+ item = new QTreeWidgetItem (ui.treeWidget, QStringList() << tr("General"));
+ QList <GeneralFactory *> *generals = General::factories();
+ files = General::files();
+ for (int i = 0; i < generals->count (); ++i)
+ new PluginItem (item, generals->at(i), files.at (i));
+ ui.treeWidget->addTopLevelItem(item);
+ item->setExpanded(true);
+
+ ui.treeWidget->blockSignals(false);
+ ui.treeWidget->resizeColumnToContents(0);
+ ui.treeWidget->resizeColumnToContents(1);
+ /*
+ load output plugins information
+ */
+ ui.outputInformationButton->setEnabled(false);
+ ui.outputPreferencesButton->setEnabled(false);
+ QList <OutputFactory *> *outputs = Output::factories();
+ for (int i = 0; i < outputs->count (); ++i)
+ {
+ ui.outputComboBox->addItem(outputs->at(i)->properties().name);
+ if(Output::currentFactory() == outputs->at(i))
+ {
+ ui.outputComboBox->setCurrentIndex(i);
+ on_outputComboBox_activated (i);
+ }
+ }
+ /*
+ load file dialog information
+ */
+ foreach(FileDialogFactory *factory, FileDialog::registeredFactories())
+ {
+ ui.fileDialogComboBox->addItem(factory->properties().name);
+ if (FileDialog::isEnabled(factory))
+ ui.fileDialogComboBox->setCurrentIndex(ui.fileDialogComboBox->count()-1);
+ }
+}
+
+void ConfigDialog::loadFonts()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ QString fontname = settings.value ("PlayList/Font").toString();
+ QFont font = QApplication::font();
+ if(!fontname.isEmpty())
+ font.fromString(fontname);
+ ui.plFontLabel->setText (font.family () + " " + QString::number(font.pointSize ()));
+ ui.plFontLabel->setFont(font);
+
+ font = QApplication::font ();
+ fontname = settings.value ("MainWindow/Font").toString();
+ if(!fontname.isEmpty())
+ font.fromString(fontname);
+ ui.mainFontLabel->setText (font.family () + " " + QString::number(font.pointSize ()));
+ ui.mainFontLabel->setFont(font);
+ ui.useBitmapCheckBox->setChecked(settings.value("MainWindow/bitmap_font", false).toBool());
+}
+
+void ConfigDialog::loadShortcuts()
+{
+ //playback
+ QTreeWidgetItem *item = new QTreeWidgetItem (ui.shortcutTreeWidget, QStringList() << tr("Playback"));
+ for(int i = ActionManager::PLAY; i <= ActionManager::CLEAR_QUEUE; ++i)
+ new ShortcutItem(item, i);
+ item->setExpanded(true);
+ ui.shortcutTreeWidget->addTopLevelItem(item);
+ //view
+ item = new QTreeWidgetItem (ui.shortcutTreeWidget, QStringList() << tr("View"));
+ for(int i = ActionManager::SHOW_PLAYLIST; i <= ActionManager::WM_DOUBLE_SIZE; ++i)
+ new ShortcutItem(item, i);
+ item->setExpanded(true);
+ ui.shortcutTreeWidget->addTopLevelItem(item);
+ //playlist
+ item = new QTreeWidgetItem (ui.shortcutTreeWidget, QStringList() << tr("Playlist"));
+ for(int i = ActionManager::PL_ADD_FILE; i <= ActionManager::PL_SHOW_MANAGER; ++i)
+ new ShortcutItem(item, i);
+ item->setExpanded(true);
+ ui.shortcutTreeWidget->addTopLevelItem(item);
+ //misc
+ item = new QTreeWidgetItem (ui.shortcutTreeWidget, QStringList() << tr("Misc"));
+ for(int i = ActionManager::SETTINGS; i <= ActionManager::QUIT; ++i)
+ new ShortcutItem(item, i);
+ item->setExpanded(true);
+ ui.shortcutTreeWidget->addTopLevelItem(item);
+
+ ui.shortcutTreeWidget->resizeColumnToContents(0);
+ ui.shortcutTreeWidget->resizeColumnToContents(1);
+}
+
+void ConfigDialog::setPlFont()
+{
+ bool ok;
+ QFont font = ui.plFontLabel->font();
+ font = QFontDialog::getFont (&ok, font, this);
+ if (ok)
+ {
+ ui.plFontLabel->setText (font.family () + " " + QString::number(font.pointSize ()));
+ ui.plFontLabel->setFont(font);
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue ("PlayList/Font", font.toString());
+ }
+}
+
+void ConfigDialog::setMainFont()
+{
+ bool ok;
+ QFont font = ui.mainFontLabel->font();
+ font = QFontDialog::getFont (&ok, font, this);
+ if (ok)
+ {
+ ui.mainFontLabel->setText (font.family () + " " + QString::number(font.pointSize ()));
+ ui.mainFontLabel->setFont(font);
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue ("MainWindow/Font", font.toString());
+ }
+}
+
+void ConfigDialog::on_preferencesButton_clicked()
+{
+ QTreeWidgetItem *item = ui.treeWidget->currentItem();
+ if(item && item->type() >= PluginItem::TRANSPORT)
+ dynamic_cast<PluginItem *>(item)->showSettings(this);
+
+}
+
+void ConfigDialog::on_informationButton_clicked()
+{
+ QTreeWidgetItem *item = ui.treeWidget->currentItem();
+ if(item && item->type() >= PluginItem::TRANSPORT)
+ dynamic_cast<PluginItem *>(item)->showAbout(this);
+}
+
+void ConfigDialog::createMenus()
+{
+ QMenu *menu = new QMenu(this);
+
+ menu->addAction(tr("Artist"))->setData("%p");
+ menu->addAction(tr("Album"))->setData("%a");
+ menu->addAction(tr("Title"))->setData("%t");
+ menu->addAction(tr("Track number"))->setData("%n");
+ menu->addAction(tr("Two-digit track number"))->setData("%NN");
+ menu->addAction(tr("Genre"))->setData("%g");
+ menu->addAction(tr("Comment"))->setData("%c");
+ menu->addAction(tr("Composer"))->setData("%C");
+ menu->addAction(tr("Disc number"))->setData("%D");
+ menu->addAction(tr("File name"))->setData("%f");
+ menu->addAction(tr("File path"))->setData("%F");
+ menu->addAction(tr("Year"))->setData("%y");
+ menu->addAction(tr("Condition"))->setData("%if(%p&%t,%p - %t,%f)");
+
+ ui.titleButton->setMenu(menu);
+ ui.titleButton->setPopupMode(QToolButton::InstantPopup);
+ connect(menu, SIGNAL(triggered (QAction *)), SLOT(addTitleString(QAction *)));
+}
+
+void ConfigDialog::addTitleString(QAction * a)
+{
+ if (ui.formatLineEdit->cursorPosition () < 1)
+ ui.formatLineEdit->insert(a->data().toString());
+ else
+ ui.formatLineEdit->insert(" - "+a->data().toString());
+}
+
+void ConfigDialog::saveSettings()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ if (MediaPlayer *player = MediaPlayer::instance())
+ {
+ player->playListManager()->setFormat(ui.formatLineEdit->text().trimmed());
+ player->playListManager()->setUseMetadata(ui.metadataCheckBox->isChecked());
+ player->playListManager()->setConvertUnderscore(ui.underscoresCheckBox->isChecked());
+ player->playListManager()->setConvertTwenty(ui.per20CheckBox->isChecked());
+ }
+ settings.setValue ("PlayList/show_protocol", ui.protocolCheckBox->isChecked());
+ settings.setValue ("PlayList/show_numbers", ui.numbersCheckBox->isChecked());
+ settings.setValue ("PlayList/align_numbers", ui.alignCheckBox->isChecked());
+ settings.setValue ("PlayList/show_anchor", ui.anchorCheckBox->isChecked());
+ settings.setValue ("PlayList/show_plalists", ui.playlistsCheckBox->isChecked());
+ settings.setValue ("PlayList/show_popup", ui.popupCheckBox->isChecked());
+ FileDialog::setEnabled(FileDialog::registeredFactories().at(ui.fileDialogComboBox->currentIndex()));
+ QmmpSettings *gs = QmmpSettings::instance();
+ //proxy
+ QUrl proxyUrl;
+ proxyUrl.setHost(ui.hostLineEdit->text());
+ proxyUrl.setPort(ui.portLineEdit->text().toUInt());
+ proxyUrl.setUserName(ui.proxyUserLineEdit->text());
+ proxyUrl.setPassword(ui.proxyPasswLineEdit->text());
+ gs->setNetworkSettings(ui.enableProxyCheckBox->isChecked(),
+ ui.authProxyCheckBox->isChecked(),
+ proxyUrl);
+
+
+ settings.setValue ("MainWindow/opacity", 1.0 - (double)ui.mwTransparencySlider->value()/100);
+ settings.setValue ("Equalizer/opacity", 1.0 - (double)ui.eqTransparencySlider->value()/100);
+ settings.setValue ("PlayList/opacity", 1.0 - (double)ui.plTransparencySlider->value()/100);
+ settings.setValue ("General/resume_on_startup", ui.continuePlaybackCheckBox->isChecked());
+ settings.setValue ("MainWindow/bitmap_font", ui.useBitmapCheckBox->isChecked());
+ settings.setValue ("General/skin_cursors", ui.skinCursorsCheckBox->isChecked());
+ settings.setValue ("General/skin_name", m_currentSkinName);
+ settings.setValue ("MainWindow/start_hidden", ui.hiddenCheckBox->isChecked());
+ settings.setValue ("MainWindow/hide_on_close", ui.hideOnCloseCheckBox->isChecked());
+ gs->setCoverSettings(ui.coverIncludeLineEdit->text().split(","),
+ ui.coverExcludeLineEdit->text().split(","),
+ ui.coverDepthSpinBox->value(),
+ ui.useCoverFilesCheckBox->isChecked());
+ int i = ui.replayGainModeComboBox->currentIndex();
+ gs->setReplayGainSettings((QmmpSettings::ReplayGainMode)
+ ui.replayGainModeComboBox->itemData(i).toInt(),
+ ui.preampDoubleSpinBox->value(),
+ ui.defaultGainDoubleSpinBox->value(),
+ ui.clippingCheckBox->isChecked());
+ gs->setAudioSettings(ui.softVolumeCheckBox->isChecked(), ui.use16BitCheckBox->isChecked());
+ gs->setBufferSize(ui.bufferSizeSpinBox->value());
+ QList <OutputFactory *> *outputs = Output::factories();
+ if(ui.outputComboBox->currentIndex() >= 0 && outputs->count())
+ Output::setCurrentFactory(outputs->at(ui.outputComboBox->currentIndex()));
+}
+
+void ConfigDialog::updateDialogButton(int index)
+{
+ ui.fdInformationButton->setEnabled(FileDialog::registeredFactories()[index]->properties().hasAbout);
+}
+
+void ConfigDialog::on_fdInformationButton_clicked()
+{
+ int index = ui.fileDialogComboBox->currentIndex ();
+ FileDialog::registeredFactories()[index]->showAbout(this);
+}
+
+void ConfigDialog::installSkin()
+{
+ QStringList files = FileDialog::getOpenFileNames(this,tr("Select Skin Files"), QDir::homePath(),
+ tr("Skin files") + " (*.tar.gz *.tgz *.tar.bz2 *.zip *.wsz)");
+ foreach(QString path, files)
+ {
+ QFile file(path);
+ file.copy(QDir::homePath() +"/.qmmp/skins/" + QFileInfo(path).fileName());
+ }
+ loadSkins();
+}
+
+void ConfigDialog::on_popupTemplateButton_clicked()
+{
+ PopupSettings *p = new PopupSettings(this);
+ p->exec();
+ p->deleteLater();
+}
+
+void ConfigDialog::on_treeWidget_itemChanged (QTreeWidgetItem *item, int column)
+{
+ if(column == 0 && item->type() >= PluginItem::TRANSPORT)
+ dynamic_cast<PluginItem *>(item)->setEnabled(item->checkState(0) == Qt::Checked);
+}
+
+void ConfigDialog::on_treeWidget_currentItemChanged (QTreeWidgetItem *current, QTreeWidgetItem *)
+{
+ if(current->type() >= PluginItem::TRANSPORT)
+ {
+ ui.preferencesButton->setEnabled(dynamic_cast<PluginItem *>(current)->hasSettings());
+ ui.informationButton->setEnabled(dynamic_cast<PluginItem *>(current)->hasAbout());
+ }
+ else
+ {
+ ui.preferencesButton->setEnabled(false);
+ ui.informationButton->setEnabled(false);
+ }
+}
+
+void ConfigDialog::on_outputComboBox_activated (int index)
+{
+ OutputFactory *factory = Output::factories()->at(index);
+ ui.outputInformationButton->setEnabled(factory->properties().hasAbout);
+ ui.outputPreferencesButton->setEnabled(factory->properties().hasSettings);
+}
+
+void ConfigDialog::on_outputPreferencesButton_clicked()
+{
+ int index = ui.outputComboBox->currentIndex();
+ Output::factories()->at(index)->showSettings(this);
+}
+
+void ConfigDialog::on_outputInformationButton_clicked()
+{
+ int index = ui.outputComboBox->currentIndex();
+ Output::factories()->at(index)->showAbout(this);
+}
+
+void ConfigDialog::on_changeShortcutButton_clicked()
+{
+ ShortcutItem *item = dynamic_cast<ShortcutItem *> (ui.shortcutTreeWidget->currentItem());
+ if(!item)
+ return;
+ ShortcutDialog editor(item->action()->shortcut().toString(), this);
+ if(editor.exec() == QDialog::Accepted)
+ {
+ item->action()->setShortcut(editor.key());
+ item->setText(1, item->action()->shortcut().toString());
+ }
+}
diff --git a/src/plugins/Ui/skinned/configdialog.h b/src/plugins/Ui/skinned/configdialog.h
new file mode 100644
index 000000000..ad8d62ae5
--- /dev/null
+++ b/src/plugins/Ui/skinned/configdialog.h
@@ -0,0 +1,83 @@
+/***************************************************************************
+ * Copyright (C) 2007-2011 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 CONFIGDIALOG_H
+#define CONFIGDIALOG_H
+
+#include <QDialog>
+#include <QTreeWidgetItem>
+
+#include "ui_configdialog.h"
+
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class QFileInfo;
+
+class Skin;
+class SkinReader;
+
+class ConfigDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ ConfigDialog(QWidget *parent = 0);
+
+ ~ConfigDialog();
+
+private slots:
+ void on_contentsWidget_currentItemChanged (QListWidgetItem *current, QListWidgetItem *previous);
+ void changeSkin();
+ void setPlFont();
+ void setMainFont();
+ void on_preferencesButton_clicked();
+ void on_informationButton_clicked();
+ void addTitleString(QAction *);
+ void saveSettings();
+ void updateDialogButton(int);
+ void on_fdInformationButton_clicked();
+ void installSkin();
+ void loadSkins();
+ void on_popupTemplateButton_clicked();
+ void on_treeWidget_itemChanged (QTreeWidgetItem *item, int column);
+ void on_treeWidget_currentItemChanged (QTreeWidgetItem *current, QTreeWidgetItem *);
+ void on_outputComboBox_activated (int index);
+ void on_outputPreferencesButton_clicked();
+ void on_outputInformationButton_clicked();
+ void on_changeShortcutButton_clicked();
+
+private:
+ void readSettings();
+ void findSkins(const QString &path);
+ void loadPluginsInfo();
+ void loadFonts();
+ void loadShortcuts();
+ void createMenus();
+
+
+ QList <QFileInfo> m_skinList;
+ Ui::ConfigDialog ui;
+ QString m_currentSkinName;
+ Skin *m_skin;
+ QPixmap pixmap;
+ SkinReader *m_reader;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/cursorimage.cpp b/src/plugins/Ui/skinned/cursorimage.cpp
new file mode 100644
index 000000000..30fcf0173
--- /dev/null
+++ b/src/plugins/Ui/skinned/cursorimage.cpp
@@ -0,0 +1,118 @@
+/***************************************************************************
+ * Copyright (C) 2009 by Erik Ölsar *
+ * erlk.ozlr@gmail.com *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include <QCursor>
+#include <QString>
+#include <QPixmap>
+#include <QImage>
+#include <QByteArray>
+#include <QFile>
+#include <QBitmap>
+#include <QtDebug>
+#include "cursorimage.h"
+
+QCursor createCursor(QString path)
+{
+ if (path.isEmpty())
+ return QCursor();
+
+ // read file headers
+ QFile curFile(path);
+ curFile.open(QIODevice::ReadOnly);
+ QDataStream curStream(&curFile);
+ curStream.setByteOrder(QDataStream::LittleEndian);
+
+ struct {
+ quint16 zero;
+ quint16 type;
+ quint16 icons;
+ } header2;
+ curStream >> header2.zero >> header2.type >> header2.icons;
+
+ struct {
+ quint8 width;
+ quint8 height;
+ quint8 ncolours;
+ quint8 zero;
+ quint16 xhot;
+ quint16 yhot;
+ quint32 bytes;
+ quint32 dibOffset;
+ } directory2;
+ curStream >> directory2.width >> directory2.height >> directory2.ncolours >> directory2.zero >> directory2.xhot >> directory2.yhot >> directory2.bytes >> directory2.dibOffset;
+
+ curFile.seek(directory2.dibOffset);
+
+ // prepare a .bmp for delegating decoding to qt
+ struct {
+ unsigned char magic[2];
+ quint32 size;
+ quint32 zero;
+ quint32 rdataOffset;
+ } bmpHeader;
+ int bmpHeaderSize = (2+4+4+4);
+ struct {
+ quint32 hdrSize;
+ quint32 width;
+ quint32 height;
+ quint16 planes;
+ quint16 bpp;
+ quint32 compression;
+ quint32 dataSize;
+ quint32 unused1;
+ quint32 unused2;
+ quint32 unused3;
+ quint32 unused4;
+ } dibHeader;
+ int dibHeaderSize = (4+4+4+2+2+4+4+4+4+4+4);
+
+ bmpHeader.magic[0] = 'B'; bmpHeader.magic[1] = 'M';
+ bmpHeader.zero = 0;
+ bmpHeader.size = bmpHeaderSize + directory2.bytes;
+ bmpHeader.rdataOffset = bmpHeaderSize + dibHeaderSize + directory2.ncolours * 4;
+
+ curStream >> dibHeader.hdrSize >> dibHeader.width >> dibHeader.height >> dibHeader.planes >> dibHeader.bpp >> dibHeader.compression >> dibHeader.dataSize >> dibHeader.unused1 >> dibHeader.unused2 >> dibHeader.unused3 >> dibHeader.unused4;
+ dibHeader.height >>= 1;
+
+ // the bmp bytes are in 'bmpData'
+ QByteArray bmpData;
+ QDataStream bmpStream(&bmpData, QIODevice::WriteOnly);
+ bmpStream.setByteOrder(QDataStream::LittleEndian);
+ bmpStream.writeRawData((char*) bmpHeader.magic, 2);
+ bmpStream << bmpHeader.size << bmpHeader.zero << bmpHeader.rdataOffset;
+ bmpStream << dibHeader.hdrSize << dibHeader.width << dibHeader.height << dibHeader.planes << dibHeader.bpp << dibHeader.compression << dibHeader.dataSize << dibHeader.unused1 << dibHeader.unused2 << dibHeader.unused3 << dibHeader.unused4;
+ bmpData.append(curFile.read(directory2.bytes - dibHeaderSize));
+
+ // decode the image into 'pix'
+ int width = directory2.width;
+ int height = directory2.height;
+ QImage image;
+ image.loadFromData(bmpData);
+ //qDebug() << image.rect() << path;
+ QPixmap pix = QPixmap::fromImage(image);
+
+ // now we need the mask (transparency)
+ QByteArray maskData = bmpData.right((width * height) / 8);
+ QImage maskImage = QBitmap::fromData(QSize(width, height), (const uchar*) maskData.constData(), QImage::Format_Mono).toImage().mirrored(false, true);
+ maskImage.invertPixels();
+ pix.setMask(QBitmap::fromImage(maskImage));
+
+ return QCursor(pix, directory2.xhot, directory2.yhot);
+}
diff --git a/src/plugins/Ui/skinned/cursorimage.h b/src/plugins/Ui/skinned/cursorimage.h
new file mode 100644
index 000000000..cde27d62d
--- /dev/null
+++ b/src/plugins/Ui/skinned/cursorimage.h
@@ -0,0 +1,26 @@
+/***************************************************************************
+ * Copyright (C) 2009 by Erik Ölsar *
+ * erlk.ozlr@gmail.com *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#ifndef CURSORIMAGE_H
+#define CURSORIMAGE_H
+
+QCursor createCursor(QString path);
+
+#endif
diff --git a/src/plugins/Ui/skinned/default/balance.png b/src/plugins/Ui/skinned/default/balance.png
new file mode 100644
index 000000000..1c2467f49
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/balance.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/cbuttons.png b/src/plugins/Ui/skinned/default/cbuttons.png
new file mode 100644
index 000000000..15666b838
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/cbuttons.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/eq_ex.png b/src/plugins/Ui/skinned/default/eq_ex.png
new file mode 100644
index 000000000..172a57c83
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/eq_ex.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/eqmain.png b/src/plugins/Ui/skinned/default/eqmain.png
new file mode 100644
index 000000000..8e332d178
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/eqmain.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/main.png b/src/plugins/Ui/skinned/default/main.png
new file mode 100644
index 000000000..3980c579d
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/main.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/monoster.png b/src/plugins/Ui/skinned/default/monoster.png
new file mode 100644
index 000000000..fe941fc44
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/monoster.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/numbers.png b/src/plugins/Ui/skinned/default/numbers.png
new file mode 100644
index 000000000..009d0228c
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/numbers.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/playpaus.png b/src/plugins/Ui/skinned/default/playpaus.png
new file mode 100644
index 000000000..268e2a43a
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/playpaus.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/pledit.png b/src/plugins/Ui/skinned/default/pledit.png
new file mode 100644
index 000000000..7e8c7bc1a
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/pledit.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/pledit.txt b/src/plugins/Ui/skinned/default/pledit.txt
new file mode 100644
index 000000000..1a8813b69
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/pledit.txt
@@ -0,0 +1,8 @@
+[Text]
+Normal=#A8AEAE
+Current=#ffffff
+NormalBG=#000000
+SelectedBG=#525555
+Font=Sans
+mbBG=#000000
+mbFG=#ffffff \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/default/posbar.png b/src/plugins/Ui/skinned/default/posbar.png
new file mode 100644
index 000000000..1f1608c8b
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/posbar.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/readme.txt b/src/plugins/Ui/skinned/default/readme.txt
new file mode 100644
index 000000000..323706573
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/readme.txt
@@ -0,0 +1,2 @@
+Ergo created for QMMP project by Andrey Andreev
+andreev00@gmail.com \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/default/shufrep.png b/src/plugins/Ui/skinned/default/shufrep.png
new file mode 100644
index 000000000..aa063c810
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/shufrep.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/text.png b/src/plugins/Ui/skinned/default/text.png
new file mode 100644
index 000000000..dcf1559e5
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/text.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/titlebar.png b/src/plugins/Ui/skinned/default/titlebar.png
new file mode 100644
index 000000000..9ff2e1f22
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/titlebar.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/default/viscolor.txt b/src/plugins/Ui/skinned/default/viscolor.txt
new file mode 100644
index 000000000..bac3f6bb9
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/viscolor.txt
@@ -0,0 +1,24 @@
+152,152,152, // Bg
+152,152,152, // Dots
+255,128,0, // Analyzer
+240,128,16, // Analyzer
+225,128,32, // Analyzer
+210,128,48, // Analyzer
+195,128,64, // Analyzer
+180,128,80, // Analyzer
+165,128,96, // Analyzer
+150,128,112, // Analyzer
+128,128,128, // Analyzer
+110,110,110, // Analyzer
+92,92,92, // Analyzer
+74,74,74, // Analyzer
+56,56,56, // Analyzer
+38,38,38, // Analyzer
+20,20,20, // Analyzer
+2,2,2, // Analyzer
+2,2,2, // Osc
+20,20,20, // Osc
+20,20,20, // Osc
+38,38,38, // Osc
+38,38,38, // Osc
+255,255,255, // Peak \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/default/volume.png b/src/plugins/Ui/skinned/default/volume.png
new file mode 100644
index 000000000..cd33da4cf
--- /dev/null
+++ b/src/plugins/Ui/skinned/default/volume.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/display.cpp b/src/plugins/Ui/skinned/display.cpp
new file mode 100644
index 000000000..9b54306d2
--- /dev/null
+++ b/src/plugins/Ui/skinned/display.cpp
@@ -0,0 +1,357 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 <QApplication>
+#include <QSettings>
+#include <QMenu>
+#include <qmmp/soundcore.h>
+#include <qmmpui/mediaplayer.h>
+#include <qmmpui/playlistmanager.h>
+#include "skin.h"
+#include "mainvisual.h"
+#include "button.h"
+#include "titlebar.h"
+#include "positionbar.h"
+#include "number.h"
+#include "togglebutton.h"
+#include "symboldisplay.h"
+#include "textscroller.h"
+#include "monostereo.h"
+#include "playstatus.h"
+#include "volumebar.h"
+#include "balancebar.h"
+#include "mainwindow.h"
+#include "timeindicator.h"
+#include "actionmanager.h"
+#include "display.h"
+
+MainDisplay::MainDisplay (QWidget *parent)
+ : PixmapWidget (parent)
+{
+ m_shaded = false;
+ m_skin = Skin::instance();
+ setPixmap (m_skin->getMain());
+ setCursor(m_skin->getCursor(Skin::CUR_NORMAL));
+ m_mw = qobject_cast<MainWindow*>(parent);
+ m_titlebar = new TitleBar(this);
+ m_titlebar->move(0,0);
+ m_titlebar->setActive(true);
+ m_previous = new Button (this, Skin::BT_PREVIOUS_N, Skin::BT_PREVIOUS_P, Skin::CUR_NORMAL);
+ m_previous->setToolTip(tr("Previous"));
+ connect (m_previous, SIGNAL (clicked()), parent, SLOT (previous()));
+
+ m_play = new Button (this, Skin::BT_PLAY_N, Skin::BT_PLAY_P, Skin::CUR_NORMAL);
+ m_play->setToolTip(tr("Play"));
+ connect (m_play, SIGNAL (clicked()),parent,SLOT (play()));
+ m_pause = new Button (this, Skin::BT_PAUSE_N,Skin::BT_PAUSE_P, Skin::CUR_NORMAL);
+ m_pause->setToolTip(tr("Pause"));
+ connect (m_pause,SIGNAL (clicked()),parent,SLOT (pause()));
+ m_stop = new Button (this, Skin::BT_STOP_N,Skin::BT_STOP_P, Skin::CUR_NORMAL);
+ m_stop->setToolTip(tr("Stop"));
+ connect (m_stop,SIGNAL (clicked()),parent,SLOT (stop()));
+ m_next = new Button (this, Skin::BT_NEXT_N,Skin::BT_NEXT_P, Skin::CUR_NORMAL);
+ m_next->setToolTip(tr("Next"));
+ connect (m_next,SIGNAL (clicked()),parent,SLOT (next()));
+ m_eject = new Button (this, Skin::BT_EJECT_N,Skin::BT_EJECT_P, Skin::CUR_NORMAL);
+ m_eject->setToolTip(tr("Add file"));
+ connect (m_eject,SIGNAL (clicked()),parent,SLOT (addFile()));
+ connect (m_skin, SIGNAL (skinChanged()), this, SLOT (updateSkin()));
+ m_vis = new MainVisual (this);
+
+ m_eqButton = new ToggleButton (this,Skin::BT_EQ_ON_N,Skin::BT_EQ_ON_P,
+ Skin::BT_EQ_OFF_N,Skin::BT_EQ_OFF_P);
+ m_eqButton->setToolTip(tr("Equalizer"));
+ m_plButton = new ToggleButton (this,Skin::BT_PL_ON_N,Skin::BT_PL_ON_P,
+ Skin::BT_PL_OFF_N,Skin::BT_PL_OFF_P);
+ m_plButton->setToolTip(tr("Playlist"));
+
+ m_repeatButton = new ToggleButton (this,Skin::REPEAT_ON_N,Skin::REPEAT_ON_P,
+ Skin::REPEAT_OFF_N,Skin::REPEAT_OFF_P);
+ connect(m_repeatButton,SIGNAL(clicked(bool)),this,SIGNAL(repeatableToggled(bool)));
+ m_repeatButton->setToolTip(tr("Repeat playlist"));
+ m_shuffleButton = new ToggleButton (this,Skin::SHUFFLE_ON_N,Skin::SHUFFLE_ON_P,
+ Skin::SHUFFLE_OFF_N,Skin::SHUFFLE_OFF_P);
+ m_shuffleButton->setToolTip(tr("Shuffle"));
+ connect(m_shuffleButton,SIGNAL(clicked(bool)),this,SIGNAL(shuffleToggled(bool)));
+
+ m_kbps = new SymbolDisplay(this,3);
+ m_freq = new SymbolDisplay(this,2);
+ m_text = new TextScroller (this);
+ m_monoster = new MonoStereo (this);
+ m_playstatus = new PlayStatus(this);
+
+ m_volumeBar = new VolumeBar(this);
+ m_volumeBar->setToolTip(tr("Volume"));
+ connect(m_volumeBar, SIGNAL(sliderMoved(int)),SLOT(updateVolume()));
+ connect(m_volumeBar, SIGNAL(sliderPressed()),SLOT(updateVolume()));
+ connect(m_volumeBar, SIGNAL(sliderReleased()),m_text,SLOT(clear()));
+
+ m_balanceBar = new BalanceBar(this);
+ m_balanceBar->setToolTip(tr("Balance"));
+ connect(m_balanceBar, SIGNAL(sliderMoved(int)),SLOT(updateVolume()));
+ connect(m_balanceBar, SIGNAL(sliderPressed()),SLOT(updateVolume()));
+ connect(m_balanceBar, SIGNAL(sliderReleased()),m_text,SLOT(clear()));
+
+ m_posbar = new PositionBar(this);
+ connect(m_posbar, SIGNAL(sliderPressed()),SLOT(showPosition()));
+ connect(m_posbar, SIGNAL(sliderMoved(qint64)),SLOT(showPosition()));
+ connect(m_posbar, SIGNAL(sliderReleased()),SLOT(updatePosition()));
+
+ m_timeIndicator = new TimeIndicator(this);
+ m_aboutWidget = new QWidget(this);
+ m_core = SoundCore::instance();
+ connect(m_core, SIGNAL(elapsedChanged(qint64)), SLOT(setTime(qint64)));
+ connect(m_core, SIGNAL(bitrateChanged(int)), m_kbps, SLOT(display(int)));
+ connect(m_core, SIGNAL(frequencyChanged(quint32)), SLOT(setSampleRate(quint32)));
+ connect(m_core, SIGNAL(channelsChanged(int)), m_monoster, SLOT(setChannels(int)));
+ connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(setState(Qmmp::State)));
+ connect(m_core, SIGNAL(volumeChanged(int,int)), SLOT(setVolume(int, int)));
+ connect(m_core, SIGNAL(elapsedChanged(qint64)),m_titlebar, SLOT(setTime(qint64)));
+ PlayListManager *pl_manager = MediaPlayer::instance()->playListManager();
+ connect(pl_manager, SIGNAL(repeatableListChanged(bool)), m_repeatButton, SLOT(setON(bool)));
+ connect(pl_manager, SIGNAL(shuffleChanged(bool)), m_shuffleButton, SLOT(setON(bool)));
+ updatePositions();
+ updateMask();
+}
+
+MainDisplay::~MainDisplay()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue ("Playlist/visible",m_plButton->isChecked());
+ settings.setValue ("Equalizer/visible",m_eqButton->isChecked());
+}
+
+void MainDisplay::updatePositions()
+{
+ int r = m_skin->ratio();
+ m_previous->move (r*16, r*88);
+ m_play->move (r*39, r*88);
+ m_pause->move (r*62, r*88);
+ m_vis->move(r*24, r*43);
+ m_stop->move (r*85, r*88);
+ m_next->move (r*108, r*88);
+ m_eject->move (r*136, r*89);
+ m_posbar->move (r*16, r*72);
+ m_eqButton->move (r*219, r*58);
+ m_plButton->move (r*241, r*58);
+ m_repeatButton->move (r*210, r*89);
+ m_shuffleButton->move (r*164, r*89);
+ m_kbps->move (r*111, r*43);
+ m_freq->move (r*156, r*43);
+ m_text->resize (r*154, r*15);
+ m_text->move (r*109, r*23);
+ m_monoster->move (r*212, r*41);
+ m_playstatus->move(r*24, r*28);
+ m_volumeBar->move(r*107, r*57);
+ m_balanceBar->move(r*177, r*57);
+ m_timeIndicator->move(r*34, r*26);
+ m_aboutWidget->setGeometry(r*247,r*83,r*20,r*25);
+}
+
+void MainDisplay::setTime (qint64 t)
+{
+ m_posbar->setValue (t);
+ m_timeIndicator->setTime(t/1000);
+}
+void MainDisplay::setDuration(qint64 t)
+{
+ m_posbar->setMaximum (t);
+ m_timeIndicator->setSongDuration(t/1000);
+}
+
+void MainDisplay::setState(Qmmp::State state)
+{
+ switch ((int) state)
+ {
+ case Qmmp::Playing:
+ m_playstatus->setStatus(PlayStatus::PLAY);
+ m_timeIndicator->setNeedToShowTime(true);
+ setDuration(m_core->totalTime());
+ break;
+ case Qmmp::Paused:
+ m_playstatus->setStatus(PlayStatus::PAUSE);
+ break;
+ case Qmmp::Stopped:
+ m_playstatus->setStatus(PlayStatus::STOP);
+ m_monoster->setChannels (0);
+ m_timeIndicator->setNeedToShowTime(false);
+ m_posbar->setValue (0);
+ m_posbar->setMaximum (0);
+ m_titlebar->setTime(-1);
+ }
+}
+
+void MainDisplay::setVolume(int left, int right)
+{
+ int maxVol = qMax(left, right);
+ m_volumeBar->setValue(maxVol);
+ if (maxVol && !m_volumeBar->isPressed())
+ m_balanceBar->setValue((right - left) * 100/maxVol);
+}
+
+void MainDisplay::updateSkin()
+{
+ setPixmap (m_skin->getMain());
+ m_mw->resize(size());
+ setCursor(m_skin->getCursor(Skin::CUR_NORMAL));
+ setMinimalMode(m_shaded);
+ updatePositions();
+}
+
+void MainDisplay::updateMask()
+{
+ m_mw->clearMask();
+ m_mw->setMask(QRegion(0,0,m_mw->width(),m_mw->height()));
+ QRegion region = m_skin->getRegion(m_shaded? Skin::WINDOW_SHADE : Skin::NORMAL);
+ if (!region.isEmpty())
+ m_mw->setMask(region);
+}
+
+void MainDisplay::setMinimalMode(bool b)
+{
+ m_shaded = b;
+ int r = m_skin->ratio();
+
+ if(m_shaded)
+ m_mw->resize(r*275,r*14);
+ else
+ m_mw->resize(r*275,r*116);
+ updateMask();
+}
+
+void MainDisplay::setActive(bool b)
+{
+ m_titlebar->setActive(b);
+}
+
+void MainDisplay::setSampleRate(quint32 rate)
+{
+ m_freq->display((int) rate/1000);
+}
+//TODO optimize this connections
+void MainDisplay::setEQ (QWidget* w)
+{
+ m_equlizer = w;
+ m_eqButton->setON (m_equlizer->isVisible());
+ ACTION(ActionManager::SHOW_EQUALIZER)->setChecked(m_equlizer->isVisible());
+
+ connect (ACTION(ActionManager::SHOW_EQUALIZER), SIGNAL(triggered(bool)),
+ m_equlizer, SLOT (setVisible (bool)));
+ connect (ACTION(ActionManager::SHOW_EQUALIZER), SIGNAL(triggered(bool)),
+ m_eqButton, SLOT (setON (bool)));
+
+ connect (m_eqButton, SIGNAL(clicked(bool)),
+ ACTION(ActionManager::SHOW_EQUALIZER), SLOT(setChecked (bool)));
+ connect (m_eqButton, SIGNAL(clicked(bool)), m_equlizer, SLOT (setVisible (bool)));
+ connect (m_equlizer, SIGNAL(closed ()), m_eqButton, SLOT (click()));
+}
+
+void MainDisplay::setPL (QWidget* w)
+{
+ m_playlist = w;
+ m_plButton->setON (m_playlist->isVisible());
+ ACTION(ActionManager::SHOW_PLAYLIST)->setChecked(m_playlist->isVisible());
+
+ connect (ACTION(ActionManager::SHOW_PLAYLIST), SIGNAL(triggered(bool)),
+ m_playlist, SLOT (setVisible (bool)));
+ connect (ACTION(ActionManager::SHOW_PLAYLIST), SIGNAL(triggered(bool)),
+ m_plButton, SLOT (setON (bool)));
+
+ connect (m_plButton, SIGNAL(clicked(bool)),
+ ACTION(ActionManager::SHOW_PLAYLIST), SLOT(setChecked (bool)));
+ connect (m_plButton, SIGNAL (clicked (bool)), m_playlist, SLOT (setVisible (bool)));
+ connect (m_playlist, SIGNAL (closed ()), m_plButton, SLOT (click()));
+}
+
+bool MainDisplay::isPlaylistVisible() const
+{
+ return m_plButton->isChecked();
+}
+
+bool MainDisplay::isEqualizerVisible() const
+{
+ return m_eqButton->isChecked();
+}
+
+void MainDisplay::updateVolume()
+{
+ if(sender() == m_volumeBar)
+ m_text->setText(tr("Volume: %1%").arg(m_volumeBar->value()));
+ if(sender() == m_balanceBar)
+ {
+ if(m_balanceBar->value() > 0)
+ m_text->setText(tr("Balance: %1% right").arg(m_balanceBar->value()));
+ else if(m_balanceBar->value() < 0)
+ m_text->setText(tr("Balance: %1% left").arg(-m_balanceBar->value()));
+ else
+ m_text->setText(tr("Balance: center"));
+ }
+ m_mw->setVolume(m_volumeBar->value(), m_balanceBar->value());
+}
+
+void MainDisplay::showPosition()
+{
+ int sec = m_posbar->value() / 1000;
+ if(sec > 3600)
+ sec /= 60;
+ QString time = QString("%1:%2").arg(sec/60, 2, 10, QChar('0')).arg(sec%60, 2, 10, QChar('0'));
+ m_text->setText(tr("Seek to: %1").arg(time));
+}
+
+void MainDisplay::updatePosition()
+{
+ m_text->clear();
+ m_core->seek(m_posbar->value());
+}
+
+void MainDisplay::wheelEvent (QWheelEvent *e)
+{
+ m_mw->setVolume(m_volumeBar->value()+e->delta()/10, m_balanceBar->value());
+}
+
+bool MainDisplay::isRepeatable() const
+{
+ return m_repeatButton->isChecked();
+}
+
+bool MainDisplay::isShuffle() const
+{
+ return m_shuffleButton->isChecked();
+}
+
+void MainDisplay::setIsRepeatable(bool yes)
+{
+ m_repeatButton->setON(yes);
+}
+
+void MainDisplay::setIsShuffle(bool yes)
+{
+ m_shuffleButton->setON(yes);
+}
+
+void MainDisplay::mousePressEvent(QMouseEvent *e)
+{
+ if (e->button() == Qt::RightButton)
+ m_mw->menu()->exec(e->globalPos());
+ else if(e->button() == Qt::LeftButton && m_aboutWidget->underMouse())
+ m_mw->about();
+ PixmapWidget::mousePressEvent(e);
+}
+
diff --git a/src/plugins/Ui/skinned/display.h b/src/plugins/Ui/skinned/display.h
new file mode 100644
index 000000000..1a7a05b82
--- /dev/null
+++ b/src/plugins/Ui/skinned/display.h
@@ -0,0 +1,122 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 DISPLAY_H
+#define DISPLAY_H
+
+#include <QPixmap>
+#include <qmmp/statehandler.h>
+#include "pixmapwidget.h"
+
+class TimeIndicator;
+class PositionBar;
+class Skin;
+class ToggleButton;
+class TitleBar;
+class NumberDisplay;
+class SymbolDisplay;
+class MonoStereo;
+class PlayStatus;
+class VolumeBar;
+class BalanceBar;
+class MainWindow;
+class SoundCore;
+class Button;
+class TextScroller;
+class MainVisual;
+class TitleBar;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class MainDisplay : public PixmapWidget
+{
+ Q_OBJECT
+public:
+ MainDisplay(QWidget *parent = 0);
+
+ ~MainDisplay();
+
+ void setEQ(QWidget*);
+ void setPL(QWidget*);
+ bool isEqualizerVisible()const;
+ bool isPlaylistVisible()const;
+ bool isRepeatable()const;
+ bool isShuffle()const;
+ void setIsRepeatable(bool);
+ void setIsShuffle(bool);
+ void setMinimalMode(bool b = true);
+ void setActive(bool b);
+
+public slots:
+ void setDuration(qint64);
+
+signals:
+ void repeatableToggled(bool);
+ void shuffleToggled(bool);
+
+protected:
+ void wheelEvent(QWheelEvent *);
+ void mousePressEvent(QMouseEvent*);
+
+private slots:
+ void updateSkin();
+ void updateVolume();
+ void showPosition();
+ void updatePosition();
+ void setSampleRate(quint32 rate);
+ void setTime(qint64);
+ void setState(Qmmp::State state);
+ void setVolume(int left, int right);
+
+
+private:
+ void updatePositions();
+ void updateMask();
+ QWidget* m_equlizer;
+ QWidget* m_playlist;
+ bool m_shaded;
+ Skin *m_skin;
+ PositionBar *m_posbar;
+ Button *m_previous;
+ Button *m_play;
+ Button *m_pause;
+ Button *m_stop;
+ Button *m_next;
+ Button *m_eject;
+ TextScroller *m_text;
+ ToggleButton *m_eqButton;
+ ToggleButton *m_plButton;
+ ToggleButton *m_shuffleButton;
+ ToggleButton *m_repeatButton;
+ SymbolDisplay* m_kbps;
+ SymbolDisplay* m_freq;
+ MonoStereo* m_monoster;
+ PlayStatus* m_playstatus;
+ VolumeBar* m_volumeBar;
+ BalanceBar* m_balanceBar;
+ MainWindow* m_mw;
+ MainVisual* m_vis;
+ TimeIndicator* m_timeIndicator;
+ TitleBar *m_titlebar;
+ SoundCore *m_core;
+ QWidget *m_aboutWidget;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/dock.cpp b/src/plugins/Ui/skinned/dock.cpp
new file mode 100644
index 000000000..a4e5d52d2
--- /dev/null
+++ b/src/plugins/Ui/skinned/dock.cpp
@@ -0,0 +1,266 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 <QDesktopWidget>
+#include <QApplication>
+
+#include "dock.h"
+
+
+Dock *Dock::m_instance = 0;
+
+Dock *Dock::instance()
+{
+ if (!m_instance)
+ m_instance = new Dock();
+ return m_instance;
+}
+
+Dock::Dock (QObject *parent)
+ : QObject (parent)
+{
+ m_instance = this;
+ m_mainWidget = 0;
+}
+
+Dock::~Dock()
+{
+ m_instance = 0;
+}
+
+void Dock::setMainWidget (QWidget *widget)
+{
+ m_mainWidget = widget;
+ m_widgetList.prepend (widget);
+ m_dockedList.prepend (false);
+}
+
+
+QPoint Dock::snap (QPoint npos, QWidget* mv, QWidget* st)
+{
+ int nx = npos.x() - st->x();
+ int ny = abs (npos.y() - st->y() + mv->height());
+
+ if (abs (nx) < 13 && ny < 13) //above
+ npos.rx() = st->x();
+ if (ny < 13 && nx > -mv->width() && nx < st->width())
+ npos.ry() = st->y() - mv->height();
+ nx = abs (npos.x() + mv->width() - st->x() - st->width());
+ if (nx < 13 && ny < 13)
+ npos.rx() = st->x() + st->width() - mv->width();
+
+ /***********/
+ nx = npos.x() - st->x();
+ ny = abs (npos.y() - st->y() - st->height());
+
+ if (abs (nx) < 13 && ny < 13) //near
+ npos.rx() = st->x();
+ if (ny < 13 && nx > -mv->width() && nx < st->width())
+ npos.ry() = st->y() + st->height();
+ nx = abs (npos.x() + mv->width() - st->x() - st->width());
+ if (nx < 13 && ny < 13)
+ npos.rx() = st->x() + st->width() - mv->width();
+ /**************/
+ nx = abs (npos.x() - st->x() + mv->width());
+ ny = npos.y() - st->y();
+
+ if (nx < 13 && abs (ny) < 13) //left
+ npos.ry() = st->y();
+ if (nx < 13 && ny > -mv->height() && ny < st->height())
+ npos.rx() = st->x() - mv->width();
+
+ ny = abs (npos.y() + mv->height() - st->y() - st->height());
+ if (nx < 13 && ny < 13)
+ npos.ry() = st->y() + st->height() - mv->height();
+ /*****************/
+ nx = abs (npos.x() - st->x() - st->width());
+ ny = npos.y() - st->y();
+
+ if (nx < 13 && abs (ny) < 13) //right
+ npos.ry() = st->y();
+ if (nx < 13 && ny > -mv->height() && ny < st->height())
+ npos.rx() = st->x() + st->width();
+
+ ny = abs (npos.y() + mv->height() - st->y() - st->height());
+ if (nx < 13 && ny < 13)
+ npos.ry() = st->y() + st->height() - mv->height();
+
+ return (npos);
+}
+
+void Dock::addWidget (QWidget *widget)
+{
+ m_widgetList.append (widget);
+ m_dockedList.append (false);
+ widget->addActions(m_actions);
+
+}
+
+void Dock::move (QWidget* mv, QPoint npos)
+{
+ QRect DesktopRect = QApplication::desktop()->availableGeometry(m_mainWidget);
+ if(npos.y() < DesktopRect.y())
+ npos.setY(DesktopRect.y());
+ if(npos.x() < DesktopRect.x())
+ npos.setX(DesktopRect.x());
+ if (mv == m_mainWidget)
+ {
+
+ for (int i = 1; i<m_widgetList.size(); ++i)
+ {
+ if (!m_dockedList.at (i))
+ {
+ if (m_widgetList.at (i)->isVisible())
+ npos = snap (npos, mv, m_widgetList.at (i));
+
+ }
+ else
+ {
+ QPoint pos = QPoint (npos.x() + x_list.at (i),
+ npos.y() + y_list.at (i));
+ for (int j = 1; j<m_widgetList.size(); ++j)
+ {
+ if (!m_dockedList.at (j) && m_widgetList.at (j)->isVisible())
+ {
+ pos = snap (pos, m_widgetList.at (i), m_widgetList.at (j));
+ npos = QPoint (pos.x() - x_list.at (i),
+ pos.y() - y_list.at (i));
+ }
+ }
+ }
+ }
+ mv->move (npos);
+ for (int i = 1; i<m_widgetList.size(); ++i)
+ {
+ if (m_dockedList.at (i))
+ m_widgetList.at (i)->move(npos.x() + x_list.at (i),
+ npos.y() + y_list.at (i));
+ }
+ }
+ else
+ {
+ for (int i = 0; i<m_widgetList.size(); ++i)
+ {
+ m_dockedList[i] = false;
+ if (mv != m_widgetList.at (i) && !m_dockedList.at (i) && m_widgetList.at (i)->isVisible())
+ {
+ npos = snap (npos, mv, m_widgetList.at (i));
+ }
+ }
+ mv->move (npos);
+ }
+}
+
+void Dock::calculateDistances()
+{
+ x_list.clear();
+ y_list.clear();
+ foreach (QWidget *w, m_widgetList)
+ {
+ if (w!=m_mainWidget)
+ {
+ x_list.append (- m_mainWidget->x() + w->x());
+ y_list.append (- m_mainWidget->y() + w->y());
+ }
+ else
+ {
+ x_list.prepend (0);
+ y_list.prepend (0);
+ }
+ }
+}
+
+void Dock::updateDock()
+{
+ QWidget *mv = m_widgetList.at (0);
+ for (int j = 1; j<m_widgetList.size(); ++j)
+ {
+ QWidget *st = m_widgetList.at (j);
+ m_dockedList[j] = isDocked (mv, st);
+ }
+ for (int j = 1; j<m_widgetList.size(); ++j)
+ {
+ if (m_dockedList[j])
+ for (int i = 1; i<m_widgetList.size(); ++i)
+ {
+ if (!m_dockedList[i])
+ {
+ mv = m_widgetList.at (j);
+ QWidget *st = m_widgetList.at (i);
+ m_dockedList[i] = isDocked (mv, st);
+ }
+ }
+ }
+
+}
+
+bool Dock::isDocked (QWidget* mv, QWidget* st)
+{
+ int nx = mv->x() - st->x();
+ int ny = abs (mv->y() - st->y() + mv->height());
+ if (ny < 2 && nx > -mv->width() && nx < st->width()) //above
+ return true;
+
+ /***********/
+ nx = mv->x() - st->x();
+ ny = abs (mv->y() - st->y() - st->height());
+ if (ny < 2 && nx > -mv->width() && nx < st->width()) //near
+ return true;
+
+ /**************/
+ nx = abs (mv->x() - st->x() + mv->width());
+ ny = mv->y() - st->y();
+ if (nx < 2 && ny > -mv->height() && ny < st->height()) //left
+ return true;
+
+ /*****************/
+ nx = abs (mv->x() - st->x() - st->width());
+ ny = mv->y() - st->y();
+ if (nx < 2 && ny > -mv->height() && ny < st->height()) //right
+ return true;
+ return false;
+}
+
+void Dock::addActions (QList<QAction *> actions)
+{
+ m_actions << actions;
+ for (int i = 0; i<m_widgetList.size(); ++i)
+ m_widgetList.at (i)->addActions (actions);
+}
+
+bool Dock::isUnder(QWidget* upper, QWidget* nether, int dy)
+{
+ int nx = upper->x() - nether->x();
+ return abs (upper->y() + upper->height() -dy - nether->y()) < 2 &&
+ nx > -upper->width() && nx < nether->width();
+}
+
+void Dock::align(QWidget* w, int dy)
+{
+ for (int i = 0; i<m_dockedList.size(); ++i)
+ {
+ if (m_widgetList.at(i) != w && isUnder(w, m_widgetList.at(i), dy))
+ {
+ m_widgetList.at(i)->move(m_widgetList.at(i)->x(), m_widgetList.at(i)->y()+dy);
+ align(m_widgetList.at(i), dy);
+ }
+ }
+}
diff --git a/src/plugins/Ui/skinned/dock.h b/src/plugins/Ui/skinned/dock.h
new file mode 100644
index 000000000..e843ed142
--- /dev/null
+++ b/src/plugins/Ui/skinned/dock.h
@@ -0,0 +1,61 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 DOCK_H
+#define DOCK_H
+
+#include <QObject>
+#include <QPoint>
+#include <QWidget>
+
+class QAction;
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class Dock : public QObject
+{
+ Q_OBJECT
+public:
+ Dock(QObject *parent = 0);
+
+ ~Dock();
+
+ static Dock *instance();
+ void setMainWidget(QWidget*);
+ void addWidget(QWidget *);
+ void move(QWidget*, QPoint);
+ void calculateDistances();
+ void updateDock();
+ QPoint snap(QPoint, QWidget*, QWidget*);
+ void addActions(QList<QAction *> actions);
+ void align(QWidget*, int dy);
+
+private:
+ bool isDocked(QWidget*, QWidget*);
+ bool isUnder(QWidget*, QWidget*, int);
+ static Dock *m_instance;
+ QWidget *m_mainWidget;
+ QList <QWidget *> m_widgetList;
+ QList <bool> m_dockedList;
+ QList <int> x_list;
+ QList <int> y_list;
+ QList <QAction *> m_actions;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/eqgraph.cpp b/src/plugins/Ui/skinned/eqgraph.cpp
new file mode 100644
index 000000000..1d7d070f7
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqgraph.cpp
@@ -0,0 +1,163 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 <QPainter>
+
+#include "skin.h"
+#include "eqgraph.h"
+
+EQGraph::EQGraph (QWidget *parent)
+ : PixmapWidget (parent)
+{
+ m_skin = Skin::instance();
+ setPixmap (m_skin->getEqPart (Skin::EQ_GRAPH));
+ clear();
+ m_ratio = m_skin->ratio();
+ draw();
+ connect (m_skin, SIGNAL (skinChanged()), this, SLOT (updateSkin()));
+ setVisible(!m_skin->getEqPart (Skin::EQ_GRAPH).isNull());
+}
+
+EQGraph::~EQGraph()
+{}
+
+void EQGraph::addValue (int value)
+{
+ if (m_values.size() >= 10)
+ return;
+ m_values.append (value);
+ if (m_values.size() == 10)
+ {
+ draw();
+ }
+}
+
+void EQGraph::clear ()
+{
+ m_values.clear();
+ update();
+}
+
+void EQGraph::init_spline (double * x, double * y, int n, double * y2)
+{
+ int i, k;
+ double p, qn, sig, un, *u;
+
+ u = new double[n];
+
+ y2[0] = u[0] = 0.0;
+
+ for (i = 1; i < n - 1; i++)
+ {
+ sig = ((double) x[i] - x[i - 1]) / ((double) x[i + 1] - x[i - 1]);
+ p = sig * y2[i - 1] + 2.0;
+ y2[i] = (sig - 1.0) / p;
+ u[i] =
+ (((double) y[i + 1] - y[i]) / (x[i + 1] - x[i])) -
+ (((double) y[i] - y[i - 1]) / (x[i] - x[i - 1]));
+ u[i] = (6.0 * u[i] / (x[i + 1] - x[i - 1]) - sig * u[i - 1]) / p;
+ }
+ qn = un = 0.0;
+
+ y2[n - 1] = (un - qn * u[n - 2]) / (qn * y2[n - 2] + 1.0);
+ for (k = n - 2; k >= 0; k--)
+ y2[k] = y2[k] * y2[k + 1] + u[k];
+ delete[] u;
+}
+
+double EQGraph::eval_spline (double xa[], double ya[], double y2a[], int n, double x)
+{
+ int klo, khi, k;
+ double h, b, a;
+
+ klo = 0;
+ khi = n - 1;
+ while (khi - klo > 1)
+ {
+ k = (khi + klo) >> 1;
+ if (xa[k] > x)
+ khi = k;
+ else
+ klo = k;
+ }
+ h = xa[khi] - xa[klo];
+ a = (xa[khi] - x) / h;
+ b = (x - xa[klo]) / h;
+ return (a * ya[klo] + b * ya[khi] +
+ ((a * a * a - a) * y2a[klo] +
+ (b * b * b - b) * y2a[khi]) * (h * h) / 6.0);
+}
+
+void EQGraph::draw()
+{
+ QPixmap pixmap = m_skin->getEqPart (Skin::EQ_GRAPH);
+ if (pixmap.isNull())
+ pixmap = QPixmap(113*m_ratio,19*m_ratio);
+
+ if (m_values.size()!=10)
+ {
+ setPixmap (pixmap);
+ return;
+ }
+
+ int i, y, ymin, ymax, py = 0;
+ double x[] = { 0, 11, 23, 35, 47, 59, 71, 83, 97, 109 }, yf[10];
+ double *bands = new double[10];
+
+ for (int i = 0; i < 10; ++i)
+ {
+ bands[i] = m_values.at (i);
+ }
+
+ init_spline (x, bands, 10, yf);
+ for (i = 0; i < 113; i++)
+ {
+ y = 9 - (int) ((eval_spline (x, bands, yf, 10, i) * 9.0) / 20.0);
+ if (y < 0)
+ y = 0;
+ if (y > 18)
+ y = 18;
+ if (!i)
+ py = y;
+ if (y < py)
+ {
+ ymin = y;
+ ymax = py;
+ }
+ else
+ {
+ ymin = py;
+ ymax = y;
+ }
+ py = y;
+
+ QPainter paint (&pixmap);
+ paint.drawPixmap (i*m_ratio, y*m_ratio, m_skin->getEqSpline (y));
+ }
+ setPixmap (pixmap);
+ delete [] bands;
+}
+
+void EQGraph::updateSkin()
+{
+ m_ratio = m_skin->ratio();
+ draw();
+ setVisible(!m_skin->getEqPart (Skin::EQ_GRAPH).isNull());
+}
+
diff --git a/src/plugins/Ui/skinned/eqgraph.h b/src/plugins/Ui/skinned/eqgraph.h
new file mode 100644
index 000000000..96e5db521
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqgraph.h
@@ -0,0 +1,53 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 EQGRAPH_H
+#define EQGRAPH_H
+
+#include "pixmapwidget.h"
+
+class Skin;
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class EQGraph : public PixmapWidget
+{
+ Q_OBJECT
+public:
+ EQGraph (QWidget *parent = 0);
+
+ ~EQGraph();
+
+ void addValue (int);
+ void clear();
+
+private slots:
+ void updateSkin();
+
+private:
+ QList <int> m_values;
+ Skin *m_skin;
+ void init_spline (double * x, double * y, int n, double * y2);
+ double eval_spline (double xa[], double ya[], double y2a[], int n, double x);
+ void draw();
+ int m_ratio;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/eqpreset.cpp b/src/plugins/Ui/skinned/eqpreset.cpp
new file mode 100644
index 000000000..533dd4f67
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqpreset.cpp
@@ -0,0 +1,56 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 "eqpreset.h"
+
+EQPreset::EQPreset()
+ : QListWidgetItem()
+{
+ m_preamp = 0;
+ for(int i = 0; i < 10; ++i)
+ m_bands[i] = 0;
+}
+
+
+EQPreset::~EQPreset()
+{}
+
+void EQPreset::setGain(int n, double value)
+{
+ if(n > 9 || n < 0)
+ return;
+ m_bands[n] = value;
+}
+
+void EQPreset::setPreamp(double preamp)
+{
+ m_preamp = preamp;
+}
+
+double EQPreset::gain(int n)
+{
+ if(n > 9 || n < 0)
+ return 0;
+ return m_bands[n];
+}
+
+double EQPreset::preamp()
+{
+ return m_preamp;
+}
diff --git a/src/plugins/Ui/skinned/eqpreset.h b/src/plugins/Ui/skinned/eqpreset.h
new file mode 100644
index 000000000..fd99e6826
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqpreset.h
@@ -0,0 +1,47 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 EQPRESET_H
+#define EQPRESET_H
+
+#include <QListWidgetItem>
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class EQPreset : public QListWidgetItem
+{
+public:
+ EQPreset();
+
+ ~EQPreset();
+
+ void setGain(int n, double value);
+ void setPreamp(double);
+
+ double gain(int n);
+ double preamp();
+
+private:
+ double m_bands[10];
+ double m_preamp;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/eqslider.cpp b/src/plugins/Ui/skinned/eqslider.cpp
new file mode 100644
index 000000000..5c1925a4f
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqslider.cpp
@@ -0,0 +1,153 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 <QMouseEvent>
+#include <QPainter>
+#include <QWheelEvent>
+#include <math.h>
+
+#include "skin.h"
+
+#include "eqslider.h"
+
+
+EqSlider::EqSlider(QWidget *parent): PixmapWidget(parent)
+{
+ m_skin = Skin::instance();
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ setPixmap(m_skin->getEqSlider(0));
+ m_moving = false;
+ m_min = -20;
+ m_max = 20;
+ m_old = m_value = 0;
+ draw(false);
+ setCursor(m_skin->getCursor(Skin::CUR_EQSLID));
+}
+
+EqSlider::~EqSlider()
+{}
+
+void EqSlider::mousePressEvent(QMouseEvent *e)
+{
+ m_moving = true;
+ press_pos = e->y();
+ if (e->button() == Qt::MidButton)
+ {
+ m_value = 0;
+ emit sliderMoved(m_value);
+ m_old = m_value;
+ }
+ else if (m_pos<e->y() && e->y()<m_pos+11*m_skin->ratio())
+ {
+ press_pos = e->y()-m_pos;
+ }
+ else
+ {
+ m_value = convert(qMax(qMin(height()-12*m_skin->ratio(),e->y()-6*m_skin->ratio()),0));
+ press_pos = 6*m_skin->ratio();
+ if (m_value!=m_old)
+ {
+ emit sliderMoved(m_value);
+ m_old = m_value;
+ }
+ }
+ draw();
+}
+
+void EqSlider::mouseReleaseEvent(QMouseEvent*)
+{
+ m_moving = false;
+ draw(false);
+}
+
+void EqSlider::mouseMoveEvent(QMouseEvent* e)
+{
+ if (m_moving)
+ {
+ int po = e->y();
+ po = po - press_pos;
+
+ if (0<=po && po<=height()-12*m_skin->ratio())
+ {
+ m_value = convert(po);
+ draw();
+ if (m_value!=m_old)
+ {
+
+ m_old = m_value;
+ //qDebug ("%d",-m_value);
+ emit sliderMoved(-m_value);
+ }
+ }
+ }
+}
+
+double EqSlider::value()
+{
+ return - m_value;
+}
+
+void EqSlider::setValue(double p)
+{
+ if (m_moving)
+ return;
+ m_value = -p;
+ draw(false);
+}
+
+void EqSlider::setMax(double m)
+{
+ m_max = m;
+ draw(false);
+}
+
+void EqSlider::updateSkin()
+{
+ resize(m_skin->getEqSlider(0).size());
+ draw(false);
+ setCursor(m_skin->getCursor(Skin::CUR_EQSLID));
+}
+
+void EqSlider::draw(bool pressed)
+{
+ int p=int(ceil(double(m_value-m_min)*(height()-12*m_skin->ratio())/(m_max-m_min)));
+ m_pixmap = m_skin->getEqSlider(27-27*(m_value-m_min)/(m_max-m_min));
+ QPainter paint(&m_pixmap);
+ if (pressed)
+ paint.drawPixmap(1,p,m_skin->getButton(Skin::EQ_BT_BAR_P));
+ else
+ paint.drawPixmap(1,p,m_skin->getButton(Skin::EQ_BT_BAR_N));
+ setPixmap(m_pixmap);
+ m_pos = p;
+}
+
+double EqSlider::convert(int p)
+{
+ return (m_max - m_min)*(p)/(height() - 12*m_skin->ratio()) + m_min;
+}
+
+void EqSlider::wheelEvent(QWheelEvent *e)
+{
+ m_value -= e->delta()/60;
+ m_value = m_value > m_max ? m_max : m_value;
+ m_value = m_value < m_min ? m_min : m_value;
+ draw(false);
+ emit sliderMoved(m_value);
+}
+
diff --git a/src/plugins/Ui/skinned/eqslider.h b/src/plugins/Ui/skinned/eqslider.h
new file mode 100644
index 000000000..0a36a16ee
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqslider.h
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 EQSLIDER_H
+#define EQSLIDER_H
+
+#include "pixmapwidget.h"
+
+class QMouseEvent;
+class QWheelEvent;
+class Skin;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class EqSlider : public PixmapWidget
+{
+Q_OBJECT
+public:
+ EqSlider(QWidget *parent = 0);
+
+ ~EqSlider();
+
+ double value();
+
+public slots:
+ void setValue(double);
+ void setMax(double);
+
+signals:
+ void sliderMoved (double);
+
+private slots:
+ void updateSkin();
+
+private:
+ Skin *m_skin;
+ bool m_moving;
+ int press_pos;
+ double m_max, m_min, m_pos, m_value, m_old;
+ QPixmap m_pixmap;
+ double convert(int); // value = convert(position);
+ void draw(bool pressed = true);
+
+protected:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+ void wheelEvent(QWheelEvent *);
+
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/eqtitlebar.cpp b/src/plugins/Ui/skinned/eqtitlebar.cpp
new file mode 100644
index 000000000..e26a35e89
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqtitlebar.cpp
@@ -0,0 +1,189 @@
+/***************************************************************************
+ * Copyright (C) 2007-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 <QMouseEvent>
+#include <QMenu>
+#include <QSettings>
+#include "eqwidget.h"
+#include "skin.h"
+#include "shadedbar.h"
+#include "dock.h"
+#include "mainwindow.h"
+#include "button.h"
+#include "eqtitlebar.h"
+
+EqTitleBar::EqTitleBar(QWidget *parent)
+ : PixmapWidget(parent)
+{
+ m_volumeBar = 0;
+ m_balanceBar = 0;
+ m_shade2 = 0;
+ m_left = 0;
+ m_right = 0;
+ m_shaded = false;
+ m_align = false;
+ m_skin = Skin::instance();
+ m_eq = parentWidget();
+ m_mw = qobject_cast<MainWindow*>(m_eq->parent());
+ m_close = new Button(this, Skin::EQ_BT_CLOSE_N, Skin::EQ_BT_CLOSE_P, Skin::CUR_EQCLOSE);
+ connect(m_close, SIGNAL(clicked()),m_eq, SIGNAL(closed()));
+ m_shade = new Button(this, Skin::EQ_BT_SHADE1_N, Skin::EQ_BT_SHADE1_P, Skin::CUR_EQNORMAL);
+ connect(m_shade, SIGNAL(clicked()), SLOT(shade()));
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ if (settings.value("Equalizer/shaded", false).toBool())
+ shade();
+ m_align = true;
+ setActive(false);
+ setCursor(m_skin->getCursor(Skin::CUR_EQTITLE));
+ connect(m_skin, SIGNAL(skinChanged()), SLOT(updateSkin()));
+ updatePositions();
+}
+
+
+EqTitleBar::~EqTitleBar()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue("Equalizer/shaded", m_shaded);
+}
+
+void EqTitleBar::updatePositions()
+{
+ int r = m_skin->ratio();
+ m_close->move(r*264,r*3);
+ m_shade->move(r*254,r*3);
+ if(m_volumeBar)
+ m_volumeBar->move(r*61,r*4);
+ if(m_balanceBar)
+ m_balanceBar->move(r*164,r*4);
+ if(m_shade2)
+ m_shade2->move(r*254,r*3);
+}
+
+void EqTitleBar::setActive(bool active)
+{
+ if (active)
+ {
+ if (m_shaded)
+ setPixmap(m_skin->getEqPart(Skin::EQ_TITLEBAR_SHADED_A));
+ else
+ setPixmap(m_skin->getEqPart(Skin::EQ_TITLEBAR_A));
+ }
+ else
+ {
+ if (m_shaded)
+ setPixmap(m_skin->getEqPart(Skin::EQ_TITLEBAR_SHADED_I));
+ else
+ setPixmap(m_skin->getEqPart(Skin::EQ_TITLEBAR_I));
+ }
+}
+
+void EqTitleBar::setVolume(int left, int right)
+{
+ m_left = left;
+ m_right = right;
+ if (m_volumeBar && m_balanceBar)
+ {
+ int maxVol = qMax(left, right);
+ m_volumeBar->setValue(maxVol);
+ if (maxVol && !m_volumeBar->isPressed())
+ m_balanceBar->setValue((right - left)*100/maxVol);
+ }
+}
+
+void EqTitleBar::mousePressEvent(QMouseEvent* event)
+{
+ switch ((int) event->button ())
+ {
+ case Qt::LeftButton:
+ m_pos = event->pos();
+ break;
+ case Qt::RightButton:
+ m_mw->menu()->exec(event->globalPos());
+ }
+}
+
+void EqTitleBar::mouseMoveEvent(QMouseEvent* event)
+{
+ if (m_pos.x() < width() - 30 * m_skin->ratio())
+ {
+ QPoint npos = (event->globalPos()-m_pos);
+ Dock::instance()->move(m_eq, npos);
+ }
+}
+
+void EqTitleBar::mouseReleaseEvent(QMouseEvent*)
+{
+ Dock::instance()->updateDock();
+}
+
+void EqTitleBar::mouseDoubleClickEvent (QMouseEvent *)
+{
+ EqTitleBar::shade();
+}
+
+void EqTitleBar::shade()
+{
+ m_shaded = !m_shaded;
+ int r = m_skin->ratio();
+
+ if (m_shaded)
+ {
+ setPixmap(m_skin->getEqPart(Skin::EQ_TITLEBAR_SHADED_A));
+ m_shade->hide();
+ m_shade2 = new Button(this, Skin::EQ_BT_SHADE2_N, Skin::EQ_BT_SHADE2_P, Skin::CUR_EQNORMAL);
+ m_shade2->move(r*254,r*3);
+ connect(m_shade2, SIGNAL(clicked()), SLOT(shade()));
+ m_shade2->show();
+ m_volumeBar = new ShadedBar(this, Skin::EQ_VOLUME1, Skin::EQ_VOLUME2, Skin::EQ_VOLUME3);
+ m_volumeBar->move(r*61,r*4);
+ m_volumeBar->show();
+ connect(m_volumeBar, SIGNAL(sliderMoved(int)),SLOT(updateVolume()));
+ m_balanceBar = new ShadedBar(this, Skin::EQ_BALANCE1, Skin::EQ_BALANCE2, Skin::EQ_BALANCE3);
+ m_balanceBar->move(r*164,r*4);
+ m_balanceBar->setRange(-100, 100);
+ m_balanceBar->show();
+ connect(m_balanceBar, SIGNAL(sliderMoved(int)),SLOT(updateVolume()));
+ setVolume(m_left, m_right); //show current volume and balance
+ }
+ else
+ {
+ setPixmap(m_skin->getEqPart(Skin::EQ_TITLEBAR_A));
+ m_shade2->deleteLater();
+ m_volumeBar->deleteLater();
+ m_balanceBar->deleteLater();
+ m_volumeBar = 0;
+ m_balanceBar = 0;
+ m_shade2 = 0;
+ m_shade->show();
+ }
+ qobject_cast<EqWidget *>(m_eq)->setMimimalMode(m_shaded);
+ if (m_align)
+ Dock::instance()->align(m_eq, m_shaded? -102*r: 102*r);
+}
+
+void EqTitleBar::updateVolume()
+{
+ m_mw->setVolume(m_volumeBar->value(), m_balanceBar->value());
+}
+
+void EqTitleBar::updateSkin()
+{
+ setCursor(m_skin->getCursor(Skin::CUR_EQTITLE));
+ updatePositions();
+}
diff --git a/src/plugins/Ui/skinned/eqtitlebar.h b/src/plugins/Ui/skinned/eqtitlebar.h
new file mode 100644
index 000000000..d2ea09c6a
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqtitlebar.h
@@ -0,0 +1,75 @@
+/***************************************************************************
+ * Copyright (C) 2007-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 EQTITLEBAR_H
+#define EQTITLEBAR_H
+
+#include "pixmapwidget.h"
+
+class QMouseEvent;
+class Skin;
+class MainWindow;
+class Button;
+class ShadedBar;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class EqTitleBar : public PixmapWidget
+{
+Q_OBJECT
+public:
+ EqTitleBar(QWidget *parent = 0);
+
+ ~EqTitleBar();
+
+ void setActive(bool);
+
+public slots:
+ void setVolume(int left, int right);
+
+private slots:
+ void shade();
+ void updateVolume();
+ void updateSkin();
+
+private:
+ void updatePositions();
+ Skin* m_skin;
+ bool m_active;
+ int m_left;
+ int m_right;
+ QPoint m_pos;
+ QWidget* m_eq;
+ MainWindow* m_mw;
+ Button* m_close;
+ Button* m_shade;
+ Button* m_shade2;
+ bool m_shaded, m_align;
+ ShadedBar* m_volumeBar;
+ ShadedBar* m_balanceBar;
+
+protected:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+ void mouseDoubleClickEvent (QMouseEvent *);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/eqwidget.cpp b/src/plugins/Ui/skinned/eqwidget.cpp
new file mode 100644
index 000000000..1327b1bd9
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqwidget.cpp
@@ -0,0 +1,446 @@
+/***************************************************************************
+ * Copyright (C) 2006-2010 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 <QEvent>
+#include <QMenu>
+#include <QInputDialog>
+#include <QCloseEvent>
+#include <qmmpui/filedialog.h>
+#include <qmmp/soundcore.h>
+#include "skin.h"
+#include "eqslider.h"
+#include "eqtitlebar.h"
+#include "togglebutton.h"
+#include "eqgraph.h"
+#include "button.h"
+#include "eqpreset.h"
+#include "preseteditor.h"
+#include "mainwindow.h"
+#include "playlist.h"
+#include "windowsystem.h"
+#include "eqwidget.h"
+
+EqWidget::EqWidget (QWidget *parent)
+ : PixmapWidget (parent)
+{
+ setWindowTitle(tr("Equalizer"));
+ m_shaded = false;
+ m_skin = Skin::instance();
+ setPixmap (m_skin->getEqPart (Skin::EQ_MAIN));
+ setCursor (m_skin->getCursor (Skin::CUR_EQNORMAL));
+ m_titleBar = new EqTitleBar (this);
+ m_titleBar->move (0,0);
+ connect (m_skin, SIGNAL (skinChanged()), this, SLOT (updateSkin()));
+
+ m_preamp = new EqSlider (this);
+ connect (m_preamp,SIGNAL (sliderMoved (double)),SLOT (writeEq()));
+
+ m_on = new ToggleButton (this,Skin::EQ_BT_ON_N,Skin::EQ_BT_ON_P, Skin::EQ_BT_OFF_N,Skin::EQ_BT_OFF_P);
+ connect (m_on, SIGNAL (clicked(bool)), SLOT(writeEq()));
+
+ m_autoButton = new ToggleButton(this, Skin::EQ_BT_AUTO_1_N, Skin::EQ_BT_AUTO_1_P,
+ Skin::EQ_BT_AUTO_0_N, Skin::EQ_BT_AUTO_0_P);
+ m_eqg = new EQGraph(this);
+ m_presetsMenu = new QMenu(this);
+ m_presetButton = new Button (this, Skin::EQ_BT_PRESETS_N, Skin::EQ_BT_PRESETS_P, Skin::CUR_EQNORMAL);
+ connect(m_presetButton, SIGNAL(clicked()), SLOT(showPresetsMenu()));
+ connect(SoundCore::instance(), SIGNAL(eqSettingsChanged()), SLOT(readEq()));
+
+ for (int i = 0; i<10; ++i)
+ {
+ m_sliders << new EqSlider (this);
+ connect (m_sliders.at (i), SIGNAL (sliderMoved (double)),SLOT (writeEq()));
+ }
+ readSettings();
+ createActions();
+ updatePositions();
+ updateMask();
+ connect(SoundCore::instance(), SIGNAL(volumeChanged(int, int)), m_titleBar, SLOT(setVolume(int, int)));
+#ifdef Q_WS_X11
+ QString wm_name = WindowSystem::netWindowManagerName();
+ if(wm_name.contains("metacity", Qt::CaseInsensitive) ||
+ wm_name.contains("openbox", Qt::CaseInsensitive))
+ setWindowFlags (Qt::Tool | Qt::FramelessWindowHint);
+ else
+#endif
+ setWindowFlags (Qt::Dialog | Qt::FramelessWindowHint);
+}
+
+EqWidget::~EqWidget()
+{
+ while (!m_presets.isEmpty())
+ delete m_presets.takeFirst();
+ while (!m_autoPresets.isEmpty())
+ delete m_autoPresets.takeFirst();
+}
+
+void EqWidget::updatePositions()
+{
+ int r = m_skin->ratio();
+ m_preamp->move (21*r,38*r);
+ m_on->move (14*r,18*r);
+ m_autoButton->move(39*r,18*r);
+ m_eqg->move(87*r,17*r);
+ m_presetButton->move(217*r,18*r);
+ for (int i = 0; i < 10; ++i)
+ m_sliders.at (i)->move ((78+i*18)*r,38*r);
+}
+
+void EqWidget::changeEvent (QEvent * event)
+{
+ if (event->type() == QEvent::ActivationChange)
+ {
+ m_titleBar->setActive(isActiveWindow());
+ }
+}
+
+void EqWidget::closeEvent (QCloseEvent* e)
+{
+ if (e->spontaneous ())
+ emit closed();
+ writeSettings();
+}
+
+void EqWidget::updateSkin()
+{
+ m_titleBar->setActive (false);
+ setPixmap (m_skin->getEqPart (Skin::EQ_MAIN));
+ setCursor (m_skin->getCursor (Skin::CUR_EQNORMAL));
+ setMimimalMode(m_shaded);
+ updatePositions();
+}
+
+void EqWidget::setMimimalMode(bool b)
+{
+ m_shaded = b;
+ int r = m_skin->ratio();
+
+ if(m_shaded)
+ resize(r*275,r*14);
+ else
+ resize(r*275,r*116);
+ updateMask();
+}
+
+void EqWidget::readSettings()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ move (settings.value ("Equalizer/pos", QPoint (100, 216)).toPoint()); //geometry
+ readEq();
+ //equalizer presets
+ QSettings eq_preset (QDir::homePath() +"/.qmmp/eq.preset", QSettings::IniFormat);
+ for (int i = 1; true; ++i)
+ {
+ if (eq_preset.contains("Presets/Preset"+QString("%1").arg(i)))
+ {
+ QString name = eq_preset.value("Presets/Preset"+QString("%1").arg(i),
+ tr("preset")).toString();
+ EQPreset *preset = new EQPreset();
+ preset->setText(name);
+ eq_preset.beginGroup(name);
+ for (int j = 0; j < 10; ++j)
+ {
+ preset->setGain(j,eq_preset.value("Band"+QString("%1").arg(j),
+ 0).toDouble());
+ }
+ preset->setPreamp(eq_preset.value("Preamp",0).toDouble());
+ m_presets.append(preset);
+ eq_preset.endGroup();
+ }
+ else
+ break;
+ }
+ //equalizer auto-load presets
+ QSettings eq_auto (QDir::homePath() +"/.qmmp/eq.auto_preset", QSettings::IniFormat);
+ for (int i = 1; true; ++i)
+ {
+ if (eq_auto.contains("Presets/Preset"+QString("%1").arg(i)))
+ {
+ QString name = eq_auto.value("Presets/Preset"+QString("%1").arg(i),
+ tr("preset")).toString();
+ EQPreset *preset = new EQPreset();
+ preset->setText(name);
+ eq_auto.beginGroup(name);
+ for (int j = 0; j < 10; ++j)
+ {
+ preset->setGain(j,eq_auto.value("Band"+QString("%1").arg(j),
+ 0).toDouble());
+ }
+ preset->setPreamp(eq_auto.value("Preamp",0).toDouble());
+ m_autoPresets.append(preset);
+ eq_auto.endGroup();
+ }
+ else
+ break;
+ }
+}
+
+void EqWidget::writeSettings()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue ("Equalizer/pos", this->pos()); //geometry
+ //equalizer presets
+ QSettings eq_preset (QDir::homePath() +"/.qmmp/eq.preset", QSettings::IniFormat);
+ eq_preset.clear ();
+ for (int i = 0; i < m_presets.size(); ++i)
+ {
+ eq_preset.setValue("Presets/Preset"+QString("%1").arg(i+1),
+ m_presets.at(i)->text());
+ eq_preset.beginGroup(m_presets.at(i)->text());
+ for (int j = 0; j < 10; ++j)
+ {
+ eq_preset.setValue("Band"+QString("%1").arg(j),m_presets.at(i)->gain(j));
+ }
+ eq_preset.setValue("Preamp",m_presets.at(i)->preamp());
+ eq_preset.endGroup();
+ }
+ //equalizer auto-load presets
+ QSettings eq_auto (QDir::homePath() +"/.qmmp/eq.auto_preset",
+ QSettings::IniFormat);
+ eq_auto.clear();
+ for (int i = 0; i < m_autoPresets.size(); ++i)
+ {
+ eq_auto.setValue("Presets/Preset"+QString("%1").arg(i+1),
+ m_autoPresets.at(i)->text());
+ eq_auto.beginGroup(m_autoPresets.at(i)->text());
+ for (int j = 0; j < 10; ++j)
+ {
+ eq_auto.setValue("Band"+QString("%1").arg(j),m_autoPresets.at(i)->gain(j));
+ }
+ eq_auto.setValue("Preamp",m_autoPresets.at(i)->preamp());
+ eq_auto.endGroup();
+ }
+}
+
+void EqWidget::readEq()
+{
+ m_eqg->clear();
+ EqSettings eqSettings = SoundCore::instance()->eqSettings();
+ m_preamp->setValue(eqSettings.preamp());
+ for (int i=0; i<10; ++i)
+ {
+ m_sliders.at(i)->setValue(eqSettings.gain(i));
+ m_eqg->addValue(m_sliders.at(i)->value());
+ }
+ m_on->setON(eqSettings.isEnabled());
+}
+
+void EqWidget::writeEq()
+{
+ m_eqg->clear();
+ EqSettings eqSettings;
+ eqSettings.setPreamp(m_preamp->value());
+ for (int i=0; i<10; ++i)
+ {
+ eqSettings.setGain(i,m_sliders.at(i)->value());
+ m_eqg->addValue(m_sliders.at(i)->value());
+ }
+ eqSettings.setEnabled(m_on->isChecked());
+ SoundCore::instance()->setEqSettings(eqSettings);
+}
+
+void EqWidget::createActions()
+{
+ m_presetsMenu->addAction(tr("&Load/Delete"),this, SLOT(showEditor()));
+ m_presetsMenu->addSeparator();
+ m_presetsMenu->addAction(QIcon::fromTheme("document-save"), tr("&Save Preset"),
+ this, SLOT(savePreset()));
+ m_presetsMenu->addAction(QIcon::fromTheme("document-save"), tr("&Save Auto-load Preset"),
+ this, SLOT(saveAutoPreset()));
+ m_presetsMenu->addAction(QIcon::fromTheme("document-open"), tr("&Import"),
+ this, SLOT(importWinampEQF()));
+ m_presetsMenu->addSeparator();
+ m_presetsMenu->addAction(QIcon::fromTheme("edit-clear"), tr("&Clear"), this, SLOT(reset()));
+}
+
+void EqWidget::showPresetsMenu()
+{
+ m_presetsMenu->exec(m_presetButton->mapToGlobal(QPoint(0, 0)));
+}
+
+void EqWidget::reset()
+{
+ for (int i = 0; i < m_sliders.size(); ++i)
+ m_sliders.at(i)->setValue(0);
+ m_preamp->setValue(0);
+ writeEq();
+}
+
+void EqWidget::showEditor()
+{
+ PresetEditor *editor = new PresetEditor(this);
+ editor->addPresets(m_presets);
+ editor->addAutoPresets(m_autoPresets);
+ connect (editor, SIGNAL(presetLoaded(EQPreset*)), SLOT(setPreset(EQPreset*)));
+ connect (editor, SIGNAL(presetDeleted(EQPreset*)), SLOT(deletePreset(EQPreset*)));
+ editor->show();
+}
+
+void EqWidget::savePreset()
+{
+ bool ok;
+ QString text = QInputDialog::getText(this, tr("Saving Preset"),
+ tr("Preset name:"), QLineEdit::Normal,
+ tr("preset #")+QString("%1").arg(m_presets.size()+1), &ok);
+ if (ok)
+ {
+ EQPreset* preset = new EQPreset;
+ preset->setText(text);
+ preset->setPreamp(m_preamp->value());
+ for (int i = 0; i<10; ++i)
+ preset->setGain(i, m_sliders.at (i)->value());
+ foreach(EQPreset *p, m_presets) //remove preset with same name
+ {
+ if (p->text() == text)
+ {
+ m_presets.removeAll(p);
+ delete p;
+ }
+ }
+ m_presets.append(preset);
+ }
+}
+
+void EqWidget::saveAutoPreset()
+{
+ PlayList* playlist = qobject_cast<MainWindow*>(parent())->playlist();
+ if (!playlist->currentItem())
+ return;
+ //delete preset if it already exists
+ EQPreset* preset = findPreset(playlist->currentItem()->url().section("/",-1));
+ if (preset)
+ deletePreset(preset);
+ //create new preset
+ preset = new EQPreset();
+ preset->setText(playlist->currentItem()->url().section("/",-1));
+ preset->setPreamp(m_preamp->value());
+ for (int i = 0; i<10; ++i)
+ {
+ preset->setGain(i, m_sliders.at (i)->value());
+ }
+ m_autoPresets.append(preset);
+}
+
+void EqWidget::setPreset(EQPreset* preset)
+{
+ for (int i = 0; i<10; ++i)
+ m_sliders.at(i)->setValue(preset->gain(i));
+ m_preamp->setValue(preset->preamp());
+ writeEq();
+}
+
+void EqWidget::deletePreset(EQPreset* preset)
+{
+ int p = m_presets.indexOf(preset);
+ if (p != -1)
+ {
+ delete m_presets.takeAt(p);
+ return;
+ }
+ p = m_autoPresets.indexOf(preset);
+ if (p != -1)
+ {
+ delete m_autoPresets.takeAt(p);
+ return;
+ }
+}
+
+void EqWidget::loadPreset(const QString &name)
+{
+ if (m_autoButton->isChecked())
+ {
+ EQPreset *preset = findPreset(name);
+ if (preset)
+ setPreset(preset);
+ else
+ reset();
+ }
+}
+
+EQPreset *EqWidget::findPreset(const QString &name)
+{
+ foreach(EQPreset *preset, m_autoPresets)
+ {
+ if (preset->text() == name)
+ return preset;
+ }
+ return 0;
+}
+
+void EqWidget::importWinampEQF()
+{
+ char header[31];
+ char name[257];
+ char bands[11];
+ QString path = FileDialog::getOpenFileName(this, tr("Import Preset"),
+ "/home",
+ QString("Winamp EQF (*.q1)"));
+
+ QFile file(path);
+ file.open(QIODevice::ReadOnly);
+ file.read (header, 31);
+ if (QString::fromAscii(header).contains("Winamp EQ library file v1.1"))
+ {
+ while (file.read (name, 257))
+ {
+ EQPreset* preset = new EQPreset;
+ preset->setText(QString::fromAscii(name));
+
+ file.read(bands,11);
+
+ for (int i = 0; i<10; ++i)
+ {
+ preset->setGain(i, 20 - bands[i]*40/64);
+ }
+ preset->setPreamp(20 - bands[10]*40/64);
+ m_presets.append(preset);
+ }
+ }
+ file.close();
+
+}
+
+void EqWidget::keyPressEvent (QKeyEvent *ke)
+{
+ QKeyEvent event = QKeyEvent(ke->type(), ke->key(),
+ ke->modifiers(), ke->text(),ke->isAutoRepeat(), ke->count());
+ QApplication::sendEvent(qobject_cast<MainWindow*>(parent())->playlist(), &event);
+}
+
+#ifdef Q_WS_X11
+bool EqWidget::event (QEvent *event)
+{
+ if(event->type() == QEvent::WinIdChange || event->type() == QEvent::Show)
+ {
+ WindowSystem::ghostWindow(winId());
+ WindowSystem::setWinHint(winId(), "equalizer", "Qmmp");
+ }
+ return QWidget::event(event);
+}
+#endif
+
+void EqWidget::updateMask()
+{
+ clearMask();
+ setMask(QRegion(0,0,width(),height()));
+ QRegion region = m_skin->getRegion(m_shaded? Skin::EQUALIZER_WS : Skin::EQUALIZER);
+ if (!region.isEmpty())
+ setMask(region);
+}
diff --git a/src/plugins/Ui/skinned/eqwidget.h b/src/plugins/Ui/skinned/eqwidget.h
new file mode 100644
index 000000000..7d0fb6086
--- /dev/null
+++ b/src/plugins/Ui/skinned/eqwidget.h
@@ -0,0 +1,102 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 EQWIDGET_H
+#define EQWIDGET_H
+
+#include "pixmapwidget.h"
+#include <qmmp/output.h>
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+
+class QMenu;
+class Skin;
+class EqTitleBar;
+class EqSlider;
+class ToggleButton;
+class EQGraph;
+class Button;
+class EQPreset;
+class PlayListItem;
+class SoundCore;
+
+class EqWidget : public PixmapWidget
+{
+ Q_OBJECT
+public:
+ EqWidget(QWidget *parent = 0);
+
+ ~EqWidget();
+
+ /*!
+ * necessary for auto-load presets
+ */
+ void loadPreset(const QString &name);
+ void setMimimalMode(bool b = true);
+
+signals:
+ void closed();
+
+private slots:
+ void updateSkin();
+ void readEq();
+ void writeEq();
+ void showPresetsMenu();
+ void reset();
+ void showEditor();
+ void savePreset();
+ void saveAutoPreset();
+ void setPreset(EQPreset*);
+ void deletePreset(EQPreset*);
+ void importWinampEQF();
+
+private:
+ void updatePositions();
+ void readSettings();
+ void writeSettings();
+ void createActions();
+ void updateMask();
+ EQPreset *findPreset(const QString &name);
+ //events
+ virtual void keyPressEvent (QKeyEvent *);
+ virtual void changeEvent(QEvent*);
+ virtual void closeEvent(QCloseEvent*);
+#ifdef Q_WS_X11
+ virtual bool event (QEvent *event);
+#endif
+
+ Skin *m_skin;
+ EqTitleBar *m_titleBar;
+ EqSlider *m_preamp;
+ Button *m_presetButton;
+ QList<EqSlider*> m_sliders;
+ QPoint m_pos;
+ ToggleButton *m_on;
+ ToggleButton *m_autoButton;
+ EQGraph *m_eqg;
+ QMenu *m_presetsMenu;
+ QList<EQPreset*> m_presets;
+ QList<EQPreset*> m_autoPresets;
+ QString m_autoName;
+ bool m_shaded;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/fft.c b/src/plugins/Ui/skinned/fft.c
new file mode 100644
index 000000000..7ca1978a5
--- /dev/null
+++ b/src/plugins/Ui/skinned/fft.c
@@ -0,0 +1,296 @@
+/* fft.c: Iterative implementation of a FFT
+ * Copyright (C) 1999 Richard Boulton <richard@tartarus.org>
+ * Convolution stuff by Ralph Loader <suckfish@ihug.co.nz>
+ *
+ * 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.
+ */
+
+/*
+ * TODO
+ * Remove compiling in of FFT_BUFFER_SIZE? (Might slow things down, but would
+ * be nice to be able to change size at runtime.)
+ * Finish making / checking thread-safety.
+ * More optimisations.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "fft.h"
+
+//#include <glib.h>
+#include <stdlib.h>
+#include <math.h>
+#ifndef PI
+#ifdef M_PI
+#define PI M_PI
+#else
+#define PI 3.14159265358979323846 /* pi */
+#endif
+#endif
+
+/* ########### */
+/* # Structs # */
+/* ########### */
+
+struct _struct_fft_state {
+ /* Temporary data stores to perform FFT in. */
+ float real[FFT_BUFFER_SIZE];
+ float imag[FFT_BUFFER_SIZE];
+};
+
+/* ############################# */
+/* # Local function prototypes # */
+/* ############################# */
+
+static void fft_prepare(const sound_sample * input, float *re, float *im);
+static void fft_calculate(float *re, float *im);
+static void fft_output(const float *re, const float *im, float *output);
+static int reverseBits(unsigned int initial);
+
+/* #################### */
+/* # Global variables # */
+/* #################### */
+
+/* Table to speed up bit reverse copy */
+static unsigned int bitReverse[FFT_BUFFER_SIZE];
+
+/* The next two tables could be made to use less space in memory, since they
+ * overlap hugely, but hey. */
+static float sintable[FFT_BUFFER_SIZE / 2];
+static float costable[FFT_BUFFER_SIZE / 2];
+
+/* ############################## */
+/* # Externally called routines # */
+/* ############################## */
+
+/* --------- */
+/* FFT stuff */
+/* --------- */
+
+/*
+ * Initialisation routine - sets up tables and space to work in.
+ * Returns a pointer to internal state, to be used when performing calls.
+ * On error, returns NULL.
+ * The pointer should be freed when it is finished with, by fft_close().
+ */
+fft_state *
+fft_init(void)
+{
+ fft_state *state;
+ unsigned int i;
+
+ state = (fft_state *) malloc(sizeof(fft_state));
+ if (!state)
+ return NULL;
+
+ for (i = 0; i < FFT_BUFFER_SIZE; i++) {
+ bitReverse[i] = reverseBits(i);
+ }
+ for (i = 0; i < FFT_BUFFER_SIZE / 2; i++) {
+ float j = 2 * PI * i / FFT_BUFFER_SIZE;
+ costable[i] = cos(j);
+ sintable[i] = sin(j);
+ }
+
+ return state;
+}
+
+/*
+ * Do all the steps of the FFT, taking as input sound data (as described in
+ * sound.h) and returning the intensities of each frequency as floats in the
+ * range 0 to ((FFT_BUFFER_SIZE / 2) * 32768) ^ 2
+ *
+ * FIXME - the above range assumes no frequencies present have an amplitude
+ * larger than that of the sample variation. But this is false: we could have
+ * a wave such that its maximums are always between samples, and it's just
+ * inside the representable range at the places samples get taken.
+ * Question: what _is_ the maximum value possible. Twice that value? Root
+ * two times that value? Hmmm. Think it depends on the frequency, too.
+ *
+ * The input array is assumed to have FFT_BUFFER_SIZE elements,
+ * and the output array is assumed to have (FFT_BUFFER_SIZE / 2 + 1) elements.
+ * state is a (non-NULL) pointer returned by fft_init.
+ */
+void
+fft_perform(const sound_sample * input, float *output, fft_state * state)
+{
+ /* Convert data from sound format to be ready for FFT */
+ fft_prepare(input, state->real, state->imag);
+
+ /* Do the actual FFT */
+ fft_calculate(state->real, state->imag);
+
+ /* Convert the FFT output into intensities */
+ fft_output(state->real, state->imag, output);
+}
+
+/*
+ * Free the state.
+ */
+void
+fft_close(fft_state * state)
+{
+ if (state)
+ free(state);
+}
+
+/* ########################### */
+/* # Locally called routines # */
+/* ########################### */
+
+/*
+ * Prepare data to perform an FFT on
+ */
+static void
+fft_prepare(const sound_sample * input, float *re, float *im)
+{
+ unsigned int i;
+ float *realptr = re;
+ float *imagptr = im;
+
+ /* Get input, in reverse bit order */
+ for (i = 0; i < FFT_BUFFER_SIZE; i++) {
+ *realptr++ = input[bitReverse[i]];
+ *imagptr++ = 0;
+ }
+}
+
+/*
+ * Take result of an FFT and calculate the intensities of each frequency
+ * Note: only produces half as many data points as the input had.
+ * This is roughly a consequence of the Nyquist sampling theorm thingy.
+ * (FIXME - make this comment better, and helpful.)
+ *
+ * The two divisions by 4 are also a consequence of this: the contributions
+ * returned for each frequency are split into two parts, one at i in the
+ * table, and the other at FFT_BUFFER_SIZE - i, except for i = 0 and
+ * FFT_BUFFER_SIZE which would otherwise get float (and then 4* when squared)
+ * the contributions.
+ */
+static void
+fft_output(const float *re, const float *im, float *output)
+{
+ float *outputptr = output;
+ const float *realptr = re;
+ const float *imagptr = im;
+ float *endptr = output + FFT_BUFFER_SIZE / 2;
+
+#ifdef DEBUG
+ unsigned int i, j;
+#endif
+
+ while (outputptr <= endptr) {
+ *outputptr = (*realptr * *realptr) + (*imagptr * *imagptr);
+ outputptr++;
+ realptr++;
+ imagptr++;
+ }
+ /* Do divisions to keep the constant and highest frequency terms in scale
+ * with the other terms. */
+ *output /= 4;
+ *endptr /= 4;
+
+#ifdef DEBUG
+ printf("Recalculated input:\n");
+ for (i = 0; i < FFT_BUFFER_SIZE; i++) {
+ float val_real = 0;
+ float val_imag = 0;
+ for (j = 0; j < FFT_BUFFER_SIZE; j++) {
+ float fact_real = cos(-2 * j * i * PI / FFT_BUFFER_SIZE);
+ float fact_imag = sin(-2 * j * i * PI / FFT_BUFFER_SIZE);
+ val_real += fact_real * re[j] - fact_imag * im[j];
+ val_imag += fact_real * im[j] + fact_imag * re[j];
+ }
+ printf("%5d = %8f + i * %8f\n", i,
+ val_real / FFT_BUFFER_SIZE, val_imag / FFT_BUFFER_SIZE);
+ }
+ printf("\n");
+#endif
+}
+
+/*
+ * Actually perform the FFT
+ */
+static void
+fft_calculate(float *re, float *im)
+{
+ unsigned int i, j, k;
+ unsigned int exchanges;
+ float fact_real, fact_imag;
+ float tmp_real, tmp_imag;
+ unsigned int factfact;
+
+ /* Set up some variables to reduce calculation in the loops */
+ exchanges = 1;
+ factfact = FFT_BUFFER_SIZE / 2;
+
+ /* Loop through the divide and conquer steps */
+ for (i = FFT_BUFFER_SIZE_LOG; i != 0; i--) {
+ /* In this step, we have 2 ^ (i - 1) exchange groups, each with
+ * 2 ^ (FFT_BUFFER_SIZE_LOG - i) exchanges
+ */
+ /* Loop through the exchanges in a group */
+ for (j = 0; j != exchanges; j++) {
+ /* Work out factor for this exchange
+ * factor ^ (exchanges) = -1
+ * So, real = cos(j * PI / exchanges),
+ * imag = sin(j * PI / exchanges)
+ */
+ fact_real = costable[j * factfact];
+ fact_imag = sintable[j * factfact];
+
+ /* Loop through all the exchange groups */
+ for (k = j; k < FFT_BUFFER_SIZE; k += exchanges << 1) {
+ int k1 = k + exchanges;
+ /* newval[k] := val[k] + factor * val[k1]
+ * newval[k1] := val[k] - factor * val[k1]
+ **/
+#ifdef DEBUG
+ printf("%d %d %d\n", i, j, k);
+ printf("Exchange %d with %d\n", k, k1);
+ printf("Factor %9f + i * %8f\n", fact_real, fact_imag);
+#endif
+ /* FIXME - potential scope for more optimization here? */
+ tmp_real = fact_real * re[k1] - fact_imag * im[k1];
+ tmp_imag = fact_real * im[k1] + fact_imag * re[k1];
+ re[k1] = re[k] - tmp_real;
+ im[k1] = im[k] - tmp_imag;
+ re[k] += tmp_real;
+ im[k] += tmp_imag;
+#ifdef DEBUG
+ for (k1 = 0; k1 < FFT_BUFFER_SIZE; k1++) {
+ printf("%5d = %8f + i * %8f\n", k1, real[k1], imag[k1]);
+ }
+#endif
+ }
+ }
+ exchanges <<= 1;
+ factfact >>= 1;
+ }
+}
+
+static int
+reverseBits(unsigned int initial)
+{
+ unsigned int reversed = 0, loop;
+ for (loop = 0; loop < FFT_BUFFER_SIZE_LOG; loop++) {
+ reversed <<= 1;
+ reversed += (initial & 1);
+ initial >>= 1;
+ }
+ return reversed;
+}
diff --git a/src/plugins/Ui/skinned/fft.h b/src/plugins/Ui/skinned/fft.h
new file mode 100644
index 000000000..431afa365
--- /dev/null
+++ b/src/plugins/Ui/skinned/fft.h
@@ -0,0 +1,45 @@
+/* fft.h: Header for iterative implementation of a FFT
+ * Copyright (C) 1999 Richard Boulton <richard@tartarus.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.
+ */
+
+#ifndef _FFT_H_
+#define _FFT_H_
+
+#define FFT_BUFFER_SIZE_LOG 9
+
+#define FFT_BUFFER_SIZE (1 << FFT_BUFFER_SIZE_LOG)
+
+/* sound sample - should be an signed 16 bit value */
+typedef short int sound_sample;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FFT library */
+ typedef struct _struct_fft_state fft_state;
+ fft_state *fft_init(void);
+ void fft_perform(const sound_sample * input, float *output,
+ fft_state * state);
+ void fft_close(fft_state * state);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _FFT_H_ */
diff --git a/src/plugins/Ui/skinned/forms/aboutdialog.ui b/src/plugins/Ui/skinned/forms/aboutdialog.ui
new file mode 100644
index 000000000..f9ea40fca
--- /dev/null
+++ b/src/plugins/Ui/skinned/forms/aboutdialog.ui
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AboutDialog</class>
+ <widget class="QDialog" name="AboutDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>523</width>
+ <height>511</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>About Qmmp</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="margin">
+ <number>9</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="pixmapLabel">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="../images/images.qrc">:/logo-qmmp.png</pixmap>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="aboutTab">
+ <attribute name="title">
+ <string>About</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="0">
+ <widget class="QTextEdit" name="aboutTextEdit">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="authorsTab">
+ <attribute name="title">
+ <string>Authors</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="0" column="0">
+ <widget class="QTextEdit" name="authorsTextEdit">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>Translators</string>
+ </attribute>
+ <layout class="QVBoxLayout">
+ <item>
+ <widget class="QTextEdit" name="translatorsTextEdit">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="thanksToTab">
+ <attribute name="title">
+ <string>Thanks To</string>
+ </attribute>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QTextEdit" name="thanksToTextEdit">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="licenseTab">
+ <attribute name="title">
+ <string>License Agreement</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QTextEdit" name="licenseTextEdit">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ <property name="overwriteMode">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="../images/images.qrc"/>
+ </resources>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>AboutDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>AboutDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Ui/skinned/forms/addurldialog.ui b/src/plugins/Ui/skinned/forms/addurldialog.ui
new file mode 100644
index 000000000..64ac928fc
--- /dev/null
+++ b/src/plugins/Ui/skinned/forms/addurldialog.ui
@@ -0,0 +1,99 @@
+<ui version="4.0" >
+ <class>AddUrlDialog</class>
+ <widget class="QDialog" name="AddUrlDialog" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>394</width>
+ <height>77</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Enter URL to add</string>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="leftMargin" >
+ <number>5</number>
+ </property>
+ <property name="topMargin" >
+ <number>5</number>
+ </property>
+ <property name="rightMargin" >
+ <number>5</number>
+ </property>
+ <property name="bottomMargin" >
+ <number>5</number>
+ </property>
+ <item row="0" column="0" colspan="3" >
+ <widget class="QComboBox" name="urlComboBox" >
+ <property name="editable" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>181</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="1" >
+ <widget class="QPushButton" name="addButton" >
+ <property name="text" >
+ <string>&amp;Add</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" >
+ <widget class="QPushButton" name="cancelButton" >
+ <property name="text" >
+ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>addButton</sender>
+ <signal>clicked()</signal>
+ <receiver>AddUrlDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>248</x>
+ <y>51</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>184</x>
+ <y>72</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>cancelButton</sender>
+ <signal>clicked()</signal>
+ <receiver>AddUrlDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>343</x>
+ <y>62</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>392</x>
+ <y>60</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Ui/skinned/forms/configdialog.ui b/src/plugins/Ui/skinned/forms/configdialog.ui
new file mode 100644
index 000000000..d6a6f7a47
--- /dev/null
+++ b/src/plugins/Ui/skinned/forms/configdialog.ui
@@ -0,0 +1,1576 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ConfigDialog</class>
+ <widget class="QDialog" name="ConfigDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>659</width>
+ <height>466</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Qmmp Settings</string>
+ </property>
+ <layout class="QVBoxLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="leftMargin">
+ <number>6</number>
+ </property>
+ <property name="topMargin">
+ <number>9</number>
+ </property>
+ <property name="rightMargin">
+ <number>6</number>
+ </property>
+ <property name="bottomMargin">
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QListWidget" name="contentsWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>170</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>180</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>38</width>
+ <height>38</height>
+ </size>
+ </property>
+ <property name="movement">
+ <enum>QListView::Static</enum>
+ </property>
+ <property name="flow">
+ <enum>QListView::TopToBottom</enum>
+ </property>
+ <property name="isWrapping" stdset="0">
+ <bool>false</bool>
+ </property>
+ <property name="resizeMode">
+ <enum>QListView::Adjust</enum>
+ </property>
+ <property name="spacing">
+ <number>2</number>
+ </property>
+ <property name="viewMode">
+ <enum>QListView::ListMode</enum>
+ </property>
+ <property name="uniformItemSizes">
+ <bool>false</bool>
+ </property>
+ <property name="batchSize">
+ <number>100</number>
+ </property>
+ <property name="wordWrap">
+ <bool>false</bool>
+ </property>
+ <property name="currentRow">
+ <number>0</number>
+ </property>
+ <item>
+ <property name="text">
+ <string>Appearance</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../images/images.qrc">
+ <normaloff>:/interface.png</normaloff>:/interface.png</iconset>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Playlist</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../images/images.qrc">
+ <normaloff>:/playlist.png</normaloff>:/playlist.png</iconset>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Plugins</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../images/images.qrc">
+ <normaloff>:/plugins.png</normaloff>:/plugins.png</iconset>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Advanced</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../images/images.qrc">
+ <normaloff>:/advanced.png</normaloff>:/advanced.png</iconset>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Connectivity</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../images/images.qrc">
+ <normaloff>:/network.png</normaloff>:/network.png</iconset>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Audio</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../images/images.qrc">
+ <normaloff>:/replaygain.png</normaloff>:/replaygain.png</iconset>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Shortcuts</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../images/images.qrc">
+ <normaloff>:/shortcuts.png</normaloff>:/shortcuts.png</iconset>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item>
+ <widget class="QStackedWidget" name="stackedWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="widget1">
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="tab_4">
+ <attribute name="title">
+ <string>Skins</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" colspan="4">
+ <widget class="QListWidget" name="listWidget">
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="movement">
+ <enum>QListView::Static</enum>
+ </property>
+ <property name="flow">
+ <enum>QListView::TopToBottom</enum>
+ </property>
+ <property name="viewMode">
+ <enum>QListView::ListMode</enum>
+ </property>
+ <property name="modelColumn">
+ <number>0</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QPushButton" name="skinInstallButton">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Add...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QPushButton" name="skinReloadButton">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Refresh</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_5">
+ <attribute name="title">
+ <string>Miscellaneous</string>
+ </attribute>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>View</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QCheckBox" name="hideOnCloseCheckBox">
+ <property name="text">
+ <string>Hide on close</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="hiddenCheckBox">
+ <property name="text">
+ <string>Start hidden</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="skinCursorsCheckBox">
+ <property name="text">
+ <string>Use skin cursors</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="plGroupBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="title">
+ <string>Fonts</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>80</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Player:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="mainFontLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Sunken</enum>
+ </property>
+ <property name="text">
+ <string>???</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QToolButton" name="mainFontButton">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>80</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Playlist:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="plFontLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Sunken</enum>
+ </property>
+ <property name="text">
+ <string>???</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QToolButton" name="plFontButton">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="3">
+ <widget class="QCheckBox" name="useBitmapCheckBox">
+ <property name="text">
+ <string>Use bitmap font if available</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_7">
+ <property name="title">
+ <string>Transparency</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Main window</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSlider" name="mwTransparencySlider">
+ <property name="maximum">
+ <number>90</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLabel" name="mwTransparencyLabel">
+ <property name="minimumSize">
+ <size>
+ <width>25</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>0</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>Equalizer</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSlider" name="eqTransparencySlider">
+ <property name="maximum">
+ <number>90</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QLabel" name="eqTransparencyLabel">
+ <property name="text">
+ <string>0</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>Playlist</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSlider" name="plTransparencySlider">
+ <property name="maximum">
+ <number>90</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QLabel" name="plTransparencyLabel">
+ <property name="text">
+ <string>0</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>Metadata</string>
+ </property>
+ <layout class="QGridLayout">
+ <property name="margin">
+ <number>9</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="metadataCheckBox">
+ <property name="text">
+ <string>Load metadata from files</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Song Display</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Title format:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="formatLineEdit"/>
+ </item>
+ <item row="0" column="2">
+ <widget class="QToolButton" name="titleButton">
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QCheckBox" name="underscoresCheckBox">
+ <property name="text">
+ <string>Convert underscores to blanks</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QCheckBox" name="per20CheckBox">
+ <property name="text">
+ <string>Convert %20 to blanks</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QCheckBox" name="protocolCheckBox">
+ <property name="text">
+ <string>Show protocol</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QCheckBox" name="numbersCheckBox">
+ <property name="text">
+ <string>Show song numbers</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0" colspan="2">
+ <widget class="QCheckBox" name="playlistsCheckBox">
+ <property name="text">
+ <string>Show playlists</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0" colspan="3">
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QCheckBox" name="popupCheckBox">
+ <property name="text">
+ <string>Show popup information</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="popupTemplateButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Edit template</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item row="7" column="0" colspan="2">
+ <widget class="QCheckBox" name="anchorCheckBox">
+ <property name="text">
+ <string>Show anchor</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="3">
+ <widget class="QCheckBox" name="alignCheckBox">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Align song numbers</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>54</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="widget">
+ <layout class="QGridLayout">
+ <property name="leftMargin">
+ <number>9</number>
+ </property>
+ <property name="topMargin">
+ <number>5</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="preferencesButton">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Preferences</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="informationButton">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Information</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>101</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="0" colspan="3">
+ <widget class="QTreeWidget" name="treeWidget">
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="animated">
+ <bool>true</bool>
+ </property>
+ <property name="allColumnsShowFocus">
+ <bool>false</bool>
+ </property>
+ <property name="columnCount">
+ <number>2</number>
+ </property>
+ <column>
+ <property name="text">
+ <string>Description</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Filename</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_2">
+ <layout class="QGridLayout" name="gridLayout_5">
+ <item row="0" column="0" colspan="2">
+ <widget class="QGroupBox" name="groupBox_4">
+ <property name="title">
+ <string>File Dialog</string>
+ </property>
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QComboBox" name="fileDialogComboBox"/>
+ </item>
+ <item>
+ <widget class="QPushButton" name="fdInformationButton">
+ <property name="text">
+ <string>Information</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QGroupBox" name="groupBox_9">
+ <property name="title">
+ <string>Cover Image Retrieve</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_6">
+ <item row="0" column="0" colspan="2">
+ <widget class="QCheckBox" name="useCoverFilesCheckBox">
+ <property name="text">
+ <string>Use separate image files</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string>Include files:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="coverIncludeLineEdit"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string>Exclude files:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="coverExcludeLineEdit"/>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string>Recursive search depth:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="coverDepthSpinBox">
+ <property name="maximum">
+ <number>6</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QGroupBox" name="groupBox_6">
+ <property name="title">
+ <string>Playback</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_8">
+ <item>
+ <widget class="QCheckBox" name="continuePlaybackCheckBox">
+ <property name="text">
+ <string>Continue playback on startup</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="network">
+ <layout class="QVBoxLayout">
+ <property name="leftMargin">
+ <number>9</number>
+ </property>
+ <property name="topMargin">
+ <number>5</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="groupBox_5">
+ <property name="title">
+ <string>Proxy</string>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ <property name="checkable">
+ <bool>false</bool>
+ </property>
+ <layout class="QGridLayout">
+ <item row="0" column="0" colspan="2">
+ <widget class="QCheckBox" name="enableProxyCheckBox">
+ <property name="text">
+ <string>Enable proxy usage</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Proxy host name:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="hostLineEdit"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Proxy port:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="portLineEdit"/>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QCheckBox" name="authProxyCheckBox">
+ <property name="text">
+ <string>Use authentication with proxy</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Proxy user name:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QLineEdit" name="proxyUserLineEdit"/>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Proxy password:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QLineEdit" name="proxyPasswLineEdit">
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="audio">
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
+ <widget class="QGroupBox" name="groupBox_10">
+ <property name="title">
+ <string>Replay Gain</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_7">
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_14">
+ <property name="text">
+ <string>Replay Gain mode:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="replayGainModeComboBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_15">
+ <property name="text">
+ <string>Preamp:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QDoubleSpinBox" name="preampDoubleSpinBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimum">
+ <double>-15.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>15.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.010000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QLabel" name="label_17">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>dB</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_16">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Default gain:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QDoubleSpinBox" name="defaultGainDoubleSpinBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimum">
+ <double>-15.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>15.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.010000000000000</double>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QLabel" name="label_18">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>dB</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <spacer name="horizontalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="4" column="0" colspan="3">
+ <widget class="QCheckBox" name="clippingCheckBox">
+ <property name="text">
+ <string>Use peak info to prevent clipping</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_11">
+ <property name="title">
+ <string>Audio</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_8">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_19">
+ <property name="text">
+ <string>Output:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="outputComboBox"/>
+ </item>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="outputPreferencesButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Preferences</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QPushButton" name="outputInformationButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Information</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="4">
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_20">
+ <property name="text">
+ <string>Buffer size:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="bufferSizeSpinBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="suffix">
+ <string>ms</string>
+ </property>
+ <property name="minimum">
+ <number>500</number>
+ </property>
+ <property name="maximum">
+ <number>6000</number>
+ </property>
+ <property name="singleStep">
+ <number>50</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" colspan="3">
+ <spacer name="horizontalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>266</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="0" colspan="3">
+ <widget class="QCheckBox" name="softVolumeCheckBox">
+ <property name="text">
+ <string>Use software volume control</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QCheckBox" name="use16BitCheckBox">
+ <property name="text">
+ <string>16-bit output</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>132</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="shortcuts">
+ <layout class="QGridLayout" name="gridLayout_9">
+ <item row="0" column="0" colspan="2">
+ <widget class="QTreeWidget" name="shortcutTreeWidget">
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="animated">
+ <bool>true</bool>
+ </property>
+ <column>
+ <property name="text">
+ <string>Action</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Shortcut</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="changeShortcutButton">
+ <property name="text">
+ <string>Change shortcut...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <spacer name="horizontalSpacer_7">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="Line" name="line">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>341</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="../images/images.qrc"/>
+ </resources>
+ <connections>
+ <connection>
+ <sender>enableProxyCheckBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>hostLineEdit</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>286</x>
+ <y>39</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>39</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>enableProxyCheckBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>portLineEdit</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>286</x>
+ <y>39</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>272</x>
+ <y>39</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>authProxyCheckBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>proxyUserLineEdit</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>272</x>
+ <y>38</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>272</x>
+ <y>38</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>authProxyCheckBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>proxyPasswLineEdit</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>272</x>
+ <y>38</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>272</x>
+ <y>37</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>popupCheckBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>popupTemplateButton</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>362</x>
+ <y>310</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>455</x>
+ <y>315</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>mwTransparencySlider</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>mwTransparencyLabel</receiver>
+ <slot>setNum(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>252</x>
+ <y>90</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>283</x>
+ <y>90</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>eqTransparencySlider</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>eqTransparencyLabel</receiver>
+ <slot>setNum(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>252</x>
+ <y>84</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>274</x>
+ <y>84</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>plTransparencySlider</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>plTransparencyLabel</receiver>
+ <slot>setNum(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>252</x>
+ <y>78</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>274</x>
+ <y>78</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>useCoverFilesCheckBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>coverIncludeLineEdit</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>286</x>
+ <y>39</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>39</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>useCoverFilesCheckBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>coverExcludeLineEdit</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>286</x>
+ <y>39</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>39</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>useCoverFilesCheckBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>coverDepthSpinBox</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>286</x>
+ <y>39</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>39</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>ConfigDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>651</x>
+ <y>458</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>225</x>
+ <y>421</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>ConfigDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>651</x>
+ <y>458</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>141</x>
+ <y>414</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>numbersCheckBox</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>alignCheckBox</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>278</x>
+ <y>208</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>271</x>
+ <y>236</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Ui/skinned/forms/jumptotrackdialog.ui b/src/plugins/Ui/skinned/forms/jumptotrackdialog.ui
new file mode 100644
index 000000000..7f94a2845
--- /dev/null
+++ b/src/plugins/Ui/skinned/forms/jumptotrackdialog.ui
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>JumpToTrackDialog</class>
+ <widget class="QDialog" name="JumpToTrackDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>487</width>
+ <height>315</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Jump To Track</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="leftMargin">
+ <number>6</number>
+ </property>
+ <property name="rightMargin">
+ <number>6</number>
+ </property>
+ <property name="bottomMargin">
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Filter</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="filterLineEdit"/>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QListView" name="songsListView">
+ <property name="editTriggers">
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ <property name="alternatingRowColors">
+ <bool>true</bool>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="queuePushButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Queue</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="refreshPushButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Refresh</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="jumpToPushButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Jump To</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::MinimumExpanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>JumpToTrackDialog</receiver>
+ <slot>hide()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>457</x>
+ <y>294</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>481</x>
+ <y>279</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Ui/skinned/forms/playlistbrowser.ui b/src/plugins/Ui/skinned/forms/playlistbrowser.ui
new file mode 100644
index 000000000..0f9280905
--- /dev/null
+++ b/src/plugins/Ui/skinned/forms/playlistbrowser.ui
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PlayListBrowser</class>
+ <widget class="QDialog" name="PlayListBrowser">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>402</width>
+ <height>298</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Playlist Browser</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <property name="leftMargin">
+ <number>6</number>
+ </property>
+ <property name="topMargin">
+ <number>9</number>
+ </property>
+ <property name="rightMargin">
+ <number>6</number>
+ </property>
+ <property name="bottomMargin">
+ <number>6</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <item row="0" column="0" colspan="5">
+ <widget class="QListWidget" name="listWidget">
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QPushButton" name="newButton">
+ <property name="text">
+ <string>New</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="deleteButton">
+ <property name="text">
+ <string>Delete</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="4">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QToolButton" name="downButton">
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QToolButton" name="upButton">
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonIconOnly</enum>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>PlayListBrowser</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>PlayListBrowser</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Ui/skinned/forms/popupsettings.ui b/src/plugins/Ui/skinned/forms/popupsettings.ui
new file mode 100644
index 000000000..c59db2b72
--- /dev/null
+++ b/src/plugins/Ui/skinned/forms/popupsettings.ui
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PopupSettings</class>
+ <widget class="QDialog" name="PopupSettings">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>277</width>
+ <height>335</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Popup Information 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" colspan="5">
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>Template</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="0" column="0" colspan="3">
+ <widget class="QPlainTextEdit" name="textEdit">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>138</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="1">
+ <widget class="QPushButton" name="resetButton">
+ <property name="text">
+ <string>Reset</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QPushButton" name="insertButton">
+ <property name="text">
+ <string>Insert</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="5">
+ <widget class="QCheckBox" name="coverCheckBox">
+ <property name="text">
+ <string>Show cover</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="4">
+ <widget class="QLabel" name="coverSizeLabel">
+ <property name="text">
+ <string notr="true">0</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="3">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Cover size:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3">
+ <widget class="QSlider" name="coverSizeSlider">
+ <property name="minimum">
+ <number>32</number>
+ </property>
+ <property name="maximum">
+ <number>128</number>
+ </property>
+ <property name="singleStep">
+ <number>1</number>
+ </property>
+ <property name="pageStep">
+ <number>16</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="3">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Transparency:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3">
+ <widget class="QSlider" name="transparencySlider">
+ <property name="maximum">
+ <number>90</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="4">
+ <widget class="QLabel" name="trasparencyLabel">
+ <property name="minimumSize">
+ <size>
+ <width>18</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string notr="true">0</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="3">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Delay:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="3">
+ <widget class="QSpinBox" name="delaySpinBox">
+ <property name="minimum">
+ <number>20</number>
+ </property>
+ <property name="maximum">
+ <number>7000</number>
+ </property>
+ <property name="singleStep">
+ <number>500</number>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0" colspan="5">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="4">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>ms</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>PopupSettings</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>281</x>
+ <y>286</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>62</x>
+ <y>299</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>PopupSettings</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>281</x>
+ <y>286</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>95</x>
+ <y>299</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>transparencySlider</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>trasparencyLabel</receiver>
+ <slot>setNum(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>258</x>
+ <y>251</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>282</x>
+ <y>251</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>coverSizeSlider</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>coverSizeLabel</receiver>
+ <slot>setNum(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>258</x>
+ <y>223</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>282</x>
+ <y>223</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Ui/skinned/forms/preseteditor.ui b/src/plugins/Ui/skinned/forms/preseteditor.ui
new file mode 100644
index 000000000..224a41ed3
--- /dev/null
+++ b/src/plugins/Ui/skinned/forms/preseteditor.ui
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PresetEditor</class>
+ <widget class="QDialog" name="PresetEditor">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>330</width>
+ <height>275</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Preset Editor</string>
+ </property>
+ <property name="modal">
+ <bool>false</bool>
+ </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="3">
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>Preset</string>
+ </attribute>
+ <layout class="QVBoxLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QListWidget" name="presetListWidget"/>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_2">
+ <attribute name="title">
+ <string>Auto-preset</string>
+ </attribute>
+ <layout class="QVBoxLayout">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="margin">
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QListWidget" name="autoPresetListWidget">
+ <property name="editTriggers">
+ <set>QAbstractItemView::NoEditTriggers</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="3">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="loadButton">
+ <property name="text">
+ <string>Load</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="deleteButton">
+ <property name="text">
+ <string>Delete</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>clicked(QAbstractButton*)</signal>
+ <receiver>PresetEditor</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>269</x>
+ <y>235</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>298</x>
+ <y>192</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Ui/skinned/forms/shortcutdialog.ui b/src/plugins/Ui/skinned/forms/shortcutdialog.ui
new file mode 100644
index 000000000..db1cf466e
--- /dev/null
+++ b/src/plugins/Ui/skinned/forms/shortcutdialog.ui
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ShortcutDialog</class>
+ <widget class="QDialog" name="HotkeyDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>310</width>
+ <height>89</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Change Shortcut</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="3">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Press the key combination you want to assign</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="3">
+ <widget class="QLineEdit" name="keyLineEdit">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QPushButton" name="clearButton">
+ <property name="text">
+ <string>Clear</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>106</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="2">
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>HotkeyDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>212</x>
+ <y>70</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>192</x>
+ <y>269</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>HotkeyDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>212</x>
+ <y>70</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>246</x>
+ <y>214</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>clearButton</sender>
+ <signal>clicked()</signal>
+ <receiver>keyLineEdit</receiver>
+ <slot>clear()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>195</x>
+ <y>22</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>113</x>
+ <y>25</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/src/plugins/Ui/skinned/images/16x16/qmmp.png b/src/plugins/Ui/skinned/images/16x16/qmmp.png
new file mode 100644
index 000000000..d6bca13fd
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/16x16/qmmp.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/32x32/qmmp.png b/src/plugins/Ui/skinned/images/32x32/qmmp.png
new file mode 100644
index 000000000..32126f83b
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/32x32/qmmp.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/48x48/qmmp.png b/src/plugins/Ui/skinned/images/48x48/qmmp.png
new file mode 100644
index 000000000..3f8a8f3a0
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/48x48/qmmp.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/56x56/qmmp.png b/src/plugins/Ui/skinned/images/56x56/qmmp.png
new file mode 100644
index 000000000..4a3b7903a
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/56x56/qmmp.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/advanced.png b/src/plugins/Ui/skinned/images/advanced.png
new file mode 100644
index 000000000..862464242
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/advanced.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/images.qrc b/src/plugins/Ui/skinned/images/images.qrc
new file mode 100644
index 000000000..45909a993
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/images.qrc
@@ -0,0 +1,14 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>32x32/qmmp.png</file>
+ <file>interface.png</file>
+ <file>playlist.png</file>
+ <file>advanced.png</file>
+ <file>plugins.png</file>
+ <file>network.png</file>
+ <file>logo-qmmp.png</file>
+ <file>replaygain.png</file>
+ <file>ui_no_cover.png</file>
+ <file>shortcuts.png</file>
+ </qresource>
+</RCC>
diff --git a/src/plugins/Ui/skinned/images/interface.png b/src/plugins/Ui/skinned/images/interface.png
new file mode 100644
index 000000000..ebedddde2
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/interface.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/logo-qmmp.png b/src/plugins/Ui/skinned/images/logo-qmmp.png
new file mode 100644
index 000000000..d6c7e9bd8
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/logo-qmmp.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/network.png b/src/plugins/Ui/skinned/images/network.png
new file mode 100644
index 000000000..3a52c1130
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/network.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/playlist.png b/src/plugins/Ui/skinned/images/playlist.png
new file mode 100644
index 000000000..7b750db0a
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/playlist.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/plugins.png b/src/plugins/Ui/skinned/images/plugins.png
new file mode 100644
index 000000000..931d4d1da
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/plugins.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/replaygain.png b/src/plugins/Ui/skinned/images/replaygain.png
new file mode 100644
index 000000000..d2f78947b
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/replaygain.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/scalable/qmmp-simple.svgz b/src/plugins/Ui/skinned/images/scalable/qmmp-simple.svgz
new file mode 100644
index 000000000..8ac48346b
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/scalable/qmmp-simple.svgz
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/scalable/qmmp.svgz b/src/plugins/Ui/skinned/images/scalable/qmmp.svgz
new file mode 100644
index 000000000..7050b41c9
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/scalable/qmmp.svgz
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/shortcuts.png b/src/plugins/Ui/skinned/images/shortcuts.png
new file mode 100644
index 000000000..45d917220
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/shortcuts.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/images/ui_no_cover.png b/src/plugins/Ui/skinned/images/ui_no_cover.png
new file mode 100644
index 000000000..ac8c587e3
--- /dev/null
+++ b/src/plugins/Ui/skinned/images/ui_no_cover.png
Binary files differ
diff --git a/src/plugins/Ui/skinned/inlines.h b/src/plugins/Ui/skinned/inlines.h
new file mode 100644
index 000000000..39b81bd57
--- /dev/null
+++ b/src/plugins/Ui/skinned/inlines.h
@@ -0,0 +1,57 @@
+// Copyright (c) 2000-2001 Brad Hughes <bhughes@trolltech.com>
+//
+// Use, modification and distribution is allowed without limitation,
+// warranty, or liability of any kind.
+//
+
+#ifndef INLINES_H
+#define INLINES_H
+
+#include "fft.h"
+
+// *fast* convenience functions
+static inline void calc_freq(short* dest, short *src)
+{
+ static fft_state *state = NULL;
+ float tmp_out[257];
+ int i;
+
+ if (!state)
+ state = fft_init();
+
+ fft_perform(src, tmp_out, state);
+
+ for (i = 0; i < 256; i++)
+ dest[i] = ((int) sqrt(tmp_out[i + 1])) >> 8;
+}
+
+static inline void stereo16_from_multichannel(register short *l,
+ register short *r,
+ register short *s,
+ long cnt, int chan)
+{
+ while (cnt > 0)
+ {
+ l[0] = s[0];
+ r[0] = s[1];
+ s += chan;
+ l++;
+ r++;
+ cnt--;
+ }
+}
+
+static inline void mono16_from_multichannel(register short *l,
+ register short *s,
+ long cnt, int chan)
+{
+ while (cnt > 0)
+ {
+ l[0] = s[0];
+ s += chan;
+ l++;
+ cnt--;
+ }
+}
+
+#endif // INLINES_H
diff --git a/src/plugins/Ui/skinned/jumptotrackdialog.cpp b/src/plugins/Ui/skinned/jumptotrackdialog.cpp
new file mode 100644
index 000000000..d9df0bb75
--- /dev/null
+++ b/src/plugins/Ui/skinned/jumptotrackdialog.cpp
@@ -0,0 +1,138 @@
+/***************************************************************************
+ * Copyright (C) 2007-2010 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 "jumptotrackdialog.h"
+#include <qmmpui/playlistmanager.h>
+#include <QAction>
+#include <QStringListModel>
+#include <QSortFilterProxyModel>
+#include <QShortcut>
+#include <QKeySequence>
+
+JumpToTrackDialog::JumpToTrackDialog(PlayListManager *manager, QWidget* parent)
+ : QDialog (parent)
+{
+ setupUi(this);
+ setAttribute(Qt::WA_QuitOnClose, false);
+ m_pl_manager = manager;
+ m_listModel = new QStringListModel(this);
+
+ m_proxyModel = new QSortFilterProxyModel;
+ m_proxyModel->setDynamicSortFilter(true);
+ m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
+ m_proxyModel->setSourceModel(m_listModel);
+ songsListView->setModel(m_proxyModel);
+
+ connect(songsListView,SIGNAL(doubleClicked(const QModelIndex &)),
+ this,SLOT(jumpTo(const QModelIndex&)));
+ connect(songsListView,SIGNAL(activated(const QModelIndex &)),
+ this,SLOT(jumpTo(const QModelIndex&)));
+ connect(songsListView,SIGNAL(activated(const QModelIndex &)),
+ this,SLOT(accept()));
+ connect(songsListView->selectionModel(),
+ SIGNAL(currentRowChanged(const QModelIndex&,const QModelIndex&)),
+ this,SLOT(queueUnqueue(const QModelIndex&,const QModelIndex&)));
+
+ new QShortcut(tr("Q"),this,SLOT(on_queuePushButton_clicked()));
+ new QShortcut(tr("J"),this,SLOT(on_jumpToPushButton_clicked()));
+ new QShortcut(tr("F5"),this,SLOT(on_refreshPushButton_clicked()));
+
+ QAction *selectSongViewAction = new QAction(filterLineEdit);
+ selectSongViewAction->setShortcut(Qt::Key_Down);
+ selectSongViewAction->setShortcutContext(Qt::WidgetShortcut);
+ filterLineEdit->addAction(selectSongViewAction);
+ connect(selectSongViewAction, SIGNAL(triggered()),songsListView, SLOT(setFocus()));
+ //setup icons
+ refreshPushButton->setIcon(QIcon::fromTheme("view-refresh"));
+ jumpToPushButton->setIcon(QIcon::fromTheme("go-top"));
+}
+
+JumpToTrackDialog::~JumpToTrackDialog()
+{
+}
+
+void JumpToTrackDialog::on_refreshPushButton_clicked()
+{
+ refresh();
+}
+
+void JumpToTrackDialog::on_queuePushButton_clicked()
+{
+ QModelIndexList mi_list = songsListView->selectionModel()->selectedRows();
+ if (!mi_list.isEmpty())
+ {
+ int selected = (m_proxyModel->mapToSource(mi_list.at(0))).row();
+ m_pl_manager->selectedPlayList()->setQueued(m_pl_manager->selectedPlayList()->item(selected));
+ if (m_pl_manager->selectedPlayList()->isQueued(m_pl_manager->selectedPlayList()->item(selected)))
+ queuePushButton->setText(tr("Unqueue"));
+ else
+ queuePushButton->setText(tr("Queue"));
+ }
+}
+
+void JumpToTrackDialog::on_jumpToPushButton_clicked()
+{
+ QModelIndexList mi_list = songsListView->selectionModel()->selectedRows();
+ if (!mi_list.isEmpty())
+ {
+ jumpTo(mi_list.at(0));
+ }
+}
+
+void JumpToTrackDialog::refresh()
+{
+ filterLineEdit->clear();
+ QStringList titles = m_pl_manager->selectedPlayList()->getTitles(0, m_pl_manager->selectedPlayList()->count());
+ m_listModel->setStringList(titles);
+ filterLineEdit->setFocus();
+}
+
+void JumpToTrackDialog::on_filterLineEdit_textChanged(const QString &str)
+{
+ m_proxyModel->setFilterFixedString(str);
+ if (m_proxyModel->hasIndex(0,0))
+ songsListView->setCurrentIndex (m_proxyModel->index (0,0));
+}
+
+void JumpToTrackDialog::on_filterLineEdit_returnPressed ()
+{
+ QModelIndexList mi_list = songsListView->selectionModel()->selectedRows();
+ if (!mi_list.isEmpty())
+ {
+ jumpTo(mi_list.at(0));
+ accept();
+ }
+}
+
+void JumpToTrackDialog::jumpTo(const QModelIndex & index)
+{
+ int selected = (m_proxyModel->mapToSource(index)).row();
+ m_pl_manager->selectedPlayList()->setCurrent(selected);
+ emit playRequest();
+}
+
+void JumpToTrackDialog::queueUnqueue(const QModelIndex& curr,const QModelIndex&)
+{
+ int row = m_proxyModel->mapToSource(curr).row();
+ if (m_pl_manager->selectedPlayList()->isQueued(m_pl_manager->selectedPlayList()->item(row)))
+ queuePushButton->setText(tr("Unqueue"));
+ else
+ queuePushButton->setText(tr("Queue"));
+}
diff --git a/src/plugins/Ui/skinned/jumptotrackdialog.h b/src/plugins/Ui/skinned/jumptotrackdialog.h
new file mode 100644
index 000000000..36186d72c
--- /dev/null
+++ b/src/plugins/Ui/skinned/jumptotrackdialog.h
@@ -0,0 +1,62 @@
+/***************************************************************************
+ * Copyright (C) 2007-2010 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 JUMPTOTRACKDIALOG_H
+#define JUMPTOTRACKDIALOG_H
+
+#include <QDialog>
+#include "ui_jumptotrackdialog.h"
+
+class QStringListModel;
+class QSortFilterProxyModel;
+class PlayListManager;
+
+/**
+ @author Vladimir Kuznetsov <vovanec@gmail.com>
+ */
+class JumpToTrackDialog : public QDialog, private Ui::JumpToTrackDialog
+{
+ Q_OBJECT
+
+public:
+ JumpToTrackDialog(PlayListManager *manager, QWidget* parent = 0);
+ ~JumpToTrackDialog();
+ void refresh();
+
+protected slots:
+ void on_refreshPushButton_clicked();
+ void on_queuePushButton_clicked();
+ void on_jumpToPushButton_clicked();
+ void on_filterLineEdit_textChanged(const QString&);
+ void on_filterLineEdit_returnPressed ();
+ void jumpTo(const QModelIndex&);
+ void queueUnqueue(const QModelIndex&,const QModelIndex&);
+
+signals:
+ void playRequest();
+
+private:
+ QStringListModel* m_listModel;
+ QSortFilterProxyModel* m_proxyModel;
+ PlayListManager *m_pl_manager;
+};
+
+#endif
+
diff --git a/src/plugins/Ui/skinned/keyboardmanager.cpp b/src/plugins/Ui/skinned/keyboardmanager.cpp
new file mode 100644
index 000000000..cbdc70c33
--- /dev/null
+++ b/src/plugins/Ui/skinned/keyboardmanager.cpp
@@ -0,0 +1,280 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 <QKeyEvent>
+#include <qmmpui/playlistmodel.h>
+#include "playlist.h"
+#include "listwidget.h"
+#include "keyboardmanager.h"
+#include "mainwindow.h"
+
+
+KeyboardManager::KeyboardManager (PlayList* pl)
+{
+ m_playlist = pl;
+}
+
+bool KeyboardManager::handleKeyPress (QKeyEvent* ke)
+{
+ bool handled = true;
+ switch (ke->key())
+ {
+ case Qt::Key_Up:
+ keyUp (ke);
+ break;
+ case Qt::Key_Down:
+ keyDown (ke);
+ break;
+ case Qt::Key_PageUp:
+ keyPgUp (ke);
+ break;
+ case Qt::Key_PageDown:
+ keyPgDown (ke);
+ break;
+ case Qt::Key_Enter:
+ case Qt::Key_Return:
+ keyEnter (ke);
+ break;
+ case Qt::Key_Home:
+ keyHome(ke);
+ break;
+ case Qt::Key_End:
+ keyEnd(ke);
+ break;
+ default:
+ handled = false;
+ }
+ return handled;
+}
+
+bool KeyboardManager::handleKeyRelease (QKeyEvent*)
+{
+ return false;
+}
+
+void KeyboardManager::keyUp (QKeyEvent * ke)
+{
+ QList<int> rows = m_playlist->listWidget()->model()->getSelectedRows();
+ ListWidget* list_widget = m_playlist->listWidget();
+
+ if (rows.count() > 0)
+ {
+ if(rows[0] == 0 && rows.count() == 1)
+ return;
+
+ if (! (ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier))
+ {
+ m_playlist->listWidget()->model()->clearSelection();
+ list_widget->setAnchorRow(-1);
+ }
+
+ bool select_top = false;
+ int first_visible = list_widget->firstVisibleRow();
+ int last_visible = list_widget->visibleRows() + first_visible - 1;
+ foreach (int i, rows)
+ {
+ if (i > last_visible || i < first_visible)
+ {
+ select_top = true;
+ break;
+ }
+ }
+
+ if (!select_top || ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier)
+ {
+ if (ke->modifiers() == Qt::AltModifier)
+ {
+ m_playlist->listWidget()->model()->moveItems (rows[0],rows[0] - 1);
+ list_widget->setAnchorRow (list_widget->getAnchorRow() - 1);
+ }
+ else
+ {
+ if (rows.last() > list_widget->getAnchorRow() && ke->modifiers() & Qt::ShiftModifier)
+ {
+ m_playlist->listWidget()->model()->setSelected (rows.last(),false);
+ }
+ else if (rows[0] > 0)
+ {
+ m_playlist->listWidget()->model()->setSelected (rows[0] - 1,true);
+ }
+ else
+ {
+ m_playlist->listWidget()->model()->setSelected (rows[0],true);
+ if(list_widget->getAnchorRow() == -1)
+ list_widget->setAnchorRow(rows[0]);
+ }
+
+ if (! (ke->modifiers() & Qt::ShiftModifier) && rows[0] > 0)
+ list_widget->setAnchorRow (rows[0] - 1);
+ }
+ }
+ else
+ {
+ m_playlist->listWidget()->model()->setSelected (list_widget->firstVisibleRow(),true);
+ list_widget->setAnchorRow(list_widget->firstVisibleRow());
+ }
+
+ rows = m_playlist->listWidget()->model()->getSelectedRows();
+
+ if (rows[0] < list_widget->firstVisibleRow() && list_widget->firstVisibleRow() > 0)
+ {
+ int r = rows.last() > list_widget->getAnchorRow() ? rows.last(): rows.first();
+ if(ke->modifiers() & Qt::ShiftModifier && (r >= list_widget->firstVisibleRow()))
+ ;
+ else
+ list_widget->scroll (list_widget->firstVisibleRow() - 1);
+ }
+ }
+ else
+ {
+ //if(list_widget->getAnchorRow() == -1)
+ list_widget->setAnchorRow(list_widget->firstVisibleRow());
+ m_playlist->listWidget()->model()->setSelected (list_widget->firstVisibleRow(),true);
+ }
+}
+
+void KeyboardManager::keyDown (QKeyEvent * ke)
+{
+ QList<int> rows = m_playlist->listWidget()->model()->getSelectedRows();
+ ListWidget* list_widget = m_playlist->listWidget();
+ //qWarning("count: %d",rows.count());
+ if (rows.count() > 0)
+ {
+ if (! (ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier))
+ {
+ m_playlist->listWidget()->model()->clearSelection();
+ list_widget->setAnchorRow(-1);
+ }
+
+ bool select_top = false;
+ int first_visible = list_widget->firstVisibleRow();
+ int last_visible = list_widget->visibleRows() + first_visible - 1;
+ foreach (int i, rows)
+ {
+ if (i > last_visible || i < first_visible)
+ {
+ select_top = true;
+ break;
+ }
+ }
+
+ if (!select_top || ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier)
+ {
+ if (ke->modifiers() == Qt::AltModifier)
+ {
+ m_playlist->listWidget()->model()->moveItems (rows.last(),rows.last() + 1);
+ list_widget->setAnchorRow (list_widget->getAnchorRow() + 1);
+ }
+ else
+ {
+ //qWarning("list_widget %d",list_widget->getAnchorRow());
+ //qWarning("model count: %d rows.last(): %d",m_playlist->listWidget()->model()->count(),rows.last());
+ if (rows[0] < list_widget->getAnchorRow() && ke->modifiers() & Qt::ShiftModifier)
+ m_playlist->listWidget()->model()->setSelected (rows[0],false);
+ else if (rows.last() < m_playlist->listWidget()->model()->count() - 1)
+ {
+ m_playlist->listWidget()->model()->setSelected (rows.last() + 1,true);
+ }
+ else
+ {
+ m_playlist->listWidget()->model()->setSelected (rows.last(),true);
+ if(list_widget->getAnchorRow() == -1)
+ list_widget->setAnchorRow(rows.last());
+ }
+
+ if (! (ke->modifiers() & Qt::ShiftModifier) && rows.last() < m_playlist->listWidget()->model()->count() - 1)
+ list_widget->setAnchorRow (rows.last() + 1);
+ }
+ }
+ else
+ {
+ m_playlist->listWidget()->model()->setSelected (list_widget->firstVisibleRow(),true);
+ list_widget->setAnchorRow(list_widget->firstVisibleRow());
+ }
+
+ rows = m_playlist->listWidget()->model()->getSelectedRows();
+
+ if (!rows.isEmpty() && rows.last() >= list_widget->visibleRows() + list_widget->firstVisibleRow())
+ {
+ int r = rows.first() < list_widget->getAnchorRow() ? rows.first(): rows.last();
+ if(ke->modifiers() & Qt::ShiftModifier &&
+ (r < list_widget->firstVisibleRow() + list_widget->visibleRows()))
+ ;
+ else
+ list_widget->scroll (list_widget->firstVisibleRow() + 1);
+ }
+ }
+ else
+ {
+ m_playlist->listWidget()->model()->setSelected (list_widget->firstVisibleRow(),true);
+ //if(list_widget->getAnchorRow() == -1)
+ list_widget->setAnchorRow(list_widget->firstVisibleRow());
+ }
+}
+
+void KeyboardManager::keyPgUp (QKeyEvent *)
+{
+ ListWidget* list_widget = m_playlist->listWidget();
+ int page_size = list_widget->visibleRows();
+ int offset= (list_widget->firstVisibleRow()-page_size >= 0) ?list_widget->firstVisibleRow()-page_size:0;
+ list_widget->scroll (offset);
+}
+
+void KeyboardManager::keyPgDown (QKeyEvent *)
+{
+ ListWidget* list_widget = m_playlist->listWidget();
+ int page_size = list_widget->visibleRows();
+ int offset = (list_widget->firstVisibleRow() +page_size < m_playlist->listWidget()->model()->count()) ?
+ list_widget->firstVisibleRow() +page_size:m_playlist->listWidget()->model()->count() - 1;
+ list_widget->scroll (offset);
+}
+
+void KeyboardManager::keyEnter (QKeyEvent *)
+{
+ QList<int> rows = m_playlist->listWidget()->model()->getSelectedRows();
+ MainWindow* mw = qobject_cast<MainWindow*> (m_playlist->parentWidget());
+ if (mw && rows.count() > 0)
+ {
+ m_playlist->listWidget()->model()->setCurrent (rows[0]);
+ mw->replay();
+ }
+}
+
+void KeyboardManager::keyHome(QKeyEvent *ke)
+{
+ ListWidget* list_widget = m_playlist->listWidget();
+ m_playlist->listWidget()->scroll (0);
+ if(ke->modifiers() & Qt::ShiftModifier)
+ for(int i = 0; i <= list_widget->getAnchorRow(); ++i)
+ m_playlist->listWidget()->model()->setSelected (i,true);
+}
+
+void KeyboardManager::keyEnd(QKeyEvent *ke)
+{
+ ListWidget* list_widget = m_playlist->listWidget();
+ int page_size = list_widget->visibleRows();
+ int scroll_to = m_playlist->listWidget()->model()->count() - page_size;
+ if(scroll_to >= 0)
+ list_widget->scroll(scroll_to);
+ if(ke->modifiers() & Qt::ShiftModifier)
+ for(int i = list_widget->getAnchorRow(); i < m_playlist->listWidget()->model()->count(); ++i)
+ m_playlist->listWidget()->model()->setSelected (i,true);
+}
diff --git a/src/plugins/Ui/skinned/keyboardmanager.h b/src/plugins/Ui/skinned/keyboardmanager.h
new file mode 100644
index 000000000..120dbe9dc
--- /dev/null
+++ b/src/plugins/Ui/skinned/keyboardmanager.h
@@ -0,0 +1,67 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 _KEYBOARDMANAGER_H
+#define _KEYBOARDMANAGER_H
+
+class PlayList;
+class QKeyEvent;
+
+
+/*!
+ * Class \b KeyboardManager represents key handler object that processes
+ * all key events passed to the \b PlayList
+ * @author Vladimir Kuznetsov <vovanec@gmail.com>
+ */
+class KeyboardManager
+{
+ public:
+ /*!
+ * Constructor. Takes \b PlayList object as an argument.
+ */
+ KeyboardManager (PlayList*);
+
+ /*!
+ * Handles key press events from \b PlayList object. Returns \b true
+ * if the key was handled, otherwise \b false.
+ */
+ bool handleKeyPress (QKeyEvent*);
+
+ /*!
+ * Handles key release events from \b PlayList object. Returns \b true
+ * if the key was handled, otherwise \b false.
+ */
+ bool handleKeyRelease (QKeyEvent*);
+
+ protected:
+ void keyUp (QKeyEvent* ke);
+ void keyDown (QKeyEvent* ke);
+ void keyPgUp (QKeyEvent* ke);
+ void keyPgDown (QKeyEvent* ke);
+ void keyEnter (QKeyEvent* ke);
+ void keyHome(QKeyEvent* ke);
+ void keyEnd(QKeyEvent* ke);
+ private:
+ PlayList* m_playlist;
+};
+
+#endif
+
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp
new file mode 100644
index 000000000..fe261c24a
--- /dev/null
+++ b/src/plugins/Ui/skinned/listwidget.cpp
@@ -0,0 +1,569 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 <QPixmap>
+#include <QResizeEvent>
+#include <QPainter>
+#include <QFont>
+#include <QFontMetrics>
+#include <QSettings>
+#include <QMenu>
+#include <QUrl>
+#include <QApplication>
+#include <QHelpEvent>
+#include <QTimer>
+#include <qmmpui/playlistitem.h>
+#include <qmmpui/playlistmodel.h>
+#include <qmmpui/mediaplayer.h>
+#include "listwidget.h"
+#include "skin.h"
+#include "popupwidget.h"
+#include "playlist.h"
+
+#define INVALID_ROW -1
+
+ListWidget::ListWidget(QWidget *parent)
+ : QWidget(parent)
+{
+ m_update = false;
+ m_skin = Skin::instance();
+ m_popupWidget = 0;
+ m_metrics = 0;
+ m_extra_metrics = 0;
+ loadColors();
+ m_menu = new QMenu(this);
+ m_scroll_direction = NONE;
+ m_prev_y = 0;
+ m_anchor_row = INVALID_ROW;
+ m_player = MediaPlayer::instance();
+ connect (m_player, SIGNAL(repeatableChanged(bool)), SLOT(updateList()));
+ m_first = 0;
+ m_rows = 0;
+ m_scroll = false;
+ m_select_on_release = false;
+ readSettings();
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ setAcceptDrops(true);
+ setMouseTracking(true);
+ m_timer = new QTimer(this);
+ m_timer->setInterval(50);
+ connect(m_timer, SIGNAL(timeout()), SLOT(autoscroll()));
+}
+
+
+ListWidget::~ListWidget()
+{
+ if(m_metrics)
+ delete m_metrics;
+ if(m_extra_metrics)
+ delete m_extra_metrics;
+}
+
+void ListWidget::readSettings()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ m_font.fromString(settings.value("PlayList/Font", QApplication::font().toString()).toString());
+ m_extra_font = m_font;
+ m_extra_font.setPointSize(m_font.pointSize() - 1);
+ m_show_protocol = settings.value ("PlayList/show_protocol", false).toBool();
+ m_show_number = settings.value ("PlayList/show_numbers", true).toBool();
+ m_align_numbres = settings.value ("PlayList/align_numbers", false).toBool();
+ m_show_anchor = settings.value("PlayList/show_anchor", false).toBool();
+ bool show_popup = settings.value("PlayList/show_popup", false).toBool();
+
+ if (m_update)
+ {
+ delete m_metrics;
+ delete m_extra_metrics;
+ m_metrics = new QFontMetrics(m_font);
+ m_extra_metrics = new QFontMetrics(m_extra_font);
+ m_rows = height() / (m_metrics->lineSpacing() + 2);
+ updateList();
+ if(m_popupWidget)
+ {
+ m_popupWidget->deleteLater();
+ m_popupWidget = 0;
+ }
+ }
+ else
+ {
+ m_update = true;
+ m_metrics = new QFontMetrics(m_font);
+ m_extra_metrics = new QFontMetrics(m_extra_font);
+ }
+ if(show_popup)
+ m_popupWidget = new PlayListPopup::PopupWidget(this);
+}
+
+void ListWidget::loadColors()
+{
+ m_normal.setNamedColor(m_skin->getPLValue("normal"));
+ m_current.setNamedColor(m_skin->getPLValue("current"));
+ m_normal_bg.setNamedColor(m_skin->getPLValue("normalbg"));
+ m_selected_bg.setNamedColor(m_skin->getPLValue("selectedbg"));
+}
+
+void ListWidget::paintEvent(QPaintEvent *)
+{
+ QPainter m_painter(this);
+ m_painter.setFont(m_font);
+ m_painter.setBrush(QBrush(m_normal_bg));
+ m_painter.drawRect(-1,-1,width()+1,height()+1);
+ int font_y = 0;
+
+ for (int i = 0; i < m_titles.size(); ++i )
+ {
+ if (m_show_anchor && i == m_anchor_row - m_first)
+ {
+ m_painter.setBrush(m_model->isSelected(i + m_first) ? m_selected_bg : m_normal_bg);
+ m_painter.setPen(m_normal);
+ m_painter.drawRect (6, i * (m_metrics->lineSpacing() + 2),
+ width() - 10, m_metrics->lineSpacing() + 1);
+ }
+ else
+ {
+ if (m_model->isSelected(i + m_first))
+ {
+ m_painter.setBrush(QBrush(m_selected_bg));
+ m_painter.setPen(m_selected_bg);
+ m_painter.drawRect (6, i * (m_metrics->lineSpacing() + 2),
+ width() - 10, m_metrics->lineSpacing() + 1);
+ }
+ }
+
+ if (m_model->currentRow() == i + m_first)
+ m_painter.setPen(m_current);
+ else
+ m_painter.setPen(m_normal); //243,58
+
+ font_y = (i + 1) * (2 + m_metrics->lineSpacing()) - 2 - m_metrics->descent();
+
+
+
+ if(m_number_width)
+ {
+ QString number = QString("%1").arg(m_first+i+1);
+ m_painter.drawText(10 + m_number_width - m_extra_metrics->width(number),
+ font_y, number);
+ m_painter.drawText(10 + m_number_width + m_metrics->width("9"), font_y, m_titles.at(i));
+ }
+ else
+ m_painter.drawText(10, font_y, m_titles.at(i));
+
+
+ QString extra_string = getExtraString(m_first + i);
+ if(!extra_string.isEmpty())
+ {
+ m_painter.setFont(m_extra_font);
+
+ if(m_times.at(i).isEmpty())
+ m_painter.drawText(width() - 7 - m_extra_metrics->width(extra_string),
+ font_y, extra_string);
+ else
+ m_painter.drawText(width() - 10 - m_extra_metrics->width(extra_string) -
+ m_metrics->width(m_times.at(i)), font_y, extra_string);
+ m_painter.setFont(m_font);
+ }
+ m_painter.drawText(width() - 7 - m_metrics->width(m_times.at(i)), font_y, m_times.at(i));
+ }
+ //draw line
+ if(m_number_width)
+ {
+ m_painter.setPen(m_normal);
+ m_painter.drawLine(10 + m_number_width + m_metrics->width("9") / 2, 2,
+ 10 + m_number_width + m_metrics->width("9") / 2, font_y);
+ }
+}
+
+void ListWidget::mouseDoubleClickEvent (QMouseEvent *e)
+{
+ int y = e->y();
+ int row = rowAt(y);
+ if (INVALID_ROW != row)
+ {
+ m_model->setCurrent(row);
+ emit selectionChanged();
+ update();
+ }
+}
+
+
+void ListWidget::mousePressEvent(QMouseEvent *e)
+{
+ if(m_popupWidget)
+ m_popupWidget->hide();
+ m_scroll = true;
+ int y = e->y();
+ int row = rowAt(y);
+
+ if (INVALID_ROW != row && m_model->count() > row)
+ {
+ m_pressed_row = row;
+ if(e->button() == Qt::RightButton && !m_model->isSelected(row))
+ {
+ m_model->clearSelection();
+ m_model->setSelected(row, true);
+ m_anchor_row = m_pressed_row;
+ QWidget::mousePressEvent(e);
+ return;
+ }
+
+ if (m_model->isSelected(row) && (e->modifiers() == Qt::NoModifier))
+ {
+ m_select_on_release = true;
+ QWidget::mousePressEvent(e);
+ return;
+ }
+
+ if ((Qt::ShiftModifier & e->modifiers()))
+ {
+ bool select = true;
+ if (m_pressed_row > m_anchor_row)
+ {
+ for (int j = m_anchor_row;j <= m_pressed_row;j++)
+ {
+ m_model->setSelected(j, select);
+ }
+ }
+ else
+ {
+ for (int j = m_anchor_row;j >= m_pressed_row;j--)
+ {
+ m_model->setSelected(j, select);
+ }
+ }
+ m_anchor_row = m_pressed_row;
+ }
+ else //ShiftModifier released
+ {
+ if ((Qt::ControlModifier & e->modifiers()))
+ {
+ m_model->setSelected(row, !m_model->isSelected(row));
+ }
+ else //ControlModifier released
+ {
+ m_model->clearSelection();
+ m_model->setSelected(row, true);
+ }
+ m_anchor_row = m_pressed_row;
+ }
+ update();
+ }
+ QWidget::mousePressEvent(e);
+}
+
+void ListWidget::resizeEvent(QResizeEvent *e)
+{
+ m_rows = e->size().height() / (m_metrics->lineSpacing() + 2);
+ m_scroll = true;
+ updateList();
+ QWidget::resizeEvent(e);
+}
+
+void ListWidget::wheelEvent (QWheelEvent *e)
+{
+ if (m_model->count() <= m_rows)
+ return;
+ if ((m_first == 0 && e->delta() > 0) ||
+ ((m_first == m_model->count() - m_rows) && e->delta() < 0))
+ return;
+ m_first -= e->delta()/40; //40*3 TODO: add step to config
+ if (m_first < 0)
+ m_first = 0;
+
+ if (m_first > m_model->count() - m_rows)
+ m_first = m_model->count() - m_rows;
+
+ m_scroll = false;
+ updateList();
+}
+
+bool ListWidget::event (QEvent *e)
+{
+ if(m_popupWidget)
+ {
+ if(e->type() == QEvent::ToolTip)
+ {
+ QHelpEvent *helpEvent = (QHelpEvent *) e;
+ int row = rowAt(helpEvent->y());
+ if(row < 0)
+ {
+ m_popupWidget->deactivate();
+ return QWidget::event(e);
+ }
+ e->accept();
+ m_popupWidget->prepare(m_model->item(row), helpEvent->globalPos());
+ return true;
+ }
+ else if(e->type() == QEvent::Leave)
+ m_popupWidget->deactivate();
+ }
+ return QWidget::event(e);
+}
+
+void ListWidget::updateList()
+{
+ if (m_model->count() < (m_rows+m_first+1) && m_rows< m_model->count())
+ {
+ m_first = m_model->count() - m_rows;
+ }
+ if (m_model->count() < m_rows + 1)
+ {
+ m_first = 0;
+ emit positionChanged(0,0);
+ }
+ else
+ emit positionChanged(m_first, m_model->count() - m_rows);
+ if (m_model->count() <= m_first)
+ {
+ m_first = 0;
+ emit positionChanged(0, qMax(0, m_model->count() - m_rows));
+ }
+
+ m_titles = m_model->getTitles(m_first, m_rows);
+ m_times = m_model->getTimes(m_first, m_rows);
+ m_scroll = false;
+ //add numbers
+ for (int i = 0; i < m_titles.size() && m_show_number && !m_align_numbres; ++i)
+ {
+ QString title = m_titles.at(i);
+ m_titles.replace(i, title.prepend(QString("%1").arg(m_first+i+1)+". "));
+
+ }
+ //song numbers width
+ if(m_show_number && m_align_numbres && m_model->count())
+ {
+ m_number_width = m_metrics->width("9") * QString::number(m_model->count()).size();
+ }
+ else
+ m_number_width = 0;
+
+ //elide title
+ QString extra_string;
+ for (int i=0; i<m_titles.size(); ++i)
+ {
+ extra_string = getExtraString(m_first + i);
+ int extra_string_space = extra_string.isEmpty() ? 0 : m_metrics->width(extra_string);
+ if(m_number_width)
+ extra_string_space += m_number_width + m_metrics->width("9");
+ m_titles.replace(i, m_metrics->elidedText (m_titles.at(i), Qt::ElideRight,
+ width() - m_metrics->width(m_times.at(i)) - 22 - extra_string_space));
+ }
+
+ update();
+}
+
+void ListWidget::autoscroll()
+{
+ SimpleSelection sel = m_model->getSelection(m_pressed_row);
+ if ((sel.m_top == 0 && m_scroll_direction == TOP && sel.count() > 1) ||
+ (sel.m_bottom == m_model->count() - 1 && m_scroll_direction == DOWN && sel.count() > 1))
+ return;
+
+ if(m_scroll_direction == DOWN)
+ {
+ int row = m_first + m_rows;
+ (m_first + m_rows < m_model->count()) ? m_first ++ : m_first;
+ m_model->moveItems(m_pressed_row,row);
+ m_pressed_row = row;
+ }
+ else if(m_scroll_direction == TOP && m_first > 0)
+ {
+ m_first --;
+ m_model->moveItems(m_pressed_row, m_first);
+ m_pressed_row = m_first;
+ }
+}
+
+void ListWidget::setModel(PlayListModel *selected, PlayListModel *previous)
+{
+ if(previous)
+ disconnect(previous, 0, this, 0); //disconnect previous model
+ qApp->processEvents();
+ m_model = selected;
+ m_first = 0;
+ m_scroll = false;
+ recenterCurrent();
+ updateList();
+ connect (m_model, SIGNAL(currentChanged()), SLOT(recenterCurrent()));
+ connect (m_model, SIGNAL(listChanged()), SLOT(updateList()));
+}
+
+void ListWidget::scroll(int sc)
+{
+ if (m_model->count() <= m_rows)
+ return;
+ m_first = sc; //*(m_model->count() - m_rows)/99;
+ m_scroll = true;
+ updateList();
+}
+
+void ListWidget::updateSkin()
+{
+ loadColors();
+ update();
+}
+
+void ListWidget::dragEnterEvent(QDragEnterEvent *event)
+{
+ if (event->mimeData()->hasFormat("text/uri-list"))
+ event->acceptProposedAction();
+}
+
+
+void ListWidget::dropEvent(QDropEvent *event)
+{
+ if (event->mimeData()->hasUrls())
+ {
+ QList<QUrl> list_urls = event->mimeData()->urls();
+ event->acceptProposedAction();
+ QApplication::restoreOverrideCursor();
+
+ foreach(QUrl u,list_urls)
+ {
+ QString add_string = u.toString(QUrl::RemoveScheme);
+ if (!add_string.isEmpty())
+ processFileInfo(QFileInfo(add_string));
+ }
+ }
+}
+
+void ListWidget::processFileInfo(const QFileInfo& info)
+{
+ m_model->add(info.absoluteFilePath());
+}
+
+const QString ListWidget::getExtraString(int i)
+{
+ QString extra_string;
+
+ if (m_show_protocol && m_model->item(i)->url().contains("://"))
+ extra_string = "[" + m_model->item(i)->url().split("://").at(0) + "]";
+
+ if (m_model->isQueued(m_model->item(i)))
+ {
+ int index = m_model->queuedIndex(m_model->item(i));
+ extra_string += "|"+QString::number(index + 1)+"|";
+ }
+
+ if(m_model->currentRow() == i && m_player->isRepeatable())
+ extra_string += "|R|";
+ else if(m_model->isStopAfter(m_model->item(i)))
+ extra_string += "|S|";
+
+ extra_string = extra_string.trimmed(); //remove white space
+ if(!extra_string.isEmpty())
+ extra_string.prepend(" ");
+ return extra_string;
+}
+
+void ListWidget::mouseMoveEvent(QMouseEvent *e)
+{
+ if(e->buttons() == Qt::LeftButton)
+ {
+ m_scroll = true;
+ if (m_prev_y > e->y())
+ m_scroll_direction = TOP;
+ else if (m_prev_y < e->y())
+ m_scroll_direction = DOWN;
+ else
+ m_scroll_direction = NONE;
+
+ if(e->y() < 0 || e->y() > height())
+ {
+ if(!m_timer->isActive())
+ m_timer->start();
+ return;
+ }
+ m_timer->stop();
+
+ int row = rowAt(e->y());
+
+ if (INVALID_ROW != row)
+ {
+ SimpleSelection sel = m_model->getSelection(m_pressed_row);
+ if(sel.count() > 1 && m_scroll_direction == TOP)
+ {
+ if(sel.m_top == 0 || sel.m_top == m_first)
+ return;
+ }
+ else if(sel.count() > 1 && m_scroll_direction == DOWN)
+ {
+ if(sel.m_bottom == m_model->count() - 1 || sel.m_bottom == m_first + m_rows)
+ return;
+ }
+ m_model->moveItems(m_pressed_row,row);
+
+ m_prev_y = e->y();
+ m_scroll = false;
+ m_pressed_row = row;
+ m_anchor_row = row;
+ }
+ }
+ else if(m_popupWidget)
+ {
+ int row = rowAt(e->y());
+ if(row < 0 || m_popupWidget->item() != m_model->item(row))
+ m_popupWidget->deactivate();
+ }
+}
+
+void ListWidget::mouseReleaseEvent(QMouseEvent *e)
+{
+ if (m_select_on_release)
+ {
+ m_model->clearSelection();
+ m_model->setSelected(m_pressed_row,true);
+ m_anchor_row = m_pressed_row;
+ m_select_on_release = false;
+ }
+ m_pressed_row = INVALID_ROW;
+ m_scroll_direction = NONE;
+ m_timer->stop();
+ m_scroll = false;
+ QWidget::mouseReleaseEvent(e);
+}
+
+int ListWidget::rowAt(int y) const
+{
+ for (int i = 0; i < qMin(m_rows, m_model->count() - m_first); ++i)
+ {
+ if ((y >= i * (m_metrics->lineSpacing() + 2)) && (y <= (i+1) * (m_metrics->lineSpacing() + 2)))
+ return m_first + i;
+ }
+ return INVALID_ROW;
+}
+
+void ListWidget::contextMenuEvent(QContextMenuEvent * event)
+{
+ if (menu())
+ menu()->exec(event->globalPos());
+}
+
+void ListWidget::recenterCurrent()
+{
+ if (!m_scroll && m_rows)
+ {
+ if (m_first + m_rows < m_model->currentRow() + 1)
+ m_first = qMin(m_model->count() - m_rows,
+ m_model->currentRow() - m_rows/2);
+ else if (m_first > m_model->currentRow())
+ m_first = qMax (m_model->currentRow() - m_rows/2, 0);
+ }
+}
diff --git a/src/plugins/Ui/skinned/listwidget.h b/src/plugins/Ui/skinned/listwidget.h
new file mode 100644
index 000000000..7e901d34f
--- /dev/null
+++ b/src/plugins/Ui/skinned/listwidget.h
@@ -0,0 +1,165 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 LISTWIDGET_H
+#define LISTWIDGET_H
+
+#include <QWidget>
+#include <QDir>
+#include <QContextMenuEvent>
+#include <QPen>
+
+class QFont;
+class QFontMetrics;
+class QMenu;
+class QAction;
+class QTimer;
+class PlayList;
+class PlayListModel;
+class Skin;
+class PlayListItem;
+class MediaPlayer;
+namespace PlayListPopup{
+class PopupWidget;
+}
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class ListWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ ListWidget(QWidget *parent = 0);
+
+ ~ListWidget();
+
+ void readSettings();
+ /*!
+ * Returns count of currently visible rows.
+ */
+ int visibleRows()const
+ {
+ return m_rows;
+ }
+
+ /*!
+ * Returns number of first visible row.
+ */
+ int firstVisibleRow()const
+ {
+ return m_first;
+ }
+
+ int getAnchorRow()const
+ {
+ return m_anchor_row;
+ }
+
+ void setAnchorRow(int r)
+ {
+ m_anchor_row = r;
+ }
+
+ QMenu *menu()
+ {
+ return m_menu;
+ }
+
+ PlayListModel *model()
+ {
+ Q_ASSERT(!m_model);
+ return m_model;
+ }
+
+
+public slots:
+ void updateList();
+ void scroll(int); //0-99
+ void recenterCurrent();
+ void setModel(PlayListModel *selected, PlayListModel *previous = 0);
+
+
+signals:
+ void selectionChanged();
+ void positionChanged(int, int); //current position, maximum value
+
+protected:
+ void paintEvent(QPaintEvent *);
+ void mouseDoubleClickEvent(QMouseEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void resizeEvent(QResizeEvent *);
+ void wheelEvent(QWheelEvent *);
+ int rowAt(int)const;
+ void dragEnterEvent(QDragEnterEvent *event);
+ void dropEvent(QDropEvent *event);
+ void contextMenuEvent (QContextMenuEvent * event);
+ bool event (QEvent *e);
+
+private slots:
+ void updateSkin();
+ void autoscroll();
+
+private:
+ void loadColors();
+ void processFileInfo(const QFileInfo&);
+ bool m_update;
+ bool m_scroll;
+ int m_pressed_row;
+ QMenu *m_menu;
+ PlayListModel *m_model;
+ /*!
+ * Returns string with queue number or(and) repeate flag for the item number \b i.
+ */
+ const QString getExtraString(int i);
+ int m_rows, m_first;
+ QList <QString> m_titles;
+ QList <QString> m_times;
+ PlayList *m_pl;
+ QFont m_font, m_extra_font;
+ QFontMetrics *m_metrics;
+ QFontMetrics *m_extra_metrics;
+ Skin *m_skin;
+ QColor m_normal, m_current, m_normal_bg, m_selected_bg;
+ int m_anchor_row;
+
+ enum ScrollDirection
+ {
+ NONE = 0,TOP,DOWN
+ };
+
+ /*!
+ * Scroll direction that is preforming in current moment.
+ */
+ ScrollDirection m_scroll_direction;
+ int m_prev_y;
+ bool m_select_on_release;
+ bool m_show_protocol;
+ bool m_show_number;
+ bool m_show_anchor;
+ bool m_align_numbres;
+ int m_number_width;
+ MediaPlayer *m_player;
+ PlayListPopup::PopupWidget *m_popupWidget;
+ QTimer *m_timer;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/lxdesupport.cpp b/src/plugins/Ui/skinned/lxdesupport.cpp
new file mode 100644
index 000000000..827cbd60c
--- /dev/null
+++ b/src/plugins/Ui/skinned/lxdesupport.cpp
@@ -0,0 +1,40 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 <QIcon>
+#include <QSettings>
+#include <QDir>
+#include "lxdesupport.h"
+
+void LXDESupport::load()
+{
+ if(qgetenv("XDG_CURRENT_DESKTOP") != "LXDE")
+ return;
+
+ QString conf_path = qgetenv("XDG_CONFIG_HOME");
+ if(conf_path.isEmpty())
+ conf_path = QDir::homePath() + "/.config";
+ conf_path.append("/lxsession/LXDE/desktop.conf");
+
+ QSettings lxde_settings(conf_path, QSettings::IniFormat);
+ QString themeName = lxde_settings.value("GTK/sNet/IconThemeName").toString();
+ if(!themeName.isEmpty())
+ QIcon::setThemeName(themeName);
+}
diff --git a/src/plugins/Ui/skinned/lxdesupport.h b/src/plugins/Ui/skinned/lxdesupport.h
new file mode 100644
index 000000000..99f0aac62
--- /dev/null
+++ b/src/plugins/Ui/skinned/lxdesupport.h
@@ -0,0 +1,33 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 LXDESUPPORT_H
+#define LXDESUPPORT_H
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class LXDESupport
+{
+public:
+ static void load();
+};
+
+#endif // LXDESUPPORT_H
diff --git a/src/plugins/Ui/skinned/mainvisual.cpp b/src/plugins/Ui/skinned/mainvisual.cpp
new file mode 100644
index 000000000..222878e36
--- /dev/null
+++ b/src/plugins/Ui/skinned/mainvisual.cpp
@@ -0,0 +1,613 @@
+/***************************************************************************
+ * Copyright (C) 2007-2010 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 <QTimer>
+#include <QSettings>
+#include <QPainter>
+#include <QMenu>
+#include <QActionGroup>
+#include <qmmp/buffer.h>
+#include <qmmp/qmmp.h>
+#include <math.h>
+#include <stdlib.h>
+#include "skin.h"
+#include "fft.h"
+#include "inlines.h"
+#include "mainvisual.h"
+
+#define VISUAL_NODE_SIZE 512 //samples
+#define VISUAL_BUFFER_SIZE (5*VISUAL_NODE_SIZE)
+
+
+MainVisual *MainVisual::m_instance = 0;
+
+MainVisual *MainVisual::instance()
+{
+ if (!m_instance)
+ qFatal ("MainVisual: this object is not created!");
+ return m_instance;
+}
+
+MainVisual::MainVisual (QWidget *parent)
+ : Visual (parent), m_vis (0), m_playing (false)
+{
+ m_skin = Skin::instance();
+ m_ratio = m_skin->ratio();
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSettings()));
+ m_timer = new QTimer (this);
+ connect(m_timer, SIGNAL (timeout()), this, SLOT (timeout()));
+ createMenu();
+ readSettings();
+ m_left_buffer = new short[VISUAL_BUFFER_SIZE];
+ m_buffer_at = 0;
+ m_instance = this;
+}
+
+MainVisual::~MainVisual()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ if (m_vis)
+ {
+ settings.setValue("Visualization/type",m_vis->name());
+ delete m_vis;
+ m_vis = 0;
+ }
+ else
+ settings.setValue("Visualization/type", "None");
+ settings.setValue("Visualization/rate", 1000/m_timer->interval());
+ delete [] m_left_buffer;
+ m_instance = 0;
+}
+
+void MainVisual::setVisual (VisualBase *newvis)
+{
+ m_timer->stop();
+ if (m_vis)
+ delete m_vis;
+ m_vis = newvis;
+ if (m_vis)
+ m_timer->start();
+ else
+ {
+ m_pixmap.fill (Qt::transparent);
+ update();
+ }
+}
+
+void MainVisual::clear()
+{
+ m_buffer_at = 0;
+ if (m_vis)
+ m_vis->clear();
+ m_pixmap = m_bg;
+ update();
+}
+
+void MainVisual::add (unsigned char *data, qint64 size, int chan)
+{
+ if (!m_timer->isActive () || !m_vis)
+ return;
+
+ if(VISUAL_BUFFER_SIZE == m_buffer_at)
+ {
+ m_buffer_at -= VISUAL_NODE_SIZE;
+ memmove(m_left_buffer, m_left_buffer + VISUAL_NODE_SIZE, m_buffer_at << 1);
+ return;
+ }
+
+ int frames = qMin((int)size/chan >> 1, VISUAL_BUFFER_SIZE - m_buffer_at);
+
+ if (chan >= 2)
+ {
+ mono16_from_multichannel(m_left_buffer + m_buffer_at, (short *) data, frames, chan);
+ }
+ else
+ {
+ memcpy(m_left_buffer + m_buffer_at, (short *) data, frames << 1);
+ }
+
+ m_buffer_at += frames;
+}
+
+void MainVisual::timeout()
+{
+ mutex()->lock ();
+
+ if(m_buffer_at < VISUAL_NODE_SIZE)
+ {
+ mutex()->unlock ();
+ return;
+ }
+
+ if (m_vis)
+ {
+ m_vis->process (m_left_buffer);
+ m_buffer_at -= VISUAL_NODE_SIZE;
+ memmove(m_left_buffer, m_left_buffer + VISUAL_NODE_SIZE, m_buffer_at << 1);
+ m_pixmap = m_bg;
+ QPainter p(&m_pixmap);
+ m_vis->draw (&p);
+ }
+ mutex()->unlock ();
+ update();
+}
+
+void MainVisual::paintEvent (QPaintEvent *)
+{
+ QPainter painter (this);
+ painter.drawPixmap (0,0, m_pixmap);
+}
+
+void MainVisual::hideEvent (QHideEvent *)
+{
+ m_timer->stop();
+}
+
+void MainVisual::showEvent (QShowEvent *)
+{
+ if (m_vis)
+ m_timer->start();
+}
+
+void MainVisual::mousePressEvent (QMouseEvent *e)
+{
+ if (e->button() == Qt::RightButton)
+ m_menu->exec(e->globalPos());
+ else
+ {
+ m_pixmap = m_bg;
+ if (!m_vis)
+ setVisual(new mainvisual::Analyzer);
+ else if (m_vis->name() == "Analyzer")
+ setVisual(new mainvisual::Scope);
+ else if (m_vis->name() == "Scope")
+ setVisual(0);
+
+ QString str = "Off";
+ if (m_vis)
+ str = m_vis->name();
+ foreach(QAction *act, m_visModeGroup->actions ())
+ if (str == act->data().toString())
+ {
+ act->setChecked(true);
+ break;
+ }
+ }
+}
+
+void MainVisual::drawBackGround()
+{
+ m_bg = QPixmap (76 * m_ratio, 16 * m_ratio);
+ if (m_transparentAction->isChecked())
+ {
+ m_bg.fill (Qt::transparent);
+ return;
+ }
+ QPainter painter(&m_bg);
+ for (int x = 0; x < 76 * m_ratio; x += 2)
+ {
+ painter.setPen(m_skin->getVisColor(0));
+ painter.drawLine(x + 1, 0, x + 1, 16 *m_ratio);
+ for (int y = 0; y < 16 *m_ratio; y += 2)
+ {
+ painter.setPen(m_skin->getVisColor(0));
+ painter.drawPoint(x,y);
+ painter.setPen(m_skin->getVisColor(1));
+ painter.drawPoint(x,y + 1);
+ }
+ }
+}
+
+void MainVisual::updateSettings()
+{
+ m_ratio = m_skin->ratio();
+ resize(76 * m_ratio, 16 * m_ratio);
+ m_pixmap = QPixmap (76 * m_ratio, 16 * m_ratio);
+ drawBackGround();
+ m_pixmap = m_bg;
+ update();
+ QAction *act = m_fpsGroup->checkedAction ();
+ if (act)
+ m_timer->setInterval (1000/act->data().toInt());
+ else
+ m_timer->setInterval (40);
+
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ act = m_peaksFalloffGroup->checkedAction ();
+ if (act)
+ settings.setValue("Visualization/peaks_falloff", act->data().toInt());
+ else
+ settings.setValue("Visualization/peaks_falloff", 3);
+
+ act = m_analyzerFalloffGroup->checkedAction ();
+ if (act)
+ settings.setValue("Visualization/analyzer_falloff", act->data().toInt());
+ else
+ settings.setValue("Visualization/analyzer_falloff", 3);
+
+ settings.setValue("Visualization/show_peaks", m_peaksAction->isChecked());
+
+ act = m_analyzerModeGroup->checkedAction();
+ if (act)
+ settings.setValue("Visualization/analyzer_mode", act->data().toInt());
+ else
+ settings.setValue("Visualization/analyzer_mode", 0);
+
+ act = m_analyzerTypeGroup->checkedAction();
+ if (act)
+ settings.setValue("Visualization/analyzer_type", act->data().toInt());
+ else
+ settings.setValue("Visualization/analyzer_type", 1);
+
+ settings.setValue("Visualization/transparent_bg", m_transparentAction->isChecked());
+
+ act = m_visModeGroup->checkedAction ();
+ QString visName;
+ if (act)
+ visName = act->data().toString();
+ else
+ visName == "Off";
+
+ if (visName == "Analyzer")
+ setVisual(new mainvisual::Analyzer);
+ else if (visName == "Scope")
+ setVisual(new mainvisual::Scope);
+ else
+ setVisual(0);
+
+}
+
+void MainVisual::createMenu()
+{
+ m_menu = new QMenu (this);
+ connect(m_menu, SIGNAL(triggered (QAction *)),SLOT(updateSettings()));
+ QMenu *visMode = m_menu->addMenu(tr("Visualization Mode"));
+ m_visModeGroup = new QActionGroup(this);
+ m_visModeGroup->setExclusive(true);
+ m_visModeGroup->addAction(tr("Analyzer"))->setData("Analyzer");
+ m_visModeGroup->addAction(tr("Scope"))->setData("Scope");
+ m_visModeGroup->addAction(tr("Off"))->setData("None");
+ foreach(QAction *act, m_visModeGroup->actions ())
+ {
+ act->setCheckable(true);
+ visMode->addAction(act);
+ }
+
+ QMenu *analyzerMode = m_menu->addMenu(tr("Analyzer Mode"));
+ m_analyzerModeGroup = new QActionGroup(this);
+ m_analyzerTypeGroup = new QActionGroup(this);
+ m_analyzerModeGroup->addAction(tr("Normal"))->setData(0);
+ m_analyzerModeGroup->addAction(tr("Fire"))->setData(1);
+ m_analyzerModeGroup->addAction(tr("Vertical Lines"))->setData(2);
+ m_analyzerTypeGroup->addAction(tr("Lines"))->setData(0);
+ m_analyzerTypeGroup->addAction(tr("Bars"))->setData(1);
+ foreach(QAction *act, m_analyzerModeGroup->actions ())
+ {
+ act->setCheckable(true);
+ analyzerMode->addAction(act);
+ }
+ analyzerMode->addSeparator ();
+ foreach(QAction *act, m_analyzerTypeGroup->actions ())
+ {
+ act->setCheckable(true);
+ analyzerMode->addAction(act);
+ }
+ analyzerMode->addSeparator ();
+ m_peaksAction = analyzerMode->addAction(tr("Peaks"));
+ m_peaksAction->setCheckable(true);
+
+
+ QMenu *refreshRate = m_menu->addMenu(tr("Refresh Rate"));
+ m_fpsGroup = new QActionGroup(this);
+ m_fpsGroup->setExclusive(true);
+ m_fpsGroup->addAction(tr("50 fps"))->setData(50);
+ m_fpsGroup->addAction(tr("25 fps"))->setData(25);
+ m_fpsGroup->addAction(tr("10 fps"))->setData(10);
+ m_fpsGroup->addAction(tr("5 fps"))->setData(5);
+ foreach(QAction *act, m_fpsGroup->actions ())
+ {
+ act->setCheckable(true);
+ refreshRate->addAction(act);
+ }
+
+ QMenu *analyzerFalloff = m_menu->addMenu(tr("Analyzer Falloff"));
+ m_analyzerFalloffGroup = new QActionGroup(this);
+ m_analyzerFalloffGroup->setExclusive(true);
+ m_analyzerFalloffGroup->addAction(tr("Slowest"))->setData(1);
+ m_analyzerFalloffGroup->addAction(tr("Slow"))->setData(2);
+ m_analyzerFalloffGroup->addAction(tr("Medium"))->setData(3);
+ m_analyzerFalloffGroup->addAction(tr("Fast"))->setData(4);
+ m_analyzerFalloffGroup->addAction(tr("Fastest"))->setData(5);
+ foreach(QAction *act, m_analyzerFalloffGroup->actions ())
+ {
+ act->setCheckable(true);
+ analyzerFalloff->addAction(act);
+ }
+
+ QMenu *peaksFalloff = m_menu->addMenu(tr("Peaks Falloff"));
+ m_peaksFalloffGroup = new QActionGroup(this);
+ m_peaksFalloffGroup->setExclusive(true);
+ m_peaksFalloffGroup->addAction(tr("Slowest"))->setData(1);
+ m_peaksFalloffGroup->addAction(tr("Slow"))->setData(2);
+ m_peaksFalloffGroup->addAction(tr("Medium"))->setData(3);
+ m_peaksFalloffGroup->addAction(tr("Fast"))->setData(4);
+ m_peaksFalloffGroup->addAction(tr("Fastest"))->setData(5);
+ foreach(QAction *act, m_peaksFalloffGroup->actions ())
+ {
+ act->setCheckable(true);
+ peaksFalloff->addAction(act);
+ }
+ QMenu *background = m_menu->addMenu(tr("Background"));
+ m_transparentAction = background->addAction(tr("Transparent"));
+ m_transparentAction->setCheckable(true);
+ update();
+}
+
+
+void MainVisual::readSettings()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+
+ QString name = settings.value("Visualization/type","Analyzer").toString();
+ m_visModeGroup->actions ()[0]->setChecked(true);
+ foreach(QAction *act, m_visModeGroup->actions ())
+ if (name == act->data().toString())
+ act->setChecked(true);
+
+ m_peaksAction->setChecked(
+ settings.value("Visualization/show_peaks", true).toBool());
+
+ int fps = settings.value("Visualization/rate", 25).toInt();
+ m_fpsGroup->actions ()[1]->setChecked(true);
+ foreach(QAction *act, m_fpsGroup->actions ())
+ if (fps == act->data().toInt())
+ act->setChecked(true);
+
+ int mode = settings.value("Visualization/analyzer_mode", 0).toInt();
+ m_analyzerModeGroup->actions ()[0]->setChecked(true);
+ foreach(QAction *act, m_analyzerModeGroup->actions ())
+ if (mode == act->data().toInt())
+ act->setChecked(true);
+
+ int type = settings.value("Visualization/analyzer_type", 1).toInt();
+ m_analyzerTypeGroup->actions ()[1]->setChecked(true);
+ foreach(QAction *act, m_analyzerTypeGroup->actions ())
+ if (type == act->data().toInt())
+ act->setChecked(true);
+
+ int speed = settings.value("Visualization/peaks_falloff", 3).toInt();
+ m_peaksFalloffGroup->actions ()[2]->setChecked(true);
+ foreach(QAction *act, m_peaksFalloffGroup->actions ())
+ if (speed == act->data().toInt())
+ act->setChecked(true);
+
+ speed = settings.value("Visualization/analyzer_falloff", 3).toInt();
+ m_analyzerFalloffGroup->actions ()[2]->setChecked(true);
+ foreach(QAction *act, m_analyzerFalloffGroup->actions ())
+ if (speed == act->data().toInt())
+ act->setChecked(true);
+
+ m_transparentAction->setChecked(
+ settings.value("Visualization/transparent_bg", false).toBool());
+
+ updateSettings();
+}
+
+using namespace mainvisual;
+
+Analyzer::Analyzer()
+ : m_analyzerBarWidth (4), m_fps (20)
+{
+ clear();
+ m_skin = Skin::instance();
+ m_size = QSize(76*m_skin->ratio(), 16*m_skin->ratio());
+
+ double peaks_speed[] = { 0.05, 0.1, 0.2, 0.4, 0.8 };
+ double analyzer_speed[] = { 1.2, 1.8, 2.2, 2.8, 2.4 };
+
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ m_peaks_falloff =
+ peaks_speed[settings.value("Visualization/peaks_falloff", 3).toInt()-1];
+ m_analyzer_falloff =
+ analyzer_speed[settings.value("Visualization/analyzer_falloff", 3).toInt()-1];
+ m_show_peaks = settings.value("Visualization/show_peaks", true).toBool();
+
+ m_lines = settings.value("Visualization/analyzer_type", 1).toInt() == 0;
+ m_mode = settings.value("Visualization/analyzer_mode", 0).toInt();
+}
+
+Analyzer::~Analyzer()
+{}
+
+void Analyzer::clear()
+{
+ for (int i = 0; i< 75; ++i)
+ {
+ m_intern_vis_data[i] = 0;
+ m_peaks[i] = 0;
+ }
+}
+
+bool Analyzer::process (short *l)
+{
+ static fft_state *state = 0;
+ if (!state)
+ state = fft_init();
+ short dest[256];
+
+ static const int xscale_long[] =
+ {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 61, 66, 71, 76, 81, 87, 93, 100, 107,
+ 114, 122, 131, 140, 150, 161, 172, 184, 255
+ };
+
+ static const int xscale_short[] =
+ {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 15, 20, 27,
+ 36, 47, 62, 82, 107, 141, 184, 255
+ };
+
+ calc_freq (dest, l);
+
+ const double y_scale = 3.60673760222; /* 20.0 / log(256) */
+ int max = m_lines ? 75 : 19, y, j;
+
+ for (int i = 0; i < max; i++)
+ {
+ if (m_lines)
+ for (j = xscale_long[i], y = 0; j < xscale_long[i + 1]; j++)
+ {
+ if (dest[j] > y)
+ y = dest[j];
+ }
+ else
+ for (j = xscale_short[i], y = 0; j < xscale_short[i + 1]; j++)
+ {
+ if (dest[j] > y)
+ y = dest[j];
+ }
+ y >>= 7;
+ int magnitude = 0;
+ if (y != 0)
+ {
+ magnitude = int(log (y) * y_scale);
+ if (magnitude > 15)
+ magnitude = 15;
+ if (magnitude < 0)
+ magnitude = 0;
+ }
+
+ m_intern_vis_data[i] -= m_analyzer_falloff;
+ m_intern_vis_data[i] = magnitude > m_intern_vis_data[i]
+ ? magnitude : m_intern_vis_data[i];
+ if (m_show_peaks)
+ {
+ m_peaks[i] -= m_peaks_falloff;
+ m_peaks[i] = magnitude > m_peaks[i]
+ ? magnitude : m_peaks[i];
+ }
+ }
+ return true;
+}
+
+void Analyzer::draw (QPainter *p)
+{
+ int r = m_skin->ratio();
+ if (m_lines)
+ for (int j = 0; j < 75; ++j)
+ {
+ for (int i = 0; i <= m_intern_vis_data[j]; ++i)
+ {
+ if (m_mode == 0)
+ p->setPen (m_skin->getVisColor (18-i));
+ else if (m_mode == 1)
+ p->setPen (m_skin->getVisColor (3+(int(m_intern_vis_data[j])-i)));
+ else
+ p->setPen (m_skin->getVisColor (18-int(m_intern_vis_data[j])));
+ p->drawPoint (j*r, m_size.height() - r*i);
+ if(r == 2)
+ p->drawPoint (j*r+1, m_size.height() - r*i);
+ }
+ p->setPen (m_skin->getVisColor (23));
+ if (m_show_peaks)
+ {
+ p->drawPoint (j*r, m_size.height() - r*m_peaks[j]);
+ if(r == 2)
+ p->drawPoint (j*r+1, m_size.height() - r*m_peaks[j]);
+ }
+ }
+ else
+ for (int j = 0; j < 19; ++j)
+ {
+ for (int i = 0; i <= m_intern_vis_data[j]; ++i)
+ {
+ if (m_mode == 0)
+ p->setPen (m_skin->getVisColor (18-i));
+ else if (m_mode == 1)
+ p->setPen (m_skin->getVisColor (3+(int(m_intern_vis_data[j])-i)));
+ else
+ p->setPen (m_skin->getVisColor (18-int(m_intern_vis_data[j])));
+
+ p->drawLine (j*4*r,m_size.height()-r*i, (j*4+2)*r,m_size.height()-r*i);
+ if(r == 2)
+ p->drawLine (j*4*r, m_size.height()-r*i +1, (j*4+2)*r,m_size.height()-r*i+1);
+ }
+ p->setPen (m_skin->getVisColor (23));
+ if (m_show_peaks)
+ {
+ p->drawLine (j*4*r,m_size.height()-r*m_peaks[j],
+ (j*4+2)*r,m_size.height()-r*m_peaks[j]);
+ if(r == 2)
+ p->drawLine (j*4*r,m_size.height()-r*m_peaks[j]+1,
+ (j*4+2)*r,m_size.height()-r*m_peaks[j]+1);
+ }
+ }
+}
+
+Scope::Scope()
+{
+ clear();
+ m_skin = Skin::instance();
+ m_ratio = m_skin->ratio();
+}
+
+void Scope::clear()
+{
+ for (int i = 0; i< 76; ++i)
+ m_intern_vis_data[i] = 5;
+}
+
+Scope::~Scope()
+{}
+
+bool Scope::process(short *l)
+{
+ int step = (VISUAL_NODE_SIZE << 8)/76;
+ int pos = 0;
+
+ for (int i = 0; i < 76; ++i)
+ {
+ pos += step;
+ m_intern_vis_data[i] = (l[pos >> 8] >> 12);
+
+ if (m_intern_vis_data[i] > 4)
+ m_intern_vis_data[i] = 4;
+ else if (m_intern_vis_data[i] < -4)
+ m_intern_vis_data[i] = -4;
+ }
+ return true;
+}
+
+void Scope::draw(QPainter *p)
+{
+ for (int i = 0; i<75; ++i)
+ {
+ int h1 = 8 - m_intern_vis_data[i];
+ int h2 = 8 - m_intern_vis_data[i+1];
+ if (h1 > h2)
+ qSwap(h1, h2);
+ p->setPen (m_skin->getVisColor(18 + qAbs(8 - h2)));
+ p->drawLine(i*m_ratio, h1*m_ratio, (i+1)*m_ratio, h2*m_ratio);
+ }
+ for (int i = 0; i< 76; ++i)
+ m_intern_vis_data[i] = 0;
+}
diff --git a/src/plugins/Ui/skinned/mainvisual.h b/src/plugins/Ui/skinned/mainvisual.h
new file mode 100644
index 000000000..9807483d7
--- /dev/null
+++ b/src/plugins/Ui/skinned/mainvisual.h
@@ -0,0 +1,145 @@
+/***************************************************************************
+ * Copyright (C) 2007-2010 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 MAINVISUAL_H
+#define MAINVISUAL_H
+
+#include <QWidget>
+#include <QResizeEvent>
+#include <qmmp/visual.h>
+
+class QTimer;
+class QMenu;
+class QActionGroup;
+
+class VisualBase
+{
+public:
+ virtual ~VisualBase(){}
+ virtual void clear() = 0;
+ virtual bool process(short *l) = 0;
+ virtual void draw(QPainter *) = 0;
+ virtual const QString name() = 0;
+};
+
+class Skin;
+
+class MainVisual : public Visual
+{
+ Q_OBJECT
+
+public:
+ MainVisual( QWidget *parent = 0);
+ virtual ~MainVisual();
+
+ static MainVisual *instance();
+ void setVisual(VisualBase *newvis);
+ void add(unsigned char *data, qint64 size, int chan);
+ void clear();
+ void paintEvent(QPaintEvent *);
+
+protected:
+ virtual void hideEvent (QHideEvent *);
+ virtual void showEvent (QShowEvent *);
+ virtual void mousePressEvent (QMouseEvent *);
+
+public slots:
+ void timeout();
+
+private slots:
+ void updateSettings();
+
+private:
+ void drawBackGround();
+ void createMenu();
+ void readSettings();
+ static MainVisual *m_instance;
+ VisualBase *m_vis;
+ QPixmap m_pixmap;
+ QPixmap m_bg;
+ QTimer *m_timer;
+ bool m_playing;
+ Skin *m_skin;
+ //menu and actions
+ QMenu *m_menu;
+ //action groups
+ QActionGroup *m_visModeGroup;
+ QActionGroup *m_fpsGroup;
+ QActionGroup *m_peaksFalloffGroup;
+ QActionGroup *m_analyzerFalloffGroup;
+ QActionGroup *m_analyzerModeGroup;
+ QActionGroup *m_analyzerTypeGroup;
+ QAction *m_peaksAction;
+ QAction *m_transparentAction;
+ int m_ratio;
+ short *m_left_buffer;
+ short *m_right_buffer;
+ int m_buffer_at;
+};
+
+namespace mainvisual
+{
+class Analyzer : public VisualBase
+{
+public:
+ Analyzer();
+ virtual ~Analyzer();
+
+ void clear();
+ bool process(short *l);
+ void draw(QPainter *p);
+ const QString name()
+ {
+ return "Analyzer";
+ }
+
+private:
+ QSize m_size;
+ int m_analyzerBarWidth, m_fps;
+ double m_intern_vis_data[75];
+ double m_peaks[75];
+ double m_peaks_falloff;
+ double m_analyzer_falloff;
+ bool m_show_peaks;
+ bool m_lines;
+ int m_mode;
+ Skin *m_skin;
+};
+
+class Scope : public VisualBase
+{
+public:
+ Scope();
+ virtual ~Scope();
+ void clear();
+ bool process(short *l);
+ void draw(QPainter *p);
+ const QString name()
+ {
+ return "Scope";
+ }
+
+private:
+ int m_intern_vis_data[76];
+ Skin *m_skin;
+ int m_ratio;
+};
+}
+
+#endif
diff --git a/src/plugins/Ui/skinned/mainwindow.cpp b/src/plugins/Ui/skinned/mainwindow.cpp
new file mode 100644
index 000000000..fdbe51adb
--- /dev/null
+++ b/src/plugins/Ui/skinned/mainwindow.cpp
@@ -0,0 +1,616 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 <QFileDialog>
+#include <QDir>
+#include <QAction>
+#include <QMenu>
+#include <math.h>
+#include <qmmp/soundcore.h>
+#include <qmmp/visual.h>
+#include <qmmp/metadatamanager.h>
+#include <qmmpui/generalhandler.h>
+#include <qmmpui/general.h>
+#include <qmmpui/playlistparser.h>
+#include <qmmpui/playlistformat.h>
+#include <qmmpui/commandlinemanager.h>
+#include <qmmpui/filedialog.h>
+#include <qmmpui/playlistmodel.h>
+#include <qmmpui/playlistmanager.h>
+#include <qmmpui/mediaplayer.h>
+#include "mainwindow.h"
+#include "skin.h"
+#include "playlist.h"
+#include "configdialog.h"
+#include "dock.h"
+#include "eqwidget.h"
+#include "mainvisual.h"
+#include "jumptotrackdialog.h"
+#include "aboutdialog.h"
+#include "addurldialog.h"
+#include "listwidget.h"
+#include "visualmenu.h"
+#include "windowsystem.h"
+#include "actionmanager.h"
+//#include "builtincommandlineoption.h"
+
+#define KEY_OFFSET 10000
+
+MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
+{
+#ifdef Q_WS_X11
+ qDebug("MainWindow: detected wm: %s", qPrintable(WindowSystem::netWindowManagerName()));
+#endif
+ m_vis = 0;
+ m_update = false;
+ setWindowIcon(QIcon(":/32x32/qmmp.png"));
+ setWindowFlags(Qt::Window | Qt::FramelessWindowHint |
+ Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint);
+ setWindowTitle("Qmmp");
+
+ new ActionManager();
+
+ //prepare libqmmp and libqmmpui libraries for playing
+ m_player = MediaPlayer::instance();
+ m_core = SoundCore::instance();
+ m_pl_manager = PlayListManager::instance();
+ //additional featuries
+ //new PlaylistParser(this);
+ m_generalHandler = GeneralHandler::instance();
+
+ //user interface
+ m_skin = new Skin(this);
+ resize(275 * m_skin->ratio(),116 * m_skin->ratio());
+ Dock *dock = new Dock(this);
+ dock->setMainWidget(this);
+ m_display = new MainDisplay(this);
+ setCentralWidget(m_display);
+ m_display->setFocus ();
+
+ m_playlist = new PlayList(m_pl_manager, this);
+ dock->addWidget(m_playlist);
+
+ m_equalizer = new EqWidget(this);
+ dock->addWidget(m_equalizer);
+
+ m_jumpDialog = new JumpToTrackDialog(m_pl_manager, this);
+ m_jumpDialog->hide();
+
+ createActions();
+ //prepare visualization
+ Visual::initialize(this, m_visMenu, SLOT(updateActions()));
+ m_vis = MainVisual::instance();
+ Visual::add(m_vis);
+ //connections
+ connect (m_playlist,SIGNAL(next()),SLOT(next()));
+ connect (m_playlist,SIGNAL(prev()),SLOT(previous()));
+ connect (m_playlist,SIGNAL(play()),SLOT(play()));
+ connect (m_playlist,SIGNAL(pause()), m_core ,SLOT(pause()));
+ connect (m_playlist,SIGNAL(stop()),SLOT(stop()));
+ connect (m_playlist,SIGNAL(eject()),SLOT(addFile()));
+ connect (m_playlist,SIGNAL(loadPlaylist()),SLOT(loadPlaylist()));
+ connect (m_playlist,SIGNAL(savePlaylist()),SLOT(savePlaylist()));
+
+ connect(m_display,SIGNAL(shuffleToggled(bool)),m_pl_manager,SLOT(setShuffle(bool)));
+ connect(m_display,SIGNAL(repeatableToggled(bool)),m_pl_manager,SLOT(setRepeatableList(bool)));
+
+ connect(m_jumpDialog,SIGNAL(playRequest()), SLOT(replay()));
+
+ connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(showState(Qmmp::State)));
+ connect(m_core, SIGNAL(elapsedChanged(qint64)),m_playlist, SLOT(setTime(qint64)));
+ connect(m_core, SIGNAL(metaDataChanged()),SLOT(showMetaData()));
+ connect(m_generalHandler, SIGNAL(toggleVisibilityCalled()), SLOT(toggleVisibility()));
+ connect(m_generalHandler, SIGNAL(exitCalled()), SLOT(close()));
+
+ readSettings();
+ m_display->setEQ(m_equalizer);
+ m_display->setPL(m_playlist);
+ dock->updateDock();
+ m_pl_manager->currentPlayList()->doCurrentVisibleRequest();
+ if (m_startHidden && m_generalHandler->visibilityControl())
+ toggleVisibility();
+}
+
+MainWindow::~MainWindow()
+{}
+
+void MainWindow::play()
+{
+ m_player->play();
+}
+
+void MainWindow::replay()
+{
+ stop();
+ m_pl_manager->activatePlayList(m_pl_manager->selectedPlayList());
+ play();
+}
+
+void MainWindow::forward()
+{
+ m_core->seek(m_core->elapsed() + KEY_OFFSET);
+}
+
+void MainWindow::backward()
+{
+ m_core->seek(qMax(qint64(0), m_core->elapsed() - KEY_OFFSET));
+}
+
+void MainWindow::setVolume(int volume, int balance)
+{
+ m_core->setVolume(volume-qMax(balance,0)*volume/100,
+ volume+qMin(balance,0)*volume/100);
+}
+
+void MainWindow::pause(void)
+{
+ m_core->pause();
+}
+
+void MainWindow::stop()
+{
+ m_player->stop();
+}
+
+void MainWindow::next()
+{
+ m_player->next();
+}
+
+void MainWindow::previous()
+{
+ m_player->previous();
+}
+
+void MainWindow::showState(Qmmp::State state)
+{
+ disconnectPl();
+ switch ((int) state)
+ {
+ case Qmmp::Playing:
+ if (m_pl_manager->currentPlayList()->currentItem())
+ m_equalizer->loadPreset(m_pl_manager->currentPlayList()->currentItem()->url().section("/",-1));
+ break;
+ case Qmmp::Paused:
+ break;
+ case Qmmp::Stopped:
+ m_playlist->setTime(-1);
+ if (m_playlist->currentItem())
+ setWindowTitle(m_playlist->currentItem()->text());
+ else
+ setWindowTitle("Qmmp");
+ break;
+ }
+}
+
+void MainWindow::showMetaData()
+{
+ if (m_playlist->currentItem() &&
+ m_playlist->currentItem()->url() == m_core->metaData().value(Qmmp::URL))
+ {
+ setWindowTitle(m_playlist->currentItem()->text());
+ }
+}
+
+void MainWindow::closeEvent (QCloseEvent *)
+{
+ writeSettings();
+ m_playlist->close();
+ m_equalizer->close();
+ QApplication::quit ();
+}
+
+void MainWindow::addDir()
+{
+ FileDialog::popup(this, FileDialog::AddDirs, &m_lastDir,
+ m_pl_manager->selectedPlayList(), SLOT(add(const QStringList&)),
+ tr("Choose a directory"));
+}
+
+void MainWindow::addFile()
+{
+ QStringList filters;
+ filters << tr("All Supported Bitstreams")+" (" +
+ MetaDataManager::instance()->nameFilters().join (" ") +")";
+ filters << MetaDataManager::instance()->filters();
+ FileDialog::popup(this, FileDialog::AddDirsFiles, &m_lastDir,
+ m_pl_manager->selectedPlayList(), SLOT(add(const QStringList&)),
+ tr("Select one or more files to open"), filters.join(";;"));
+}
+
+void MainWindow::changeEvent (QEvent * event)
+{
+ if (event->type() == QEvent::ActivationChange)
+ {
+ m_display->setActive(isActiveWindow());
+ }
+}
+
+void MainWindow::readSettings()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ if (!m_update)
+ {
+ settings.beginGroup("MainWindow");
+
+ move(settings.value("pos", QPoint(100, 100)).toPoint()); //geometry
+
+ m_lastDir = settings.value("last_dir","/").toString(); //last directory
+ m_startHidden = settings.value("start_hidden", false).toBool();
+ settings.endGroup();
+
+ if(settings.value("General/always_on_top", false).toBool())
+ {
+ ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->setChecked(true);
+ setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
+ }
+ ACTION(ActionManager::WM_STICKY)->setChecked(settings.value("General/show_on_all_desktops",
+ false).toBool());
+ show();
+ qApp->processEvents();
+ //visibility
+ m_playlist->setVisible(settings.value("Playlist/visible",true).toBool());
+ qApp->processEvents();
+ m_equalizer->setVisible(settings.value("Equalizer/visible",true).toBool());
+ qApp->processEvents();
+ bool val = settings.value("Playlist/repeatable",false).toBool();
+
+ // Repeat/Shuffle
+ m_pl_manager->setRepeatableList(val);
+ m_display->setIsRepeatable(val);
+ val = settings.value("Playlist/shuffle",false).toBool();
+ m_display->setIsShuffle(val);
+ m_pl_manager->setShuffle(val);
+
+ m_update = true;
+ }
+ else
+ {
+ if(ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->isChecked())
+ {
+ setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
+ m_playlist->setWindowFlags(m_playlist->windowFlags() | Qt::WindowStaysOnTopHint);
+ m_equalizer->setWindowFlags(m_equalizer->windowFlags() | Qt::WindowStaysOnTopHint);
+ }
+ else
+ {
+ setWindowFlags(windowFlags() & ~Qt::WindowStaysOnTopHint);
+ m_playlist->setWindowFlags(m_playlist->windowFlags() & ~Qt::WindowStaysOnTopHint);
+ m_equalizer->setWindowFlags(m_equalizer->windowFlags() & ~Qt::WindowStaysOnTopHint);
+ }
+ show();
+ qApp->processEvents();
+ m_playlist->setVisible(m_display->isPlaylistVisible());
+ m_equalizer->setVisible(m_display->isEqualizerVisible());
+ }
+#ifdef Q_WS_X11
+ WindowSystem::changeWinSticky(winId(), ACTION(ActionManager::WM_STICKY)->isChecked());
+ WindowSystem::setWinHint(winId(), "player", "Qmmp");
+#endif
+ //Call setWindowOpacity only if needed
+ double opacity = settings.value("MainWindow/opacity", 1.0).toDouble();
+ if(opacity != windowOpacity ())
+ setWindowOpacity(opacity);
+
+ opacity = settings.value("Equalizer/opacity", 1.0).toDouble();
+ if(opacity != m_equalizer->windowOpacity ())
+ m_equalizer->setWindowOpacity(opacity);
+
+ opacity = settings.value("PlayList/opacity", 1.0).toDouble();
+ if(opacity != m_playlist->windowOpacity ())
+ m_playlist->setWindowOpacity(opacity);
+
+ m_hideOnClose = settings.value("MainWindow/hide_on_close", false).toBool();
+}
+
+void MainWindow::writeSettings()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("MainWindow");
+ //geometry
+ settings.setValue("pos", this->pos());
+ //last directory
+ settings.setValue("last_dir",m_lastDir);
+ settings.endGroup();
+ // Repeat/Shuffle
+ settings.beginGroup("Playlist");
+ settings.setValue("repeatable",m_display->isRepeatable());
+ settings.setValue("shuffle",m_display->isShuffle());
+ settings.endGroup();
+ // playback state
+ settings.beginGroup("General");
+ settings.setValue("resume_playback", m_core->state() == Qmmp::Playing &&
+ settings.value("resume_on_startup", false).toBool());
+ settings.setValue("resume_playback_time", m_core->totalTime() > 0 ? m_core->elapsed() : 0);
+ settings.setValue("double_size", ACTION(ActionManager::WM_DOUBLE_SIZE)->isChecked());
+ settings.setValue("always_on_top", ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->isChecked());
+ settings.setValue("show_on_all_desktops", ACTION(ActionManager::WM_STICKY)->isChecked());
+ settings.endGroup();
+}
+
+void MainWindow::showSettings()
+{
+ ConfigDialog *confDialog = new ConfigDialog(this);
+ confDialog->exec();
+ updateSettings();
+ confDialog->deleteLater();
+ ActionManager::instance()->saveActions();
+}
+
+void MainWindow::toggleVisibility()
+{
+ if (isHidden())
+ {
+ show();
+ raise();
+ activateWindow();
+ m_playlist->setVisible(m_display->isPlaylistVisible());
+ m_equalizer->setVisible(m_display->isEqualizerVisible());
+#ifdef Q_WS_X11
+ if(WindowSystem::netWindowManagerName() == "Metacity")
+ {
+ m_playlist->activateWindow();
+ m_equalizer->activateWindow();
+ }
+#endif
+ qApp->processEvents();
+ setFocus ();
+ if (isMinimized())
+ {
+ if (isMaximized())
+ showMaximized();
+ else
+ showNormal();
+ }
+#ifdef Q_WS_X11
+ WindowSystem::changeWinSticky(winId(), ACTION(ActionManager::WM_STICKY)->isChecked());
+ WindowSystem::setWinHint(winId(), "player", "Qmmp");
+ raise();
+#endif
+ }
+ else
+ {
+ if (m_playlist->isVisible())
+ m_playlist->hide();
+ if (m_equalizer->isVisible())
+ m_equalizer->hide();
+ hide();
+ }
+ qApp->processEvents();
+}
+
+void MainWindow::createActions()
+{
+ m_mainMenu = new QMenu(this);
+ m_mainMenu->addAction(SET_ACTION(ActionManager::PLAY, this, SLOT(play())));
+ m_mainMenu->addAction(SET_ACTION(ActionManager::PAUSE, this, SLOT(pause())));
+ m_mainMenu->addAction(SET_ACTION(ActionManager::STOP, this, SLOT(stop())));
+ m_mainMenu->addAction(SET_ACTION(ActionManager::PREVIOUS, this, SLOT(previous())));
+ m_mainMenu->addAction(SET_ACTION(ActionManager::NEXT, this, SLOT(next())));
+ m_mainMenu->addAction(SET_ACTION(ActionManager::PLAY_PAUSE, this, SLOT(playPause())));
+ m_mainMenu->addSeparator();
+ m_mainMenu->addAction(QIcon::fromTheme("go-up"), tr("&Jump To File"),
+ this, SLOT(jumpToFile()), tr("J"));
+ m_mainMenu->addSeparator();
+ QMenu *viewMenu = m_mainMenu->addMenu(tr("View"));
+ viewMenu->addAction(ACTION(ActionManager::SHOW_PLAYLIST));
+ viewMenu->addAction(ACTION(ActionManager::SHOW_EQUALIZER));
+ viewMenu->addSeparator();
+ viewMenu->addAction(SET_ACTION(ActionManager::WM_ALLWAYS_ON_TOP, this, SLOT(updateSettings())));
+ viewMenu->addAction(SET_ACTION(ActionManager::WM_STICKY, this, SLOT(updateSettings())));
+ viewMenu->addAction(SET_ACTION(ActionManager::WM_DOUBLE_SIZE, this, SLOT(updateSettings())));
+
+ QMenu *plMenu = m_mainMenu->addMenu(tr("Playlist"));
+ plMenu->addAction(SET_ACTION(ActionManager::REPEAT_ALL, m_pl_manager, SLOT(setRepeatableList(bool))));
+ plMenu->addAction(SET_ACTION(ActionManager::REPEAT_TRACK, m_player, SLOT(setRepeatable(bool))));
+ plMenu->addAction(SET_ACTION(ActionManager::SHUFFLE, m_pl_manager, SLOT(setShuffle(bool))));
+ plMenu->addAction(SET_ACTION(ActionManager::NO_PL_ADVANCE, m_player,
+ SLOT(setNoPlaylistAdvance(bool))));
+ plMenu->addAction(SET_ACTION(ActionManager::STOP_AFTER_SELECTED, m_pl_manager,
+ SLOT(stopAfterSelected())));
+ plMenu->addAction(SET_ACTION(ActionManager::CLEAR_QUEUE, m_pl_manager, SLOT(clearQueue())));
+ connect(m_pl_manager, SIGNAL(repeatableListChanged(bool)),
+ ACTION(ActionManager::REPEAT_ALL), SLOT(setChecked(bool)));
+ connect(m_player, SIGNAL (repeatableChanged(bool)),
+ ACTION(ActionManager::REPEAT_TRACK), SLOT(setChecked(bool)));
+ connect(m_player, SIGNAL (noPlaylistAdvanceChanged(bool)),
+ ACTION(ActionManager::NO_PL_ADVANCE), SLOT(setChecked(bool)));
+ connect(m_pl_manager, SIGNAL(shuffleChanged(bool)),
+ ACTION(ActionManager::SHUFFLE), SLOT(setChecked(bool)));
+
+ m_visMenu = new VisualMenu(this);
+ m_mainMenu->addMenu(m_visMenu);
+ m_mainMenu->addMenu(m_generalHandler->createMenu(GeneralHandler::TOOLS_MENU, tr("Tools"), this));
+ m_mainMenu->addSeparator();
+ m_mainMenu->addAction(SET_ACTION(ActionManager::SETTINGS, this, SLOT(showSettings())));
+ m_mainMenu->addSeparator();
+ m_mainMenu->addAction(SET_ACTION(ActionManager::ABOUT, this, SLOT(about())));
+ m_mainMenu->addAction(SET_ACTION(ActionManager::ABOUT_QT, qApp, SLOT(aboutQt())));
+ m_mainMenu->addSeparator();
+ m_mainMenu->addAction(SET_ACTION(ActionManager::QUIT, this, SLOT(close())));
+
+ QAction* forward = new QAction(this);
+ forward->setShortcut(QKeySequence(Qt::Key_Right));
+ connect(forward,SIGNAL(triggered(bool)),this,SLOT(forward()));
+ QAction* backward = new QAction(this);
+ backward->setShortcut(QKeySequence(Qt::Key_Left));
+ connect(backward,SIGNAL(triggered(bool)),this,SLOT(backward()));
+
+ Dock::instance()->addActions(QList<QAction*>() << forward << backward);
+ Dock::instance()->addActions(m_mainMenu->actions());
+}
+
+
+void MainWindow::about()
+{
+ AboutDialog dlg(this);
+ dlg.exec();
+}
+
+void MainWindow::updateSettings()
+{
+ readSettings();
+ m_playlist->readSettings();
+ m_visMenu->updateActions();
+ m_skin->reloadSkin();
+ Dock::instance()->updateDock();
+}
+
+QMenu* MainWindow::menu()
+{
+ return m_mainMenu;
+}
+
+void MainWindow::loadPlaylist()
+{
+ QStringList l;
+ QList<PlaylistFormat*> p_list = PlaylistParser::instance()->formats();
+ if (!p_list.isEmpty())
+ {
+ foreach(PlaylistFormat* fmt,p_list)
+ l << fmt->getExtensions();
+
+ QString mask = tr("Playlist Files")+" (" + l.join(" *.").prepend("*.") + ")";
+ //TODO use nonmodal dialog and multiplier playlists
+ QString f_name = FileDialog::getOpenFileName(this,tr("Open Playlist"),m_lastDir,mask);
+ if (!f_name.isEmpty())
+ {
+ m_pl_manager->selectedPlayList()->clear();
+ m_pl_manager->selectedPlayList()->loadPlaylist(f_name);
+ m_pl_manager->selectedPlayList()->setName(QFileInfo(f_name).baseName());
+ m_lastDir = QFileInfo(f_name).absoluteDir().path();
+ }
+ }
+ else
+ {
+ qWarning("Error: There is no registered playlist parsers");
+ }
+}
+
+void MainWindow::savePlaylist()
+{
+ QStringList l;
+ QList<PlaylistFormat*> p_list = PlaylistParser::instance()->formats();
+ if (!p_list.isEmpty())
+ {
+ foreach(PlaylistFormat* fmt,p_list)
+ l << fmt->getExtensions();
+
+ QString mask = tr("Playlist Files")+" (" + l.join(" *.").prepend("*.") + ")";
+ QString f_name = FileDialog::getSaveFileName(this, tr("Save Playlist"),m_lastDir + "/" +
+ m_pl_manager->selectedPlayList()->name() + "." + l[0],mask);
+
+ if (!f_name.isEmpty())
+ {
+ m_pl_manager->selectedPlayList()->savePlaylist(f_name);
+ m_lastDir = QFileInfo(f_name).absoluteDir().path();
+ }
+ }
+ else
+ qWarning("Error: There is no registered playlist parsers");
+}
+
+void MainWindow::setFileList(const QStringList &l, bool clear)
+{
+ m_pl_manager->activatePlayList(m_pl_manager->selectedPlayList());
+ if(!clear)
+ {
+ m_pl_manager->selectedPlayList()->add(l);
+ return;
+ }
+ if (m_core->state() != Qmmp::Stopped)
+ {
+ stop();
+ qApp->processEvents(); //receive stop signal
+ }
+ m_model = m_pl_manager->selectedPlayList();
+ m_model->clear();
+ connect(m_model, SIGNAL(itemAdded(PlayListItem*)), SLOT(play()));
+ connect(m_model, SIGNAL(loaderFinished()), SLOT(disconnectPl()));
+ m_model->add(l);
+}
+
+void MainWindow::playPause()
+{
+ if (m_core->state() == Qmmp::Playing)
+ m_core->pause();
+ else
+ play();
+}
+
+void MainWindow::jumpToFile()
+{
+ if (m_jumpDialog->isHidden())
+ {
+ m_jumpDialog->show();
+ m_jumpDialog->refresh();
+ }
+}
+
+void MainWindow::handleCloseRequest()
+{
+ if (m_hideOnClose && m_generalHandler->visibilityControl())
+ toggleVisibility();
+ else
+ QApplication::closeAllWindows();
+}
+
+void MainWindow::disconnectPl()
+{
+ if(m_model)
+ {
+ disconnect(m_model, SIGNAL(itemAdded(PlayListItem*)), this, SLOT(play()));
+ disconnect(m_model, SIGNAL(loaderFinished()), this, SLOT(disconnectPl()));
+ m_model = 0;
+ }
+}
+
+void MainWindow::addUrl()
+{
+ AddUrlDialog::popup(this, m_pl_manager->selectedPlayList());
+}
+
+SoundCore * MainWindow::soundCore() const
+{
+ return m_core;
+}
+
+MainDisplay * MainWindow::mainDisplay() const
+{
+ return m_display;
+}
+
+void MainWindow::keyPressEvent(QKeyEvent *ke)
+{
+ QKeyEvent event = QKeyEvent(ke->type(), ke->key(),
+ ke->modifiers(), ke->text(),ke->isAutoRepeat(), ke->count());
+ QApplication::sendEvent(m_playlist,&event);
+}
+
+void MainWindow::resume()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("General");
+ if(settings.value("resume_playback", false).toBool())
+ {
+ qint64 pos = settings.value("resume_playback_time").toLongLong();
+ m_player->play(pos);
+ }
+}
diff --git a/src/plugins/Ui/skinned/mainwindow.h b/src/plugins/Ui/skinned/mainwindow.h
new file mode 100644
index 000000000..a3cfa8b99
--- /dev/null
+++ b/src/plugins/Ui/skinned/mainwindow.h
@@ -0,0 +1,123 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QPointer>
+#include <qmmp/output.h>
+#include <qmmp/decoder.h>
+#include <qmmp/decoderfactory.h>
+#include <qmmpui/playlistitem.h>
+#include "display.h"
+#include "titlebar.h"
+
+class PlayList;
+class PlayListManager;
+class EqWidget;
+class MainVisual;
+class Skin;
+class SoundCore;
+class JumpToTrackDialog;
+class VisualMenu;
+class GeneralHandler;
+class MediaPlayer;
+class QMenu;
+class QKeyEvent;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+public:
+ MainWindow(QWidget *parent = 0);
+
+ ~MainWindow();
+
+ PlayList *playlist(){return m_playlist;}
+
+ QMenu* menu();
+ void setVolume(int volume, int balance);
+ SoundCore* soundCore()const;
+ MainDisplay* mainDisplay()const;
+ void resume();
+
+public slots:
+ void previous();
+ void play();
+ void pause();
+ void playPause();
+ void stop();
+ void next();
+ void replay();
+ void jumpToFile();
+ void toggleVisibility();
+
+ void addDir();
+ void addFile();
+ void addUrl();
+
+ void loadPlaylist();
+ void savePlaylist();
+ void setFileList(const QStringList&, bool clear = true);
+ void about();
+
+ void updateSettings();
+
+protected:
+ virtual void closeEvent (QCloseEvent *);
+ virtual void changeEvent (QEvent *event);
+ virtual void keyPressEvent (QKeyEvent* );
+
+private slots:
+ void showState(Qmmp::State state);
+ void showMetaData();
+ void showSettings();
+ void forward();
+ void backward();
+ void handleCloseRequest();
+ void disconnectPl();
+
+private:
+ void readSettings();
+ void writeSettings();
+ void createActions();
+ SoundCore *m_core;
+ QMenu *m_mainMenu;
+ MainDisplay *m_display;
+ PlayList *m_playlist;
+ PlayListManager *m_pl_manager;
+ QPointer <PlayListModel> m_model;
+ int m_preamp;
+ EqWidget *m_equalizer;
+ MainVisual *m_vis;
+ QString m_lastDir;
+ bool m_update;
+ Skin *m_skin;
+ JumpToTrackDialog* m_jumpDialog;
+ bool m_hideOnClose, m_startHidden;
+ VisualMenu *m_visMenu;
+ GeneralHandler *m_generalHandler;
+ MediaPlayer *m_player;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/monostereo.cpp b/src/plugins/Ui/skinned/monostereo.cpp
new file mode 100644
index 000000000..89f3621e5
--- /dev/null
+++ b/src/plugins/Ui/skinned/monostereo.cpp
@@ -0,0 +1,69 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 <QPainter>
+
+#include "skin.h"
+#include "monostereo.h"
+
+MonoStereo::MonoStereo (QWidget *parent)
+ : PixmapWidget (parent)
+{
+ m_skin = Skin::instance();
+ m_pixmap = QPixmap (54*m_skin->ratio(), 12*m_skin->ratio());
+ setChannels (0);
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+}
+
+
+MonoStereo::~MonoStereo()
+{}
+
+void MonoStereo::setChannels (int c)
+{
+ m_channels = c;
+ QPainter paint (&m_pixmap);
+ switch ((int) c)
+ {
+ case 0:
+ {
+ paint.drawPixmap (0,0,m_skin->getMSPart (Skin::MONO_I));
+ paint.drawPixmap (27*m_skin->ratio(),0,m_skin->getMSPart (Skin::STEREO_I));
+ break;
+ }
+ case 1:
+ {
+ paint.drawPixmap (0,0,m_skin->getMSPart (Skin::MONO_A));
+ paint.drawPixmap (27*m_skin->ratio(),0,m_skin->getMSPart (Skin::STEREO_I));
+ break;
+ }
+ }
+ if (c > 1)
+ {
+ paint.drawPixmap (0,0,m_skin->getMSPart (Skin::MONO_I));
+ paint.drawPixmap (27*m_skin->ratio(),0,m_skin->getMSPart (Skin::STEREO_A));
+ }
+ setPixmap (m_pixmap);
+}
+
+void MonoStereo::updateSkin()
+{
+ m_pixmap = QPixmap (54*m_skin->ratio(), 12*m_skin->ratio());
+ setChannels (m_channels);
+}
diff --git a/src/plugins/Ui/skinned/monostereo.h b/src/plugins/Ui/skinned/monostereo.h
new file mode 100644
index 000000000..547a545da
--- /dev/null
+++ b/src/plugins/Ui/skinned/monostereo.h
@@ -0,0 +1,51 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 MONOSTEREO_H
+#define MONOSTEREO_H
+
+#include "pixmapwidget.h"
+
+class Skin;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class MonoStereo : public PixmapWidget
+{
+Q_OBJECT
+public:
+ MonoStereo(QWidget *parent = 0);
+
+ ~MonoStereo();
+
+public slots:
+ void setChannels(int);
+
+private slots:
+ void updateSkin();
+
+private:
+ Skin *m_skin;
+ QPixmap m_pixmap;
+ int m_channels;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/number.cpp b/src/plugins/Ui/skinned/number.cpp
new file mode 100644
index 000000000..d818da72f
--- /dev/null
+++ b/src/plugins/Ui/skinned/number.cpp
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 "number.h"
+#include "skin.h"
+
+Number::Number(QWidget *parent)
+ : PixmapWidget(parent)
+{
+ m_skin = Skin::instance();
+ //TODO default value??
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+}
+
+
+Number::~Number()
+{
+}
+
+void Number::setValue(int n)
+{
+ setPixmap(m_skin->getNumber(n));
+ m_value = n;
+}
+
+void Number::updateSkin(void)
+{
+ setValue(m_value);
+}
diff --git a/src/plugins/Ui/skinned/number.h b/src/plugins/Ui/skinned/number.h
new file mode 100644
index 000000000..1c89f71d4
--- /dev/null
+++ b/src/plugins/Ui/skinned/number.h
@@ -0,0 +1,49 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 NUMBER_H
+#define NUMBER_H
+
+#include "pixmapwidget.h"
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class Skin;
+
+class Number : public PixmapWidget
+{
+Q_OBJECT
+public:
+ Number(QWidget *parent = 0);
+
+ ~Number();
+
+ void setValue(int);
+
+private slots:
+ void updateSkin(void);
+
+private:
+ Skin *m_skin;
+ int m_value;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/pixmapwidget.cpp b/src/plugins/Ui/skinned/pixmapwidget.cpp
new file mode 100644
index 000000000..081298df5
--- /dev/null
+++ b/src/plugins/Ui/skinned/pixmapwidget.cpp
@@ -0,0 +1,47 @@
+/***************************************************************************
+ * Copyright (C) 2006-2010 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 <QPixmap>
+#include <QPainter>
+#include <QPaintEvent>
+#include <QStyle>
+#include "pixmapwidget.h"
+
+PixmapWidget::PixmapWidget(QWidget *parent)
+ : QWidget(parent)
+{}
+
+
+PixmapWidget::~PixmapWidget()
+{}
+
+void PixmapWidget::setPixmap(const QPixmap pixmap)
+{
+ m_pixmap = pixmap;
+ resize(m_pixmap.size());
+ update();
+}
+
+void PixmapWidget::paintEvent (QPaintEvent *e)
+{
+ Q_UNUSED(e);
+ QPainter paint(this);
+ style()->drawItemPixmap(&paint, rect(), Qt::AlignCenter, m_pixmap);
+}
+
diff --git a/src/plugins/Ui/skinned/pixmapwidget.h b/src/plugins/Ui/skinned/pixmapwidget.h
new file mode 100644
index 000000000..24d34260e
--- /dev/null
+++ b/src/plugins/Ui/skinned/pixmapwidget.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 PIXMAPWIDGET_H
+#define PIXMAPWIDGET_H
+
+#include <QWidget>
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class QPixmap;
+
+class PixmapWidget : public QWidget
+{
+Q_OBJECT
+public:
+ PixmapWidget(QWidget *parent = 0);
+
+ ~PixmapWidget();
+
+ virtual void setPixmap(const QPixmap);
+
+protected:
+ void paintEvent ( QPaintEvent * event );
+
+private:
+ QPixmap m_pixmap;
+
+
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp
new file mode 100644
index 000000000..75a6110ea
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlist.cpp
@@ -0,0 +1,616 @@
+/***************************************************************************
+ * Copyright (C) 2006-2010 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 <QPainter>
+#include <QResizeEvent>
+#include <QSettings>
+#include <QMenu>
+#include <QAction>
+#include <QSignalMapper>
+#include <QHBoxLayout>
+#include <QCloseEvent>
+#include <qmmpui/playlistitem.h>
+#include <qmmpui/playlistmodel.h>
+#include <qmmpui/playlistmanager.h>
+#include <qmmpui/generalhandler.h>
+#include <qmmp/soundcore.h>
+#include "dock.h"
+#include "skin.h"
+#include "listwidget.h"
+#include "button.h"
+#include "playlisttitlebar.h"
+#include "playlistslider.h"
+#include "pixmapwidget.h"
+#include "symboldisplay.h"
+#include "playlistcontrol.h"
+#include "keyboardmanager.h"
+#include "playlistbrowser.h"
+#include "playlistselector.h"
+#include "windowsystem.h"
+#include "actionmanager.h"
+#include "playlist.h"
+
+PlayList::PlayList (PlayListManager *manager, QWidget *parent)
+ : QWidget (parent)
+{
+ setAttribute(Qt::WA_AlwaysShowToolTips,true);
+ setWindowTitle(tr("Playlist"));
+ m_pl_manager = manager;
+ m_update = false;
+ m_resize = false;
+ m_skin = Skin::instance();
+ m_ratio = m_skin->ratio();
+ m_shaded = false;
+ m_pl_browser = 0;
+ m_pl_selector = 0;
+
+ resize (275*m_ratio, 116*m_ratio);
+ setSizeIncrement (25*m_ratio, 29*m_ratio);
+ setMinimumSize(275*m_ratio, 116*m_ratio);
+
+ m_listWidget = new ListWidget (this);
+ m_plslider = new PlayListSlider (this);
+ m_buttonAdd = new Button (this,Skin::PL_BT_ADD,Skin::PL_BT_ADD, Skin::CUR_PNORMAL);
+ m_buttonSub = new Button (this,Skin::PL_BT_SUB,Skin::PL_BT_SUB, Skin::CUR_PNORMAL);
+ m_selectButton = new Button (this,Skin::PL_BT_SEL,Skin::PL_BT_SEL, Skin::CUR_PNORMAL);
+ m_sortButton= new Button (this,Skin::PL_BT_SORT,Skin::PL_BT_SORT, Skin::CUR_PNORMAL);
+ m_playlistButton = new Button (this,Skin::PL_BT_LST,Skin::PL_BT_LST, Skin::CUR_PNORMAL);
+ m_resizeWidget = new QWidget(this);
+ m_resizeWidget->resize(25,25);
+ m_resizeWidget->setCursor(m_skin->getCursor (Skin::CUR_PSIZE));
+ m_pl_control = new PlaylistControl (this);
+
+ m_length_totalLength = new SymbolDisplay (this,14);
+ m_length_totalLength->setAlignment (Qt::AlignLeft);
+
+ m_current_time = new SymbolDisplay (this,6);
+ m_keyboardManager = new KeyboardManager (this);
+
+ connect (m_listWidget, SIGNAL (selectionChanged()), parent, SLOT (replay()));
+
+ connect (m_plslider, SIGNAL (sliderMoved (int)), m_listWidget, SLOT (scroll (int)));
+ connect (m_listWidget, SIGNAL (positionChanged (int, int)), m_plslider,
+ SLOT (setPos (int, int)));
+ connect (m_skin, SIGNAL (skinChanged()), this, SLOT (updateSkin()));
+ connect (m_buttonAdd, SIGNAL (clicked()), SLOT (showAddMenu()));
+ connect (m_buttonSub, SIGNAL (clicked()), SLOT (showSubMenu()));
+ connect (m_selectButton, SIGNAL (clicked()), SLOT (showSelectMenu()));
+ connect (m_sortButton, SIGNAL (clicked()), SLOT (showSortMenu()));
+ connect (m_playlistButton, SIGNAL (clicked()), SLOT (showPlaylistMenu()));
+
+ connect (m_pl_control, SIGNAL (nextClicked()), SIGNAL (next()));
+ connect (m_pl_control, SIGNAL (previousClicked()), SIGNAL (prev()));
+ connect (m_pl_control, SIGNAL (playClicked()), SIGNAL (play()));
+ connect (m_pl_control, SIGNAL (pauseClicked()), SIGNAL (pause()));
+ connect (m_pl_control, SIGNAL (stopClicked()), SIGNAL (stop()));
+ connect (m_pl_control, SIGNAL (ejectClicked()), SIGNAL (eject()));
+
+ connect (m_pl_manager, SIGNAL (selectedPlayListChanged(PlayListModel *, PlayListModel *)),
+ m_listWidget, SLOT(setModel(PlayListModel*)));
+ m_listWidget->setModel(m_pl_manager->selectedPlayList());
+
+ m_titleBar = new PlayListTitleBar (this);
+ m_titleBar->move (0,0);
+ connect (m_pl_manager, SIGNAL (currentPlayListChanged(PlayListModel *, PlayListModel *)),
+ m_titleBar, SLOT(setModel(PlayListModel*)));
+ m_titleBar->setModel(m_pl_manager->currentPlayList());
+
+ createMenus();
+ createActions();
+
+ readSettings();
+ setCursor(m_skin->getCursor(Skin::CUR_PNORMAL));
+ updatePositions();
+#ifdef Q_WS_X11
+ QString wm_name = WindowSystem::netWindowManagerName();
+ if(wm_name.contains("metacity", Qt::CaseInsensitive) ||
+ wm_name.contains("openbox", Qt::CaseInsensitive))
+ setWindowFlags (Qt::Tool | Qt::FramelessWindowHint);
+ else
+#endif
+ setWindowFlags (Qt::Dialog | Qt::FramelessWindowHint);
+}
+
+PlayList::~PlayList()
+{
+ delete m_keyboardManager;
+}
+
+void PlayList::updatePositions()
+{
+ int sx = (width()-275*m_ratio)/25;
+ int sy = (height()-116*m_ratio)/29;
+ if (sx < 0 || sy < 0 || m_shaded) //skip shaded mode
+ return;
+
+ m_titleBar->resize (275*m_ratio+25*sx, 20*m_ratio);
+ m_plslider->resize (20*m_ratio, 58*m_ratio+sy*29);
+
+ if(m_pl_selector)
+ {
+ m_listWidget->resize (243*m_ratio+25*sx, 58*m_ratio+29*sy - m_pl_selector->height());
+ m_pl_selector->resize(243*m_ratio+25*sx, m_pl_selector->height());
+ m_pl_selector->move(12*m_ratio, 20*m_ratio + 58*m_ratio+29*sy - m_pl_selector->height());
+ }
+ else
+ m_listWidget->resize (243*m_ratio+25*sx, 58*m_ratio+29*sy);
+ m_listWidget->move (12*m_ratio,20*m_ratio);
+
+ m_buttonAdd->move (11*m_ratio, 86*m_ratio+29*sy);
+ m_buttonSub->move (40*m_ratio, 86*m_ratio+29*sy);
+ m_selectButton->move (70*m_ratio, 86*m_ratio+29*sy);
+ m_sortButton->move (99*m_ratio, 86*m_ratio+29*sy);
+
+ m_pl_control->move (128*m_ratio+sx*25, 100*m_ratio+29*sy);
+ m_playlistButton->move (228*m_ratio+sx*25,86*m_ratio+29*sy);
+
+ m_length_totalLength -> move (131*m_ratio+sx*25,88*m_ratio+29*sy);
+ m_current_time->move (190*m_ratio+sx*25,101*m_ratio+29*sy);
+
+ m_plslider->move (255*m_ratio+sx*25,20*m_ratio);
+ m_resizeWidget->move(width() - 25, height() - 29);
+}
+
+void PlayList::createMenus()
+{
+ m_addMenu = new QMenu (this);
+ m_subMenu = new QMenu (this);
+ m_selectMenu = new QMenu (this);
+ m_sortMenu = new QMenu (this);
+ m_playlistMenu = new QMenu (this);
+ m_copySelectedMenu = new QMenu (tr("&Copy Selection To"), m_listWidget->menu());
+ m_copySelectedMenu->setIcon(QIcon::fromTheme("edit-copy"));
+ connect (m_copySelectedMenu, SIGNAL (aboutToShow () ), this, SLOT (generateCopySelectedMenu ()));
+ connect (m_copySelectedMenu, SIGNAL (triggered ( QAction *) ), this, SLOT (copySelectedMenuActionTriggered( QAction *)));
+}
+
+void PlayList::createActions()
+{
+ //add menu
+ m_addMenu->addAction(SET_ACTION(ActionManager::PL_ADD_FILE, parent(), SLOT(addFile())));
+ m_addMenu->addAction(SET_ACTION(ActionManager::PL_ADD_DIRECTORY, parent(), SLOT(addDir())));
+ m_addMenu->addAction(SET_ACTION(ActionManager::PL_ADD_URL, parent(), SLOT(addUrl())));
+ //sub menu
+ m_subMenu->addAction(SET_ACTION(ActionManager::PL_REMOVE_SELECTED, m_pl_manager, SLOT(removeSelected())));
+ m_subMenu->addAction(SET_ACTION(ActionManager::PL_REMOVE_ALL, m_pl_manager, SLOT(clear())));
+ m_subMenu->addAction(SET_ACTION(ActionManager::PL_REMOVE_UNSELECTED, m_pl_manager,
+ SLOT(removeUnselected())));
+ m_subMenu->addSeparator();
+ m_subMenu->addAction(SET_ACTION(ActionManager::PL_REMOVE_INVALID, m_pl_manager,
+ SLOT(removeInvalidItems())));
+ m_subMenu->addAction(SET_ACTION(ActionManager::PL_REMOVE_DUPLICATES, m_pl_manager,
+ SLOT(removeDuplicates())));
+ //sort menu
+ m_sortMenu->addAction(SET_ACTION(ActionManager::PL_SHOW_INFO, m_pl_manager, SLOT (showDetails ())));
+ m_sortMenu->addAction (ActionManager::instance()->action(ActionManager::PL_SHOW_INFO));
+ m_sortMenu->addSeparator();
+
+ QMenu* sort_mode_menu = new QMenu (tr("Sort List"), m_sortMenu);
+ sort_mode_menu->setIcon(QIcon::fromTheme("view-sort-ascending"));
+ QSignalMapper* signalMapper = new QSignalMapper (this);
+ QAction* titleAct = sort_mode_menu->addAction (tr ("By Title"));
+ connect (titleAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (titleAct, PlayListModel::TITLE);
+
+ QAction* albumAct = sort_mode_menu->addAction (tr ("By Album"));
+ connect (albumAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (albumAct, PlayListModel::ALBUM);
+
+ QAction* artistAct = sort_mode_menu->addAction (tr ("By Artist"));
+ connect (artistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (artistAct, PlayListModel::ARTIST);
+
+ QAction* nameAct = sort_mode_menu->addAction (tr ("By Filename"));
+ connect (nameAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (nameAct, PlayListModel::FILENAME);
+
+ QAction* pathnameAct = sort_mode_menu->addAction (tr ("By Path + Filename"));
+ connect (pathnameAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (pathnameAct, PlayListModel::PATH_AND_FILENAME);
+
+ QAction* dateAct = sort_mode_menu->addAction (tr ("By Date"));
+ connect (dateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (dateAct, PlayListModel::DATE);
+
+ QAction* trackAct = sort_mode_menu->addAction (tr("By Track Number"));
+ connect (trackAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (trackAct, PlayListModel::TRACK);
+
+ connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sort (int)));
+
+ m_sortMenu->addMenu (sort_mode_menu);
+
+ sort_mode_menu = new QMenu (tr("Sort Selection"), m_sortMenu);
+ sort_mode_menu->setIcon(QIcon::fromTheme("view-sort-ascending"));
+ signalMapper = new QSignalMapper (this);
+ titleAct = sort_mode_menu->addAction (tr ("By Title"));
+ connect (titleAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (titleAct, PlayListModel::TITLE);
+
+ albumAct = sort_mode_menu->addAction (tr ("By Album"));
+ connect (albumAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (albumAct, PlayListModel::ALBUM);
+
+ artistAct = sort_mode_menu->addAction (tr ("By Artist"));
+ connect (artistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (artistAct, PlayListModel::ARTIST);
+
+ nameAct = sort_mode_menu->addAction (tr ("By Filename"));
+ connect (nameAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (nameAct, PlayListModel::FILENAME);
+
+ pathnameAct = sort_mode_menu->addAction (tr ("By Path + Filename"));
+ connect (pathnameAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (pathnameAct, PlayListModel::PATH_AND_FILENAME);
+
+ dateAct = sort_mode_menu->addAction (tr ("By Date"));
+ connect (dateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (dateAct, PlayListModel::DATE);
+
+ trackAct = sort_mode_menu->addAction (tr ("By Track Number"));
+ connect (trackAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
+ signalMapper->setMapping (trackAct, PlayListModel::TRACK);
+
+ connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sortSelection (int)));
+
+ m_sortMenu->addMenu (sort_mode_menu);
+ m_sortMenu->addSeparator();
+ m_sortMenu->addAction (QIcon::fromTheme("media-playlist-shuffle"), tr("Randomize List"),
+ m_pl_manager, SLOT(randomizeList()));
+ m_sortMenu->addAction (QIcon::fromTheme("view-sort-descending"), tr("Reverse List"),
+ m_pl_manager, SLOT(reverseList()));
+ //playlist context menu
+ m_listWidget->menu()->addAction(ActionManager::instance()->action(ActionManager::PL_SHOW_INFO));
+ m_listWidget->menu()->addSeparator();
+ m_listWidget->menu()->addActions (m_subMenu->actions().mid(0,3)); //use 3 first actions
+ m_listWidget->menu()->addMenu(GeneralHandler::instance()->createMenu(GeneralHandler::PLAYLIST_MENU,
+ tr("Actions"), this));
+ m_listWidget->menu()->addSeparator();
+ m_listWidget->menu()->addAction(SET_ACTION(ActionManager::PL_ENQUEUE, m_pl_manager, SLOT(addToQueue())));
+ //select menu
+ m_selectMenu->addAction(SET_ACTION(ActionManager::PL_INVERT_SELECTION, m_pl_manager,
+ SLOT(invertSelection ())));
+ m_selectMenu->addSeparator();
+ m_selectMenu->addAction(SET_ACTION(ActionManager::PL_CLEAR_SELECTION, m_pl_manager,
+ SLOT(clearSelection ())));
+ m_selectMenu->addAction(SET_ACTION(ActionManager::PL_SELECT_ALL, m_pl_manager, SLOT(selectAll())));
+ //Playlist Menu
+ m_playlistMenu->addAction(SET_ACTION(ActionManager::PL_NEW, m_pl_manager, SLOT(createPlayList())));
+ m_playlistMenu->addAction(SET_ACTION(ActionManager::PL_CLOSE, this, SLOT(deletePlaylist())));
+ m_playlistMenu->addSeparator();
+ m_playlistMenu->addAction(SET_ACTION(ActionManager::PL_LOAD, this, SIGNAL(loadPlaylist())));
+ m_playlistMenu->addAction(SET_ACTION(ActionManager::PL_SAVE, this, SIGNAL(savePlaylist())));
+ m_playlistMenu->addSeparator();
+ m_playlistMenu->addAction(SET_ACTION(ActionManager::PL_SELECT_NEXT, m_pl_manager,
+ SLOT(selectNextPlayList())));
+ m_playlistMenu->addAction(SET_ACTION(ActionManager::PL_SELECT_PREVIOUS, m_pl_manager,
+ SLOT(selectPreviousPlayList())));
+ m_playlistMenu->addAction(SET_ACTION(ActionManager::PL_SHOW_MANAGER, this, SLOT(showPlayLists())));
+ Dock::instance()->addActions (m_addMenu->actions());
+ Dock::instance()->addActions (m_subMenu->actions());
+ Dock::instance()->addActions (m_sortMenu->actions());
+ Dock::instance()->addActions (m_listWidget->menu()->actions());
+ Dock::instance()->addActions (m_selectMenu->actions());
+ Dock::instance()->addActions (m_playlistMenu->actions());
+}
+
+void PlayList::closeEvent (QCloseEvent *e)
+{
+ if (e->spontaneous ())
+ emit closed();
+ writeSettings();
+}
+
+void PlayList::paintEvent (QPaintEvent *)
+{
+ int sx = (width()-275*m_ratio) /25;
+ int sy = (height()-116*m_ratio) /29;
+
+ QPainter paint(this);
+ drawPixmap (&paint, 0, 20*m_ratio, m_skin->getPlPart (Skin::PL_LFILL));
+ for (int i = 1; i<sy+2*m_ratio; i++)
+ {
+ drawPixmap (&paint, 0, 20*m_ratio+29*i, m_skin->getPlPart (Skin::PL_LFILL));
+ }
+ drawPixmap (&paint, 0, 78*m_ratio+29*sy, m_skin->getPlPart (Skin::PL_LSBAR));
+
+ for (int i = 0; i<sx; i++)
+ {
+ drawPixmap (&paint, 125*m_ratio+i*25,78*m_ratio+sy*29,m_skin->getPlPart (Skin::PL_SFILL1));
+ }
+ drawPixmap (&paint,125*m_ratio+sx*25,78*m_ratio+sy*29,m_skin->getPlPart (Skin::PL_RSBAR));
+
+}
+
+void PlayList::drawPixmap (QPainter *painter, int x, int y, const QPixmap &pix)
+{
+ style()->drawItemPixmap(painter, QRect(x, y, pix.width(), pix.height()), Qt::AlignCenter, pix);
+}
+
+void PlayList::resizeEvent (QResizeEvent *)
+{
+ updatePositions();
+}
+
+void PlayList::mousePressEvent (QMouseEvent *e)
+{
+ m_pos = e->pos ();
+ if (m_resizeWidget->underMouse())
+ {
+ m_resize = true;
+ setCursor (m_skin->getCursor (Skin::CUR_PSIZE));
+ }
+ else
+ m_resize = false;
+}
+
+void PlayList::mouseMoveEvent (QMouseEvent *e)
+{
+ if (m_resize)
+ {
+#ifdef Q_OS_WIN32
+ int sx = (width()-275) /25;
+ int sy = (height()-116) /29;
+ if(width() < e->x() - 14)
+ sx++;
+ else if(width() > e->x() + 14)
+ sx--;
+ if(height() < e->y() - 14)
+ sy++;
+ else if(height() > e->y() + 14)
+ sy--;
+ resize (275+25*sx,116+29*sy);
+#else
+ resize (e->x() +25, e->y() +25);
+#endif
+ }
+}
+
+void PlayList::mouseReleaseEvent (QMouseEvent *)
+{
+ setCursor (m_skin->getCursor (Skin::CUR_PNORMAL));
+ /*if (m_resize)
+ m_listWidget->updateList();*/
+ m_resize = false;
+ Dock::instance()->updateDock();
+}
+
+void PlayList::changeEvent (QEvent * event)
+{
+ if (event->type() == QEvent::ActivationChange)
+ {
+ m_titleBar->setActive (isActiveWindow());
+ }
+}
+
+void PlayList::readSettings()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ if (settings.value("PlayList/show_plalists", false).toBool())
+ {
+ if(!m_pl_selector)
+ m_pl_selector = new PlayListSelector(m_pl_manager, this);
+ m_pl_selector->show();
+ m_listWidget->menu()->insertMenu(m_listWidget->menu()->actions().at(2),m_copySelectedMenu);
+ }
+ else
+ {
+ if(m_pl_selector)
+ {
+ m_pl_selector->deleteLater();
+ m_listWidget->menu()->removeAction(m_copySelectedMenu->menuAction());
+ }
+ m_pl_selector = 0;
+ }
+ if (m_update)
+ {
+ m_listWidget->readSettings();
+ m_titleBar->readSettings();
+ if(m_pl_selector)
+ m_pl_selector->readSettings();
+ updatePositions();
+ }
+ else
+ {
+ move (settings.value ("PlayList/pos", QPoint (100, 332)).toPoint()); //position
+ m_update = true;
+ }
+}
+
+#ifdef Q_WS_X11
+bool PlayList::event (QEvent *event)
+{
+ if(event->type() == QEvent::WinIdChange || event->type() == QEvent::Show)
+ {
+ WindowSystem::ghostWindow(winId());
+ WindowSystem::setWinHint(winId(), "playlist", "Qmmp");
+ }
+ return QWidget::event(event);
+}
+#endif
+
+void PlayList::writeSettings()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup ("PlayList");
+ //position
+ settings.setValue ("pos", this->pos());
+ settings.endGroup();
+}
+
+void PlayList::showAddMenu()
+{
+ m_addMenu->exec (m_buttonAdd->mapToGlobal (QPoint (0,0)));
+}
+
+void PlayList::showSubMenu()
+{
+ m_subMenu->exec (m_buttonSub->mapToGlobal (QPoint (0,0)));
+}
+
+void PlayList::showSelectMenu()
+{
+ m_selectMenu->exec (m_selectButton->mapToGlobal (QPoint (0,0)));
+}
+
+void PlayList::showSortMenu()
+{
+ m_sortMenu->exec (m_sortButton->mapToGlobal (QPoint (0,0)));
+}
+
+QString PlayList::formatTime (int sec)
+{
+ if(sec > 3600)
+ sec /= 60;
+ return QString("%1:%2").arg(sec/60, 2, 10, QChar('0')).arg(sec%60, 2, 10, QChar('0'));
+}
+
+void PlayList::setTime(qint64 time)
+{
+ if (time < 0)
+ m_current_time->display ("--:--");
+ else
+ m_current_time->display (formatTime (time/1000));
+ m_current_time->update();
+
+ if (SoundCore::instance())
+ {
+ QString str_length = formatTime (m_pl_manager->currentPlayList()->totalLength()) +
+ "/" + formatTime (SoundCore::instance()->totalTime()/1000);
+ m_length_totalLength->display (str_length);
+ m_length_totalLength->update();
+ }
+}
+
+void PlayList::updateList()
+{
+ m_listWidget->updateList();
+ m_titleBar->showCurrent();
+}
+
+PlayListItem *PlayList::currentItem()
+{
+ return m_pl_manager->currentPlayList()->currentItem();
+}
+
+void PlayList::showPlaylistMenu()
+{
+ m_playlistMenu->exec (m_playlistButton->mapToGlobal (QPoint (0,0)));
+}
+
+void PlayList::keyPressEvent (QKeyEvent *ke)
+{
+ if (m_keyboardManager->handleKeyPress (ke))
+ update();
+}
+
+void PlayList::updateSkin()
+{
+ setCursor(m_skin->getCursor(Skin::CUR_PNORMAL)); // TODO shaded
+ m_resizeWidget->setCursor(m_skin->getCursor (Skin::CUR_PSIZE));
+ m_ratio = m_skin->ratio();
+ setMinimalMode(m_shaded);
+}
+
+void PlayList::deletePlaylist()
+{
+ m_pl_manager->removePlayList(m_pl_manager->selectedPlayList());
+}
+
+void PlayList::showPlayLists()
+{
+ if(!m_pl_browser)
+ {
+ m_pl_browser = new PlayListBrowser(m_pl_manager, this);
+ m_pl_browser->show();
+ }
+ else
+ m_pl_browser->show();
+}
+
+void PlayList::generateCopySelectedMenu()
+{
+ m_copySelectedMenu->clear();
+ QAction* action = m_copySelectedMenu->addAction (tr ("&New PlayList"));
+ action->setIcon(QIcon::fromTheme("document-new"));
+ m_copySelectedMenu->addSeparator();
+
+ foreach(QString name, m_pl_manager->playListNames())
+ {
+ action = m_copySelectedMenu->addAction("&"+name.replace("&", "&&"));
+ }
+}
+
+void PlayList::copySelectedMenuActionTriggered( QAction * action)
+{
+ PlayListModel *targetPlayList = 0;
+ QString actionText=action->text();
+ if(action == m_copySelectedMenu->actions().at(0))//actionText == tr ("&New PlayList"))
+ {
+ targetPlayList = m_pl_manager->createPlayList(m_pl_manager->selectedPlayList()->name());
+ }
+ else
+ {
+ actionText.remove(0,1).replace("&&", "&");
+ foreach(PlayListModel *model, m_pl_manager->playLists())
+ {
+ //if("&" + model->name().replace("&", "&&") == actionText)
+ if(model->name() == actionText)
+ {
+ targetPlayList=model;
+ break;
+ }
+ }
+ }
+ if(!targetPlayList)
+ {
+ qWarning("Error: Cannot find target playlist '%s'",qPrintable(actionText));
+ return;
+ }
+ QList <PlayListItem *> theCopy;
+ foreach(PlayListItem *item, m_pl_manager->selectedPlayList()->getSelectedItems())
+ {
+ PlayListItem *newItem = new PlayListItem(*item);
+ theCopy << newItem;
+ }
+ targetPlayList->add(theCopy);
+}
+
+void PlayList::setMinimalMode(bool b)
+{
+ if(!m_shaded)
+ m_height = height();
+ m_shaded = b;
+ if(m_shaded)
+ {
+ m_height = height();
+ setSizeIncrement (25*m_ratio, 1);
+ setMinimumSize (275*m_ratio, 14*m_ratio);
+ resize(width(), 14*m_ratio);
+ }
+ else
+ {
+ setMinimumSize(275*m_ratio, 116*m_ratio);
+ resize (width(), m_height);
+ setSizeIncrement (25*m_ratio, 29*m_ratio);
+
+ }
+ updatePositions();
+ update();
+}
diff --git a/src/plugins/Ui/skinned/playlist.h b/src/plugins/Ui/skinned/playlist.h
new file mode 100644
index 000000000..ae4d5cda8
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlist.h
@@ -0,0 +1,140 @@
+/***************************************************************************
+ * Copyright (C) 2006-2010 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 PLAYLIST_H
+#define PLAYLIST_H
+
+#include <QWidget>
+#include <QPointer>
+
+class QMenu;;
+class Skin;
+class ListWidget;
+class PlayListItem;
+class Button;
+class PlayListModel;
+class PlayListTitleBar;
+class PlayListSlider;
+class MainWindow;
+class SymbolDisplay;
+class OutputState;
+class PixmapWidget;
+class PlaylistControl;
+class KeyboardManager;
+class PlayListManager;
+class PlayListBrowser;
+class PlayListSelector;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class PlayList : public QWidget
+{
+ Q_OBJECT
+ public:
+ PlayList (PlayListManager *manager, QWidget *parent = 0);
+
+ ~PlayList();
+ void load (PlayListItem *);
+ void readSettings();
+ PlayListItem *currentItem();
+ ListWidget* listWidget() const
+ {
+ return m_listWidget;
+ }
+ void setMinimalMode(bool b = true);
+
+ signals:
+ void play();
+ void next();
+ void prev();
+ void pause();
+ void stop();
+ void eject();
+ void loadPlaylist();
+ void savePlaylist();
+ void closed();
+
+ public slots:
+ void setTime(qint64 time);
+ void updateList();
+
+ private slots:
+ void showAddMenu();
+ void showSubMenu();
+ void showSelectMenu();
+ void showSortMenu();
+ void showPlaylistMenu();
+ void updateSkin();
+ void deletePlaylist();
+ void showPlayLists();
+ void generateCopySelectedMenu();
+ void copySelectedMenuActionTriggered( QAction * action);
+
+ private:
+ void updatePositions();
+ QString formatTime (int sec);
+ void drawPixmap (QPainter *painter, int x, int y, const QPixmap &pix);
+ void writeSettings();
+ void createMenus();
+ void createActions();
+ //events
+ virtual void paintEvent (QPaintEvent *);
+ virtual void resizeEvent (QResizeEvent *);
+ virtual void mouseMoveEvent (QMouseEvent *);
+ virtual void mousePressEvent (QMouseEvent *);
+ virtual void mouseReleaseEvent (QMouseEvent *);
+ virtual void changeEvent (QEvent*);
+ virtual void closeEvent (QCloseEvent*);
+ virtual void keyPressEvent (QKeyEvent*);
+#ifdef Q_WS_X11
+ virtual bool event (QEvent *event);
+#endif
+ QMenu *m_addMenu;
+ QMenu *m_subMenu;
+ QMenu *m_selectMenu;
+ QMenu *m_sortMenu;
+ QMenu *m_playlistMenu;
+ QMenu *m_copySelectedMenu;
+ QWidget *m_resizeWidget;
+ Button *m_buttonAdd;
+ Button *m_buttonSub;
+ Button *m_selectButton;
+ Button *m_sortButton;
+ Button* m_playlistButton;
+ PlaylistControl* m_pl_control;
+ SymbolDisplay* m_length_totalLength;
+ SymbolDisplay* m_current_time;
+ Skin *m_skin;
+ ListWidget *m_listWidget;
+ PlayListTitleBar *m_titleBar;
+ PlayListSlider *m_plslider;
+ QPoint m_pos;
+ bool m_resize;
+ bool m_update;
+ int m_ratio;
+ int m_height;
+ bool m_shaded;
+ PlayListManager *m_pl_manager;
+ KeyboardManager* m_keyboardManager;
+ QPointer <PlayListBrowser> m_pl_browser;
+ PlayListSelector *m_pl_selector;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/playlistbrowser.cpp b/src/plugins/Ui/skinned/playlistbrowser.cpp
new file mode 100644
index 000000000..d7e630c43
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlistbrowser.cpp
@@ -0,0 +1,117 @@
+/***************************************************************************
+ * Copyright (C) 2009-2010 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 <QStyle>
+#include <qmmpui/playlistmanager.h>
+#include "playlistbrowser.h"
+
+PlayListBrowser::PlayListBrowser(PlayListManager *manager, QWidget *parent) : QDialog(parent)
+{
+ setAttribute(Qt::WA_DeleteOnClose, true);
+ setAttribute(Qt::WA_QuitOnClose, false);
+ setWindowModality(Qt::NonModal);
+ ui.setupUi(this);
+ m_pl_manager = manager;
+ connect(m_pl_manager, SIGNAL(playListsChanged()), SLOT(updateList()));
+ connect(ui.newButton, SIGNAL(clicked()), m_pl_manager, SLOT(createPlayList()));
+ updateList();
+ //actions
+ QAction *renameAct = new QAction(tr("Rename"), this);
+ QAction *removeAct = new QAction(tr("Delete"), this);
+ connect(renameAct,SIGNAL(triggered()), SLOT(rename()));
+ connect(removeAct,SIGNAL(triggered()), SLOT(on_deleteButton_clicked()));
+ ui.listWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
+ ui.listWidget->addAction(renameAct);
+ ui.listWidget->addAction(removeAct);
+ ui.downButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_ArrowDown));
+ ui.upButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_ArrowUp));
+ ui.newButton->setIcon(QIcon::fromTheme("document-new"));
+ ui.deleteButton->setIcon(QIcon::fromTheme("edit-delete"));
+}
+
+PlayListBrowser::~PlayListBrowser()
+{}
+
+void PlayListBrowser::updateList()
+{
+ ui.listWidget->clear();
+ foreach(PlayListModel *model, m_pl_manager->playLists())
+ ui.listWidget->addItem(model->name());
+ ui.listWidget->setCurrentRow (m_pl_manager->selectedPlayListIndex());
+ //mark current playlist
+ int current = m_pl_manager->currentPlayListIndex();
+ QListWidgetItem *item = ui.listWidget->item(current);
+ if(item)
+ {
+ QFont font = item->font();
+ font.setBold(true);
+ item->setFont(font);
+ }
+}
+
+void PlayListBrowser::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
+{
+ m_pl_manager->activatePlayList(ui.listWidget->row(item));
+}
+
+void PlayListBrowser::on_listWidget_itemChanged(QListWidgetItem *item)
+{
+ m_pl_manager->playListAt(ui.listWidget->row(item))->setName(item->text());
+}
+
+void PlayListBrowser::on_listWidget_itemPressed (QListWidgetItem *item)
+{
+ m_pl_manager->selectPlayList(ui.listWidget->row(item));
+}
+
+void PlayListBrowser::rename()
+{
+ QListWidgetItem *item = ui.listWidget->currentItem();
+ if(item)
+ {
+ item->setFlags(Qt::ItemIsEditable | item->flags());
+ ui.listWidget->editItem(item);
+ }
+}
+
+void PlayListBrowser::on_deleteButton_clicked()
+{
+ QList <PlayListModel *> models;
+ foreach(QListWidgetItem *item, ui.listWidget->selectedItems())
+ models.append(m_pl_manager->playListAt(ui.listWidget->row (item)));
+ foreach(PlayListModel *model, models)
+ m_pl_manager->removePlayList(model);
+}
+
+void PlayListBrowser::on_downButton_clicked()
+{
+ int pos = m_pl_manager->indexOf(m_pl_manager->selectedPlayList());
+ if(pos < m_pl_manager->count() - 1)
+ m_pl_manager->move(pos, pos + 1);
+}
+
+void PlayListBrowser::on_upButton_clicked()
+{
+ int pos = m_pl_manager->indexOf(m_pl_manager->selectedPlayList());
+ if(pos > 0)
+ m_pl_manager->move(pos, pos - 1);
+}
diff --git a/src/plugins/Ui/skinned/playlistbrowser.h b/src/plugins/Ui/skinned/playlistbrowser.h
new file mode 100644
index 000000000..563b527a5
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlistbrowser.h
@@ -0,0 +1,54 @@
+/***************************************************************************
+ * 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 PLAYLISTBROWSER_H
+#define PLAYLISTBROWSER_H
+
+#include <QDialog>
+#include "ui_playlistbrowser.h"
+
+class PlayListManager;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class PlayListBrowser : public QDialog
+{
+Q_OBJECT
+public:
+ PlayListBrowser(PlayListManager *manager, QWidget *parent = 0);
+ ~PlayListBrowser();
+
+private slots:
+ void updateList();
+ void on_listWidget_itemDoubleClicked(QListWidgetItem *item);
+ void on_listWidget_itemChanged(QListWidgetItem *item);
+ void on_listWidget_itemPressed (QListWidgetItem *item);
+ void rename();
+ void on_deleteButton_clicked();
+ void on_downButton_clicked();
+ void on_upButton_clicked();
+
+private:
+ Ui::PlayListBrowser ui;
+ PlayListManager *m_pl_manager;
+};
+
+#endif // PLAYLISTBROWSER_H
diff --git a/src/plugins/Ui/skinned/playlistcontrol.cpp b/src/plugins/Ui/skinned/playlistcontrol.cpp
new file mode 100644
index 000000000..9f6f1cb60
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlistcontrol.cpp
@@ -0,0 +1,58 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 <QPainter>
+#include <QPaintEvent>
+#include <QMouseEvent>
+
+#include "playlistcontrol.h"
+#include "skin.h"
+
+PlaylistControl::PlaylistControl(QWidget* parent) : PixmapWidget(parent)
+{
+ m_skin = Skin::instance();
+ setPixmap(m_skin->getPlPart(Skin::PL_CONTROL));
+ m_ratio = m_skin->ratio();
+ connect(m_skin, SIGNAL(skinChanged()), SLOT(updateSkin()));
+}
+
+void PlaylistControl::mouseReleaseEvent(QMouseEvent *me)
+{
+ QPoint pt = me->pos();
+ if(QRect(4*m_ratio,m_ratio,7*m_ratio,7*m_ratio).contains(pt))
+ emit previousClicked();
+ else if(QRect(12*m_ratio,m_ratio,7*m_ratio,7*m_ratio).contains(pt))
+ emit playClicked();
+ else if(QRect(21*m_ratio,m_ratio,7*m_ratio,7*m_ratio).contains(pt))
+ emit pauseClicked();
+ else if(QRect(31*m_ratio,m_ratio,7*m_ratio,7*m_ratio).contains(pt))
+ emit stopClicked();
+ else if(QRect(40*m_ratio,m_ratio,7*m_ratio,7*m_ratio).contains(pt))
+ emit nextClicked();
+ else if(QRect(49*m_ratio,m_ratio,7*m_ratio,7*m_ratio).contains(pt))
+ emit ejectClicked();
+}
+
+void PlaylistControl::updateSkin()
+{
+ setCursor(m_skin->getCursor(Skin::CUR_PNORMAL));
+ setPixmap(m_skin->getPlPart(Skin::PL_CONTROL));
+ m_ratio = m_skin->ratio();
+}
diff --git a/src/plugins/Ui/skinned/playlistcontrol.h b/src/plugins/Ui/skinned/playlistcontrol.h
new file mode 100644
index 000000000..6c0ed0eaf
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlistcontrol.h
@@ -0,0 +1,57 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 _PALYLISTCONTROL_H
+#define _PALYLISTCONTROL_H
+
+#include "pixmapwidget.h"
+
+class QMouseEvent;
+class PaintEvent;
+class Skin;
+
+ /**
+ @author Vladimir Kuznetsov <vovanec@gmail.ru>
+ */
+class PlaylistControl : public PixmapWidget
+{
+Q_OBJECT
+public:
+ PlaylistControl(QWidget* parent = 0);
+
+
+signals:
+ void previousClicked();
+ void nextClicked();
+ void pauseClicked();
+ void playClicked();
+ void stopClicked();
+ void ejectClicked();
+
+private slots:
+ void updateSkin();
+
+private:
+ void mouseReleaseEvent(QMouseEvent*);
+ int m_ratio;
+ Skin* m_skin;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/playlistselector.cpp b/src/plugins/Ui/skinned/playlistselector.cpp
new file mode 100644
index 000000000..132c708ea
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlistselector.cpp
@@ -0,0 +1,303 @@
+/***************************************************************************
+ * Copyright (C) 2009-2011 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 <QPainter>
+#include <QFont>
+#include <QFontMetrics>
+#include <QSettings>
+#include <QApplication>
+#include <QMouseEvent>
+#include <QMenu>
+#include <QLineEdit>
+#include <QInputDialog>
+#include <qmmp/qmmp.h>
+#include <qmmpui/playlistmanager.h>
+#include "skin.h"
+#include "playlistselector.h"
+
+PlayListSelector::PlayListSelector(PlayListManager *manager, QWidget *parent) : QWidget(parent)
+{
+ m_update = false;
+ m_scrollable = false;
+ m_left_pressed = false;
+ m_right_pressed = false;
+ m_offset = 0;
+ m_offset_max = 0;
+ m_skin = Skin::instance();
+ m_pl_manager = manager;
+ connect(m_pl_manager, SIGNAL(playListsChanged()), SLOT(updateTabs()));
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ loadColors();
+ readSettings();
+ updateTabs();
+ m_menu = new QMenu(this);
+ m_menu->addAction(tr("&Load"), parent, SIGNAL (loadPlaylist()));
+ m_menu->addAction(tr("&Save As..."), parent, SIGNAL (savePlaylist()));
+ m_menu->addSeparator();
+ m_menu->addAction(tr("Rename"),this, SLOT (renamePlaylist()));
+ m_menu->addAction(tr("&Delete"),parent, SLOT (deletePlaylist()));
+}
+
+PlayListSelector::~PlayListSelector()
+{}
+
+void PlayListSelector::readSettings()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ m_font.fromString(settings.value("PlayList/Font", QApplication::font().toString()).toString());
+ if (m_update)
+ {
+ delete m_metrics;
+ m_metrics = new QFontMetrics(m_font);
+ updateTabs();
+ }
+ else
+ {
+ m_update = true;
+ }
+ m_metrics = new QFontMetrics(m_font);
+
+ resize(width(), m_metrics->height () +1);
+ drawButtons();
+}
+
+void PlayListSelector::updateTabs()
+{
+ m_rects.clear();
+ QRect rect;
+ foreach(QString text, m_pl_manager->playListNames())
+ {
+ if(m_rects.isEmpty())
+ rect.setX(9);
+ else
+ rect.setX(m_rects.last().right() + m_metrics->width(" | "));
+ rect.setY(0);
+ rect.setWidth(m_metrics->width(text));
+ rect.setHeight(m_metrics->ascent ());
+ m_rects.append(rect);
+ }
+ updateScrollers();
+ update();
+}
+
+void PlayListSelector::updateSkin()
+{
+ loadColors();
+ drawButtons();
+ updateTabs();
+}
+
+void PlayListSelector::renamePlaylist()
+{
+ bool ok = false;
+ QString name = QInputDialog::getText (this,
+ tr("Rename Playlist"), tr("Playlist name:"),
+ QLineEdit::Normal,
+ m_pl_manager->selectedPlayList()->name(), &ok);
+ if(ok)
+ m_pl_manager->selectedPlayList()->setName(name);
+}
+
+void PlayListSelector::paintEvent(QPaintEvent *)
+{
+ QPainter painter(this);
+ painter.setFont(m_font);
+ painter.setBrush(QBrush(m_normal_bg));
+ painter.drawRect(-1,-1,width()+1,height()+1);
+ QStringList names = m_pl_manager->playListNames();
+ int current = m_pl_manager->indexOf(m_pl_manager->currentPlayList());
+ int selected = m_pl_manager->indexOf(m_pl_manager->selectedPlayList());
+ painter.setBrush(QBrush(m_selected_bg));
+ painter.setPen(m_selected_bg);
+ painter.drawRect(m_rects.at(selected).x()- 3 - m_offset, 0,
+ m_rects.at(selected).width()+4, height()-1);
+
+ for (int i = 0; i < m_rects.size(); ++i)
+ {
+ if(i == current)
+ painter.setPen(m_current);
+ else
+ painter.setPen(m_normal);
+ painter.drawText(m_rects[i].x() - m_offset, m_metrics->ascent(), names.at(i));
+ if(i < m_rects.size() - 1)
+ {
+ painter.setPen(m_normal);
+ painter.drawText(m_rects[i].x() + m_rects[i].width() - m_offset, m_metrics->ascent(), " | ");
+ }
+ }
+ if(m_scrollable)
+ {
+ painter.drawPixmap(width()-40, 0, m_pixmap);
+ painter.setBrush(QBrush(m_normal_bg));
+ painter.setPen(m_normal_bg);
+ painter.drawRect(0,0,6,height());
+ }
+}
+
+void PlayListSelector::mousePressEvent (QMouseEvent *e)
+{
+ if(m_scrollable && e->x() > width() - 20)
+ {
+ m_offset += m_rects.at(lastVisible()).right() - m_offset - width() + 42;
+ m_offset = qMin(m_offset, m_offset_max);
+ m_right_pressed = true;
+ drawButtons();
+ update();
+ return;
+ }
+ if(m_scrollable && (width() - 40 < e->x()) && (e->x() <= width() - 20))
+ {
+ m_offset -= 11 - m_rects.at(firstVisible()).x() + m_offset;
+ m_offset = qMax(0, m_offset);
+ m_left_pressed = true;
+ drawButtons();
+ update();
+ return;
+ }
+
+ QPoint pp = e->pos();
+ pp.rx() += m_offset;
+ bool selected = false;
+ for(int i = 0; i < m_rects.count(); ++i)
+ {
+ if(m_rects.at(i).contains(pp))
+ {
+ selected = true;
+ m_pl_manager->selectPlayList(i);
+ break;
+ }
+ }
+ update();
+ if(e->button() == Qt::RightButton)
+ m_menu->exec(e->globalPos());
+ else if(e->button() == Qt::MidButton && selected)
+ m_pl_manager->removePlayList(m_pl_manager->selectedPlayList());
+ else
+ QWidget::mousePressEvent(e);
+}
+
+void PlayListSelector::mouseReleaseEvent (QMouseEvent *e)
+{
+ m_left_pressed = false;
+ m_right_pressed = false;
+ drawButtons();
+ update();
+ QWidget::mouseReleaseEvent(e);
+}
+
+void PlayListSelector::mouseDoubleClickEvent (QMouseEvent *e)
+{
+ if(e->button() == Qt::LeftButton && !(m_scrollable && (e->x() > width() - 40)))
+ renamePlaylist();
+ else
+ QWidget::mouseDoubleClickEvent(e);
+}
+
+void PlayListSelector::mouseMoveEvent(QMouseEvent *e)
+{
+ QPoint mp = e->pos();
+ mp.rx() += m_offset;
+ int dest = -1;
+ for(int i = 0; i < m_rects.count(); ++i)
+ {
+ if(mp.x() >= m_rects.at(i).x() && mp.x() <= m_rects.at(i).x() + m_rects.at(i).width())
+ {
+ dest = i;
+ break;
+ }
+ }
+ if(dest == -1 || dest == m_pl_manager->selectedPlayListIndex())
+ {
+ QWidget::mouseMoveEvent(e);
+ return;
+ }
+ m_pl_manager->move(m_pl_manager->selectedPlayListIndex(), dest);
+}
+
+void PlayListSelector::resizeEvent (QResizeEvent *)
+{
+ updateScrollers();
+}
+
+void PlayListSelector::loadColors()
+{
+ m_normal.setNamedColor(m_skin->getPLValue("normal"));
+ m_current.setNamedColor(m_skin->getPLValue("current"));
+ m_normal_bg.setNamedColor(m_skin->getPLValue("normalbg"));
+ m_selected_bg.setNamedColor(m_skin->getPLValue("selectedbg"));
+}
+
+void PlayListSelector::drawButtons()
+{
+ m_pixmap = QPixmap(40, height());
+ m_pixmap.fill(m_normal_bg);
+ QPainter painter(&m_pixmap);
+ painter.setPen(m_left_pressed ? m_current : m_normal);
+ painter.setBrush(QBrush(m_left_pressed ? m_current : m_normal));
+ QPoint points[3] = {
+ QPoint(m_pixmap.width() - 25, height()/2 - 5),
+ QPoint(m_pixmap.width() - 35, height()/2-1),
+ QPoint(m_pixmap.width() - 25, height()/2 + 3),
+ };
+ painter.drawPolygon(points, 3);
+ painter.setPen(m_right_pressed ? m_current : m_normal);
+ painter.setBrush(QBrush(m_right_pressed ? m_current : m_normal));
+ QPoint points2[3] = {
+ QPoint(m_pixmap.width() - 20, height()/2 - 5),
+ QPoint(m_pixmap.width() - 10, height()/2-1),
+ QPoint(m_pixmap.width() - 20, height()/2 + 3),
+ };
+ painter.drawPolygon(points2, 3);
+}
+
+void PlayListSelector::updateScrollers()
+{
+ m_scrollable = m_rects.last().right() > width();
+ if(m_scrollable)
+ {
+ m_offset_max = m_rects.last().right() - width() + 42;
+ m_offset = qMin(m_offset, m_offset_max);
+ }
+ else
+ {
+ m_offset = 0;
+ m_offset_max = 0;
+ }
+}
+
+int PlayListSelector::firstVisible()
+{
+ for(int i = 0; i < m_rects.size(); ++i)
+ {
+ if(m_rects.at(i).right() - m_offset + m_metrics->width(" - ") + 2 >= 9)
+ return i;
+ }
+ return 0;
+}
+
+int PlayListSelector::lastVisible()
+{
+ for(int i = m_rects.size() - 1; i >= 0; --i)
+ {
+ if(m_rects.at(i).x() - m_offset - m_metrics->width(" - ") - 2 <= width() - 40)
+ return i;
+ }
+ return m_rects.count() - 1;
+}
diff --git a/src/plugins/Ui/skinned/playlistselector.h b/src/plugins/Ui/skinned/playlistselector.h
new file mode 100644
index 000000000..67e281f75
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlistselector.h
@@ -0,0 +1,79 @@
+/***************************************************************************
+ * Copyright (C) 2009-2010 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 PLAYLISTSELECTOR_H
+#define PLAYLISTSELECTOR_H
+
+#include <QWidget>
+#include <QColor>
+#include <QPixmap>
+
+class QFontMetrics;
+class QFont;
+class QMouseEvent;
+class QMenu;
+class PlayListManager;
+class Skin;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class PlayListSelector : public QWidget
+{
+Q_OBJECT
+public:
+ PlayListSelector(PlayListManager *manager, QWidget *parent = 0);
+ ~PlayListSelector();
+ void readSettings();
+
+private slots:
+ void updateTabs();
+ void updateSkin();
+ void renamePlaylist();
+
+private:
+ void paintEvent(QPaintEvent *);
+ void mousePressEvent (QMouseEvent *e);
+ void mouseReleaseEvent (QMouseEvent *e);
+ void mouseDoubleClickEvent (QMouseEvent *e);
+ void mouseMoveEvent(QMouseEvent *e);
+ void resizeEvent (QResizeEvent *);
+ void updateOffsets();
+ void loadColors();
+ void drawButtons();
+ void updateScrollers();
+ int firstVisible();
+ int lastVisible();
+ PlayListManager *m_pl_manager;
+ QFontMetrics *m_metrics;
+ QFont m_font;
+ QMenu *m_menu;
+ bool m_update;
+ bool m_scrollable;
+ QList <QRect> m_rects;
+ Skin *m_skin;
+ QColor m_normal, m_current, m_normal_bg, m_selected_bg;
+ QPixmap m_pixmap;
+ bool m_showButtons;
+ int m_offset, m_offset_max;
+ bool m_left_pressed, m_right_pressed;
+};
+
+#endif // PLAYLISTSELECTOR_H
diff --git a/src/plugins/Ui/skinned/playlistslider.cpp b/src/plugins/Ui/skinned/playlistslider.cpp
new file mode 100644
index 000000000..df958fa6b
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlistslider.cpp
@@ -0,0 +1,135 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 <QPainter>
+#include <QResizeEvent>
+#include <math.h>
+
+#include "skin.h"
+#include "playlistslider.h"
+#include "pixmapwidget.h"
+
+PlayListSlider::PlayListSlider(QWidget *parent)
+ : QWidget(parent)
+{
+ m_skin = Skin::instance();
+ m_moving = false;
+ m_pressed = false;
+ m_min = 0;
+ m_max = 0;
+ m_value = 0;
+ pos = 0;
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ setCursor(m_skin->getCursor(Skin::CUR_PVSCROLL));
+}
+
+
+PlayListSlider::~PlayListSlider()
+{}
+
+void PlayListSlider::paintEvent(QPaintEvent *)
+{
+ int sy = (height()-58)/29;
+ int p=int(ceil(double(m_value-m_min)*(height()-18)/(m_max-m_min)));
+ QPainter paint(this);
+ paint.drawPixmap(0,0,m_skin->getPlPart(Skin::PL_RFILL));
+ paint.drawPixmap(0,29,m_skin->getPlPart(Skin::PL_RFILL));
+
+ for (int i = 0; i<sy; i++)
+ {
+ paint.drawPixmap(0,58+i*29,m_skin->getPlPart(Skin::PL_RFILL));
+ }
+ if (m_pressed)
+ paint.drawPixmap(5*m_skin->ratio(),p,m_skin->getButton(Skin::PL_BT_SCROLL_P));
+ else
+ paint.drawPixmap(5*m_skin->ratio(),p,m_skin->getButton(Skin::PL_BT_SCROLL_N));
+ m_pos = p;
+}
+
+void PlayListSlider::mousePressEvent(QMouseEvent *e)
+{
+ m_moving = true;
+ m_pressed = true;
+ press_pos = e->y();
+ if (m_pos<e->y() && e->y()<m_pos+18*m_skin->ratio())
+ {
+ press_pos = e->y()-m_pos;
+ }
+ else
+ {
+ m_value = convert(qMax(qMin(height()-18*m_skin->ratio(),e->y()-9*m_skin->ratio()),0));
+ press_pos = 9*m_skin->ratio();
+ if (m_value!=m_old)
+ {
+ emit sliderMoved(m_value);
+ m_old = m_value;
+ //qDebug ("%d",m_value);
+ }
+ }
+ update();
+}
+
+void PlayListSlider::mouseReleaseEvent(QMouseEvent*)
+{
+ m_moving = false;
+ m_pressed = false;
+ update();
+}
+
+void PlayListSlider::mouseMoveEvent(QMouseEvent* e)
+{
+ if (m_moving)
+ {
+ int po = e->y();
+ po = po - press_pos;
+
+ if (0<=po && po<=height()-18*m_skin->ratio())
+ {
+ m_value = convert(po);
+ update();
+ if (m_value!=m_old)
+ {
+
+ m_old = m_value;
+ emit sliderMoved(m_value);
+ }
+ }
+ }
+}
+
+void PlayListSlider::setPos(int p, int max)
+{
+ m_max = max;
+ m_value = p;
+ if(m_moving)
+ return;
+ update();
+}
+
+void PlayListSlider::updateSkin()
+{
+ update();
+ setCursor(m_skin->getCursor(Skin::CUR_PVSCROLL));
+}
+
+int PlayListSlider::convert(int p)
+{
+ return int(floor(double(m_max-m_min)*(p)/(height()-18*m_skin->ratio())+m_min));
+}
+
diff --git a/src/plugins/Ui/skinned/playlistslider.h b/src/plugins/Ui/skinned/playlistslider.h
new file mode 100644
index 000000000..cd42a6c3a
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlistslider.h
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 PLAYLISTSLIDER_H
+#define PLAYLISTSLIDER_H
+
+#include <QWidget>
+
+class Skin;
+class PixmapWidget;
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class PlayListSlider : public QWidget
+{
+Q_OBJECT
+public:
+ PlayListSlider(QWidget *parent = 0);
+
+ ~PlayListSlider();
+
+public slots:
+ void setPos(int pos, int max);
+
+signals:
+ void sliderMoved (int);
+
+private slots:
+ void updateSkin();
+
+private:
+ Skin *m_skin;
+ PixmapWidget *m_scroll;
+ int m_old;
+ bool m_moving, m_pressed;
+ int press_pos;
+ int m_min, m_max, m_value, pos, m_pos;
+ int convert(int); // value = convert(position);
+
+protected:
+ void paintEvent(QPaintEvent*);
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/playlisttitlebar.cpp b/src/plugins/Ui/skinned/playlisttitlebar.cpp
new file mode 100644
index 000000000..ddcc2b244
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlisttitlebar.cpp
@@ -0,0 +1,275 @@
+/***************************************************************************
+ * Copyright (C) 2007-2011 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 <QPainter>
+#include <QResizeEvent>
+#include <QMenu>
+#include <QSettings>
+#include <QApplication>
+#include <qmmpui/playlistmodel.h>
+#include "dock.h"
+#include "button.h"
+#include "playlisttitlebar.h"
+#include "skin.h"
+
+// TODO {shademode, updateskin} -> do we have the shaded cursor
+PlayListTitleBar::PlayListTitleBar(QWidget *parent)
+ : PixmapWidget(parent)
+{
+ m_active = false;
+ m_resize = false;
+ m_shade2 = 0;
+ m_model = 0;
+ m_shaded = false;
+ m_align = false;
+ m_skin = Skin::instance();
+ m_ratio = m_skin->ratio();
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ m_pl = qobject_cast<PlayList*>(parent);
+ m_mw = qobject_cast<MainWindow*>(m_pl->parent());
+
+ m_close = new Button(this,Skin::PL_BT_CLOSE_N, Skin::PL_BT_CLOSE_P, Skin::CUR_PCLOSE);
+ connect (m_close, SIGNAL(clicked()), m_pl, SIGNAL(closed()));
+
+ m_shade = new Button(this, Skin::PL_BT_SHADE1_N, Skin::PL_BT_SHADE1_P, Skin::CUR_PWINBUT);
+ connect(m_shade, SIGNAL(clicked()), SLOT(shade()));
+
+ resize(275*m_ratio,20*m_ratio);
+ setMinimumWidth(275*m_ratio);
+
+ readSettings();
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ m_pl->resize (settings.value ("PlayList/size", QSize (m_ratio*275, m_ratio*116)).toSize());
+ if (settings.value ("PlayList/shaded", false).toBool())
+ shade();
+ resize(m_pl->width(),height());
+ m_align = true;
+ setCursor(m_skin->getCursor(Skin::CUR_PTBAR));
+ updatePositions();
+}
+
+
+PlayListTitleBar::~PlayListTitleBar()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue ("PlayList/size", QSize (m_pl->width(), m_shaded ? m_height:m_pl->height()));
+ settings.setValue ("PlayList/shaded", m_shaded);
+}
+
+void PlayListTitleBar::updatePositions()
+{
+ int sx = (width()-275*m_ratio)/25;
+ m_ratio = m_skin->ratio();
+ m_close->move(m_ratio*264+sx*25,m_ratio*3);
+ m_shade->move(m_ratio*255+sx*25,m_ratio*3);
+ if (m_shade2)
+ m_shade2->move(m_ratio*255+sx*25,m_ratio*3);
+}
+
+void PlayListTitleBar::updatePixmap()
+{
+ int sx = ((m_shaded ? m_pl->width() : width())-275*m_ratio)/25;
+ QPixmap pixmap(275*m_ratio+sx*25,20*m_ratio);
+ QPainter paint;
+ paint.begin(&pixmap);
+ if (m_shaded)
+ {
+ paint.drawPixmap(0,0,m_skin->getPlPart(Skin::PL_TITLEBAR_SHADED2));
+ for (int i = 1; i<sx+9*m_ratio; i++)
+ {
+ paint.drawPixmap(25*i,0,m_skin->getPlPart(Skin::PL_TFILL_SHADED));
+ }
+ }
+
+ if (m_active)
+ {
+ if (m_shaded)
+ paint.drawPixmap(225*m_ratio+sx*25,0,m_skin->getPlPart(Skin::PL_TITLEBAR_SHADED1_A));
+ else
+ {
+ paint.drawPixmap(0,0,m_skin->getPlPart(Skin::PL_CORNER_UL_A));
+ for (int i = 1; i<sx+10*m_ratio; i++)
+ {
+ paint.drawPixmap(25*i,0,m_skin->getPlPart(Skin::PL_TFILL1_A));
+ }
+ paint.drawPixmap((100-12)*m_ratio+12*sx,0,m_skin->getPlPart(Skin::PL_TITLEBAR_A));
+ paint.drawPixmap(250*m_ratio+sx*25,0,m_skin->getPlPart(Skin::PL_CORNER_UR_A));
+ }
+ }
+ else
+ {
+ if (m_shaded)
+ paint.drawPixmap(225*m_ratio+sx*25,0,m_skin->getPlPart(Skin::PL_TITLEBAR_SHADED1_I));
+ else
+ {
+ paint.drawPixmap(0,0,m_skin->getPlPart(Skin::PL_CORNER_UL_I));
+ for (int i = 1; i<sx+10*m_ratio; i++)
+ {
+ paint.drawPixmap(25*i,0,m_skin->getPlPart(Skin::PL_TFILL1_I));
+ }
+ paint.drawPixmap((100-12)*m_ratio+12*sx,0,m_skin->getPlPart(Skin::PL_TITLEBAR_I));
+ paint.drawPixmap(250*m_ratio+sx*25,0,m_skin->getPlPart(Skin::PL_CORNER_UR_I));
+ }
+ }
+ if (m_shaded)
+ {
+ QColor col;
+ col.setNamedColor(QString(m_skin->getPLValue("mbbg")));
+ paint.setBrush(QBrush(col));
+ paint.setPen(col);
+ paint.drawRect(8*m_ratio, m_ratio, 235*m_ratio + sx*25, 11*m_ratio);
+ //draw text
+ paint.setFont(m_font);
+ paint.setPen(QString(m_skin->getPLValue("mbfg")));
+ paint.drawText(9*m_ratio, 11*m_ratio, m_truncatedText);
+ }
+ paint.end();
+ setPixmap(pixmap);
+}
+
+void PlayListTitleBar::resizeEvent(QResizeEvent *)
+{
+ QFontMetrics metrics(m_font);
+ m_truncatedText = metrics.elidedText (m_text, Qt::ElideRight, width() - 35*m_ratio);
+ updatePixmap();
+ updatePositions();
+}
+
+void PlayListTitleBar::mousePressEvent(QMouseEvent* event)
+{
+ switch ((int) event->button ())
+ {
+ case Qt::LeftButton:
+ pos = event->pos();
+ if (m_shaded && (width() - 30*m_ratio) < pos.x() && pos.x() < (width() - 22*m_ratio))
+ {
+ m_resize = true;
+ setCursor (Qt::SizeHorCursor);
+ }
+ break;
+ case Qt::RightButton:
+ m_mw->menu()->exec(event->globalPos());
+ }
+}
+
+void PlayListTitleBar::mouseReleaseEvent(QMouseEvent*)
+{
+ Dock::instance()->updateDock();
+ m_resize = false;
+ setCursor (Qt::ArrowCursor);
+}
+
+void PlayListTitleBar::mouseMoveEvent(QMouseEvent* event)
+{
+ QPoint npos = (event->globalPos()-pos);
+ QPoint oldpos = npos;
+ if (m_shaded && m_resize)
+ {
+ resize((event->x() + 25*m_ratio), height());
+ m_pl->resize((event->x() + 25*m_ratio), m_pl->height());
+ }
+ else if (pos.x() < width() - 30*m_ratio)
+ Dock::instance()->move(m_pl, npos);
+}
+
+void PlayListTitleBar::setActive(bool a)
+{
+ m_active = a;
+ updatePixmap();
+}
+
+
+void PlayListTitleBar::setModel(PlayListModel *selected, PlayListModel *previous)
+{
+ if(previous)
+ disconnect(previous, 0, this, 0); //disconnect previous model
+ m_model = selected;
+ connect (m_model, SIGNAL(listChanged()), SLOT(showCurrent()));
+ showCurrent();
+}
+
+void PlayListTitleBar::readSettings()
+{
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ m_font.fromString(settings.value("PlayList/Font", QApplication::font().toString()).toString());
+ m_font.setPointSize(8);
+}
+
+void PlayListTitleBar::updateSkin()
+{
+ setCursor(m_skin->getCursor(Skin::CUR_PTBAR));
+ if(m_ratio != m_skin->ratio())
+ {
+ m_ratio = m_skin->ratio();
+ setMinimumWidth(275*m_ratio);
+ updatePositions();
+ }
+ updatePixmap();
+}
+
+void PlayListTitleBar::shade()
+{
+ m_shaded = !m_shaded;
+ if (m_shaded)
+ {
+ m_height = m_pl->height();
+ m_shade->hide();
+ m_shade2 = new Button(this, Skin::PL_BT_SHADE2_N, Skin::PL_BT_SHADE2_P, Skin::CUR_PWSNORM);
+ m_shade2->move(254,3);
+ connect(m_shade2, SIGNAL(clicked()), SLOT(shade()));
+ m_shade2->show();
+ }
+ else
+ {
+ m_shade2->deleteLater();
+ m_shade2 = 0;
+ m_shade->show();
+ }
+ m_pl->setMinimalMode(m_shaded);
+ showCurrent();
+ update();
+ if (m_align)
+ Dock::instance()->align(m_pl, m_shaded? -m_height+14*m_ratio: m_height-14*m_ratio);
+ updatePositions();
+}
+
+void PlayListTitleBar::mouseDoubleClickEvent (QMouseEvent *)
+{
+ PlayListTitleBar::shade();
+}
+
+void PlayListTitleBar::showCurrent()
+{
+ if (m_model)
+ {
+ PlayListItem* info = m_model->currentItem();
+ if (info)
+ {
+ m_text = QString("%1. ").arg(m_model->currentRow()+1);
+ m_text.append(info->text());
+ m_text.append(QString(" (%1:%2)").arg(info->length()/60)
+ .arg(info->length()%60, 2, 10, QChar('0')));
+ }
+ else
+ m_text.clear();
+ }
+ QFontMetrics metrics(m_font);
+ m_truncatedText = metrics.elidedText (m_text, Qt::ElideRight, width() - 35*m_ratio);
+ updatePixmap();
+}
diff --git a/src/plugins/Ui/skinned/playlisttitlebar.h b/src/plugins/Ui/skinned/playlisttitlebar.h
new file mode 100644
index 000000000..01163f987
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlisttitlebar.h
@@ -0,0 +1,80 @@
+/***************************************************************************
+ * Copyright (C) 2007-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 PLAYLISTTITLEBAR_H
+#define PLAYLISTTITLEBAR_H
+
+#include "playlist.h"
+#include "pixmapwidget.h"
+#include "mainwindow.h"
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class Skin;
+class MainWindow;
+class Button;
+class PlayListModel;
+
+class PlayListTitleBar : public PixmapWidget
+{
+Q_OBJECT
+public:
+ PlayListTitleBar(QWidget *parent = 0);
+ ~PlayListTitleBar();
+ void setActive(bool);
+ void readSettings();
+
+public slots:
+ void showCurrent();
+ void setModel(PlayListModel *selected, PlayListModel *previous = 0);
+
+private slots:
+ void updateSkin();
+ void shade();
+
+private:
+ void updatePositions();
+ void updatePixmap();
+ Skin *m_skin;
+ QPoint pos;
+ bool m_active;
+ PlayList* m_pl;
+ MainWindow* m_mw;
+ Button* m_close;
+ Button* m_shade;
+ Button* m_shade2;
+ bool m_shaded;
+ bool m_align, m_resize;
+ int m_ratio;
+ int m_height;
+ PlayListModel* m_model;
+ QString m_text;
+ QString m_truncatedText;
+ QFont m_font;
+
+protected:
+ void resizeEvent(QResizeEvent*);
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+ void mouseDoubleClickEvent(QMouseEvent*);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/playstatus.cpp b/src/plugins/Ui/skinned/playstatus.cpp
new file mode 100644
index 000000000..f12efb258
--- /dev/null
+++ b/src/plugins/Ui/skinned/playstatus.cpp
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 "skin.h"
+#include "playstatus.h"
+
+PlayStatus::PlayStatus ( QWidget *parent )
+ : PixmapWidget ( parent )
+{
+ m_skin = Skin::instance();
+ setStatus ( STOP );
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+}
+
+
+PlayStatus::~PlayStatus()
+{}
+
+void PlayStatus::setStatus ( Type st )
+{
+ m_status = st;
+ switch ( ( uint ) st )
+ {
+ case PLAY:
+ {
+ setPixmap ( m_skin->getItem ( Skin::PLAY ));
+ break;
+ }
+ case STOP:
+ {
+ setPixmap ( m_skin->getItem ( Skin::STOP ));
+ break;
+ }
+ case PAUSE:
+ {
+ setPixmap ( m_skin->getItem ( Skin::PAUSE ));
+ break;
+ }
+ }
+}
+
+void PlayStatus::updateSkin()
+{
+ setStatus ( m_status );
+}
+
+
diff --git a/src/plugins/Ui/skinned/playstatus.h b/src/plugins/Ui/skinned/playstatus.h
new file mode 100644
index 000000000..1ddf9748c
--- /dev/null
+++ b/src/plugins/Ui/skinned/playstatus.h
@@ -0,0 +1,55 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 PLAYSTATUS_H
+#define PLAYSTATUS_H
+
+#include "pixmapwidget.h"
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class Skin;
+
+class PlayStatus : public PixmapWidget
+{
+Q_OBJECT
+public:
+ PlayStatus(QWidget *parent = 0);
+
+ ~PlayStatus();
+
+ enum Type
+ {
+ PLAY,
+ STOP,
+ PAUSE,
+ };
+
+void setStatus(Type);
+
+private slots:
+ void updateSkin();
+
+private:
+ Skin *m_skin;
+ Type m_status;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/pluginitem.cpp b/src/plugins/Ui/skinned/pluginitem.cpp
new file mode 100644
index 000000000..0f0fa1f58
--- /dev/null
+++ b/src/plugins/Ui/skinned/pluginitem.cpp
@@ -0,0 +1,188 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 <QDir>
+
+#include <qmmp/inputsourcefactory.h>
+#include <qmmp/decoderfactory.h>
+#include <qmmp/outputfactory.h>
+#include <qmmp/visualfactory.h>
+#include <qmmp/effectfactory.h>
+#include <qmmp/effect.h>
+#include <qmmp/soundcore.h>
+#include <qmmp/enginefactory.h>
+#include <qmmp/abstractengine.h>
+#include <qmmpui/generalfactory.h>
+#include <qmmpui/general.h>
+#include <qmmpui/generalhandler.h>
+
+#include "pluginitem.h"
+
+
+PluginItem::PluginItem(QTreeWidgetItem *parent, InputSourceFactory *factory, const QString &path)
+ : QTreeWidgetItem(parent, QStringList() << factory->properties().name << path.section('/',-1), TRANSPORT)
+{
+ m_has_about = factory->properties().hasAbout;
+ m_has_config = factory->properties().hasSettings;
+ m_factory = factory;
+}
+
+
+PluginItem::PluginItem(QTreeWidgetItem *parent, DecoderFactory *factory, const QString &path)
+ : QTreeWidgetItem(parent, QStringList() << factory->properties().name << path.section('/',-1), DECODER)
+{
+ setCheckState(0, Decoder::isEnabled(factory) ? Qt::Checked : Qt::Unchecked);
+ m_has_about = factory->properties().hasAbout;
+ m_has_config = factory->properties().hasSettings;
+ m_factory = factory;
+}
+
+PluginItem::PluginItem(QTreeWidgetItem *parent, EngineFactory *factory, const QString &path)
+ : QTreeWidgetItem(parent, QStringList() << factory->properties().name << path.section('/',-1), ENGINE)
+{
+ setCheckState(0, AbstractEngine::isEnabled(factory) ? Qt::Checked : Qt::Unchecked);
+ m_has_about = factory->properties().hasAbout;
+ m_has_config = factory->properties().hasSettings;
+ m_factory = factory;
+}
+
+PluginItem::PluginItem(QTreeWidgetItem *parent, EffectFactory *factory, const QString &path)
+ : QTreeWidgetItem(parent, QStringList() << factory->properties().name << path.section('/',-1), EFFECT)
+{
+ setCheckState(0, Effect::isEnabled(factory) ? Qt::Checked : Qt::Unchecked);
+ m_has_about = factory->properties().hasAbout;
+ m_has_config = factory->properties().hasSettings;
+ m_factory = factory;
+}
+
+PluginItem::PluginItem(QTreeWidgetItem *parent, VisualFactory *factory, const QString &path)
+ : QTreeWidgetItem(parent, QStringList() << factory->properties().name << path.section('/',-1), VISUAL)
+{
+ setCheckState(0, Visual::isEnabled(factory) ? Qt::Checked : Qt::Unchecked);
+ m_has_about = factory->properties().hasAbout;
+ m_has_config = factory->properties().hasSettings;
+ m_factory = factory;
+}
+
+PluginItem::PluginItem(QTreeWidgetItem *parent, GeneralFactory *factory, const QString &path)
+ : QTreeWidgetItem(parent, QStringList() << factory->properties().name << path.section('/',-1), GENERAL)
+{
+ setCheckState(0, General::isEnabled(factory) ? Qt::Checked : Qt::Unchecked);
+ m_has_about = factory->properties().hasAbout;
+ m_has_config = factory->properties().hasSettings;
+ m_factory = factory;
+}
+
+PluginItem::~PluginItem()
+{
+
+}
+
+bool PluginItem::hasAbout() const
+{
+ return m_has_about;
+}
+bool PluginItem::hasSettings() const
+{
+ return m_has_config;
+}
+
+void PluginItem::showAbout(QWidget *parent)
+{
+ switch(type())
+ {
+ case PluginItem::TRANSPORT:
+ static_cast<InputSourceFactory *>(m_factory)->showAbout(parent);
+ break;
+ case PluginItem::DECODER:
+ static_cast<DecoderFactory *>(m_factory)->showAbout(parent);
+ break;
+ case PluginItem::ENGINE:
+ static_cast<EngineFactory *>(m_factory)->showAbout(parent);
+ break;
+ case PluginItem::EFFECT:
+ static_cast<EffectFactory *>(m_factory)->showAbout(parent);
+ break;
+ case PluginItem::VISUAL:
+ static_cast<VisualFactory *>(m_factory)->showAbout(parent);
+ break;
+ case PluginItem::GENERAL:
+ static_cast<GeneralFactory *>(m_factory)->showAbout(parent);
+ break;
+ default:
+ ;
+ }
+
+}
+
+void PluginItem::showSettings(QWidget *parent)
+{
+ switch(type())
+ {
+ case PluginItem::TRANSPORT:
+ static_cast<InputSourceFactory *>(m_factory)->showSettings(parent);
+ break;
+ case PluginItem::DECODER:
+ static_cast<DecoderFactory *>(m_factory)->showSettings (parent);
+ break;
+ case PluginItem::ENGINE:
+ static_cast<EngineFactory *>(m_factory)->showSettings (parent);
+ break;
+ case PluginItem::EFFECT:
+ static_cast<EffectFactory *>(m_factory)->showSettings (parent);
+ break;
+ case PluginItem::VISUAL:
+ Visual::showSettings(static_cast<VisualFactory *>(m_factory), parent);
+ break;
+ case PluginItem::GENERAL:
+ GeneralHandler::instance()->showSettings(static_cast<GeneralFactory *>(m_factory), parent);
+ break;
+ default:
+ ;
+ }
+}
+
+void PluginItem::setEnabled(bool enabled)
+{
+ switch(type())
+ {
+ case PluginItem::TRANSPORT:
+ //dynamic_cast<InputSourceFactory *>(m_factory)
+ break;
+ case PluginItem::DECODER:
+ Decoder::setEnabled(static_cast<DecoderFactory *>(m_factory), enabled);
+ break;
+ case PluginItem::ENGINE:
+ AbstractEngine::setEnabled(static_cast<EngineFactory *>(m_factory), enabled);
+ break;
+ case PluginItem::EFFECT:
+ Effect::setEnabled(static_cast<EffectFactory *>(m_factory), enabled);
+ break;
+ case PluginItem::VISUAL:
+ Visual::setEnabled(static_cast<VisualFactory *>(m_factory), enabled);
+ break;
+ case PluginItem::GENERAL:
+ GeneralHandler::instance()->setEnabled(static_cast<GeneralFactory *>(m_factory), enabled);
+ break;
+ default:
+ ;
+ }
+}
diff --git a/src/plugins/Ui/skinned/pluginitem.h b/src/plugins/Ui/skinned/pluginitem.h
new file mode 100644
index 000000000..da1ba4909
--- /dev/null
+++ b/src/plugins/Ui/skinned/pluginitem.h
@@ -0,0 +1,73 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 PLUGINITEM_H
+#define PLUGINITEM_H
+
+#include <QTreeWidgetItem>
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+
+class QWidget;
+class InputSourceFactory;
+class DecoderFactory;
+class EngineFactory;
+class OutputFactory;
+class VisualFactory;
+class EffectFactory;
+class GeneralFactory;
+
+class PluginItem : public QTreeWidgetItem
+{
+public:
+
+ PluginItem(QTreeWidgetItem *parent, InputSourceFactory *factory, const QString &path);
+ PluginItem(QTreeWidgetItem *parent, DecoderFactory *factory, const QString &path);
+ PluginItem(QTreeWidgetItem *parent, EngineFactory *factory, const QString &path);
+ PluginItem(QTreeWidgetItem *parent, EffectFactory *factory, const QString &path);
+ PluginItem(QTreeWidgetItem *parent, VisualFactory *factory, const QString &path);
+ PluginItem(QTreeWidgetItem *parent, GeneralFactory *factory, const QString &path);
+ ~PluginItem();
+
+ enum PluginType
+ {
+ TRANSPORT = QTreeWidgetItem::UserType,
+ DECODER,
+ ENGINE,
+ EFFECT,
+ VISUAL,
+ GENERAL
+ };
+
+ bool hasAbout() const;
+ bool hasSettings() const;
+ void showAbout(QWidget *parent);
+ void showSettings(QWidget *parent);
+ void setEnabled(bool enabled);
+
+
+private:
+ bool m_has_about;
+ bool m_has_config;
+ void *m_factory;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/popupsettings.cpp b/src/plugins/Ui/skinned/popupsettings.cpp
new file mode 100644
index 000000000..837afbf3c
--- /dev/null
+++ b/src/plugins/Ui/skinned/popupsettings.cpp
@@ -0,0 +1,88 @@
+/***************************************************************************
+ * Copyright (C) 2009-2010 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 <QMenu>
+#include <qmmp/qmmp.h>
+#include "popupwidget.h"
+#include "popupsettings.h"
+
+PopupSettings::PopupSettings(QWidget *parent)
+ : QDialog(parent)
+{
+ ui.setupUi(this);
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("PlayList");
+ ui.transparencySlider->setValue(100 - settings.value("popup_opacity", 1.0).toDouble()*100);
+ ui.coverSizeSlider->setValue(settings.value ("popup_cover_size", 48).toInt());
+ ui.textEdit->setPlainText(settings.value ("popup_template", DEFAULT_TEMPLATE).toString());
+ ui.delaySpinBox->setValue(settings.value("popup_delay", 2500).toInt());
+ ui.coverCheckBox->setChecked(settings.value("popup_show_cover",true).toBool());
+ settings.endGroup();
+ createMenu();
+}
+
+
+PopupSettings::~PopupSettings()
+{}
+
+void PopupSettings::accept()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("PlayList");
+ settings.setValue("popup_opacity", 1.0 - (double)ui.transparencySlider->value()/100);
+ settings.setValue("popup_cover_size", ui.coverSizeSlider->value());
+ settings.setValue("popup_template", ui.textEdit->toPlainText());
+ settings.setValue("popup_delay", ui.delaySpinBox->value());
+ settings.setValue("popup_show_cover", ui.coverCheckBox->isChecked());
+ settings.endGroup();
+ QDialog::accept();
+}
+
+void PopupSettings::createMenu()
+{
+ QMenu *menu = new QMenu(this);
+ menu->addAction(tr("Artist"))->setData("%p");
+ menu->addAction(tr("Album"))->setData("%a");
+ menu->addAction(tr("Title"))->setData("%t");
+ menu->addAction(tr("Track number"))->setData("%n");
+ menu->addAction(tr("Two-digit track number"))->setData("%NN");
+ menu->addAction(tr("Genre"))->setData("%g");
+ menu->addAction(tr("Comment"))->setData("%c");
+ menu->addAction(tr("Composer"))->setData("%C");
+ menu->addAction(tr("Duration"))->setData("%l");
+ menu->addAction(tr("Disc number"))->setData("%D");
+ menu->addAction(tr("File name"))->setData("%f");
+ menu->addAction(tr("File path"))->setData("%F");
+ menu->addAction(tr("Year"))->setData("%y");
+ menu->addAction(tr("Condition"))->setData("%if(%p&%t,%p - %t,%f)");
+ ui.insertButton->setMenu(menu);
+ connect(menu, SIGNAL(triggered (QAction *)), SLOT(insertExpression(QAction *)));
+}
+
+void PopupSettings::insertExpression(QAction *a)
+{
+ ui.textEdit->insertPlainText(a->data().toString());
+}
+
+void PopupSettings::on_resetButton_clicked()
+{
+ ui.textEdit->setPlainText(DEFAULT_TEMPLATE);
+}
diff --git a/src/plugins/Ui/skinned/popupsettings.h b/src/plugins/Ui/skinned/popupsettings.h
new file mode 100644
index 000000000..ed7dde6c4
--- /dev/null
+++ b/src/plugins/Ui/skinned/popupsettings.h
@@ -0,0 +1,52 @@
+/***************************************************************************
+ * 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 SETTINGSDIALOG_H
+#define SETTINGSDIALOG_H
+
+#include <QDialog>
+#include "ui_popupsettings.h"
+
+class Action;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class PopupSettings : public QDialog
+{
+Q_OBJECT
+public:
+ PopupSettings(QWidget *parent = 0);
+ ~PopupSettings();
+
+
+public slots:
+ virtual void accept();
+
+private slots:
+ void insertExpression(QAction *);
+ void on_resetButton_clicked();
+
+private:
+ void createMenu();
+ Ui::PopupSettings ui;
+ QMap<uint, QPushButton*> m_buttons;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/popupwidget.cpp b/src/plugins/Ui/skinned/popupwidget.cpp
new file mode 100644
index 000000000..08768b5f9
--- /dev/null
+++ b/src/plugins/Ui/skinned/popupwidget.cpp
@@ -0,0 +1,136 @@
+/***************************************************************************
+ * Copyright (C) 2008-2010 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 <QVBoxLayout>
+#include <QLabel>
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QTimer>
+#include <QSettings>
+#include <QApplication>
+#include <qmmp/soundcore.h>
+#include <qmmp/metadatamanager.h>
+#include <qmmpui/metadataformatter.h>
+#include <qmmpui/playlistitem.h>
+
+#include "popupwidget.h"
+
+using namespace PlayListPopup;
+
+PopupWidget::PopupWidget(QWidget *parent)
+ : QWidget(parent)
+{
+ setWindowFlags(Qt::X11BypassWindowManagerHint | Qt::Dialog | Qt::FramelessWindowHint);
+ //setFrameStyle(QFrame::Box | QFrame::Plain);
+ setAttribute(Qt::WA_QuitOnClose, false);
+ m_item = 0;
+ QHBoxLayout *hlayout = new QHBoxLayout(this); //layout
+ m_pixlabel = new QLabel(this);
+ hlayout->addWidget(m_pixlabel);
+
+ m_label1 = new QLabel(this);
+ hlayout->addWidget (m_label1);
+
+ //settings
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("PlayList");
+ setWindowOpacity(settings.value("popup_opacity", 1.0).toDouble());
+ m_coverSize = settings.value("popup_cover_size", 48).toInt();
+ m_template = settings.value("popup_template",DEFAULT_TEMPLATE).toString();
+ int delay = settings.value("popup_delay", 2500).toInt();
+ bool show_cover = settings.value("popup_show_cover",true).toBool();
+ settings.endGroup();
+ //timer
+ m_timer = new QTimer(this);
+ m_timer->setInterval(delay);
+ m_timer->setSingleShot (true);
+ connect(m_timer, SIGNAL(timeout ()), SLOT(show()));
+ if(show_cover)
+ connect(m_timer, SIGNAL(timeout ()), SLOT(loadCover()));
+ else
+ m_pixlabel->hide();
+ setMouseTracking(true);
+}
+
+PopupWidget::~PopupWidget()
+{}
+
+void PopupWidget::mousePressEvent (QMouseEvent *)
+{
+ hide();
+}
+
+void PopupWidget::mouseMoveEvent (QMouseEvent *)
+{
+ hide();
+}
+
+void PopupWidget::prepare(PlayListItem *item, QPoint pos)
+{
+ pos += QPoint(15,10);
+
+ m_item = item;
+ hide();
+ if(!item)
+ {
+ m_timer->stop();
+ return;
+ }
+
+ QString title = m_template;
+ MetaDataFormatter f(title);
+ title = f.parse(item);
+ m_label1->setText(title);
+ qApp->processEvents();
+ updateGeometry ();
+ resize(sizeHint());
+ qApp->processEvents();
+ m_timer->start();
+ QRect rect = QApplication::desktop()->availableGeometry(this);
+ if(pos.x() + width() > rect.x() + rect.width())
+ pos.rx() -= width();
+ move(pos);
+}
+
+void PopupWidget::deactivate()
+{
+ m_timer->stop();
+ hide();
+}
+
+PlayListItem *PopupWidget::item()
+{
+ return m_item;
+}
+
+void PopupWidget::loadCover()
+{
+ if(!m_item)
+ return;
+ QPixmap pix = MetaDataManager::instance()->getCover(m_item->url());
+ if(pix.isNull())
+ pix = QPixmap(":/ui_no_cover.png");
+ m_pixlabel->setFixedSize(m_coverSize,m_coverSize);
+ m_pixlabel->setPixmap(pix.scaled(m_coverSize,m_coverSize));
+ qApp->processEvents();
+ updateGeometry ();
+ resize(sizeHint());
+ qApp->processEvents();
+}
diff --git a/src/plugins/Ui/skinned/popupwidget.h b/src/plugins/Ui/skinned/popupwidget.h
new file mode 100644
index 000000000..5e630313e
--- /dev/null
+++ b/src/plugins/Ui/skinned/popupwidget.h
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * Copyright (C) 2008-2010 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 POPUPWIDGET_H
+#define POPUPWIDGET_H
+
+#include <QWidget>
+
+#define DEFAULT_TEMPLATE "<b>%if(%t,%t,%f)</b>\n%if(%p,<br>%p,)\n%if(%a,<br>%a,)"
+
+class QTimer;
+class QLabel;
+class PlayListItem;
+
+namespace PlayListPopup {
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class PopupWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ PopupWidget(QWidget *parent = 0);
+
+ ~PopupWidget();
+
+ void prepare(PlayListItem *item, QPoint pos);
+ void deactivate();
+ PlayListItem *item();
+
+protected:
+ virtual void mousePressEvent (QMouseEvent *);
+ virtual void mouseMoveEvent (QMouseEvent *);
+
+private slots:
+ void loadCover();
+
+private:
+ QTimer *m_timer;
+ QLabel *m_label1;
+ QLabel *m_pixlabel;
+ QString m_template;
+ uint m_pos;
+ int m_coverSize;
+ PlayListItem *m_item;
+
+};
+}
+
+#endif
diff --git a/src/plugins/Ui/skinned/positionbar.cpp b/src/plugins/Ui/skinned/positionbar.cpp
new file mode 100644
index 000000000..7b27f68e9
--- /dev/null
+++ b/src/plugins/Ui/skinned/positionbar.cpp
@@ -0,0 +1,136 @@
+/***************************************************************************
+ * Copyright (C) 2009-2011 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 <QMouseEvent>
+#include <QPainter>
+#include <math.h>
+#include "skin.h"
+#include "button.h"
+#include "positionbar.h"
+
+PositionBar::PositionBar(QWidget *parent) : PixmapWidget(parent)
+{
+ m_skin = Skin::instance();
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ setPixmap(m_skin->getPosBar());
+ m_moving = false;
+ m_min = 0;
+ m_max = 0;
+ m_old = m_value = 0;
+ draw(false);
+ setCursor(m_skin->getCursor(Skin::CUR_POSBAR));
+}
+
+
+PositionBar::~PositionBar()
+{}
+
+void PositionBar::mousePressEvent(QMouseEvent *e)
+{
+ if(m_max <= 0)
+ return;
+ m_moving = true;
+ press_pos = e->x();
+ if (m_pos<e->x() && e->x()<m_pos+29*m_skin->ratio())
+ {
+ press_pos = e->x()-m_pos;
+ emit sliderPressed();
+ }
+ else
+ {
+ m_value = convert(qMax(qMin(width()-30*m_skin->ratio(),e->x()-15*m_skin->ratio()),0));
+ press_pos = 15*m_skin->ratio();
+ emit sliderPressed();
+ if (m_value!=m_old)
+ {
+ emit sliderMoved(m_value);
+
+ }
+ }
+ draw();
+}
+
+void PositionBar::mouseMoveEvent (QMouseEvent *e)
+{
+ if (m_moving)
+ {
+ qint64 po = e->x();
+ po = po - press_pos;
+
+ if (0<=po && po<=width()-30*m_skin->ratio())
+ {
+ m_value = convert(po);
+ draw();
+ emit sliderMoved(m_value);
+ }
+ }
+}
+
+void PositionBar::mouseReleaseEvent(QMouseEvent*)
+{
+ draw(false);
+ if (m_value != m_old && m_max > 0)
+ m_old = m_value;
+ m_moving = false;
+ if(m_max > 0)
+ emit sliderReleased();
+}
+
+void PositionBar::setValue(qint64 v)
+{
+ if (m_moving || m_max == 0)
+ return;
+ m_value = v;
+ draw(false);
+}
+
+void PositionBar::setMaximum(qint64 max)
+{
+ m_max = max;
+ draw(false);
+}
+
+void PositionBar::updateSkin()
+{
+ resize(m_skin->getPosBar().size());
+ draw(false);
+ setCursor(m_skin->getCursor(Skin::CUR_POSBAR));
+}
+
+void PositionBar::draw(bool pressed)
+{
+ qint64 p=qint64(ceil(double(m_value-m_min)*(width()-30*m_skin->ratio())/(m_max-m_min)));
+ m_pixmap = m_skin->getPosBar();
+ if (m_max > 0)
+ {
+ QPainter paint(&m_pixmap);
+ if (pressed)
+ paint.drawPixmap(p,0,m_skin->getButton(Skin::BT_POSBAR_P));
+ else
+ paint.drawPixmap(p,0,m_skin->getButton(Skin::BT_POSBAR_N));
+ }
+ setPixmap(m_pixmap);
+ m_pos = p;
+}
+
+qint64 PositionBar::convert(qint64 p)
+{
+ return qint64(ceil(double(m_max-m_min)*(p)/(width()-30*m_skin->ratio())+m_min));
+}
diff --git a/src/plugins/Ui/skinned/positionbar.h b/src/plugins/Ui/skinned/positionbar.h
new file mode 100644
index 000000000..8fb768664
--- /dev/null
+++ b/src/plugins/Ui/skinned/positionbar.h
@@ -0,0 +1,65 @@
+/***************************************************************************
+ * Copyright (C) 2009-2011 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 POSITIONBAR_H
+#define POSITIONBAR_H
+
+#include "pixmapwidget.h"
+
+class QMouseEvent;
+class Skin;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class PositionBar : public PixmapWidget
+{
+ Q_OBJECT
+public:
+ PositionBar(QWidget *parent = 0);
+ virtual ~PositionBar();
+
+public slots:
+ void setValue(qint64);
+ qint64 value()const{return m_value;}
+ void setMaximum(qint64);
+ qint64 maximum() const {return m_max;}
+
+signals:
+ void sliderMoved (qint64);
+ void sliderPressed();
+ void sliderReleased();
+
+private slots:
+ void updateSkin();
+
+private:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+ Skin *m_skin;
+ bool m_moving;
+ qint64 press_pos;
+ qint64 m_max, m_min, m_pos, m_value, m_old;
+ QPixmap m_pixmap;
+ qint64 convert(qint64); // value = convert(position);
+ void draw(bool pressed = true);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/preseteditor.cpp b/src/plugins/Ui/skinned/preseteditor.cpp
new file mode 100644
index 000000000..8e5249c0c
--- /dev/null
+++ b/src/plugins/Ui/skinned/preseteditor.cpp
@@ -0,0 +1,82 @@
+/***************************************************************************
+ * Copyright (C) 2006-2010 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 <QIcon>
+#include "eqpreset.h"
+#include "preseteditor.h"
+
+PresetEditor::PresetEditor(QWidget *parent)
+ : QDialog(parent)
+{
+ ui.setupUi(this);
+ setAttribute(Qt::WA_DeleteOnClose);
+ connect(ui.loadButton,SIGNAL(clicked()),SLOT(loadPreset()));
+ connect(ui.deleteButton,SIGNAL(clicked()),SLOT(deletePreset()));
+ ui.loadButton->setIcon(QIcon::fromTheme("document-open"));
+ ui.deleteButton->setIcon(QIcon::fromTheme("edit-delete"));
+}
+
+
+PresetEditor::~PresetEditor()
+{
+ while (ui.presetListWidget->count () !=0)
+ ui.presetListWidget->takeItem (0);
+
+ while (ui.autoPresetListWidget->count () !=0)
+ ui.autoPresetListWidget->takeItem (0);
+}
+
+void PresetEditor::addPresets(const QList<EQPreset*> &presets)
+{
+ foreach(QListWidgetItem *item, presets)
+ {
+ ui.presetListWidget->addItem(item);
+ }
+}
+
+void PresetEditor::addAutoPresets(const QList<EQPreset*> &presets)
+{
+ foreach(QListWidgetItem *item, presets)
+ {
+ ui.autoPresetListWidget->addItem(item);
+ }
+}
+
+void PresetEditor::loadPreset()
+{
+ EQPreset* preset = 0;
+ if (ui.tabWidget->currentIndex () == 0)
+ preset = (EQPreset *) ui.presetListWidget->currentItem ();
+ if (ui.tabWidget->currentIndex () == 1)
+ preset = (EQPreset *) ui.autoPresetListWidget->currentItem ();
+ if (preset)
+ emit presetLoaded(preset);
+}
+
+void PresetEditor::deletePreset()
+{
+ EQPreset* preset = 0;
+ if (ui.tabWidget->currentIndex () == 0)
+ preset = (EQPreset *) ui.presetListWidget->currentItem ();
+ if (ui.tabWidget->currentIndex () == 1)
+ preset = (EQPreset *) ui.autoPresetListWidget->currentItem ();
+ if (preset)
+ emit presetDeleted(preset);
+}
diff --git a/src/plugins/Ui/skinned/preseteditor.h b/src/plugins/Ui/skinned/preseteditor.h
new file mode 100644
index 000000000..35302b185
--- /dev/null
+++ b/src/plugins/Ui/skinned/preseteditor.h
@@ -0,0 +1,57 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 PRESETEDITOR_H
+#define PRESETEDITOR_H
+
+#include <QDialog>
+
+#include "ui_preseteditor.h"
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+
+class EQPreset;
+
+class PresetEditor : public QDialog
+{
+Q_OBJECT
+public:
+ PresetEditor(QWidget *parent = 0);
+
+ ~PresetEditor();
+
+ void addPresets(const QList<EQPreset*>&);
+ void addAutoPresets(const QList<EQPreset*>&);
+
+signals:
+ void presetLoaded(EQPreset*);
+ void presetDeleted(EQPreset*);
+
+private slots:
+ void loadPreset();
+ void deletePreset();
+
+private:
+ Ui::PresetEditor ui;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/qmmp.desktop b/src/plugins/Ui/skinned/qmmp.desktop
new file mode 100644
index 000000000..d1602a19b
--- /dev/null
+++ b/src/plugins/Ui/skinned/qmmp.desktop
@@ -0,0 +1,27 @@
+[Desktop Entry]
+X-Desktop-File-Install-Version=0.11
+Name=Qmmp
+Comment=Qt4-based Multimedia Player
+Comment[ru]=Медиа-проигрыватель на базе Qt4
+Comment[uk]=Медіа-програвач на базі Qt4
+Comment[cs]=Přehrávač hudby založený na Qt
+Comment[tr]=Qt4 tabanlı Çokluortam Oynatıcı
+Comment[de]=Qt4-basierter Audio-Player
+Comment[zh_CN]=基于Qt4的多媒体播放器
+Comment[zh_TW]=基于Qt4的多媒體播放器
+GenericName=Audio player
+GenericName[cs]=Přehrávač hudby
+GenericName[de]=Audio-Player
+GenericName[ru]=Аудио-проигрыватель
+GenericName[uk]=Медіа-програвач
+GenericName[tr]=Ses Oynatıcı
+GenericName[zh_CN]=音乐播放器
+GenericName[zh_TW]=音樂播放器
+Exec=qmmp %F
+Icon=qmmp
+Terminal=false
+Type=Application
+Categories=AudioVideo;Player;Audio;Qt;
+MimeType=application/x-ogg;audio/mp3;audio/mpeg;audio/x-flac;audio/x-mp3;audio/x-mpeg;audio/x-ms-wma;audio/x-musepack;application/ogg;audio/x-vorbis+ogg;audio/x-scpls;audio/x-mpegurl;audio/x-it;audio/x-mod;audio/x-ape;application/x-cue;audio/x-ffmpeg-shorten;inode/directory;
+X-KDE-StartupNotify=false
+
diff --git a/src/plugins/Ui/skinned/qmmp_enqueue.desktop b/src/plugins/Ui/skinned/qmmp_enqueue.desktop
new file mode 100644
index 000000000..b42e2b18b
--- /dev/null
+++ b/src/plugins/Ui/skinned/qmmp_enqueue.desktop
@@ -0,0 +1,24 @@
+[Desktop Entry]
+X-Desktop-File-Install-Version=0.11
+Name=Enqueue in Qmmp
+Name[cs]=Zařadit do fronty v Qmmp
+Name[de]=Zur Qmmp-Wiedergabeliste hinzufügen
+Name[ru]=Добавить в Qmmp
+Name[uk]=Додати до черги Qmmp
+Name[zh_CN]=加入 Qmmp 播放列表
+Name[zh_TW]=加入 Qmmp 播放清單
+Comment=Add file(s) to the Qmmp playlist
+Comment[cs]=Přidat soubor(y) do seznamu stop v Qmmp
+Comment[de]=Datei(en) zur Qmmp-Wiedergabeliste hinzufügen
+Comment[ru]=Добавить файл(ы) в список Qmmp
+Comment[uk]=Додати файл(и) до переліку програвання Qmmp
+Comment[zh_CN]=添加一个或多个文件到 Qmmp 播放列表
+Comment[zh_TW]=添加一個或多個檔案到 Qmmp 播放清單
+Exec=qmmp -e %F
+Icon=qmmp
+Categories=AudioVideo;Player;Audio;Qt;
+MimeType=application/x-ogg;audio/mp3;audio/mpeg;audio/x-flac;audio/x-mp3;audio/x-mpeg;audio/x-ms-wma;audio/x-musepack;application/ogg;audio/x-vorbis+ogg;audio/x-scpls;audio/x-mpegurl;audio/x-it;audio/x-mod;audio/x-ape;application/x-cue;audio/x-ffmpeg-shorten;inode/directory;
+Type=Application
+X-KDE-StartupNotify=false
+NoDisplay=true
+Terminal=false
diff --git a/src/plugins/Ui/skinned/shadedbar.cpp b/src/plugins/Ui/skinned/shadedbar.cpp
new file mode 100644
index 000000000..bdabbe516
--- /dev/null
+++ b/src/plugins/Ui/skinned/shadedbar.cpp
@@ -0,0 +1,143 @@
+/***************************************************************************
+ * Copyright (C) 2007-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 <QMouseEvent>
+#include <QPainter>
+#include <QPainter>
+#include <math.h>
+#include "skin.h"
+#include "shadedbar.h"
+
+ShadedBar::ShadedBar(QWidget *parent, uint slider1, uint slider2, uint slider3)
+ : QWidget(parent)
+{
+ m_slider1 = slider1;
+ m_slider2 = slider2;
+ m_slider3 = slider3;
+ m_skin = Skin::instance();
+ m_ratio = m_skin->ratio();
+ if(slider1 == Skin::EQ_VOLUME1)
+ resize(m_ratio*97,m_ratio*7);
+ else
+ resize(m_ratio*42,m_ratio*7);
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ m_moving = false;
+ m_min = 0;
+ m_max = 100;
+ m_old = m_value = 0;
+ draw();
+}
+
+
+ShadedBar::~ShadedBar()
+{
+}
+
+void ShadedBar::mousePressEvent(QMouseEvent *e)
+{
+ m_moving = true;
+ press_pos = e->x();
+ if(m_pos<e->x() && e->x()<m_pos+3)
+ {
+ press_pos = e->x()-m_pos;
+ }
+ else
+ {
+ m_value = convert(qMax(qMin(width()-3,e->x()-1),0));
+ press_pos = 1;
+ if (m_value!=m_old)
+ {
+ emit sliderMoved(m_value);
+ }
+ }
+ draw();
+}
+
+void ShadedBar::mouseMoveEvent (QMouseEvent *e)
+{
+ if(m_moving)
+ {
+ int po = e->x();
+ po = po - press_pos;
+
+ if(0<=po && po<=width()-3)
+ {
+ m_value = convert(po);
+ draw();
+ emit sliderMoved(m_value);
+ }
+ }
+}
+
+void ShadedBar::mouseReleaseEvent(QMouseEvent*)
+{
+ m_moving = false;
+ draw();
+ m_old = m_value;
+}
+
+void ShadedBar::setValue(int v)
+{
+ if (m_moving || m_max == 0)
+ return;
+ m_value = v;
+ draw();
+}
+
+void ShadedBar::setRange(int min, int max)
+{
+ m_max = max;
+ m_min = min;
+ draw();
+}
+
+void ShadedBar::updateSkin()
+{
+ m_ratio = m_skin->ratio();
+ if(m_slider1 == Skin::EQ_VOLUME1)
+ resize(m_ratio*97,m_ratio*7);
+ else
+ resize(m_ratio*42,m_ratio*7);
+ draw();
+}
+
+void ShadedBar::draw()
+{
+ if (m_value <= m_min + (m_max - m_min)/3)
+ m_pixmap = m_skin->getEqPart(m_slider1);
+ else if(m_min + (m_max - m_min)/3 < m_value && m_value <= m_min + 2*(m_max - m_min)/3)
+ m_pixmap = m_skin->getEqPart(m_slider2);
+ else
+ m_pixmap = m_skin->getEqPart(m_slider3);
+ m_pos = int(ceil(double(m_value-m_min)*(width()-3*m_ratio)/(m_max-m_min)));
+ update();
+}
+
+int ShadedBar::convert(int p)
+{
+ return int(ceil(double(m_max-m_min)*(p)/(width()-3)+m_min));
+}
+
+void ShadedBar::paintEvent(QPaintEvent*)
+{
+ QPainter paint(this);
+ paint.drawPixmap(m_pos,0,m_pixmap);
+}
+
diff --git a/src/plugins/Ui/skinned/shadedbar.h b/src/plugins/Ui/skinned/shadedbar.h
new file mode 100644
index 000000000..09272e9e1
--- /dev/null
+++ b/src/plugins/Ui/skinned/shadedbar.h
@@ -0,0 +1,76 @@
+/***************************************************************************
+ * Copyright (C) 2007-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 SHADEDBAR_H
+#define SHADEDBAR_H
+
+#include <QWidget>
+
+class QMouseEvent;
+class QPaintEvent;
+class Skin;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class ShadedBar : public QWidget
+{
+ Q_OBJECT
+public:
+ ShadedBar(QWidget *parent = 0, uint slider1 = 0, uint slider2 = 0, uint slider3 = 0);
+
+ ~ShadedBar();
+ int value()
+ {
+ return m_value;
+ }
+ int isPressed()
+ {
+ return m_moving;
+ }
+ void setRange(int min, int max);
+
+public slots:
+ void setValue(int);
+
+signals:
+ void sliderMoved (int);
+
+private slots:
+ void updateSkin();
+
+private:
+ Skin *m_skin;
+ bool m_moving;
+ int press_pos;
+ int m_max, m_min, m_pos, m_value, m_old, m_x;
+ QPixmap m_pixmap;
+ int convert(int); // value = convert(position);
+ void draw();
+ uint m_slider1, m_slider2, m_slider3;
+ int m_ratio;
+
+protected:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+ void paintEvent(QPaintEvent*);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/shadedvisual.cpp b/src/plugins/Ui/skinned/shadedvisual.cpp
new file mode 100644
index 000000000..e249752ca
--- /dev/null
+++ b/src/plugins/Ui/skinned/shadedvisual.cpp
@@ -0,0 +1,181 @@
+/***************************************************************************
+ * Copyright (C) 2007-2010 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 <QTimer>
+#include <math.h>
+#include "skin.h"
+#include "mainvisual.h"
+#include "inlines.h"
+#include "shadedvisual.h"
+
+#define VISUAL_NODE_SIZE 512 //samples
+#define VISUAL_BUFFER_SIZE (5*VISUAL_NODE_SIZE)
+
+ShadedVisual::ShadedVisual(QWidget *parent) : Visual(parent)
+{
+ m_skin = Skin::instance();
+ m_ratio = m_skin->ratio();
+ resize(m_ratio*38,m_ratio*5);
+ m_pixmap = QPixmap (m_ratio*38,m_ratio*5);
+ m_timer = new QTimer(this);
+ connect(m_timer, SIGNAL (timeout()), this, SLOT (timeout()));
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ m_left_buffer = new short[VISUAL_BUFFER_SIZE];
+ m_right_buffer = new short[VISUAL_BUFFER_SIZE];
+ m_buffer_at = 0;
+ m_timer->setInterval(50);
+ m_timer->start();
+ clear();
+}
+
+ShadedVisual::~ShadedVisual()
+{
+ delete [] m_left_buffer;
+ delete [] m_right_buffer;
+}
+
+void ShadedVisual::add(unsigned char *data, qint64 size, int chan)
+{
+ if (!m_timer->isActive ())
+ return;
+
+ if(VISUAL_BUFFER_SIZE == m_buffer_at)
+ {
+ m_buffer_at -= VISUAL_NODE_SIZE;
+ memmove(m_left_buffer, m_left_buffer + VISUAL_NODE_SIZE, m_buffer_at << 1);
+ memmove(m_right_buffer, m_right_buffer + VISUAL_NODE_SIZE, m_buffer_at << 1);
+ return;
+ }
+
+ int frames = qMin((int)size/chan >> 1, VISUAL_BUFFER_SIZE - m_buffer_at);
+
+ if (chan >= 2)
+ {
+ stereo16_from_multichannel(m_left_buffer + m_buffer_at,
+ m_right_buffer + m_buffer_at,(short *) data, frames, chan);
+ }
+ else
+ {
+ memcpy(m_left_buffer + m_buffer_at, (short *) data, frames << 1);
+ memcpy(m_right_buffer + m_buffer_at, (short *) data, frames << 1);
+ }
+
+ m_buffer_at += frames;
+}
+
+void ShadedVisual::clear()
+{
+ m_buffer_at = 0;
+ m_l = 0;
+ m_r = 0;
+ m_pixmap.fill(m_skin->getVisColor(0));
+ update();
+}
+
+void ShadedVisual::timeout()
+{
+ m_pixmap.fill(m_skin->getVisColor(0));
+
+ mutex()->lock ();
+ if(m_buffer_at < VISUAL_NODE_SIZE)
+ {
+ mutex()->unlock ();
+ return;
+ }
+
+ process (m_left_buffer, m_right_buffer);
+ m_buffer_at -= VISUAL_NODE_SIZE;
+ memmove(m_left_buffer, m_left_buffer + VISUAL_NODE_SIZE, m_buffer_at << 1);
+ memmove(m_right_buffer, m_right_buffer + VISUAL_NODE_SIZE, m_buffer_at << 1);
+ QPainter p(&m_pixmap);
+ draw (&p);
+ mutex()->unlock ();
+ update();
+}
+
+void ShadedVisual::process (short *left, short *right)
+{
+ int step = (VISUAL_NODE_SIZE << 8)/74;
+ int pos = 0;
+ int l = 0;
+ int r = 0;
+ int j_l = 0, j_r = 0;
+
+ for (int i = 0; i < 75; ++i)
+ {
+ pos += step;
+
+ if (left)
+ {
+ j_l = abs((left[pos >> 8] >> 12));
+
+ if (j_l > 15)
+ j_l = 15;
+ l = qMax(l, j_l);
+ }
+ if (right)
+ {
+ j_r = abs((right[pos >> 8] >> 12));
+ if (j_r > 15)
+ j_r = 15;
+ r = qMax(r, j_r);
+ }
+ }
+ m_l -= 0.5;
+ m_l = m_l > l ? m_l : l;
+ m_r -= 0.5;
+ m_r = m_r > r ? m_r : r;
+}
+
+void ShadedVisual::draw (QPainter *p)
+{
+ for (int i = 0; i < m_l; ++i)
+ {
+ p->fillRect (i*3*m_ratio, 0, 3*m_ratio, 2*m_ratio, QBrush(m_skin->getVisColor (17-i)));
+ }
+ for (int i = 0; i < m_r; ++i)
+ {
+ p->fillRect (i*3*m_ratio, 3*m_ratio, 3*m_ratio, 2*m_ratio, QBrush(m_skin->getVisColor (17-i)));
+ }
+}
+
+void ShadedVisual::paintEvent (QPaintEvent *)
+{
+ QPainter painter (this);
+ painter.drawPixmap (0,0,m_pixmap);
+}
+
+void ShadedVisual::hideEvent (QHideEvent *)
+{
+ m_timer->stop();
+}
+
+void ShadedVisual::showEvent (QShowEvent *)
+{
+ m_timer->start();
+}
+
+void ShadedVisual::updateSkin()
+{
+ m_ratio = m_skin->ratio();
+ resize(m_ratio*38,m_ratio*5);
+ m_pixmap = QPixmap (m_ratio*38,m_ratio*5);
+ clear();
+}
diff --git a/src/plugins/Ui/skinned/shadedvisual.h b/src/plugins/Ui/skinned/shadedvisual.h
new file mode 100644
index 000000000..0592ec78f
--- /dev/null
+++ b/src/plugins/Ui/skinned/shadedvisual.h
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * Copyright (C) 2007-2010 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 SHADEDVISUAL_H
+#define SHADEDVISUAL_H
+
+#include <QPainter>
+#include <qmmp/visual.h>
+#include <qmmp/buffer.h>
+
+class QTimer;
+class QPixmap;
+class Skin;
+//class VisualNode;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class ShadedVisual : public Visual
+{
+ Q_OBJECT
+public:
+ ShadedVisual(QWidget *parent = 0);
+
+ ~ShadedVisual();
+
+ void add(unsigned char *data, qint64 size, int chan);
+ void clear();
+
+ void paintEvent (QPaintEvent *);
+ void hideEvent (QHideEvent *);
+ void showEvent (QShowEvent *);
+
+public slots:
+ void timeout();
+
+private slots:
+ void updateSkin();
+
+private:
+ void process (short *l, short *r);
+ void draw (QPainter *);
+ Skin *m_skin;
+ QTimer *m_timer;
+ QPixmap m_pixmap;
+ short *m_left_buffer;
+ short *m_right_buffer;
+ int m_buffer_at;
+ double m_l, m_r;
+ int m_ratio;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/shortcutdialog.cpp b/src/plugins/Ui/skinned/shortcutdialog.cpp
new file mode 100644
index 000000000..421c08169
--- /dev/null
+++ b/src/plugins/Ui/skinned/shortcutdialog.cpp
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 <QKeyEvent>
+#include "shortcutdialog.h"
+
+ShortcutDialog::ShortcutDialog(const QString &key, QWidget *parent)
+ : QDialog(parent)
+{
+ ui.setupUi(this);
+ ui.keyLineEdit->setText(key);
+}
+
+ShortcutDialog::~ShortcutDialog()
+{
+}
+
+void ShortcutDialog::keyPressEvent (QKeyEvent *event)
+{
+ int key = event->key();
+ switch (key)
+ {
+ case Qt::Key_Shift:
+ case Qt::Key_Control:
+ case Qt::Key_Meta:
+ case Qt::Key_Alt:
+ case Qt::Key_AltGr:
+ case Qt::Key_Super_L:
+ case Qt::Key_Super_R:
+ case Qt::Key_Menu:
+ case 0:
+ case Qt::Key_unknown:
+ key = 0;
+ ui.keyLineEdit->clear();
+ QWidget::keyPressEvent(event);
+ return;
+ }
+ QKeySequence seq(event->modifiers() + event->key());
+ ui.keyLineEdit->setText(seq.toString());
+ QWidget::keyPressEvent(event);
+}
+
+const QString ShortcutDialog::key()
+{
+ return ui.keyLineEdit->text();
+}
diff --git a/src/plugins/Ui/skinned/shortcutdialog.h b/src/plugins/Ui/skinned/shortcutdialog.h
new file mode 100644
index 000000000..62aedd5a5
--- /dev/null
+++ b/src/plugins/Ui/skinned/shortcutdialog.h
@@ -0,0 +1,49 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 SHORTCUTDIALOG_H
+#define SHORTCUTDIALOG_H
+
+#include <QDialog>
+#include "ui_shortcutdialog.h"
+
+class QKeyEvent;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class ShortcutDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ ShortcutDialog(const QString &key, QWidget *parent = 0);
+
+ ~ShortcutDialog();
+
+ const QString key();
+
+protected:
+ virtual void keyPressEvent (QKeyEvent *event);
+
+private:
+ Ui::ShortcutDialog ui;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/shortcutitem.cpp b/src/plugins/Ui/skinned/shortcutitem.cpp
new file mode 100644
index 000000000..eb8baf164
--- /dev/null
+++ b/src/plugins/Ui/skinned/shortcutitem.cpp
@@ -0,0 +1,39 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 "actionmanager.h"
+#include "shortcutitem.h"
+
+ShortcutItem::ShortcutItem(QTreeWidgetItem *parent, int type) : QTreeWidgetItem(parent, QStringList()
+ << ActionManager::instance()->action(type)->text().remove("&")
+ << ActionManager::instance()->action(type)->shortcut())
+{
+ m_action = ActionManager::instance()->action(type);
+ setIcon(0, m_action->icon());
+}
+
+ShortcutItem::~ShortcutItem()
+{}
+
+QAction *ShortcutItem::action()
+{
+ return m_action;
+}
diff --git a/src/plugins/Ui/skinned/shortcutitem.h b/src/plugins/Ui/skinned/shortcutitem.h
new file mode 100644
index 000000000..a8cbd9f7c
--- /dev/null
+++ b/src/plugins/Ui/skinned/shortcutitem.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * Copyright (C) 2010 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 SHORTCUTITEM_H
+#define SHORTCUTITEM_H
+
+#include <QTreeWidgetItem>
+
+class QWidget;
+class QAction;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+
+class ShortcutItem : public QTreeWidgetItem
+{
+public:
+
+ ShortcutItem(QTreeWidgetItem *parent, int type);
+ ~ShortcutItem();
+ QAction *action();
+
+private:
+ QAction *m_action;
+
+};
+
+#endif //SHORTCUTITEM_H
diff --git a/src/plugins/Ui/skinned/skin.cpp b/src/plugins/Ui/skinned/skin.cpp
new file mode 100644
index 000000000..c17471d2f
--- /dev/null
+++ b/src/plugins/Ui/skinned/skin.cpp
@@ -0,0 +1,852 @@
+/***************************************************************************
+ * Copyright (C) 2007-2009 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * Based on Promoe, an XMMS2 Client *
+ * Copyright (C) 2005-2006 by XMMS2 Team *
+ * *
+ * 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 <QCoreApplication>
+#include <QDir>
+#include <QSettings>
+#include <QPainter>
+#include <QPolygon>
+#include <QImage>
+#include <QBuffer>
+#include <QAction>
+#include <qmmp/qmmp.h>
+#include "actionmanager.h"
+#include "skin.h"
+#include "cursorimage.h"
+
+Skin *Skin::m_instance = 0;
+
+Skin *Skin::instance()
+{
+ if (!m_instance)
+ m_instance = new Skin();
+ return m_instance;
+}
+
+QPixmap Skin::getPixmap (const QString& name, QDir dir)
+{
+ dir.setFilter (QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QFileInfoList f = dir.entryInfoList();
+ for (int j = 0; j < f.size(); ++j)
+ {
+ QFileInfo fileInfo = f.at (j);
+ QString fn = fileInfo.fileName().toLower();
+ if (fn.section (".",0,0) == name)
+ {
+ return QPixmap (fileInfo.filePath());
+ }
+ }
+ return QPixmap();
+}
+
+Skin::Skin (QObject *parent) : QObject (parent)
+{
+ m_instance = this;
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ QString path = settings.value("General/skin_path").toString();
+ if (path.isEmpty() || !QDir(path).exists ())
+ path = ":/default";
+ m_double_size = settings.value("General/double_size", false).toBool();
+ ACTION(ActionManager::WM_DOUBLE_SIZE)->setChecked(m_double_size);
+ setSkin (QDir::cleanPath(path));
+ /* skin directory */
+ QDir skinDir(QDir::homePath()+"/.qmmp");
+ skinDir.mkdir ("skins");
+}
+
+Skin::~Skin()
+{}
+
+void Skin::setSkin (const QString& path)
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ m_use_cursors = settings.value("General/skin_cursors", false).toBool();
+ m_double_size = ACTION(ActionManager::WM_DOUBLE_SIZE)->isChecked();
+ settings.setValue("General/skin_path",path);
+ qDebug ("Skin: using %s",qPrintable(path));
+ m_skin_dir = QDir (path);
+ //clear old values
+ m_pledit_txt.clear();
+ buttons.clear();
+ titlebar.clear();
+ m_numbers.clear();
+ m_pl_parts.clear();
+ m_eq_parts.clear();
+ m_eq_bar.clear();
+ m_eq_spline.clear();
+ m_vis_colors.clear();
+ cursors.clear();
+ //load skin parts
+ loadPLEdit();
+ loadMain();
+ loadButtons();
+ loadShufRep();
+ loadTitleBar();
+ loadPosBar();
+ loadNumbers();
+ loadPlayList();
+ loadEq_ex();
+ loadEqMain();
+ loadVisColor();
+ loadLetters();
+ loadMonoSter();
+ loadVolume();
+ loadBalance();
+ loadRegion();
+ loadCursors();
+ if(m_double_size)
+ {
+ uint key;
+ foreach(key, buttons.keys())
+ buttons[key] = scalePixmap(buttons[key]);
+ foreach(key, titlebar.keys())
+ titlebar[key] = scalePixmap(titlebar[key]);
+ foreach(key, m_pl_parts.keys())
+ m_pl_parts[key] = scalePixmap(m_pl_parts[key]);
+ foreach(key, m_eq_parts.keys())
+ m_eq_parts[key] = scalePixmap(m_eq_parts[key]);
+ foreach(key, m_ms_parts.keys())
+ m_ms_parts[key] = scalePixmap(m_ms_parts[key]);
+ foreach(key, m_parts.keys())
+ m_parts[key] = scalePixmap(m_parts[key]);
+ foreach(QChar c, m_letters.keys())
+ m_letters[c] = scalePixmap(m_letters[c]);
+ m_main = scalePixmap(m_main);
+ posbar = scalePixmap(posbar);
+ int i;
+ for(i = 0; i < m_numbers.size(); ++i)
+ m_numbers[i] = scalePixmap(m_numbers[i]);
+
+ for(i = 0; i < m_eq_bar.size(); ++i)
+ m_eq_bar[i] = scalePixmap(m_eq_bar[i]);
+
+ for(i = 0; i < m_eq_spline.size(); ++i)
+ m_eq_spline[i] = scalePixmap(m_eq_spline[i]);
+
+ for(i = 0; i < m_volume.size(); ++i)
+ m_volume[i] = scalePixmap(m_volume[i]);
+ for(i = 0; i < m_balance.size(); ++i)
+ m_balance[i] = scalePixmap(m_balance[i]);
+ }
+ emit skinChanged();
+}
+
+void Skin::reloadSkin()
+{
+ setSkin (m_skin_dir.absolutePath ());
+}
+
+void Skin::loadMain()
+{
+ QPixmap *pixmap = getPixmap ("main");
+ if (!pixmap)
+ pixmap = getDummyPixmap("main");
+
+ m_main = pixmap->copy (0,0,275,116);
+ delete pixmap;
+}
+
+void Skin::loadCursors()
+{
+ if(!m_use_cursors)
+ {
+ for(int i = CUR_NORMAL; i <= CUR_WSWINBUT; ++i)
+ cursors[i] = QCursor(Qt::ArrowCursor);
+ cursors[CUR_PSIZE] = QCursor(Qt::SizeFDiagCursor);
+ return;
+ }
+ cursors[CUR_NORMAL] = createCursor(getPath("normal"));
+ cursors[CUR_CLOSE] = createCursor(getPath("close"));
+ cursors[CUR_MAINMENU] = createCursor(getPath("mainmenu"));
+ cursors[CUR_MIN] = createCursor(getPath("min"));
+ cursors[CUR_POSBAR] = createCursor(getPath("posbar.cur"));
+ cursors[CUR_SONGNAME] = createCursor(getPath("songname"));
+ cursors[CUR_TITLEBAR] = createCursor(getPath("titlebar.cur"));
+ cursors[CUR_VOLBAL] = createCursor(getPath("volbal"));
+ cursors[CUR_WINBUT] = createCursor(getPath("winbut"));
+
+ cursors[CUR_WSNORMAL] = createCursor(getPath("wsnormal"));
+ cursors[CUR_WSPOSBAR] = createCursor(getPath("wsposbar"));
+
+ cursors[CUR_EQCLOSE] = createCursor(getPath("eqclose"));
+ cursors[CUR_EQNORMAL] = createCursor(getPath("eqnormal"));
+ cursors[CUR_EQSLID] = createCursor(getPath("eqslid"));
+ cursors[CUR_EQTITLE] = createCursor(getPath("eqtitle"));
+
+ cursors[CUR_PCLOSE] = createCursor(getPath("pclose"));
+ cursors[CUR_PNORMAL] = createCursor(getPath("pnormal"));
+ cursors[CUR_PSIZE] = createCursor(getPath("psize"));
+ if(cursors[CUR_PSIZE].shape() == Qt::ArrowCursor)
+ cursors[CUR_PSIZE] = QCursor(Qt::SizeFDiagCursor);
+ cursors[CUR_PTBAR] = createCursor(getPath("ptbar"));
+ cursors[CUR_PVSCROLL] = createCursor(getPath("pvscroll"));
+ cursors[CUR_PWINBUT] = createCursor(getPath("pwinbut"));
+
+ cursors[CUR_PWSNORM] = createCursor(getPath("pwsnorm"));
+ cursors[CUR_PWSSIZE] = createCursor(getPath("pwssize"));
+
+ cursors[CUR_VOLBAR] = createCursor(getPath("volbar"));
+ cursors[CUR_WSCLOSE] = createCursor(getPath("wsclose"));
+ cursors[CUR_WSMIN] = createCursor(getPath("wsmin"));
+ cursors[CUR_WSWINBUT] = createCursor(getPath("wswinbut"));
+}
+
+void Skin::loadButtons()
+{
+
+ QPixmap *pixmap = getPixmap ("cbuttons");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("cbuttons");
+
+ buttons[BT_PREVIOUS_N] = pixmap->copy (0, 0,23,18);
+ buttons[BT_PREVIOUS_P] = pixmap->copy (0,18,23,18);
+
+ buttons[BT_PLAY_N] = pixmap->copy (23, 0,23,18);
+ buttons[BT_PLAY_P] = pixmap->copy (23,18,23,18);
+
+ buttons[BT_PAUSE_N] = pixmap->copy (46, 0,23,18);
+ buttons[BT_PAUSE_P] = pixmap->copy (46,18,23,18);
+
+ buttons[BT_STOP_N] = pixmap->copy (69, 0,23,18);
+ buttons[BT_STOP_P] = pixmap->copy (69,18,23,18);
+
+ buttons[BT_NEXT_N] = pixmap->copy (92, 0,22,18);
+ buttons[BT_NEXT_P] = pixmap->copy (92,18,22,18);
+
+ buttons[BT_EJECT_N] = pixmap->copy (114, 0,22,16);
+ buttons[BT_EJECT_P] = pixmap->copy (114,16,22,16);
+ delete pixmap;
+}
+
+void Skin::loadTitleBar()
+{
+ QPixmap *pixmap = getPixmap ("titlebar");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("titlebar");
+
+ buttons[BT_MENU_N] = pixmap->copy (0,0,9,9);
+ buttons[BT_MENU_P] = pixmap->copy (0,9,9,9);
+ buttons[BT_MINIMIZE_N] = pixmap->copy (9,0,9,9);
+ buttons[BT_MINIMIZE_P] = pixmap->copy (9,9,9,9);
+ buttons[BT_CLOSE_N] = pixmap->copy (18,0,9,9);
+ buttons[BT_CLOSE_P] = pixmap->copy (18,9,9,9);
+ buttons[BT_SHADE1_N] = pixmap->copy (0,18,9,9);
+ buttons[BT_SHADE1_P] = pixmap->copy (9,18,9,9);
+ buttons[BT_SHADE2_N] = pixmap->copy (0,27,9,9);
+ buttons[BT_SHADE2_P] = pixmap->copy (9,27,9,9);
+ titlebar[TITLEBAR_A] = pixmap->copy (27, 0,275,14);
+ titlebar[TITLEBAR_I] = pixmap->copy (27,15,275,14);
+ titlebar[TITLEBAR_SHADED_A] = pixmap->copy (27,29,275,14);
+ titlebar[TITLEBAR_SHADED_I] = pixmap->copy (27,42,275,14);
+ delete pixmap;
+}
+
+void Skin::loadPosBar()
+{
+ QPixmap *pixmap = getPixmap ("posbar");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("posbar");
+
+ if (pixmap->width() > 249)
+ {
+ buttons[BT_POSBAR_N] = pixmap->copy (248,0,29, pixmap->height());
+ buttons[BT_POSBAR_P] = pixmap->copy (278,0,29, pixmap->height());
+ }
+ else
+ {
+ QPixmap dummy(29, pixmap->height());
+ dummy.fill(Qt::transparent);
+ buttons[BT_POSBAR_N] = dummy;
+ buttons[BT_POSBAR_P] = dummy;
+ }
+ posbar = pixmap->copy (0,0,248,pixmap->height());
+ delete pixmap;
+}
+
+void Skin::loadNumbers()
+{
+ QPixmap *pixmap = getPixmap ("nums_ex");
+ if (!pixmap)
+ pixmap = getPixmap ("numbers");
+ if (!pixmap)
+ pixmap = getDummyPixmap("numbers");
+
+ for (uint i = 0; i < 10; i++)
+ m_numbers << pixmap->copy (i*9, 0, 9, pixmap->height());
+
+ if (pixmap->width() > 107)
+ m_numbers << pixmap->copy(99, 0, 9, pixmap->height());
+ else
+ {
+ // We didn't find "-" symbol. So we have to extract it from "2".
+ // Winamp uses this method too.
+ QPixmap pix;
+ if(pixmap->width() > 98)
+ pix = pixmap->copy(90,0,9,pixmap->height());
+ else
+ {
+ pix = QPixmap(9, pixmap->height());
+ pix.fill(Qt::transparent);
+ }
+ QPixmap minus = pixmap->copy(18,pixmap->height()/2,9,1);
+ QPainter paint(&pix);
+ paint.drawPixmap(0,pixmap->height()/2, minus);
+ m_numbers << pix;
+ }
+ delete pixmap;
+}
+
+void Skin::loadPlayList()
+{
+ QPixmap *pixmap = getPixmap ("pledit");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("pledit");
+
+ m_pl_parts[PL_CORNER_UL_A] = pixmap->copy (0,0,25,20);
+ m_pl_parts[PL_CORNER_UL_I] = pixmap->copy (0,21,25,20);
+
+ m_pl_parts[PL_CORNER_UR_A] = pixmap->copy (153,0,25,20);
+ m_pl_parts[PL_CORNER_UR_I] = pixmap->copy (153,21,25,20);
+
+ m_pl_parts[PL_TITLEBAR_A] = pixmap->copy (26,0,100,20);
+ m_pl_parts[PL_TITLEBAR_I] = pixmap->copy (26,21,100,20);
+
+ m_pl_parts[PL_TFILL1_A] = pixmap->copy (127,0,25,20);
+ m_pl_parts[PL_TFILL1_I] = pixmap->copy (127,21,25,20);
+
+ //m_pl_parts[PL_TFILL2_A] = pixmap->copy();//FIXME: �����
+ //m_pl_parts[PL_TFILL2_I] = pixmap->copy();
+
+ m_pl_parts[PL_LFILL] = pixmap->copy (0,42,12,29);
+ m_pl_parts[PL_RFILL] = pixmap->copy (31,42,20,29); //???
+
+ m_pl_parts[PL_LSBAR] = pixmap->copy (0,72,125,38);
+ m_pl_parts[PL_RSBAR] = pixmap->copy (126,72,150,38);
+ m_pl_parts[PL_SFILL1] = pixmap->copy (179,0,25,38);
+ m_pl_parts[PL_SFILL2] = pixmap->copy (250,21,75,38);
+ m_pl_parts[PL_TITLEBAR_SHADED1_A] = pixmap->copy (99,42,50,14);
+ m_pl_parts[PL_TITLEBAR_SHADED1_I] = pixmap->copy (99,57,50,14);
+ m_pl_parts[PL_TITLEBAR_SHADED2] = pixmap->copy (72,42,25,14);
+ m_pl_parts[PL_TFILL_SHADED] = pixmap->copy (72,57,25,14);
+
+ m_pl_parts[PL_CONTROL] = pixmap->copy(129,94,60,8);
+
+ buttons[PL_BT_ADD] = pixmap->copy (11,80,25,18);
+ buttons[PL_BT_SUB] = pixmap->copy (40,80,25,18);
+ buttons[PL_BT_SEL] = pixmap->copy (70,80,25,18);
+ buttons[PL_BT_SORT] = pixmap->copy (99,80,25,18);
+ buttons[PL_BT_LST] = pixmap->copy(229, 80, 25, 18);
+ buttons[PL_BT_SCROLL_N] = pixmap->copy (52,53,8,18);
+ buttons[PL_BT_SCROLL_P] = pixmap->copy (61,53,8,18);
+
+ buttons[PL_BT_CLOSE_N] = pixmap->copy (167,3,9,9);
+ buttons[PL_BT_CLOSE_P] = pixmap->copy (52,42,9,9);
+ buttons[PL_BT_SHADE1_N] = pixmap->copy (158,3,9,9);
+ buttons[PL_BT_SHADE1_P] = pixmap->copy (62,42,9,9);
+ buttons[PL_BT_SHADE2_N] = pixmap->copy (129,45,9,9);
+ buttons[PL_BT_SHADE2_P] = pixmap->copy (150,42,9,9);
+
+}
+
+QPixmap *Skin::getPixmap (const QString& name)
+{
+ m_skin_dir.setFilter (QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QFileInfoList f = m_skin_dir.entryInfoList();
+ for (int j = 0; j < f.size(); ++j)
+ {
+ QFileInfo fileInfo = f.at (j);
+ QString fn = fileInfo.fileName().toLower();
+ if (fn.section (".",0,0) == name)
+ {
+ return new QPixmap (fileInfo.filePath());
+ }
+ }
+ return 0;
+}
+
+QString Skin::getPath (const QString& name)
+{
+ m_skin_dir.setFilter (QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QFileInfoList f = m_skin_dir.entryInfoList();
+ bool nameHasExt = name.contains('.');
+ for (int j = 0; j < f.size(); ++j)
+ {
+ QFileInfo fileInfo = f.at (j);
+ QString fn = fileInfo.fileName().toLower();
+ if (!nameHasExt && fn.section (".",0,0) == name)
+ {
+ return fileInfo.filePath();
+ } else if (nameHasExt && fn == name)
+ {
+ return fileInfo.filePath();
+ }
+ }
+ return QString();
+}
+
+
+void Skin::loadPLEdit()
+{
+ QString path = findFile("pledit.txt", m_skin_dir);
+ if (path.isEmpty())
+ path = findFile("pledit.txt", ":/default");
+ if (path.isEmpty())
+ qFatal("Skin: invalid default skin");
+
+ QFile file(path);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ qFatal("Skin: unable to open %s", qPrintable(path));
+
+ while (!file.atEnd ())
+ {
+ QByteArray line = file.readLine ();
+ QList<QByteArray> l = line.split ('=');
+ if (l.count () == 2)
+ {
+ m_pledit_txt[l[0].toLower () ] = l[1].trimmed();
+ }
+ else if (line.length() == 0)
+ {
+ break;
+ }
+ }
+ if (!m_pledit_txt.keys().contains("mbbg"))
+ m_pledit_txt["mbbg"] = m_pledit_txt["normalbg"];
+ if (!m_pledit_txt.keys().contains("mbfg"))
+ m_pledit_txt["mbfg"] = m_pledit_txt["normal"];
+}
+
+void Skin::loadEqMain()
+{
+ QPixmap *pixmap = getPixmap ("eqmain");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("eqmain");
+
+ m_eq_parts[ EQ_MAIN ] = pixmap->copy (0,0,275,116);
+ m_eq_parts[ EQ_TITLEBAR_A ] = pixmap->copy (0,134,275,14);
+ m_eq_parts[ EQ_TITLEBAR_I ] = pixmap->copy (0,149,275,14);
+
+ if (pixmap->height() > 295)
+ m_eq_parts[ EQ_GRAPH ] = pixmap->copy (0,294,113,19);
+ else
+ m_eq_parts[ EQ_GRAPH ] = QPixmap();
+
+ for (int i = 0; i < 14; ++i)
+ {
+ m_eq_bar << pixmap->copy (13 + i*15,164,14,63);
+ }
+ for (int i = 0; i < 14; ++i)
+ {
+ m_eq_bar << pixmap->copy (13 + i*15,229,14,63);
+ }
+ buttons[ EQ_BT_BAR_N ] = pixmap->copy (0,164,11,11);
+ buttons[ EQ_BT_BAR_P ] = pixmap->copy (0,164+12,11,11);
+
+ buttons[ EQ_BT_ON_N ] = pixmap->copy (69,119,28,12);
+ buttons[ EQ_BT_ON_P ] = pixmap->copy (128,119,28,12);
+ buttons[ EQ_BT_OFF_N ] = pixmap->copy (10, 119,28,12);
+ buttons[ EQ_BT_OFF_P ] = pixmap->copy (187,119,28,12);
+
+ buttons[ EQ_BT_PRESETS_N ] = pixmap->copy (224,164,44,12);
+ buttons[ EQ_BT_PRESETS_P ] = pixmap->copy (224,176,44,12);
+
+ buttons[ EQ_BT_AUTO_1_N ] = pixmap->copy (94,119,33,12);
+ buttons[ EQ_BT_AUTO_1_P ] = pixmap->copy (153,119,33,12);
+ buttons[ EQ_BT_AUTO_0_N ] = pixmap->copy (35, 119,33,12);
+ buttons[ EQ_BT_AUTO_0_P ] = pixmap->copy (212,119,33,12);
+
+ buttons[ EQ_BT_CLOSE_N ] = pixmap->copy (0,116,9,9);
+ buttons[ EQ_BT_CLOSE_P ] = pixmap->copy (0,125,9,9);
+ buttons[ EQ_BT_SHADE1_N ] = pixmap->copy (254,137,9,9);
+
+ for (int i = 0; i < 19; ++i)
+ {
+ m_eq_spline << pixmap->copy (115, 294+i, 1, 1);
+ }
+ delete pixmap;
+}
+
+void Skin::loadEq_ex()
+{
+ QPixmap *pixmap = getPixmap ("eq_ex");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("eq_ex");
+
+ buttons[ EQ_BT_SHADE1_P ] = pixmap->copy (1,38,9,9);
+ buttons[ EQ_BT_SHADE2_N ] = pixmap->copy (254,3,9,9);
+ buttons[ EQ_BT_SHADE2_P ] = pixmap->copy (1,47,9,9);
+ m_eq_parts[ EQ_TITLEBAR_SHADED_A ] = pixmap->copy(0,0,275,14);
+ m_eq_parts[ EQ_TITLEBAR_SHADED_I ] = pixmap->copy(0,15,275,14);
+ m_eq_parts[ EQ_VOLUME1 ] = pixmap->copy(1,30,3,8);
+ m_eq_parts[ EQ_VOLUME2 ] = pixmap->copy(4,30,3,8);
+ m_eq_parts[ EQ_VOLUME3 ] = pixmap->copy(7,30,3,8);
+ m_eq_parts[ EQ_BALANCE1 ] = pixmap->copy(11,30,3,8);
+ m_eq_parts[ EQ_BALANCE2 ] = pixmap->copy(14,30,3,8);
+ m_eq_parts[ EQ_BALANCE3 ] = pixmap->copy(17,30,3,8);
+
+ delete pixmap;
+}
+
+void Skin::loadVisColor()
+{
+ QString path = findFile("viscolor.txt", m_skin_dir);
+ if (path.isEmpty())
+ path = findFile("viscolor.txt", ":/default");
+ if (path.isEmpty())
+ qFatal("Skin: invalid default skin");
+
+ QFile file(path);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ qFatal("Skin: unable to open %s", qPrintable(path));
+
+ int j = 0;
+ while (!file.atEnd () && j<24)
+ {
+ j++;
+ QByteArray line = file.readLine ();
+ QString tmp = QString::fromAscii (line);
+ tmp = tmp.trimmed ();
+ int i = tmp.indexOf ("//");
+ if (i>0)
+ tmp.truncate (tmp.indexOf ("//"));
+ QStringList list = tmp.split (",");
+ if (list.count () >= 3)
+ {
+ //colors
+ int r = list.at (0).toInt();
+ int g = list.at (1).toInt();
+ int b = list.at (2).toInt();
+ m_vis_colors << QColor (r,g,b);
+ }
+ else if (line.length() == 0)
+ {
+ break;
+ }
+ }
+ if (m_vis_colors.size() < 24)
+ {
+ qWarning ("Skin: cannot parse viscolor.txt");
+ while (m_vis_colors.size() < 24)
+ m_vis_colors << QColor (0,0,0);
+ }
+}
+
+void Skin::loadShufRep()
+{
+ QPixmap *pixmap = getPixmap ("shufrep");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("shufrep");
+
+ buttons[ BT_EQ_ON_N ] = pixmap->copy (0,73,23,12);
+ buttons[ BT_EQ_ON_P ] = pixmap->copy (46,73,23,12);
+ buttons[ BT_EQ_OFF_N ] = pixmap->copy (0,61,23,12);
+ buttons[ BT_EQ_OFF_P ] = pixmap->copy (46,61,23,12);
+
+ buttons[ BT_PL_ON_N ] = pixmap->copy (23,73,23,12);
+ buttons[ BT_PL_ON_P ] = pixmap->copy (69,73,23,12);
+ buttons[ BT_PL_OFF_N ] = pixmap->copy (23,61,23,12);
+ buttons[ BT_PL_OFF_P ] = pixmap->copy (69,61,23,12);
+
+ //buttons[ BT_PL_CLOSE_N ] = pixmap->copy ();
+ //buttons[ BT_PL_CLOSE_P ] = pixmap->copy ();
+
+ buttons[REPEAT_ON_N] = pixmap->copy (0,30, 28, 15);
+ buttons[REPEAT_ON_P] = pixmap->copy (0,45, 28, 15);
+
+ buttons[REPEAT_OFF_N] = pixmap->copy (0, 0,28,15);
+ buttons[REPEAT_OFF_P] = pixmap->copy (0,15,28,15);
+
+ buttons[SHUFFLE_ON_N] = pixmap->copy (28,30,46,15);
+ buttons[SHUFFLE_ON_P] = pixmap->copy (28,45,46,15);
+
+ buttons[SHUFFLE_OFF_N] = pixmap->copy (28, 0,46,15);
+ buttons[SHUFFLE_OFF_P] = pixmap->copy (28,15,46,15);
+
+ delete pixmap;
+}
+
+void Skin::loadLetters(void)
+{
+ QPixmap *img = getPixmap("text");
+
+ if (!img)
+ img = getDummyPixmap("text");
+
+ QList<QList<QPixmap> > (letters);
+ for (int i = 0; i < 3; i++)
+ {
+ QList<QPixmap> (l);
+ for (int j = 0; j < 31; j++)
+ {
+ l.append (img->copy (j*5, i*6, 5, 6));
+ }
+ letters.append (l);
+ }
+
+ delete img;
+
+
+ /* alphabet */
+ for (uint i = 97; i < 123; i++)
+ {
+ m_letters.insert(i, letters[0][i-97]);
+ }
+
+ /* digits */
+ for (uint i = 0; i <= 9; i++)
+ {
+ m_letters.insert (i+48, letters[1][i]);
+ }
+
+ /* special characters */
+ m_letters.insert('"', letters[0][27]);
+ m_letters.insert('@', letters[0][28]);
+ m_letters.insert(':', letters[1][12]);
+ m_letters.insert('(', letters[1][13]);
+ m_letters.insert(')', letters[1][14]);
+ m_letters.insert('-', letters[1][15]);
+ m_letters.insert('\'', letters[1][16]);
+ m_letters.insert('`', letters[1][16]);
+ m_letters.insert('!', letters[1][17]);
+ m_letters.insert('_', letters[1][18]);
+ m_letters.insert('+', letters[1][19]);
+ m_letters.insert('\\', letters[1][20]);
+ m_letters.insert('/', letters[1][21]);
+ m_letters.insert('[', letters[1][22]);
+ m_letters.insert(']', letters[1][23]);
+ m_letters.insert('^', letters[1][24]);
+ m_letters.insert('&', letters[1][25]);
+ m_letters.insert('%', letters[1][26]);
+ m_letters.insert('.', letters[1][27]);
+ m_letters.insert(',', letters[1][27]);
+ m_letters.insert('=', letters[1][28]);
+ m_letters.insert('$', letters[1][29]);
+ m_letters.insert('#', letters[1][30]);
+
+ m_letters.insert(229, letters[2][0]);
+ m_letters.insert(246, letters[2][1]);
+ m_letters.insert(228, letters[2][2]);
+ m_letters.insert('?', letters[2][3]);
+ m_letters.insert('*', letters[2][4]);
+ m_letters.insert(' ', letters[2][5]);
+
+ /* text background */
+ //m_items->insert (TEXTBG, letters[2][6]);
+}
+
+void Skin::loadMonoSter()
+{
+ QPixmap *pixmap = getPixmap("monoster");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("monoster");
+
+ m_ms_parts.clear();
+ m_ms_parts[ MONO_A ] = pixmap->copy (29,0,27,12);
+ m_ms_parts[ MONO_I ] = pixmap->copy (29,12,27,12);
+ m_ms_parts[ STEREO_A ] = pixmap->copy (0,0,27,12);
+ m_ms_parts[ STEREO_I ] = pixmap->copy (0,12,27,12);
+
+ delete pixmap;
+
+ m_parts.clear();
+ QPainter paint;
+ pixmap = getPixmap("playpaus");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("playpaus");
+
+ QPixmap part(11, 9);
+ paint.begin(&part);
+ paint.drawPixmap (0, 0, 3, 9, *pixmap, 36, 0, 3, 9);
+ paint.drawPixmap (3, 0, 8, 9, *pixmap, 1, 0, 8, 9);
+ paint.end();
+ m_parts [PLAY] = part.copy();
+
+ part = QPixmap(11, 9);
+ paint.begin(&part);
+ paint.drawPixmap (0, 0, 2, 9, *pixmap, 27, 0, 2, 9);
+ paint.drawPixmap (2, 0, 9, 9, *pixmap, 9, 0, 9, 9);
+ paint.end();
+ m_parts [PAUSE] = part.copy();
+
+ part = QPixmap(11, 9);
+ paint.begin(&part);
+ paint.drawPixmap (0, 0, 2, 9, *pixmap, 27, 0, 2, 9);
+ paint.drawPixmap (2, 0, 9, 9, *pixmap, 18, 0, 9, 9);
+ paint.end();
+ m_parts [STOP] = part.copy();
+
+ delete pixmap;
+}
+
+void Skin::loadVolume()
+{
+ QPixmap *pixmap = getPixmap("volume");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("volume");
+
+ m_volume.clear();
+ for (int i = 0; i < 28; ++i)
+ m_volume.append(pixmap->copy (0,i*15, pixmap->width(),13));
+ if (pixmap->height() > 425)
+ {
+ buttons [BT_VOL_N] = pixmap->copy (15,422,14, pixmap->height() - 422);
+ buttons [BT_VOL_P] = pixmap->copy (0, 422,14, pixmap->height() - 422);
+ }
+ else
+ {
+ buttons [BT_VOL_N] = QPixmap();
+ buttons [BT_VOL_P] = QPixmap();
+ }
+ delete pixmap;
+}
+
+void Skin::loadBalance()
+{
+ QPixmap *pixmap = getPixmap ("balance");
+ if (!pixmap)
+ pixmap = getPixmap ("volume");
+
+ if (!pixmap)
+ pixmap = getDummyPixmap("balance");
+
+ m_balance.clear();
+ for (int i = 0; i < 28; ++i)
+ m_balance.append(pixmap->copy (9,i*15,38,13));
+ if (pixmap->height() > 427)
+ {
+ buttons [BT_BAL_N] = pixmap->copy (15, 422,14,pixmap->height()-422);
+ buttons [BT_BAL_P] = pixmap->copy (0,422,14,pixmap->height()-422);
+ }
+ else
+ {
+ buttons [BT_BAL_N] = QPixmap();
+ buttons [BT_BAL_P] = QPixmap();
+ }
+ delete pixmap;
+}
+
+void Skin::loadRegion()
+{
+ m_regions.clear();
+ QString path = findFile("region.txt", m_skin_dir);
+
+ if (path.isNull ())
+ {
+ qDebug ("Skin: cannot find region.txt. Transparency disabled");
+ return;
+ }
+ m_regions[NORMAL] = createRegion(path, "Normal");
+ m_regions[EQUALIZER] = createRegion(path, "Equalizer");
+ m_regions[WINDOW_SHADE] = createRegion(path, "WindowShade");
+ m_regions[EQUALIZER_WS] = createRegion(path, "EqualizerWS");
+}
+
+QRegion Skin::createRegion(const QString &path, const QString &key)
+{
+ QRegion region;
+ QSettings settings(path, QSettings::IniFormat);
+ QStringList numPoints = settings.value(key+"/NumPoints").toStringList();
+ QStringList value = settings.value(key+"/PointList").toStringList();
+ QStringList numbers;
+ foreach(QString str, value)
+ numbers << str.split(" ", QString::SkipEmptyParts);
+
+ QList <QRegion> regions;
+
+ QList<QString>::iterator n;
+ n = numbers.begin();
+ int r = m_double_size ? 2 : 1;
+ for (int i = 0; i < numPoints.size(); ++i)
+ {
+ QList <int> lp;
+ for (int j = 0; j < numPoints.at(i).toInt()*2; j++)
+ {
+ lp << n->toInt();
+ n ++;
+ }
+ QVector<QPoint> points;
+
+ for (int l = 0; l < lp.size(); l+=2)
+ {
+ points << QPoint(lp.at(l)*r, lp.at(l+1)*r);
+ }
+ region = region.united(QRegion(QPolygon(points)));
+ }
+ return region;
+}
+
+QPixmap * Skin::getDummyPixmap(const QString& name)
+{
+ QDir dir (":/default");
+ dir.setFilter (QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QFileInfoList f = dir.entryInfoList();
+ for (int j = 0; j < f.size(); ++j)
+ {
+ QFileInfo fileInfo = f.at (j);
+ QString fn = fileInfo.fileName().toLower();
+ if (fn.section (".",0,0) == name)
+ {
+ return new QPixmap (fileInfo.filePath());
+ }
+ }
+ qFatal("Skin: default skin is corrupted");
+ return 0;
+}
+
+QPixmap Skin::scalePixmap(const QPixmap &pix, int ratio)
+{
+ return pix.scaled(pix.width() * ratio, pix.height() * ratio,
+ Qt::KeepAspectRatio);
+}
+
+const QString Skin::findFile(const QString &name, QDir dir)
+{
+ dir.setFilter (QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QString path;
+ QFileInfoList list = dir.entryInfoList();
+ for (int i = 0; i < list.size(); ++i)
+ {
+ QFileInfo fileInfo = list.at (i);
+ if (fileInfo.fileName().toLower() == name)
+ {
+ path = fileInfo.filePath ();
+ break;
+ }
+ }
+ return path;
+}
+
+const QString Skin::findFile(const QString &name, const QString &dir)
+{
+ return findFile(name, QDir(dir));
+}
diff --git a/src/plugins/Ui/skinned/skin.h b/src/plugins/Ui/skinned/skin.h
new file mode 100644
index 000000000..adb4b6c20
--- /dev/null
+++ b/src/plugins/Ui/skinned/skin.h
@@ -0,0 +1,390 @@
+/***************************************************************************
+ * Copyright (C) 2007-2009 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * Based on Promoe, an XMMS2 Client *
+ * Copyright (C) 2005-2006 by XMMS2 Team *
+ * *
+ * 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 SKIN_H
+#define SKIN_H
+
+#include <QObject>
+#include <QMap>
+#include <QPixmap>
+#include <QDir>
+#include <QRegion>
+#include <QCursor>
+
+class Skin : public QObject
+{
+ Q_OBJECT
+public:
+ Skin(QObject *parent = 0);
+
+ ~Skin();
+
+ static Skin *instance();
+ static QPixmap getPixmap(const QString&, QDir);
+ int ratio()
+ {
+ return m_double_size ? 2 : 1;
+ }
+ const QPixmap getMain() const
+ {
+ return m_main;
+ }
+ const QPixmap getButton(uint bt) const
+ {
+ return buttons[bt];
+ }
+ const QCursor getCursor(uint cu) const
+ {
+ return cursors[cu];
+ }
+ const QPixmap getTitleBar(uint tb) const
+ {
+ return titlebar[tb];
+ }
+ const QPixmap getPosBar() const
+ {
+ return posbar;
+ }
+ const QPixmap getNumber(uint n) const
+ {
+ return m_numbers[n];
+ }
+ /*!
+ * Returns count of numbers in number list.
+ * We need this to check if we have "-" in pixmaps.
+ * if no we should draw it manually.
+ */
+ uint getNumCount(void) const
+ {
+ return m_numbers.count();
+ }
+ const QPixmap getPlPart(uint p) const
+ {
+ return m_pl_parts[p];
+ }
+ const QPixmap getEqPart(uint p) const
+ {
+ return m_eq_parts[p];
+ }
+ const QPixmap getEqSlider(uint n) const
+ {
+ return m_eq_bar[n];
+ }
+ const QPixmap getEqSpline(uint n) const
+ {
+ return m_eq_spline[n];
+ }
+ const QPixmap getMSPart(uint n) const
+ {
+ return m_ms_parts[n];
+ }
+ const QPixmap getLetter(const QChar& ch) const
+ {
+ return m_letters[ch];
+ }
+ const QPixmap getItem(uint n) const
+ {
+ return m_parts[n];
+ }
+ const QPixmap getVolumeBar(int n) const
+ {
+ return m_volume[n];
+ }
+ const QPixmap getBalanceBar(int n) const
+ {
+ return m_balance[n];
+ }
+ const QByteArray getPLValue (QByteArray c) const
+ {
+ return m_pledit_txt[c];
+ }
+ const QColor getVisColor(int n) const
+ {
+ return m_vis_colors[n];
+ }
+ const QRegion getRegion(uint r) const
+ {
+ return m_regions[r];
+ }
+
+ enum Buttons
+ {
+ BT_PREVIOUS_N = 0,
+ BT_PREVIOUS_P,
+ BT_PLAY_N,
+ BT_PLAY_P,
+ BT_PAUSE_N,
+ BT_PAUSE_P,
+ BT_STOP_N,
+ BT_STOP_P,
+ BT_NEXT_N,
+ BT_NEXT_P,
+ BT_EJECT_N,
+ BT_EJECT_P,
+ /*titlebar.* */
+ BT_MENU_N,
+ BT_MENU_P,
+ BT_MINIMIZE_N,
+ BT_MINIMIZE_P,
+ BT_CLOSE_N,
+ BT_CLOSE_P,
+ BT_SHADE1_N,
+ BT_SHADE1_P,
+ BT_SHADE2_N,
+ BT_SHADE2_P,
+ BT_CLOSE_SHADED_N,
+ BT_CLOSE_SHADED_P,
+
+ /* posbar.* */
+ BT_POSBAR_N,
+ BT_POSBAR_P,
+ /* pledit.* */
+ PL_BT_ADD,
+ PL_BT_SUB,
+ PL_BT_SEL,
+ PL_BT_SORT,
+ PL_BT_LST,
+ PL_BT_SCROLL_N,
+ PL_BT_SCROLL_P,
+ PL_BT_CLOSE_N,
+ PL_BT_CLOSE_P,
+ PL_BT_SHADE1_N,
+ PL_BT_SHADE1_P,
+ PL_BT_SHADE2_N,
+ PL_BT_SHADE2_P,
+
+ /* eqmain.* */
+ EQ_BT_BAR_N,
+ EQ_BT_BAR_P,
+ EQ_BT_ON_N,
+ EQ_BT_ON_P,
+ EQ_BT_OFF_N,
+ EQ_BT_OFF_P,
+ EQ_BT_PRESETS_N,
+ EQ_BT_PRESETS_P,
+ EQ_BT_AUTO_1_N,
+ EQ_BT_AUTO_1_P,
+ EQ_BT_AUTO_0_N,
+ EQ_BT_AUTO_0_P,
+ EQ_BT_CLOSE_N,
+ EQ_BT_CLOSE_P,
+ EQ_BT_SHADE1_N,
+
+ /* eq_ex.* */
+ EQ_BT_SHADE1_P,
+ EQ_BT_SHADE2_N,
+ EQ_BT_SHADE2_P,
+
+ /* shufrep.* */
+ BT_EQ_ON_N,
+ BT_EQ_ON_P,
+ BT_EQ_OFF_N,
+ BT_EQ_OFF_P,
+ BT_PL_ON_N,
+ BT_PL_ON_P,
+ BT_PL_OFF_N,
+ BT_PL_OFF_P,
+ BT_PL_CLOSE_N,
+ BT_PL_CLOSE_P,
+ REPEAT_ON_N,
+ REPEAT_ON_P,
+ REPEAT_OFF_N,
+ REPEAT_OFF_P,
+ SHUFFLE_ON_N,
+ SHUFFLE_ON_P,
+ SHUFFLE_OFF_N,
+ SHUFFLE_OFF_P,
+ /* volume.* */
+ BT_VOL_N,
+ BT_VOL_P,
+ /* balance.* */
+ BT_BAL_N,
+ BT_BAL_P,
+ };
+ enum TitleBar
+ {
+ TITLEBAR_A = 0,
+ TITLEBAR_I,
+ TITLEBAR_SHADED_A,
+ TITLEBAR_SHADED_I,
+ };
+ enum PlayList
+ {
+ PL_CORNER_UL_A = 0,
+ PL_CORNER_UL_I,
+ PL_CORNER_UR_A,
+ PL_CORNER_UR_I,
+ PL_TITLEBAR_A,
+ PL_TITLEBAR_I,
+ PL_TFILL1_A,
+ PL_TFILL1_I,
+ PL_TFILL2_A,
+ PL_TFILL2_I,
+ PL_LFILL,
+ PL_RFILL,
+ PL_LSBAR,
+ PL_RSBAR,
+ PL_SFILL1,
+ PL_SFILL2,
+ PL_CONTROL,
+ PL_TITLEBAR_SHADED1_A,
+ PL_TITLEBAR_SHADED1_I,
+ PL_TITLEBAR_SHADED2,
+ PL_TFILL_SHADED,
+ };
+ enum Equalizer
+ {
+ EQ_MAIN = 0,
+ EQ_TITLEBAR_A,
+ EQ_TITLEBAR_I,
+ EQ_GRAPH,
+ EQ_TITLEBAR_SHADED_A,
+ EQ_TITLEBAR_SHADED_I,
+ EQ_VOLUME1,
+ EQ_VOLUME2,
+ EQ_VOLUME3,
+ EQ_BALANCE1,
+ EQ_BALANCE2,
+ EQ_BALANCE3,
+ };
+ enum MonoSter
+ {
+ MONO_A = 0,
+ MONO_I,
+ STEREO_A,
+ STEREO_I,
+ };
+ enum OtherParts
+ {
+ PLAY = 0,
+ PAUSE,
+ STOP,
+ };
+ enum Regions
+ {
+ NORMAL = 0,
+ EQUALIZER,
+ WINDOW_SHADE,
+ EQUALIZER_WS,
+ };
+ enum Cursors
+ {
+ CUR_NORMAL = 0,
+ CUR_CLOSE,
+ CUR_MAINMENU,
+ CUR_MIN,
+ CUR_POSBAR,
+ CUR_SONGNAME,
+ CUR_TITLEBAR,
+ CUR_VOLBAL,
+ CUR_WINBUT,
+
+ CUR_WSNORMAL,
+ CUR_WSPOSBAR,
+
+ CUR_EQCLOSE,
+ CUR_EQNORMAL,
+ CUR_EQSLID,
+ CUR_EQTITLE,
+
+ CUR_PCLOSE,
+ CUR_PNORMAL,
+ CUR_PSIZE,
+ CUR_PTBAR,
+ CUR_PVSCROLL,
+ CUR_PWINBUT,
+
+ CUR_PWSNORM,
+ CUR_PWSSIZE,
+
+ CUR_VOLBAR,
+ CUR_WSCLOSE,
+ CUR_WSMIN,
+ CUR_WSWINBUT,
+ };
+
+public slots:
+ void setSkin(const QString& path);
+ void reloadSkin();
+
+signals:
+ void skinChanged();
+
+private:
+ QPixmap *getPixmap(const QString&);
+ QString getPath(const QString&);
+ const QString findFile(const QString&, QDir);
+ const QString findFile(const QString&, const QString&);
+
+ /*!
+ * As far as there is no standard in skin making we cannot be sure
+ * that all needful images we can find in skin :( This will cause
+ * segfaults and asserts. So to prevent this we need such method
+ * to load pixmap from default skin.
+ */
+ QPixmap *getDummyPixmap(const QString&);
+ QPixmap scalePixmap(const QPixmap &pix, int ratio = 2);
+ static Skin *m_instance;
+ QDir m_skin_dir;
+ QMap<uint, QPixmap> buttons;
+ QMap<uint, QCursor> cursors;
+ QMap<uint, QPixmap> titlebar;
+ QMap<uint, QPixmap> m_pl_parts;
+ QMap<uint, QPixmap> m_eq_parts;
+ QMap<uint, QPixmap> m_ms_parts;
+ QMap<uint, QPixmap> m_parts;
+ QMap<QChar, QPixmap> m_letters;
+ QMap<QByteArray, QByteArray> m_pledit_txt;
+ QMap<uint, QRegion> m_regions;
+ QPixmap m_main;
+ QPixmap posbar;
+ QList<QPixmap> m_numbers;
+ QList<QPixmap> m_eq_bar;
+ QList<QPixmap> m_eq_spline;
+ QList<QPixmap> m_volume;
+ QList<QPixmap> m_balance;
+ QList<QColor> m_vis_colors;
+ bool m_use_cursors;
+ bool m_double_size;
+
+ void loadMain();
+ void loadButtons();
+ void loadCursors();
+ void loadTitleBar();
+ void loadPosBar();
+ void loadNumbers();
+ void loadPlayList();
+ void loadPLEdit();
+ void loadEqMain();
+ void loadEq_ex();
+ void loadVisColor();
+ void loadShufRep();
+ void loadLetters();
+ void loadMonoSter();
+ void loadVolume();
+ void loadBalance();
+ void loadRegion();
+ QRegion createRegion(const QString &path, const QString &key);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/skinned.pro b/src/plugins/Ui/skinned/skinned.pro
new file mode 100644
index 000000000..f664e110d
--- /dev/null
+++ b/src/plugins/Ui/skinned/skinned.pro
@@ -0,0 +1,166 @@
+include(../../plugins.pri)
+FORMS += forms/configdialog.ui \
+ forms/preseteditor.ui \
+ forms/jumptotrackdialog.ui \
+ forms/aboutdialog.ui \
+ forms/addurldialog.ui \
+ forms/playlistbrowser.ui \
+ forms/popupsettings.ui \
+ forms/shortcutdialog.ui
+HEADERS += mainwindow.h \
+ button.h \
+ display.h \
+ skin.h \
+ titlebar.h \
+ positionbar.h \
+ number.h \
+ playlist.h \
+ listwidget.h \
+ pixmapwidget.h \
+ playlisttitlebar.h \
+ configdialog.h \
+ playlistslider.h \
+ dock.h \
+ eqwidget.h \
+ eqtitlebar.h \
+ eqslider.h \
+ togglebutton.h \
+ eqgraph.h \
+ mainvisual.h \
+ inlines.h \
+ fft.h \
+ textscroller.h \
+ monostereo.h \
+ playstatus.h \
+ pluginitem.h \
+ volumebar.h \
+ balancebar.h \
+ symboldisplay.h \
+ playlistcontrol.h \
+ eqpreset.h \
+ preseteditor.h \
+ jumptotrackdialog.h \
+ aboutdialog.h \
+ timeindicator.h \
+ keyboardmanager.h \
+ addurldialog.h \
+ skinreader.h \
+ visualmenu.h \
+ titlebarcontrol.h \
+ shadedvisual.h \
+ shadedbar.h \
+ cursorimage.h \
+ playlistbrowser.h \
+ playlistselector.h \
+ popupwidget.h \
+ popupsettings.h \
+ windowsystem.h \
+ lxdesupport.h \
+ actionmanager.h \
+ shortcutitem.h \
+ shortcutdialog.h \
+ skinnedfactory.h
+SOURCES += mainwindow.cpp \
+ button.cpp \
+ display.cpp \
+ skin.cpp \
+ titlebar.cpp \
+ positionbar.cpp \
+ number.cpp \
+ playlist.cpp \
+ listwidget.cpp \
+ pixmapwidget.cpp \
+ playlisttitlebar.cpp \
+ configdialog.cpp \
+ playlistslider.cpp \
+ dock.cpp \
+ eqwidget.cpp \
+ eqtitlebar.cpp \
+ eqslider.cpp \
+ togglebutton.cpp \
+ eqgraph.cpp \
+ mainvisual.cpp \
+ fft.c \
+ textscroller.cpp \
+ monostereo.cpp \
+ playstatus.cpp \
+ pluginitem.cpp \
+ volumebar.cpp \
+ balancebar.cpp \
+ symboldisplay.cpp \
+ playlistcontrol.cpp \
+ eqpreset.cpp \
+ preseteditor.cpp \
+ jumptotrackdialog.cpp \
+ aboutdialog.cpp \
+ timeindicator.cpp \
+ keyboardmanager.cpp \
+ addurldialog.cpp \
+ skinreader.cpp \
+ visualmenu.cpp \
+ titlebarcontrol.cpp \
+ shadedvisual.cpp \
+ shadedbar.cpp \
+ cursorimage.cpp \
+ playlistbrowser.cpp \
+ playlistselector.cpp \
+ popupwidget.cpp \
+ popupsettings.cpp \
+ windowsystem.cpp \
+ lxdesupport.cpp \
+ actionmanager.cpp \
+ shortcutitem.cpp \
+ shortcutdialog.cpp \
+ skinnedfactory.cpp
+
+
+QT += network
+TEMPLATE = lib
+unix:QMAKE_LIBDIR += ../../../../lib
+unix:LIBS += -lqmmpui -lqmmp
+
+win32:QMAKE_LIBDIR += ../../../../bin
+win32:LIBS += -lqmmpui0 -lqmmp0
+
+CONFIG += release \
+ warn_on \
+ plugin
+
+
+TARGET =$$PLUGINS_PREFIX/Ui/skinned
+
+unix:LIBS += -lqmmp -lqmmpui
+win32:LIBS += -lqmmp0 -lqmmpui0
+
+RESOURCES = images/images.qrc stuff.qrc
+
+unix{
+isEmpty(LIB_DIR){
+ LIB_DIR = /lib
+}
+target.path = $$LIB_DIR/qmmp/Ui
+INSTALLS += target
+}
+
+INCLUDEPATH += ../../../
+
+RESOURCES += translations/qmmp_locales.qrc
+TRANSLATIONS = translations/qmmp_ru.ts \
+ translations/qmmp_tr.ts \
+ translations/qmmp_zh_CN.ts \
+ translations/qmmp_cs.ts \
+ translations/qmmp_pt_BR.ts \
+ translations/qmmp_uk_UA.ts \
+ translations/qmmp_zh_TW.ts \
+ translations/qmmp_de.ts \
+ translations/qmmp_pl_PL.ts \
+ translations/qmmp_it.ts \
+ translations/qmmp_lt.ts \
+ translations/qmmp_hu.ts \
+ translations/qmmp_nl.ts \
+ translations/qmmp_ja.ts \
+ translations/qmmp_es.ts \
+ translations/qmmp_sk.ts
+
+ CONFIG += link_pkgconfig
+ PKGCONFIG += x11
diff --git a/src/plugins/Ui/skinned/skinnedfactory.cpp b/src/plugins/Ui/skinned/skinnedfactory.cpp
new file mode 100644
index 000000000..b220f2ca8
--- /dev/null
+++ b/src/plugins/Ui/skinned/skinnedfactory.cpp
@@ -0,0 +1,43 @@
+/***************************************************************************
+ * Copyright (C) 2011 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 <QtPlugin>
+#include "mainwindow.h"
+#include "skinnedfactory.h"
+
+const UiProperties SkinnedFactory::properties() const
+{
+ UiProperties props;
+ return props;
+}
+
+QObject *SkinnedFactory::SkinnedFactory::create()
+{
+ return new MainWindow();
+}
+
+void SkinnedFactory::showAbout(QWidget *parent){}
+
+QTranslator *SkinnedFactory::createTranslator(QObject *parent)
+{
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(skinned, SkinnedFactory)
diff --git a/src/plugins/Ui/skinned/skinnedfactory.h b/src/plugins/Ui/skinned/skinnedfactory.h
new file mode 100644
index 000000000..f8fb8aef9
--- /dev/null
+++ b/src/plugins/Ui/skinned/skinnedfactory.h
@@ -0,0 +1,42 @@
+/***************************************************************************
+ * Copyright (C) 2011 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 SKINNEDFACTORY_H
+#define SKINNEDFACTORY_H
+
+#include <QObject>
+#include <QTranslator>
+#include <qmmpui/uifactory.h>
+
+
+/*!
+ * @author Ilya Kotov <forkotov02@hotmail.ru>
+ */
+class SkinnedFactory : public QObject, public UiFactory
+{
+ Q_OBJECT
+ Q_INTERFACES(UiFactory)
+public:
+ const UiProperties properties() const;
+ QObject *create();
+ void showAbout(QWidget *parent);
+ QTranslator *createTranslator(QObject *parent);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/skinreader.cpp b/src/plugins/Ui/skinned/skinreader.cpp
new file mode 100644
index 000000000..390ac4b8b
--- /dev/null
+++ b/src/plugins/Ui/skinned/skinreader.cpp
@@ -0,0 +1,207 @@
+/***************************************************************************
+ * 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. *
+ ***************************************************************************/
+
+#include <QDir>
+#include <QList>
+#include <QFileInfo>
+#include <QProcess>
+#include <QByteArray>
+#include <QApplication>
+#include <QFile>
+
+#include "skinreader.h"
+
+SkinReader::SkinReader(QObject *parent)
+ : QObject(parent)
+{
+ m_process = new QProcess(this);
+ //create cache dir
+ QDir dir(QDir::homePath() +"/.qmmp/");
+ dir.mkdir("cache");
+ dir.cd("cache");
+ dir.mkdir("thumbs");
+ dir.mkdir("skin");
+}
+
+
+SkinReader::~SkinReader()
+{}
+
+void SkinReader::generateThumbs()
+{
+ m_previewMap.clear();
+ QDir dir(QDir::homePath() +"/.qmmp/skins");
+ dir.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QFileInfoList f = dir.entryInfoList();
+ dir.setPath(qApp->applicationDirPath()+"/../share/qmmp/skins");
+ dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ f << dir.entryInfoList();
+ QDir cache_dir(QDir::homePath() +"/.qmmp/cache/thumbs");
+ cache_dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QFileInfoList d = cache_dir.entryInfoList();
+ //clear removed skins from cache
+ foreach(QFileInfo thumbFile, d)
+ {
+ bool del = true;
+ foreach(QFileInfo fileInfo, f)
+ {
+ if (fileInfo.baseName () == thumbFile.baseName ())
+ {
+ del = false;
+ break;
+ }
+ }
+ if (del)
+ {
+ qDebug("SkinReader: deleting %s from cache",
+ qPrintable(thumbFile.fileName ()));
+
+ cache_dir.remove(thumbFile.fileName ());
+ }
+ }
+ //add new skins to cache
+ foreach(QFileInfo fileInfo, f)
+ {
+ bool create = true;
+ foreach(QFileInfo thumbInfo, d)
+ {
+ if (fileInfo.baseName () == thumbInfo.baseName ())
+ {
+ create = false;
+ break;
+ }
+ }
+ if (create)
+ {
+ qDebug("SkinReader: adding %s to cache",
+ qPrintable(fileInfo.fileName ()));
+ QString name = fileInfo.fileName ().toLower();
+
+ if (name.endsWith(".tgz") || name.endsWith(".tar.gz") || name.endsWith(".tar.bz2"))
+ untar(fileInfo.filePath (), cache_dir.absolutePath (), true);
+ if (name.endsWith(".zip") || name.endsWith(".wsz"))
+ unzip(fileInfo.filePath (), cache_dir.absolutePath (), true);
+ }
+ }
+ //add thumbs to map
+ cache_dir.refresh();
+ d = cache_dir.entryInfoList();
+ foreach(QFileInfo fileInfo, f)
+ {
+ foreach(QFileInfo thumbInfo, d)
+ {
+ if (fileInfo.baseName () == thumbInfo.baseName ())
+ {
+ m_previewMap.insert(fileInfo.absoluteFilePath (),
+ thumbInfo.absoluteFilePath ());
+ break;
+ }
+ }
+ }
+}
+
+void SkinReader::unpackSkin(const QString &path)
+{
+ //remove old skin
+ QDir dir(QDir::homePath() +"/.qmmp/cache/skin");
+ dir.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QFileInfoList f = dir.entryInfoList();
+ foreach(QFileInfo file, f)
+ dir.remove(file.fileName());
+ //unpack
+ if (path.endsWith(".tgz") || path.endsWith(".tar.gz") || path.endsWith(".tar.bz2"))
+ untar(path, QDir::homePath() +"/.qmmp/cache/skin", false);
+ if (path.endsWith(".zip") || path.endsWith(".wsz"))
+ unzip(path, QDir::homePath() +"/.qmmp/cache/skin", false);
+}
+
+const QStringList SkinReader::skins()
+{
+ return m_previewMap.keys();
+}
+
+const QPixmap SkinReader::getPreview(const QString &skinPath)
+{
+ return QPixmap(m_previewMap.value(skinPath));
+}
+
+void SkinReader::untar(const QString &from, const QString &to, bool preview)
+{
+ QByteArray array;
+ QStringList args;
+ //list archive
+ args << "tf" <<from;
+ m_process->start("tar", args);
+ m_process->waitForFinished();
+ array = m_process->readAllStandardOutput ();
+ QString str = QString(array);
+ QStringList outputList = str.split("\n", QString::SkipEmptyParts);
+ foreach(QString str, outputList)
+ {
+ str = str.trimmed();
+ args.clear();
+ if (!preview || (str.contains("/main.", Qt::CaseInsensitive)
+ || str.startsWith("main.", Qt::CaseInsensitive)))
+ {
+ args << "xvfk" << from << "-O" << str;
+ m_process->start("tar", args);
+ m_process->waitForStarted();
+ m_process->waitForFinished();
+ array = m_process->readAllStandardOutput ();
+
+ QString name;
+ if (preview)
+ name = from.section('/',-1) + (".") + str.section('.', -1);
+ else
+ name = str.contains('/') ? str.section('/',-1).toLower() : str.toLower();
+
+ QFile file(to+"/"+name);
+ file.open(QIODevice::WriteOnly);
+ file.write(array);
+ file.close();
+ }
+ }
+}
+
+void SkinReader::unzip(const QString &from, const QString &to, bool preview)
+{
+ QStringList args;
+ if (preview)
+ {
+ args << "-C" << "-j" << "-o" << "-qq" << "-d" << to << from << "main.*" << "*/main.*";
+ QProcess::execute("unzip", args);
+ QDir dir(to);
+ dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
+ QFileInfoList fileList = dir.entryInfoList();
+ foreach(QFileInfo thumbInfo, fileList)
+ {
+ if (thumbInfo.fileName().startsWith("main.", Qt::CaseInsensitive))
+ {
+ dir.rename(thumbInfo.fileName(), from.section('/', -1) +
+ "." + thumbInfo.suffix ());
+ }
+ }
+ }
+ else
+ {
+ args << "-j" << "-o" << "-qq" << "-d" << to << from;
+ QProcess::execute("unzip", args);
+ }
+}
diff --git a/src/plugins/Ui/skinned/skinreader.h b/src/plugins/Ui/skinned/skinreader.h
new file mode 100644
index 000000000..e12e604a1
--- /dev/null
+++ b/src/plugins/Ui/skinned/skinreader.h
@@ -0,0 +1,52 @@
+/***************************************************************************
+ * 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 SKINREADER_H
+#define SKINREADER_H
+
+#include <QObject>
+#include <QMap>
+#include <QPixmap>
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class QProcess;
+
+class SkinReader : public QObject
+{
+ Q_OBJECT
+public:
+ SkinReader(QObject *parent = 0);
+
+ ~SkinReader();
+
+ void generateThumbs();
+ void unpackSkin(const QString &path);
+ const QStringList skins();
+ const QPixmap getPreview(const QString &skinPath);
+
+private:
+ QProcess *m_process;
+ void untar(const QString &from, const QString &to, bool preview);
+ void unzip(const QString &from, const QString &to, bool preview);
+ QMap <QString, QString> m_previewMap;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/stuff.qrc b/src/plugins/Ui/skinned/stuff.qrc
new file mode 100644
index 000000000..db6770f66
--- /dev/null
+++ b/src/plugins/Ui/skinned/stuff.qrc
@@ -0,0 +1,88 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>../../../../COPYING</file>
+
+ <file>txt/description_en.txt</file>
+ <file>txt/authors_en.txt</file>
+ <file>txt/thanks_en.txt</file>
+ <file>txt/translators_en.txt</file>
+
+ <file>txt/authors_uk_UA.txt</file>
+ <file>txt/thanks_uk_UA.txt</file>
+ <file>txt/translators_uk_UA.txt</file>
+ <file>txt/description_uk_UA.txt</file>
+
+ <file>txt/authors_zh_TW.txt</file>
+ <file>txt/thanks_zh_TW.txt</file>
+ <file>txt/translators_zh_TW.txt</file>
+ <file>txt/description_zh_TW.txt</file>
+
+ <file>txt/description_cs.txt</file>
+ <file>txt/authors_cs.txt</file>
+ <file>txt/thanks_cs.txt</file>
+ <file>txt/translators_cs.txt</file>
+
+ <file>txt/authors_ru.txt</file>
+ <file>txt/thanks_ru.txt</file>
+ <file>txt/translators_ru.txt</file>
+ <file>txt/description_ru.txt</file>
+
+ <file>txt/authors_zh_CN.txt</file>
+ <file>txt/thanks_zh_CN.txt</file>
+ <file>txt/translators_zh_CN.txt</file>
+ <file>txt/description_zh_CN.txt</file>
+
+ <file>txt/authors_de.txt</file>
+ <file>txt/thanks_de.txt</file>
+ <file>txt/translators_de.txt</file>
+ <file>txt/description_de.txt</file>
+
+ <file>txt/authors_it.txt</file>
+ <file>txt/thanks_it.txt</file>
+ <file>txt/translators_it.txt</file>
+ <file>txt/description_it.txt</file>
+
+ <file>txt/authors_tr.txt</file>
+ <file>txt/thanks_tr.txt</file>
+ <file>txt/translators_tr.txt</file>
+ <file>txt/description_tr.txt</file>
+
+ <file>txt/authors_lt.txt</file>
+ <file>txt/thanks_lt.txt</file>
+ <file>txt/translators_lt.txt</file>
+ <file>txt/description_lt.txt</file>
+
+ <file>txt/authors_nl.txt</file>
+ <file>txt/thanks_nl.txt</file>
+ <file>txt/translators_nl.txt</file>
+ <file>txt/description_nl.txt</file>
+
+ <file>txt/authors_ja.txt</file>
+ <file>txt/thanks_ja.txt</file>
+ <file>txt/translators_ja.txt</file>
+ <file>txt/description_ja.txt</file>
+
+ <file>txt/authors_es.txt</file>
+ <file>txt/thanks_es.txt</file>
+ <file>txt/translators_es.txt</file>
+ <file>txt/description_es.txt</file>
+
+ <file>default/balance.png</file>
+ <file>default/eqmain.png</file>
+ <file>default/numbers.png</file>
+ <file>default/pledit.txt</file>
+ <file>default/text.png</file>
+ <file>default/volume.png</file>
+ <file>default/cbuttons.png</file>
+ <file>default/main.png</file>
+ <file>default/playpaus.png</file>
+ <file>default/posbar.png</file>
+ <file>default/titlebar.png</file>
+ <file>default/eq_ex.png</file>
+ <file>default/monoster.png</file>
+ <file>default/pledit.png</file>
+ <file>default/shufrep.png</file>
+ <file>default/viscolor.txt</file>
+ </qresource>
+</RCC>
diff --git a/src/plugins/Ui/skinned/symboldisplay.cpp b/src/plugins/Ui/skinned/symboldisplay.cpp
new file mode 100644
index 000000000..e33533f08
--- /dev/null
+++ b/src/plugins/Ui/skinned/symboldisplay.cpp
@@ -0,0 +1,91 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 <QPainter>
+#include <math.h>
+
+#include "skin.h"
+
+#include "symboldisplay.h"
+
+SymbolDisplay::SymbolDisplay ( QWidget *parent, int digits )
+ : PixmapWidget ( parent ), m_digits ( digits ), m_text(), m_max(0)
+{
+ m_alignment = Qt::AlignRight;
+ m_skin = Skin::instance();
+ connect ( m_skin, SIGNAL ( skinChanged() ), this, SLOT (draw()));
+ draw();
+ for (int i=0; i<m_digits; ++i)
+#if defined(Q_OS_FREEBSD) || defined(Q_OS_WIN32) || defined (Q_OS_MAC)
+ m_max += 9 * (int) pow(10,i);
+#else
+ m_max += 9 * (int) exp10(i);
+#endif
+}
+
+
+SymbolDisplay::~SymbolDisplay()
+{}
+
+void SymbolDisplay::display (const QString& str)
+{
+ m_text = str;
+ if (!str.isEmpty())
+ draw();
+}
+
+void SymbolDisplay::draw()
+{
+ QString str = m_text;
+ QPixmap bg = m_skin->getLetter ( ' ' );
+ int w = bg.size().width();
+ int h = bg.size().height();
+ QPixmap tmp ( m_digits*w,h );
+ QPainter paint ( &tmp );
+ int j;
+ for ( int i = 0; i < m_digits; ++i )
+ {
+ if (m_alignment == Qt::AlignRight) // TODO: add align Center
+ {
+ j = str.size() -1 - i;
+ if ( j >= 0 )
+ paint.drawPixmap ( ( m_digits-1-i ) *w,0,m_skin->getLetter ( str.at ( j ) ) );
+ else
+ paint.drawPixmap ( ( m_digits-1-i ) *w,0,m_skin->getLetter ( ' ' ) );
+ }
+ else
+ {
+ if (i < str.size())
+ paint.drawPixmap ( i * w,0,m_skin->getLetter ( str.at ( i ) ) );
+ else
+ paint.drawPixmap ( i * w,0,m_skin->getLetter ( ' ' ) );
+ ;
+ }
+ }
+ setPixmap(tmp);
+}
+
+void SymbolDisplay::display(int val)
+{
+ if (val < m_max)
+ display(QString::number(val));
+ else
+ display(QString("%1h").arg(val/100));
+}
+
diff --git a/src/plugins/Ui/skinned/symboldisplay.h b/src/plugins/Ui/skinned/symboldisplay.h
new file mode 100644
index 000000000..720bad315
--- /dev/null
+++ b/src/plugins/Ui/skinned/symboldisplay.h
@@ -0,0 +1,67 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 SYMBOLDISPLAY_H
+#define SYMBOLDISPLAY_H
+
+#include <QPixmap>
+
+#include "pixmapwidget.h"
+
+/**
+ @author Vladimir Kuznetsov <vovanec@gmail.com>
+ */
+
+class Skin;
+
+class SymbolDisplay : public PixmapWidget
+{
+ Q_OBJECT
+public:
+ SymbolDisplay(QWidget *parent = 0, int digits = 3);
+
+ ~SymbolDisplay();
+
+ void setAlignment(Qt::Alignment a)
+ {
+ m_alignment = a;
+ }
+ Qt::Alignment alignment()const
+ {
+ return m_alignment;
+ }
+
+public slots:
+ void display(const QString&);
+ void display(int);
+
+private slots:
+ void draw();
+
+private:
+ Skin* m_skin;
+ QPixmap m_pixmap;
+ int m_digits;
+ QString m_text;
+ Qt::Alignment m_alignment;
+ int m_max;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/textscroller.cpp b/src/plugins/Ui/skinned/textscroller.cpp
new file mode 100644
index 000000000..1fac2a753
--- /dev/null
+++ b/src/plugins/Ui/skinned/textscroller.cpp
@@ -0,0 +1,314 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 <QPainter>
+#include <QTimer>
+#include <QSettings>
+#include <QAction>
+#include <QMenu>
+#include <QMouseEvent>
+#include <QSettings>
+#include <qmmp/qmmp.h>
+#include <qmmp/soundcore.h>
+#include <qmmpui/metadataformatter.h>
+#include "skin.h"
+#include "textscroller.h"
+
+#define SCROLL_SEP " *** "
+#define TITLE_FORMAT "%if(%p&%t,%p - %t,%p%t)%if(%p&%t,,%f)%if(%l, - %l,)"
+
+TextScroller::TextScroller (QWidget *parent)
+ : QWidget (parent)
+{
+ m_pressed = false;
+ m_press_pos = 0;
+ m_metrics = 0;
+ m_defautText = QString("Qmmp ") + Qmmp::strVersion();
+ m_core = SoundCore::instance();
+ m_skin = Skin::instance();
+ m_ratio = m_skin->ratio();
+
+ m_timer = new QTimer (this);
+ m_timer->setInterval(50);
+ m_timer->start();
+
+ m_menu = new QMenu(this);
+ m_scrollAction = m_menu->addAction(tr("Autoscroll Songname"));
+ m_scrollAction->setCheckable(true);
+ connect(m_scrollAction, SIGNAL(toggled(bool)), SLOT(updateText()));
+ connect(m_timer, SIGNAL (timeout()), SLOT (addOffset()));
+ connect(m_skin, SIGNAL(skinChanged()), SLOT(updateSkin()));
+ connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(processState(Qmmp::State)));
+ connect(m_core, SIGNAL(metaDataChanged()), SLOT(processMetaData()));
+ //readSettings();
+ updateSkin();
+}
+
+TextScroller::~TextScroller()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue("TextScroller/autoscroll", m_scrollAction->isChecked());
+ if(m_metrics)
+ delete m_metrics;
+}
+
+void TextScroller::setText(const QString &text)
+{
+ m_sliderText = text;
+ updateText();
+}
+
+void TextScroller::clear()
+{
+ setText(QString());
+}
+
+void TextScroller::addOffset()
+{
+ if(!m_scroll)
+ {
+ m_timer->stop();
+ return;
+ }
+ m_x1--;
+ m_x2--;
+ if(m_x1 < - m_pixmap.width())
+ m_x1 = m_pixmap.width();
+ if(m_x2 < - m_pixmap.width())
+ m_x2 = m_pixmap.width();
+ update();
+}
+
+void TextScroller::updateSkin()
+{
+ m_color.setNamedColor(m_skin->getPLValue("mbfg"));
+ setCursor(m_skin->getCursor(Skin::CUR_SONGNAME));
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ m_bitmap = settings.value("MainWindow/bitmap_font", false).toBool();
+ m_ratio = m_skin->ratio();
+ QString fontname = settings.value("MainWindow/Font").toString();
+ m_font.fromString(fontname);
+ if (m_metrics)
+ delete m_metrics;
+ else
+ m_scrollAction->setChecked(settings.value("TextScroller/autoscroll", true).toBool());
+ m_metrics = new QFontMetrics(m_font);
+ updateText();
+}
+
+void TextScroller::setProgress(int progress)
+{
+ m_bufferText = tr("Buffering: %1%").arg(progress);
+ updateText();
+}
+
+void TextScroller::hideEvent (QHideEvent *)
+{
+ m_timer->stop();
+}
+
+void TextScroller::showEvent (QShowEvent *)
+{
+ if (m_scroll)
+ m_timer->start();
+}
+
+inline void drawBitmapText(int x, int y, const QString &text, QPainter *paint, Skin *skin)
+{
+ QString lowertext = text.toLower();
+ int chwidth, ypix;
+ {
+ QPixmap samplechar = skin->getLetter('a');
+ chwidth = samplechar.width();
+ ypix = y - samplechar.height();
+ }
+ for (int i = 0; i < lowertext.size(); i++)
+ {
+ QPixmap pixchar = skin->getLetter(lowertext[i]);
+ paint->drawPixmap(x, ypix, pixchar);
+ x += chwidth;
+ }
+}
+
+void TextScroller::paintEvent (QPaintEvent *)
+{
+ QPainter paint(this);
+ if(m_scroll)
+ {
+ paint.drawPixmap(m_x1,0, m_pixmap);
+ paint.drawPixmap(m_x2,0, m_pixmap);
+ }
+ else
+ paint.drawPixmap(4,0, m_pixmap);
+}
+
+void TextScroller::mousePressEvent (QMouseEvent *e)
+{
+ if (e->button() == Qt::RightButton)
+ m_menu->exec(e->globalPos());
+ else if (e->button() == Qt::LeftButton && m_scroll)
+ {
+ m_timer->stop();
+ m_press_pos = e->x() - m_x1;
+ m_pressed = true;
+ }
+ else
+ QWidget::mousePressEvent(e);
+}
+
+void TextScroller::mouseReleaseEvent (QMouseEvent *e)
+{
+ if(e->button() == Qt::RightButton)
+ m_menu->exec(e->globalPos());
+ else if (e->button() == Qt::LeftButton && m_scroll)
+ m_timer->start();
+ else
+ QWidget::mouseReleaseEvent(e);
+ m_pressed = false;
+}
+
+void TextScroller::mouseMoveEvent (QMouseEvent *e)
+{
+ if (m_pressed)
+ {
+ int bound = m_pixmap.width();
+ m_x1 = (e->x() - m_press_pos) % bound;
+ if (m_x1 > 0)
+ m_x1 -= bound;
+ m_x2 = m_x1 + m_pixmap.width();
+ update();
+ }
+ else
+ QWidget::mouseMoveEvent(e);
+}
+
+void TextScroller::processState(Qmmp::State state)
+{
+ switch(state)
+ {
+ case Qmmp::Buffering:
+ {
+ connect(m_core, SIGNAL(bufferingProgress(int)), SLOT(setProgress(int)));
+ break;
+ }
+ case Qmmp::Playing:
+ {
+ disconnect(m_core, SIGNAL(bufferingProgress(int)), this, 0);
+ m_bufferText.clear();
+ updateText();
+ break;
+ }
+ case Qmmp::Paused:
+ {
+ break;
+ }
+ case Qmmp::Stopped:
+ {
+ m_bufferText.clear();
+ m_titleText.clear();
+ updateText();
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+void TextScroller::processMetaData()
+{
+ MetaDataFormatter formater(TITLE_FORMAT);
+ if(m_core->state() == Qmmp::Playing)
+ {
+ m_titleText = formater.parse(m_core->metaData(), m_core->totalTime()/1000);
+ updateText();
+ }
+}
+
+void TextScroller::preparePixmap(const QString &text, bool scrollable)
+{
+ m_scroll = scrollable;
+ bool bitmap = m_bitmap && (text.toLatin1() == text.toLocal8Bit()); //use bitmap font if possible
+ if(scrollable)
+ {
+ int textWidth = m_bitmap ? QString(text + SCROLL_SEP).size() * 5
+ : m_metrics->width(text + SCROLL_SEP);
+ int count = 150*m_ratio / textWidth + 1;
+ int width = count * textWidth;
+ QString fullText;
+ for(int i = 0; i < count; ++i)
+ {
+ fullText.append(text + SCROLL_SEP);
+ }
+ m_pixmap = QPixmap(width,15*m_ratio);
+ m_pixmap.fill(Qt::transparent);
+ QPainter painter(&m_pixmap);
+ painter.setPen(m_color);
+ painter.setFont(m_font);
+ if(m_bitmap)
+ drawBitmapText (0,12, fullText, &painter, m_skin);
+ else
+ painter.drawText (0,12, fullText);
+ m_x1 = 0;
+ m_x2 = m_pixmap.width();
+ }
+ else
+ {
+ m_pixmap = QPixmap(150*m_ratio,15*m_ratio);
+ m_pixmap.fill(Qt::transparent);
+ QPainter painter(&m_pixmap);
+ painter.setPen(m_color);
+ painter.setFont(m_font);
+ if(bitmap)
+ drawBitmapText (0,12, text, &painter, m_skin);
+ else
+ painter.drawText (0,12, text);
+ }
+}
+
+void TextScroller::updateText() //draw text according priority
+{
+ if(!m_sliderText.isEmpty())
+ {
+ preparePixmap(m_sliderText);
+ m_timer->stop();
+ }
+ else if(!m_bufferText.isEmpty())
+ {
+ preparePixmap(m_bufferText);
+ m_timer->stop();
+ }
+ else if (!m_titleText.isEmpty())
+ {
+ preparePixmap(m_titleText, m_scrollAction->isChecked());
+ m_timer->start();
+ }
+ else if(!m_defautText.isEmpty())
+ {
+ preparePixmap(m_defautText);
+ m_timer->stop();
+ }
+ else
+ {
+ m_timer->stop();
+ m_pixmap = QPixmap (150*m_ratio,15*m_ratio);
+ m_pixmap.fill(Qt::transparent);
+ m_scroll = false;
+ }
+ update();
+}
diff --git a/src/plugins/Ui/skinned/textscroller.h b/src/plugins/Ui/skinned/textscroller.h
new file mode 100644
index 000000000..3fe50bf7e
--- /dev/null
+++ b/src/plugins/Ui/skinned/textscroller.h
@@ -0,0 +1,81 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 TEXTSCROLLER_H
+#define TEXTSCROLLER_H
+
+#include <QWidget>
+#include <qmmp/qmmp.h>
+
+class QTimer;
+class QMenu;
+class QAction;
+class Skin;
+class SoundCore;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class TextScroller : public QWidget
+{
+Q_OBJECT
+public:
+ TextScroller(QWidget *parent = 0);
+ virtual ~TextScroller();
+
+ void setText(const QString &text);
+
+public slots:
+ void clear();
+
+private slots:
+ void setProgress(int);
+ void addOffset();
+ void updateSkin();
+ void processState(Qmmp::State state);
+ void processMetaData();
+ void updateText();
+
+private:
+ void hideEvent(QHideEvent *);
+ void showEvent(QShowEvent *);
+ void paintEvent(QPaintEvent *);
+ void mousePressEvent(QMouseEvent *);
+ void mouseReleaseEvent(QMouseEvent *);
+ void mouseMoveEvent(QMouseEvent *);
+ void preparePixmap(const QString &text, bool scrollable = false);
+ QString m_defautText;
+ QString m_bufferText;
+ QString m_sliderText;
+ QString m_titleText;
+ QPixmap m_pixmap;
+ int m_x1, m_x2, m_ratio;
+ bool m_scroll, m_bitmap, m_pressed;
+ int m_press_pos;
+ QFont m_font;
+ QFontMetrics *m_metrics;
+ Skin *m_skin;
+ QColor m_color;
+ QTimer *m_timer;
+ QMenu *m_menu;
+ QAction *m_scrollAction;
+ SoundCore *m_core;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/timeindicator.cpp b/src/plugins/Ui/skinned/timeindicator.cpp
new file mode 100644
index 000000000..02c185b36
--- /dev/null
+++ b/src/plugins/Ui/skinned/timeindicator.cpp
@@ -0,0 +1,139 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 <QPainter>
+#include <QSettings>
+#include <QMouseEvent>
+#include <QTimer>
+#include <qmmp/qmmp.h>
+
+#include "skin.h"
+#include "timeindicator.h"
+
+TimeIndicator::TimeIndicator (QWidget *parent)
+ : PixmapWidget (parent)
+{
+ m_skin = Skin::instance();
+ m_pixmap = QPixmap (65 * m_skin->ratio(),13 * m_skin->ratio());
+ m_elapsed = true;
+ m_time = m_songDuration = 0;
+ readSettings();
+ m_needToShowTime = false;
+ updateSkin();
+ reset();
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ m_timer = new QTimer(this);
+ m_timer->setInterval(125);
+ m_timer->setSingleShot (true);
+ connect(m_timer, SIGNAL(timeout()),SLOT(reset()));
+}
+
+void TimeIndicator::setTime (int t)
+{
+ m_time = t;
+ m_pixmap.fill (Qt::transparent);
+ int r = m_skin->ratio();
+ QPainter paint (&m_pixmap);
+
+ if (!m_elapsed)
+ {
+ t = m_songDuration - t;
+ paint.drawPixmap(r*2,0,m_skin->getNumber(10));
+ }
+ if (t < 0)
+ t = 0;
+
+ if(t > 3600)
+ t /= 60;
+
+ paint.drawPixmap(r*13,0,m_skin->getNumber(t/600%10));
+ paint.drawPixmap(r*26,0,m_skin->getNumber(t/60%10));
+ paint.drawPixmap(r*43,0,m_skin->getNumber(t%60/10));
+ paint.drawPixmap(r*56,0,m_skin->getNumber(t%60%10));
+
+ setPixmap (m_pixmap);
+
+}
+
+void TimeIndicator::reset()
+{
+ m_pixmap.fill (Qt::transparent);
+ QPainter paint (&m_pixmap);
+ setPixmap (m_pixmap );
+}
+
+void TimeIndicator::mousePressEvent(QMouseEvent* e)
+{
+ if (m_needToShowTime && e->button() & Qt::LeftButton)
+ {
+ m_elapsed = m_elapsed ? false : true;
+ setTime(m_time);
+ }
+ PixmapWidget::mousePressEvent(e);
+}
+
+void TimeIndicator::setSongDuration(int d)
+{
+ m_songDuration = d;
+}
+
+TimeIndicator::~TimeIndicator()
+{
+ writeSettings();
+}
+
+
+void TimeIndicator::updateSkin()
+{
+ m_pixmap = QPixmap (65 * m_skin->ratio(),13 * m_skin->ratio());
+ if (m_needToShowTime)
+ setTime(m_time);
+}
+
+void TimeIndicator::readSettings()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Display");
+ m_elapsed = settings.value("Elapsed",true).toBool();
+ settings.endGroup();
+}
+
+void TimeIndicator::writeSettings()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Display");
+ settings.setValue("Elapsed",m_elapsed);
+ settings.endGroup();
+}
+
+void TimeIndicator::setNeedToShowTime(bool need)
+{
+ m_needToShowTime = need;
+ if (!need)
+ m_timer->start();
+ else
+ m_timer->stop();
+}
+
+void TimeIndicator::mouseMoveEvent(QMouseEvent *)
+{}
+
+void TimeIndicator::mouseReleaseEvent(QMouseEvent *)
+{}
+
diff --git a/src/plugins/Ui/skinned/timeindicator.h b/src/plugins/Ui/skinned/timeindicator.h
new file mode 100644
index 000000000..55e74c43f
--- /dev/null
+++ b/src/plugins/Ui/skinned/timeindicator.h
@@ -0,0 +1,68 @@
+/***************************************************************************
+ * Copyright (C) 2006-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 TIMEINDICATOR_H
+#define TIMEINDICATOR_H
+
+#include "pixmapwidget.h"
+
+class QMouseEvent;
+class QTimer;
+
+class Skin;
+
+
+/** Class TimeIndicator
+ * @author Vladimir Kuznetsov <vovanec@gmail.com>
+ *
+ * Represents time indicator in the main display. Can show elapsed
+ * and rest time of song (mouse press on indicator changes mode)
+ */
+class TimeIndicator : public PixmapWidget
+{
+ Q_OBJECT
+public:
+ TimeIndicator(QWidget *parent = 0);
+ ~TimeIndicator();
+ void setTime ( int t );
+ void setSongDuration(int);
+ void setNeedToShowTime(bool);
+
+protected:
+ virtual void mousePressEvent(QMouseEvent*);
+ virtual void mouseMoveEvent(QMouseEvent*);
+ virtual void mouseReleaseEvent(QMouseEvent*);
+ void writeSettings();
+ void readSettings();
+
+private slots:
+ void updateSkin();
+ void reset();
+
+private:
+ QPixmap m_pixmap;
+ Skin *m_skin;
+ int m_time;
+ int m_songDuration;
+ bool m_elapsed;
+ bool m_needToShowTime;
+ QTimer *m_timer;
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/titlebar.cpp b/src/plugins/Ui/skinned/titlebar.cpp
new file mode 100644
index 000000000..52ba97d32
--- /dev/null
+++ b/src/plugins/Ui/skinned/titlebar.cpp
@@ -0,0 +1,223 @@
+/***************************************************************************
+ * Copyright (C) 2007-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 <QMainWindow>
+#include <QApplication>
+#include <QMouseEvent>
+#include <QMenu>
+#include <QSettings>
+
+#include "symboldisplay.h"
+#include "skin.h"
+#include "button.h"
+#include "dock.h"
+#include "titlebarcontrol.h"
+#include "shadedvisual.h"
+#include "display.h"
+#include "titlebar.h"
+
+// TODO skin cursor with shade mode
+TitleBar::TitleBar(QWidget *parent)
+ : PixmapWidget(parent)
+{
+ m_align = false;
+ m_skin = Skin::instance();
+ setPixmap(m_skin->getTitleBar(Skin::TITLEBAR_A));
+ m_mw = qobject_cast<MainWindow*>(parent->parent());
+ m_shaded = false;
+ m_shade2 = 0;
+ m_currentTime = 0;
+ m_control = 0;
+ m_visual = 0;
+ //buttons
+ m_menu = new Button(this,Skin::BT_MENU_N,Skin::BT_MENU_P, Skin::CUR_MAINMENU);
+ connect(m_menu,SIGNAL(clicked()),this,SLOT(showMainMenu()));
+ m_menu->move(6,3);
+ m_minimize = new Button(this,Skin::BT_MINIMIZE_N,Skin::BT_MINIMIZE_P, Skin::CUR_MIN);
+ connect(m_minimize, SIGNAL(clicked()), m_mw, SLOT(showMinimized()));
+ m_shade = new Button(this,Skin::BT_SHADE1_N,Skin::BT_SHADE1_P, Skin::CUR_WINBUT);
+ connect(m_shade, SIGNAL(clicked()), SLOT(shade()));
+ m_close = new Button(this,Skin::BT_CLOSE_N,Skin::BT_CLOSE_P, Skin::CUR_CLOSE);
+ connect(m_close, SIGNAL(clicked()), m_mw, SLOT(handleCloseRequest()));
+ setActive(false);
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ if (settings.value("Display/shaded", false).toBool())
+ shade();
+ m_align = true;
+ setCursor(m_skin->getCursor(Skin::CUR_TITLEBAR));
+ updatePositions();
+}
+
+TitleBar::~TitleBar()
+{
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.setValue("Display/shaded", m_shaded);
+}
+
+void TitleBar::updatePositions()
+{
+ int r = m_skin->ratio();
+ m_menu->move(r*6, r*3);
+ m_minimize->move(r*244, r*3);
+ m_shade->move(r*254, r*3);
+ m_close->move(r*264, r*3);
+ if(m_shade2)
+ m_shade2->move(r*254, r*3);
+ if(m_currentTime)
+ m_currentTime->move(r*127, r*4);
+ if(m_control)
+ m_control->move(r*168, r*2);
+ if(m_visual)
+ m_visual->move(r*79,r*5);
+}
+
+void TitleBar::mousePressEvent(QMouseEvent* event)
+{
+ switch ((int) event->button ())
+ {
+ case Qt::LeftButton:
+ m_pos = event->pos();
+ Dock::instance()->calculateDistances();
+ Dock::instance()->updateDock();
+ break;
+ case Qt::RightButton:
+ m_mw->menu()->exec(event->globalPos());
+ }
+}
+
+void TitleBar::mouseReleaseEvent(QMouseEvent*)
+{
+ Dock::instance()->updateDock();
+}
+void TitleBar::mouseMoveEvent(QMouseEvent* event)
+{
+ if (m_pos.x() < width() - m_skin->ratio() * 37)
+ {
+ QPoint npos = (event->globalPos()-m_pos);
+ Dock::instance()->move(m_mw, npos);
+ }
+}
+
+void TitleBar::setActive(bool a)
+{
+ if (a)
+ {
+ if (m_shaded)
+ setPixmap(m_skin->getTitleBar(Skin::TITLEBAR_SHADED_A));
+ else
+ setPixmap(m_skin->getTitleBar(Skin::TITLEBAR_A));
+ }
+ else
+ {
+ if (m_shaded)
+ setPixmap(m_skin->getTitleBar(Skin::TITLEBAR_SHADED_I));
+ else
+ setPixmap(m_skin->getTitleBar(Skin::TITLEBAR_I));
+ }
+}
+
+void TitleBar::updateSkin()
+{
+ setActive(false);
+ setCursor(m_skin->getCursor(Skin::CUR_TITLEBAR));
+ updatePositions();
+}
+
+void TitleBar::showMainMenu()
+{
+ m_mw->menu()->exec(m_menu->mapToGlobal(m_menu->pos()));
+}
+
+void TitleBar::shade()
+{
+ m_shaded = !m_shaded;
+ int r = m_skin->ratio();
+ if (m_shaded)
+ {
+ setPixmap(m_skin->getTitleBar(Skin::TITLEBAR_SHADED_A));
+ m_shade->hide();
+ m_shade2 = new Button(this,Skin::BT_SHADE2_N, Skin::BT_SHADE2_P, Skin::CUR_WSNORMAL);
+ connect(m_shade2, SIGNAL(clicked()), SLOT(shade()));
+ m_shade2->show();
+ m_currentTime = new SymbolDisplay(this, 6);
+ m_currentTime->show();
+ m_currentTime->display("--:--");
+ m_control = new TitleBarControl(this);
+ m_control->show();
+ connect (m_control, SIGNAL (nextClicked()), m_mw, SLOT (next()));
+ connect (m_control, SIGNAL (previousClicked()), m_mw, SLOT (previous()));
+ connect (m_control, SIGNAL (playClicked()), m_mw, SLOT (play()));
+ connect (m_control, SIGNAL (pauseClicked()), m_mw, SLOT (pause()));
+ connect (m_control, SIGNAL (stopClicked()), m_mw, SLOT (stop()));
+ connect (m_control, SIGNAL (ejectClicked()), m_mw, SLOT (addFile()));
+ m_visual = new ShadedVisual(this);
+ Visual::add(m_visual);
+ m_visual->show();
+ }
+ else
+ {
+ setPixmap(m_skin->getTitleBar(Skin::TITLEBAR_A));
+ m_shade2->deleteLater();
+ m_currentTime->deleteLater();
+ m_control->deleteLater();
+ Visual::remove(m_visual);
+ m_visual->deleteLater();
+ m_shade2 = 0;
+ m_currentTime = 0;
+ m_control = 0;
+ m_visual = 0;
+ m_shade->show();
+ }
+ qobject_cast<MainDisplay *> (parent())->setMinimalMode(m_shaded);
+ if (m_align)
+ Dock::instance()->align(m_mw, m_shaded? -r*102: r*102);
+ updatePositions();
+}
+
+void TitleBar::mouseDoubleClickEvent (QMouseEvent *)
+{
+ TitleBar::shade();
+}
+
+QString TitleBar::formatTime (int sec)
+{
+ int minutes = sec / 60;
+ int seconds = sec % 60;
+
+ QString str_minutes = QString::number (minutes);
+ QString str_seconds = QString::number (seconds);
+
+ if (minutes < 10) str_minutes.prepend ("0");
+ if (seconds < 10) str_seconds.prepend ("0");
+
+ return str_minutes + ":" + str_seconds;
+}
+
+void TitleBar::setTime(qint64 time)
+{
+ if (!m_currentTime)
+ return;
+ if (time < 0)
+ m_currentTime->display("--:--");
+ else
+ m_currentTime->display(formatTime(time/1000));
+}
+
diff --git a/src/plugins/Ui/skinned/titlebar.h b/src/plugins/Ui/skinned/titlebar.h
new file mode 100644
index 000000000..55f59f7cc
--- /dev/null
+++ b/src/plugins/Ui/skinned/titlebar.h
@@ -0,0 +1,85 @@
+/***************************************************************************
+ * Copyright (C) 2007-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 TITLEBAR_H
+#define TITLEBAR_H
+
+#include <QMainWindow>
+#include <QPoint>
+
+#include "pixmapwidget.h"
+#include "playlist.h"
+#include "mainwindow.h"
+
+class MainWindow;
+class QMouseEvent;
+class Skin;
+class Button;
+class SymbolDisplay;
+class TitleBarControl;
+class ShadedVisual;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class TitleBar : public PixmapWidget
+{
+Q_OBJECT
+public:
+ TitleBar(QWidget *parent = 0);
+
+ ~TitleBar();
+
+ void setActive(bool);
+
+public slots:
+ void setTime(qint64 time);
+
+private slots:
+ void updateSkin();
+ void showMainMenu();
+ void shade();
+
+private:
+ Skin *m_skin;
+ QPoint m_pos;
+ MainWindow *m_mw;
+ Button *m_menu;
+ Button *m_minimize;
+ Button *m_shade;
+ Button *m_shade2;
+ Button *m_close;
+ SymbolDisplay *m_currentTime;
+ QString formatTime (int);
+ bool m_shaded;
+ bool m_align;
+ TitleBarControl *m_control;
+ ShadedVisual *m_visual;
+ void updatePositions();
+
+protected:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+ void mouseDoubleClickEvent(QMouseEvent*);
+};
+
+
+
+#endif
diff --git a/src/plugins/Ui/skinned/titlebarcontrol.cpp b/src/plugins/Ui/skinned/titlebarcontrol.cpp
new file mode 100644
index 000000000..d4f064c75
--- /dev/null
+++ b/src/plugins/Ui/skinned/titlebarcontrol.cpp
@@ -0,0 +1,65 @@
+/***************************************************************************
+ * Copyright (C) 2007-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 <QMouseEvent>
+#include "skin.h"
+#include "titlebarcontrol.h"
+
+TitleBarControl::TitleBarControl(QWidget *parent) : QWidget(parent)
+{
+ //setAutoFillBackground(true);
+ m_ratio = Skin::instance()->ratio();
+ resize(m_ratio*57, m_ratio*10);
+ connect(Skin::instance(), SIGNAL(skinChanged()),SLOT(updateSkin()));
+}
+
+
+TitleBarControl::~TitleBarControl()
+{
+}
+
+void TitleBarControl::mousePressEvent (QMouseEvent *)
+{}
+
+void TitleBarControl::mouseReleaseEvent (QMouseEvent * event)
+{
+ QPoint pt = event->pos();
+ if(QRect(0,0,m_ratio*8,m_ratio*10).contains(pt))
+ emit previousClicked();
+ else if(QRect(m_ratio*8,0,m_ratio*11,m_ratio*10).contains(pt))
+ emit playClicked();
+ else if(QRect(m_ratio*19,0,m_ratio*10,m_ratio*10).contains(pt))
+ emit pauseClicked();
+ else if(QRect(m_ratio*29,0,m_ratio*8,m_ratio*10).contains(pt))
+ emit stopClicked();
+ else if(QRect(m_ratio*37,0,m_ratio*10,m_ratio*10).contains(pt))
+ emit nextClicked();
+ else if(QRect(m_ratio*47,0,m_ratio*10,m_ratio*10).contains(pt))
+ emit ejectClicked();
+}
+
+void TitleBarControl::mouseMoveEvent(QMouseEvent*)
+{}
+
+void TitleBarControl::updateSkin()
+{
+ m_ratio = Skin::instance()->ratio();
+ resize(m_ratio*57, m_ratio*10);
+}
diff --git a/src/plugins/Ui/skinned/titlebarcontrol.h b/src/plugins/Ui/skinned/titlebarcontrol.h
new file mode 100644
index 000000000..3631cce1d
--- /dev/null
+++ b/src/plugins/Ui/skinned/titlebarcontrol.h
@@ -0,0 +1,58 @@
+/***************************************************************************
+ * Copyright (C) 2007-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 TITLEBARCONTROL_H
+#define TITLEBARCONTROL_H
+
+#include <QWidget>
+
+class QMouseEvent;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class TitleBarControl : public QWidget
+{
+Q_OBJECT
+public:
+ TitleBarControl(QWidget *parent = 0);
+ ~TitleBarControl();
+
+signals:
+ void previousClicked();
+ void nextClicked();
+ void pauseClicked();
+ void playClicked();
+ void stopClicked();
+ void ejectClicked();
+
+protected:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+
+private slots:
+ void updateSkin();
+
+private:
+ int m_ratio;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/togglebutton.cpp b/src/plugins/Ui/skinned/togglebutton.cpp
new file mode 100644
index 000000000..994ac9f20
--- /dev/null
+++ b/src/plugins/Ui/skinned/togglebutton.cpp
@@ -0,0 +1,108 @@
+/***************************************************************************
+ * Copyright (C) 2007-2008 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * Based on Promoe, an XMMS2 Client *
+ * Copyright (C) 2005-2006 by XMMS2 Team *
+ * *
+ * 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 "skin.h"
+#include "togglebutton.h"
+#include <QMouseEvent>
+
+ToggleButton::ToggleButton ( QWidget *parent,uint on_n,uint on_p,uint off_n,uint off_p )
+ : PixmapWidget ( parent )
+{
+ m_on_n = on_n;
+ m_on_p = on_p;
+ m_off_n = off_n;
+ m_off_p = off_p;
+ m_on = false;
+ skin = Skin::instance();
+ setON ( false );
+ connect ( skin, SIGNAL ( skinChanged() ), this, SLOT ( updateSkin() ) );
+}
+
+
+ToggleButton::~ToggleButton()
+{}
+
+bool ToggleButton::isChecked()
+{
+ return m_on;
+}
+
+void ToggleButton::updateSkin()
+{
+ //setPixmap ( skin->getButton ( name_normal ) );
+ setON ( m_on );
+}
+
+void ToggleButton::click()
+{
+ m_on = !m_on;
+ setON (m_on);
+ emit clicked(m_on);
+}
+
+void ToggleButton::setON ( bool on )
+{
+ m_on = on;
+ if ( on )
+ setPixmap ( skin->getButton ( m_on_n ) );
+ else
+ setPixmap ( skin->getButton ( m_off_n ) );
+}
+void ToggleButton::mousePressEvent ( QMouseEvent* )
+{
+ m_cursorin = true;
+ m_old_on = m_on;
+ if ( m_on )
+ setPixmap ( skin->getButton ( m_off_p ) );
+ else
+ setPixmap ( skin->getButton ( m_on_p ) );
+}
+
+void ToggleButton::mouseReleaseEvent ( QMouseEvent* )
+{
+ if ( m_cursorin ) {
+ m_on = !m_old_on;
+ setON ( m_on );
+ emit clicked( m_on );
+ } else {
+ m_on = m_old_on;
+ setON ( m_on );
+ }
+}
+
+void ToggleButton::mouseMoveEvent (QMouseEvent *e)
+{
+ if ( !m_cursorin && rect().contains(e->pos()) ) {
+ m_cursorin = true;
+ if ( m_old_on )
+ setPixmap ( skin->getButton ( m_off_p ) );
+ else
+ setPixmap ( skin->getButton ( m_on_p ) );
+ } else if ( m_cursorin && !rect().contains(e->pos()) ) {
+ m_cursorin = false;
+ if ( m_old_on )
+ setPixmap ( skin->getButton ( m_on_n ) );
+ else
+ setPixmap ( skin->getButton ( m_off_n ) );
+ }
+}
diff --git a/src/plugins/Ui/skinned/togglebutton.h b/src/plugins/Ui/skinned/togglebutton.h
new file mode 100644
index 000000000..220d427cc
--- /dev/null
+++ b/src/plugins/Ui/skinned/togglebutton.h
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * Copyright (C) 2006 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 TOGGLEBUTTON_H
+#define TOGGLEBUTTON_H
+
+#include "pixmapwidget.h"
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class Skin;
+
+class ToggleButton : public PixmapWidget
+{
+Q_OBJECT
+public:
+ ToggleButton( QWidget *parent, uint on_n, uint on_p, uint off_n, uint off_p );
+
+ ~ToggleButton();
+
+ bool isChecked();
+
+signals:
+ void clicked(bool);
+
+public slots:
+ void setON(bool);
+ void click();
+
+private slots:
+ void updateSkin();
+
+private:
+ Skin *skin;
+ bool m_cursorin, m_old_on;
+ uint m_on_n, m_on_p, m_off_n, m_off_p;
+ bool m_on;
+
+protected:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+};
+
+
+#endif
diff --git a/src/plugins/Ui/skinned/translations/qmmp_cs.ts b/src/plugins/Ui/skinned/translations/qmmp_cs.ts
new file mode 100644
index 000000000..750283b44
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_cs.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>O Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>O aplikaci</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Autoři</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Poděkování</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Licence</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_cs.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_cs.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt-based Multimedia Player (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Verze:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_cs.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Vstupní moduly:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Výstupní moduly:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Vizualizační moduly:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Efektové moduly:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Obecné moduly:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Překladatelé</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_cs.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation type="unfinished">Pře&amp;hrát</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation type="unfinished">X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished">Pau&amp;za</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation type="unfinished">C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation type="unfinished">&amp;Stop</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation type="unfinished">V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation type="unfinished">&amp;Předchozí</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation type="unfinished">Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation type="unfinished">&amp;Další</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation type="unfinished">B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation type="unfinished">&amp;Přehrát/Pauza</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation type="unfinished">Mezerník</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation type="unfinished">J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation type="unfinished">&amp;Opakovat seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation type="unfinished">O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation type="unfinished">&amp;Opakovat stopu</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation type="unfinished">Ctrl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation type="unfinished">Za&amp;míchat</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation type="unfinished">M</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation type="unfinished">Přidat &amp;soubor</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation type="unfinished">F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation type="unfinished">Přidat &amp;adresář</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation type="unfinished">D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation type="unfinished">Přidat &amp;URL</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation type="unfinished">U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation type="unfinished">&amp;Odstranit vybrané</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation type="unfinished">Del</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation type="unfinished">Odstranit &amp;vše</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation type="unfinished">Odstranit &amp;nevybrané</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation type="unfinished">Odstranit nedostupné soubory</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation type="unfinished">Odstranit duplicity</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation type="unfinished">Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation type="unfinished">Invertovat výběr</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation type="unfinished">&amp;Zrušit výběr</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation type="unfinished">&amp;Vybrat vše</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation type="unfinished">Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation type="unfinished">Zobrazit &amp;informace o skladbě</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation type="unfinished">Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation type="unfinished">&amp;Nový seznam</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation type="unfinished">Ctrl+T</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished">O&amp;dstranit seznam</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation type="unfinished">Ctrl+W</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation type="unfinished">Načíst &amp;seznam</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation type="unfinished">O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation type="unfinished">&amp;Uložit seznam</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation type="unfinished">Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation type="unfinished">Vybrat další &amp;seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation type="unfinished">Ctrl+PgDown</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation type="unfinished">Vybrat předchozí &amp;seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation type="unfinished">Ctrl+PgUp</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation type="unfinished">Zobrazit &amp;seznamy skladeb</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation type="unfinished">P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation type="unfinished">&amp;Nastavení</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation type="unfinished">Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation type="unfinished">O &amp;aplikaci</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation type="unfinished">O knihovně &amp;Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation type="unfinished">U&amp;končit</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Přidat URL</translation>
+ </message>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Chyba</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>Přid&amp;at</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>Z&amp;rušit</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Přejít vpřed v seznamu skladeb</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Přejít zpět v seznamu skladeb</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Spustit přehrávání aktuální skladby</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation type="unfinished">Nevyprazdňovat seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Pozastavit aktuální skladbu</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Pozastavit, přehrává-li se, jinak přehrávat</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Zastavit aktuální skladbu</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Zobrazit dialog Přeskočit na soubor</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Nastavit hlasitost přehrávání (příklad: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Zobrazit/skrýt aplikaci</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Zobrazit dialog Přidat soubor</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Zobrazit dialog Přidat adresář</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Popis</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Soubor</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Umělec</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Stopa</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Vypnuto</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Protokoly</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Dekodéry</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Přehrávače</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Číslo stopy</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>Dvoumístné číslo stopy</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>Číslo disku</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Stav</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Skladatel</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Název souboru</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Cesta k souboru</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Žánr</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Rok</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Poznámka</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Nastavení Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Vzhled</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Moduly</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Pokročilé</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Témata</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Písma</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Přehrávač:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Seznam skladeb:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>Zisk při přehrávání</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Různé</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Použít bitmapové písmo, je-li dostupné</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Použít kurzory z tématu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Metadata</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Číst ze souborů metadata</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Zobrazení skladby</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Formát titulku:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Zobrazit čísla skladeb</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Zobrazit seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Zobrazit informace ve vyskakovacím okně</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Nastavení</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Informace</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Získat obrázek obalu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Použít samostatné obrázky</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Zahrnout soubory:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Vynechat soubory:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Hloubka rekurzivního hledání:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Přehrávání</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Po startu pokračovat v přehrávání</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Režim úpravy zisku při přehrávání:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Předzesílení:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Výchozí zisk:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Použít informaci o vrcholu k zabránění ořezu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Výstup:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation type="unfinished">ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16bitový výstup</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Síť</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Zobrazení</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Souborový dialog</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Povolit používání proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Adresa proxy:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Port proxy:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Použít autorizaci pro proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Uživatelské jméno:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Heslo:</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Sbalené téma</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Rozbalené téma</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Vizualizace</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Efekty</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Obecné</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Zvuk</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Používat softwarové ovládání hlasitosti</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Skrýt při zavření</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Spustit skryté</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Převést podtržítka na mezery</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Převést %20 na mezery</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Vybrat soubory s tématy</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Soubory s tématy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Přidat...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Obnovit</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Zobrazit protokol</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Průhlednost</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Hlavní okno</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Ekvalizér</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation type="unfinished">Ekvalizér</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>předvolba</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Načíst/Odstranit</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Uložit předvolbu</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>Uložit &amp;automatickou předvolbu</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importovat</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Vynulovat</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Uložení předvolby</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Název předvolby:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>předvolba #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Importovat předvolbu</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Vyřadit</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>Zařadit</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Přeskočit na skladbu</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filtr</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Načíst znovu</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Přeskočit na</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Předchozí</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Přehrát</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Pozastavit</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Zastavit</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Další</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Přidat soubor</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Ekvalizér</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Opakovat seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Zamíchat</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Hlasitost</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Vyvážení</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Režim vizualizace</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Frekvenční analýza</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Osciloskop</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Vypnuto</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Režim analýzy</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Normální</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Oheň</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Sloupce</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Úzké</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Široké</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Špičky</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Obnovovací frekvence</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 Hz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 Hz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 Hz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 Hz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Pokles analyzátoru</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Nejpomalejší</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Pomalý</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Střední</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Rychlý</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Nejrychlejší</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Pokles špiček</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Pozadí</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Průhledné</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Výběr adresáře</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Vyberte jeden či více souborů k otevření</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>Přeskočit na soubo&amp;r</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation type="unfinished">Zobrazení</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Seznamy skladeb</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Načíst seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Uložit seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Všechny podporované formáty</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Nástroje</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Seřadit seznam</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Podle názvu skladby</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>Podle alba</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>Podle umělce</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Podle názvu souboru</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>Podle cesty a názvu souboru</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Podle data</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Seřadit výběr</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Zamíchat seznam</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Obrátit pořadí seznamu</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Podle čísla skladby</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Činnosti</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Prohlížeč seznamů skladeb</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Nový</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Přejmenovat</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Načíst</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>Uložit j&amp;ako...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Přejmenovat</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>O&amp;dstranit</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Přejmenovat seznam skladeb</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Název seznamu skladeb:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Nastavení informací ve vyskakovacím okně</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Zobrazit obal</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Průhlednost:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Prodleva:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Velikost obalu:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Šablona</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Původní</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Vložit</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Umělec</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Název</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Číslo stopy</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>Dvoumístné číslo stopy</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Žánr</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Poznámka</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Skladatel</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Délka</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>Číslo disku</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Název souboru</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Cesta k souboru</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Rok</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Stav</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Editor předvoleb</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Načíst</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Odstranit</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Předvolba</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Automatická předvolba</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Použití: qmmp [volby] [soubory]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Volby:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Vypsat číslo verze a skončit</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Nápady, patche, hlášení chyb posílejte na forkotov02@hotmail.ru (anglicky)</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Zobrazit tento text a skončit</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Neznámý příkaz</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Verze QMMP:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Verze Qt:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Automaticky rolovat název skladby</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Vizualizace</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_de.ts b/src/plugins/Ui/skinned/translations/qmmp_de.ts
new file mode 100644
index 000000000..9c5968ee3
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_de.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de_DE">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>Über Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>Info</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Autoren</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Dank an</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Lizenz</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_de.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_de.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt-basierter Multimedia-Player (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Version:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_de.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Eingabe-Module:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Ausgabe-Module:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Visualisierungsmodule:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Effekt-Module:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Sonstige Module:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Übersetzer</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_de.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>&amp;Wiedergabe</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pause</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation>C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>&amp;Stopp</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>&amp;Vorheriger Titel</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Nächster Titel</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>Wieder&amp;gabe/Pause</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation>Leertaste</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation>&amp;Zu Datei springen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>W&amp;iedergabeliste wiederholen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>Tite&amp;l wiederholen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation>Strg+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>&amp;Zufallswiedergabe</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation>S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation>Strg+N</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation>Strg+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>Wartes&amp;chlange löschen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation>Alt+Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>Wiedergabeliste anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation>Alt+E</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>Equalizer anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation>Alt+G</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>Immer im Vordergrund</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>Auf allen Arbeitsflächen anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>Doppelte Größe</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation>Meta+D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>&amp;Datei hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation>F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>&amp;Verzeichnis hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>&amp;URL hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>&amp;Ausgewählte entfernen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation>Entf</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>Alle &amp;entfernen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>&amp;Nicht ausgewählte entfernen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>Nichtverfügbare Dateien entfernen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>Duplikate entfernen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>Auswahl umkehren</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>&amp;Auswahl aufheben</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>Alle aus&amp;wählen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation>Strg+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>&amp;Titeldetails anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>&amp;Neue Wiedergabeliste</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation>Strg+T</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>Wie&amp;dergabeliste löschen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation>Strg+W</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>Wiedergabeliste &amp;laden</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>Wiedergabeliste &amp;speichern</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation>Umschalt+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>Näch&amp;ste Wiedergabeliste auswählen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation>Strg+Bild ab</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>Vorherige Wiedergabeli&amp;ste auswählen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation>Strg+Bild auf</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>Wiedergabeli&amp;sten anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation>P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>Ein&amp;stellungen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation>Strg+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>Ü&amp;ber</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>Übe&amp;r Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>Be&amp;enden</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation>Strg+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Hinzuzufügende URL eingeben</translation>
+ </message>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Fehler</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Abbrechen</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Nächsten Titel in Wiedergabeliste abspielen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Vorherigen Titel in Wiedergabeliste abspielen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Aktuellen Titel abspielen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>Titel an Wiedergabeliste anhängen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Aktuellen Titel anhalten</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Wiedergabe anhalten oder fortsetzen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Aktuellen Titel stoppen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>„Springe zu Titel“-Dialog anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Lautstärke der Wiedergabe einstellen (Beispiel: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Anwendung ein-/ausblenden</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>„Datei hinzufügen“-Dialog anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>„Verzeichnis hinzufügen“-Dialog anzeigen</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Beschreibung</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Dateiname</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Interpret</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Stück</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Deaktiviert</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Transporte</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Dekoder</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>Verschiedenes</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Titel</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Stücknummer</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>Zweistellige Stücknummer</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>CD-Nummer</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Zustand</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Genre</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Komponist</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Dateiname</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Dateipfad</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Jahr</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Kommentar</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Einstellungen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Erscheinungsbild</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Wiedergabeliste</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Module</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Erweitert</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Designs</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Schriftarten</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Player:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Wiedergabeliste:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>Replay Gain</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Verschiedenes</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Bitmap-Schriftart verwenden, falls verfügbar</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Design-Mauszeiger verwenden</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>Kurzbefehle</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Metadaten</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Metadaten aus Dateien laden</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Titelanzeige</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Titelformat:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Titelnummern anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Wiedergabelisten anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Informationen in einem Aufklapp-Fenster anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation type="unfinished">Stücknummern ausrichten</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Konfiguration</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Information</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Holen von Cover-Bildern</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Separate Bilddateien verwenden</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Einzubeziehende Dateien:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Auszuschließende Dateien:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Rekursive Suchtiefe:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Wiedergabe</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Wiedergabe beim Start fortsetzen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Replay-Gain-Modus:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Vorverstärkung:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Peak-Informationen verwenden, um Clipping zu verhindern</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Ausgabe:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>Puffergröße:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16-Bit-Ausgabe</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>Aktion</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>Kurzbefehl</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>Kurzbefehl ändern ...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Verbindung</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Ansicht</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>Vorlage bearbeiten</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Datei-Dialog</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Proxyserver</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Proxyserver verwenden</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Name des Proxyservers:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Port:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Authentisierung verwenden</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Benutzername:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Passwort:</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Archiviertes Design</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Nicht archiviertes Design</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Visualisierung</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Effekte</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Sonstige</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Softwaregesteuerte Lautstärkeregelung</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Beim Schließen in den Systemabschnitt der Kontrollleiste minimieren</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Minimiert starten</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Unterstriche in Leerzeichen umwandeln</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>%20 in Leerzeichen umwandeln</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Design-Dateien auswählen</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Design-Dateien</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Hinzufügen...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Aktualisieren</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Protokoll anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Transparenz</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Hauptfenster</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Equalizer</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>Equalizer</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>Voreinstellung</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Laden/Löschen</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Voreinstellung speichern</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Automatische Voreinstellungen speichern</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importieren</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Zurücksetzen</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Voreinstellung speichern</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Name der Voreinstellung:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>Voreinstellung #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Voreinstellung importieren</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Aus Warteschlange entfernen</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>In Warteschlange</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Zu Titel springen</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filter</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Aktualisieren</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Springen zu</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Vorheriger Titel</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Wiedergabe</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Pause</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Stopp</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Nächster Titel</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Datei hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Equalizer</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Wiedergabeliste</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Wiedergabeliste wiederholen</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Zufallswiedergabe</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Lautstärke</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Balance</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>Lautstärke: %1 %</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>Balance: %1 % rechts</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>Balance: %1 % links</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>Balance: Mitte</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>Springen zu: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Visualisierungsmodus</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Analyzer</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Oszilloskop</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Aus</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Analyzer-Modus</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Normal</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Feuer</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Vertikale Linien</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Linien</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Balken</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Spitzen</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Wiederholfrequenz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Analyzer-Abfall</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Sehr langsam</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Langsam</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Mittel</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Schnell</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Sehr schnell</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Abfallen der Spitzen</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Hintergrund</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Transparent</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Verzeichnis wählen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Dateien hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>Springe zu &amp;Titel</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>Ansicht</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>Wiedergabeliste</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Wiedergabelisten</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Wiedergabeliste öffnen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Wiedergabeliste speichern</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Alle unterstützten Formate</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Werkzeuge</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Wiedergabeliste sortieren</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Nach Titel</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>Nach Album</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>Nach Interpret</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Nach Dateinamen</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>Nach Pfad + Dateinamen</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Nach Datum</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Auswahl sortieren</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Wiedergabeliste mischen</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Wiedergabeliste umkehren</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>&amp;Neue Wiedergabeliste</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>Auswahl kopieren na&amp;ch</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>Wiedergabeliste</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Nach Titelnummer</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Aktionen</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Wiedergabelisten durchsuchen</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Neu</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Löschen</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>…</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Umbenennen</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Laden</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>&amp;Speichern unter …</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Umbenennen</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>L&amp;öschen</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Wiedergabeliste umbenennen</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Name der Wiedergabeliste:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Einstellungen Aufklapp-Informationen</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Cover anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Transparenz:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Verzögerung:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Cover-Größe:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Vorlage</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Zurücksetzen</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Einfügen</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Interpret</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Titel</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Stücknummer</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>Zweistellige Stücknummer</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Genre</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Kommentar</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Komponist</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Abspieldauer</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>CD-Nummer</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Dateiname</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Dateipfad</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Jahr</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Zustand</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Bearbeiten der Voreinstellungen</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Laden</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Löschen</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Voreinstellung</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Automatische Voreinstellung</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Aufruf: qmmp [Optionen] [Dateien]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Optionen:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>Die Anwendung nicht starten</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Gibt die Versionsnummer aus</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Ideen, Patches und Bugreports an &lt;forkotov02@hotmail.ru&gt; senden</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Zeigt diesen Hilfetext an</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Unbekannter Befehl</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Qmmp-Version:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Qt-Version:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>Kurzbefehl ändern</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>Drücken Sie die Tastenkombination, die Sie zuweisen möchten</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>Löschen</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Automatischer Bildlauf des Titelnamens</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>Pufferung: %1 %</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Visualisierung</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_es.ts b/src/plugins/Ui/skinned/translations/qmmp_es.ts
new file mode 100644
index 000000000..b83b3fc59
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_es.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="es">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>Acerca de Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>Acerca de</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Contrato de licencia</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Autores</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Gracias a</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_es.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_es.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt-based Multimedia Player (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Versión:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_es.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Módulos de entrada: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Módulos de salida: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Módulos visuales: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Módulos de efectos: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Módulos generales: </translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Traductores</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_es.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>&amp;Reproducir</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pausar</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation>C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>&amp;Detener</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>&amp;Anterior</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Siguiente</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>&amp;Reproducir/Pausar</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation>Espacio</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation>&amp;Ir al archivo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>&amp;Repetir la lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>&amp;Repetir pista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation>Ctrl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>&amp;Revolver</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation>S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation>&amp;No avanzar en la lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation>Ctrl+N</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation>&amp;Parar tras los seleccionados</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation>Ctrl+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>&amp;Limpiar la Cola</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation>Alt+Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>Mostrar la lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation>Alt+E</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>Mostrar el ecualizador</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation>Alt+G</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>Siempre encima</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>Ver en todos los escritorios</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>Tamaño doble</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>&amp;Añadir archivo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation>F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>&amp;Añadir directorio</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>&amp;Añadir URL</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>&amp;Eliminar los seleccionados</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation>Supr</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>&amp;Eliminar todo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>&amp;Eliminar los no seleccionados</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>Eliminar los archivos no disponibles</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>Eliminar los duplicados</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation>&amp;Cambiar de cola</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>Invertir la selección</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>&amp;No seleccionar nada</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>&amp;Seleccionar todo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation>Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>&amp;Ver detalles de la pista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>&amp;Lista nueva</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation>Ctrl+T</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>&amp;Borrar la lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation>Ctrl+W</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>&amp;Cargar una lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>&amp;Guardar la lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation>Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>&amp;Seleccionar la lista siguiente</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation>Ctrl+AvPág</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>&amp;Seleccionar la lista anterior</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation>Ctrl+RePág</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>&amp;Mostrar las listas</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation>P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>&amp;Configuración</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation>Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>&amp;Acerca de</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>&amp;Acerca de Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>&amp;Salir</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation>Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Introduzca la URL a añadir</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Añadir</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Avanzar en la lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Retroceder en la lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Empezar reproduciendo la canción actual</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>No limpiar la lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Pausar la canción actual</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Pausar si se está reproduciendo, o viceversa</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Detener la canción actual</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Mostrar el diálogo Saltar a archivo</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Cambiar el volumen de reproducción (ejemplo: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Mostrar/ocultar aplicación</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Mostrar el diálogo Añadir archivo</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Mostrar el diálogo Añadir directorio</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Descripción</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Nombre del archivo</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Intérprete</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Pista</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Deshabilitado</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Transportes</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Decodificadores</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Motores</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>Varios</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Título</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Número de pista</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>Número de pista con dos cifras</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>Número de disco</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Condición</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Género</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Compositor</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Nombre del archivo</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Ruta del archivo</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Año</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Comentario</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Configuración de Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Pieles</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Fuentes</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Reproductor: </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Lista de reproducción: </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Metainformación</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Cargar la metainformación de los archivos</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Mostrar la canción</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Formato del título: </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Preferencias</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Información</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Aspecto</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Módulos</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Avanzado</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>Salida de 16 bits</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Piel archivada</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Piel no archivada</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Conectividad</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Visualización</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Efectos</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>General</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Diálogo de archivos</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Sonido</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>Normalización</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Varios</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Usar fuente bitmap si está disponible</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Usar pieles en cursor</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Mostrar los números de canción</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Mostrar la lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Mostrar información emergente</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Método de normalización:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Preamp:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Normalización predeterminada:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Procesar picos para evitar cortes</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Salida:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>Tamaño del buffer:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Usar control de volumen por software</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Ver</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>Atajos</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Esconder al cerrar</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Iniciar oculto</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>Editar la plantilla</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation>Mostrar ancla</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation>Alinear los números de canción</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Obtener las imagenes de carátula</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Usar archivos de imágen separados</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Incluir archivos:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Excluir archivos:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Profundidad de la búsqueda recursiva:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Reproducción</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Continuar la reproducción al iniciar</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Habilitar el uso de proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Nombre del servidor proxy: </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Puerto del proxy: </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Usar autentificación con el proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Usuario del proxy:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Contraseña del proxy:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>Acción</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>Atajo</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>Cambiar atajo...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Convertir los guiones bajos en espacios</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Convertir los %20 en espacios</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Seleccionar archivos de pieles</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Archivos de pieles</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Añadir...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Actualizar</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Motrar protocolo</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Transparencia</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Ventana principal</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Ecualizador</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>preprogramado</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Cargar/Eliminar</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Guardar preprogramado</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Guardar preprogramado autocargable</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Limpiar</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Guardando preprogramado</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Nombre del preprogramado:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>Preprogramado nº</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importar</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>Ecualizador</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Importar preprogramado</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Desencolar</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>Encolar</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Saltar hasta pista</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filtrar</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Actualizar</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Saltar a</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Reproducir</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Pausar</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Detener</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Siguiente</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Añadir archivo</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Ecualizador</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Repetir la lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Revolver</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Volumen</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Balance</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>Volumen: %1%</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>Balance: %1% derecha</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>Balance: %1% izquierda</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>Balance: centro</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>Ir hasta: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Modo de visualización</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Analizador</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Osciloscopio</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Apagado</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Modo del analizador</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Normal</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Fuego</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Líneas verticales</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Líneas</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Barras</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Picos</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Velocidad de actualización</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Caída del analizador</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Muy lenta</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Lenta</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Rápida</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Muy rápida</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Caída de picos</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Fondo</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Transparente</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Seleccione un directorio</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Seleccione uno o más archivos para abrir</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Saltar a archivo</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>Ver</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>Lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Abrir la lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Guardar la lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Archivos a reproducir</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Todos los flujos soportados</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Herramientas</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>&amp;Copiar la selección a</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Ordenar la lista</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Por título</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>Por album</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>Por intérprete</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Por nombre de archivo</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>Por ruta + nombre</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Por fecha</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Ordenar la selección</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Lista aleatoria</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Invertir la lista</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>&amp;Lista nueva</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Por número de pista</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>Lista de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Acciones</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Navegador de listas de reproducción</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Nueva</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Borrar</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Renombrar</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Cargar</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>&amp;Guardar como...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Renombrar</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Borrar</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Renombrar lista</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Nombre de la lista:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Configuración de información emergente</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Mostrar carátula</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Transparencia:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Retardo:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Tamaño de la carátula:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Plantilla</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Reiniciar</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Insertar</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Intérprete</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Título</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Número de pista</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>Número de pista con dos cifras</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Género</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Comentario</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Compositor</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Duración</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>Número de disco</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Nombre del archivo</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Ruta del archivo</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Año</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Condición</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Editor de preprogamados</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Cargar</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Borrar</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Preprogramado</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Automático</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Uso: qmmp [opciones] [archivos]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Opciones: </translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Mostrar el número de versión y salir</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Enviar ideas, parches, errores a: forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Versión de Qt:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Muestra este texto y sale</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Comando desconocido</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>No iniciar la aplicación</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Versión de QMMP: </translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>Cambiar atajo</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>Pulse la combinación de teclas que quiere asignar</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>Borrar</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Autodesplazar el nombre de la canción</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>Cargando: %1%</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Visualización</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_fr.ts b/src/plugins/Ui/skinned/translations/qmmp_fr.ts
new file mode 100644
index 000000000..2541e7a62
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_fr.ts
@@ -0,0 +1,1081 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS><TS version="1.1" language="fr">
+<defaultcodec></defaultcodec>
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="13"/>
+ <source>About Qmmp</source>
+ <translation>À propos de Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="51"/>
+ <source>About</source>
+ <translation>À propos</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="158"/>
+ <source>License Agreement</source>
+ <translation>Contrat de licence</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="83"/>
+ <source>Authors</source>
+ <translation>Auteurs</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="129"/>
+ <source>Thanks To</source>
+ <translation>Remerciements</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="60"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_fr.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_fr.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="80"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt-based Multimedia Player (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Version:</source>
+ <translation>Version : </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_fr.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>Input plugins:</source>
+ <translation>Modules d&apos;entrée : </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="92"/>
+ <source>Output plugins:</source>
+ <translation>Modules de sortie : </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="101"/>
+ <source>Visual plugins:</source>
+ <translation>Modules de visualisation : </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="110"/>
+ <source>Effect plugins:</source>
+ <translation>Мodules d&apos;effets : </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="119"/>
+ <source>General plugins:</source>
+ <translation>Modules généraux : </translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="115"/>
+ <source>Translators</source>
+ <translation>Traducteurs</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_fr.txt</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="111"/>
+ <source>Error</source>
+ <translation>Erreur</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Saisir un flux Internet</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Ajouter</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuler</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="69"/>
+ <source>Skip forward in playlist</source>
+ <translation>Avancer dans la liste de lecture</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Reculer dans la liste de lecture</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Start playing current song</source>
+ <translation>Démarrer la lecture du morceau courant</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Pause current song</source>
+ <translation>Mettre en pause le morceau courant</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="67"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Mettre en pause si le morceau est joué ; autrement, le jouer</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="68"/>
+ <source>Stop current song</source>
+ <translation>Arrêter le morceau courant</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="70"/>
+ <source>Set playback volume(example: qmmp --volume20, qmmp --volume100)</source>
+ <translation>Configurer le volume de lecture (exemple: qmmp --volume20, qmmp --volume100)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="71"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Afficher la boîte de dialogue « Aller au fichier »</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="72"/>
+ <source>Show/hide application</source>
+ <translation>Afficher ou cacher Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="73"/>
+ <source>Display Add File dialog</source>
+ <translation>Afficher la boîte de dialogue « Ajouter un fichier »</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="75"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Afficher la boîte de dialogue « Ajouter un dossier »</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../configdialog.cpp" line="330"/>
+ <source>Enabled</source>
+ <translation>Activé</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="330"/>
+ <source>Description</source>
+ <translation>Description</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="515"/>
+ <source>Filename</source>
+ <translation>Nom du fichier</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="510"/>
+ <source>Artist</source>
+ <translation>Artiste</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="511"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="512"/>
+ <source>Title</source>
+ <translation>Titre</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="513"/>
+ <source>Tracknumber</source>
+ <translation>Numéro de piste</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="514"/>
+ <source>Genre</source>
+ <translation>Genre</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="516"/>
+ <source>Filepath</source>
+ <translation>Emplacement du fichier</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="517"/>
+ <source>Date</source>
+ <translation>Date</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="518"/>
+ <source>Year</source>
+ <translation>Année</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="519"/>
+ <source>Comment</source>
+ <translation>Commentaire</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="13"/>
+ <source>Qmmp Settings</source>
+ <translation>Configuration de Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="174"/>
+ <source>Skins</source>
+ <translation>Thèmes</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="217"/>
+ <source>Fonts</source>
+ <translation>Polices</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="247"/>
+ <source>Player:</source>
+ <translation>Lecteur : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="263"/>
+ <source>Playlist:</source>
+ <translation>Liste de lecture : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="299"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="373"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="320"/>
+ <source>Metadata</source>
+ <translation>Méta-données</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="344"/>
+ <source>Load metadata from files</source>
+ <translation>Charger les méta-données depuis les fichiers</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="354"/>
+ <source>Song Display</source>
+ <translation>Affichage du morceau</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="360"/>
+ <source>Title format:</source>
+ <translation>Format du titre : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="476"/>
+ <source>Input</source>
+ <translation>Entrée</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="514"/>
+ <source>Output</source>
+ <translation>Sortie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Preferences</source>
+ <translation>Préférences</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="646"/>
+ <source>Information</source>
+ <translation>Information</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="100"/>
+ <source>Appearance</source>
+ <translation>Apparence</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="108"/>
+ <source>Playlist</source>
+ <translation>Liste de lecture</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Modules</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="124"/>
+ <source>Advanced</source>
+ <translation>Avancé</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="827"/>
+ <source>Close</source>
+ <translation>Fermer</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="166"/>
+ <source>Archived skin</source>
+ <translation>Thème archivé</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="188"/>
+ <source>Unarchived skin</source>
+ <translation>Thème non-archivé</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="132"/>
+ <source>Connectivity</source>
+ <translation>Connectivité</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="546"/>
+ <source>Visualization</source>
+ <translation>Visualisation</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="563"/>
+ <source>Effects</source>
+ <translation>Effets</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="577"/>
+ <source>General</source>
+ <translation>Général</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="637"/>
+ <source>File Dialog</source>
+ <translation>Boîte de dialogue des fichiers</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="598"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="604"/>
+ <source>Use software volume control</source>
+ <translation>Utiliser le contrôle du volume logiciel</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="614"/>
+ <source>Visibility Control</source>
+ <translation>Contrôle de l&apos;affichage</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="620"/>
+ <source>Hide on close</source>
+ <translation>Masquer à la fermeture</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="627"/>
+ <source>Start hidden</source>
+ <translation>Démarrer masqué</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="698"/>
+ <source>Enable proxy usage</source>
+ <translation>Activer l&apos;utilisation du serveur mandataire</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="705"/>
+ <source>Proxy host name:</source>
+ <translation>Nom du serveur : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="718"/>
+ <source>Proxy port:</source>
+ <translation>Port du serveur : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="731"/>
+ <source>Use authentication with proxy</source>
+ <translation>Utiliser l&apos;authentification avec le serveur mandataire</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="738"/>
+ <source>Proxy user name:</source>
+ <translation>Nom d&apos;utilisateur : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="751"/>
+ <source>Proxy password:</source>
+ <translation>Mot de passe : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="380"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Remplacer les caractères « _ » par des espaces</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="387"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Remplacer les caractères « %20 » par des espaces</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="394"/>
+ <source>Show full path of a stream</source>
+ <translation>Afficher l&apos;emplacement complet d&apos;un flux</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="175"/>
+ <source>preset</source>
+ <translation>réglage</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Charger / Supprimer</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Enregistrer un réglage</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="264"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Enregistrer un réglage automatiquement-chargé</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Effacer</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="296"/>
+ <source>Saving Preset</source>
+ <translation>Réglage en cours d&apos;enregistrement</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="297"/>
+ <source>Preset name:</source>
+ <translation>Nom du réglage : </translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="298"/>
+ <source>preset #</source>
+ <translation>réglage #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importer</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Importer un réglage</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="123"/>
+ <source>Unqueue</source>
+ <translation>Supprimer de la file d&apos;attente</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="125"/>
+ <source>Queue</source>
+ <translation>Mettre dans la file d&apos;attente</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="13"/>
+ <source>Jump To Track</source>
+ <translation>Aller au morceau</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="33"/>
+ <source>Filter</source>
+ <translation>Filtre</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="86"/>
+ <source>Refresh</source>
+ <translation>Rafraîchir</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="93"/>
+ <source>Jump To</source>
+ <translation>Aller à</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="100"/>
+ <source>Close</source>
+ <translation>Fermer</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="303"/>
+ <source>Visualization Mode</source>
+ <translation>Visualisation</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="306"/>
+ <source>Analyzer</source>
+ <translation>Analyseur</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="307"/>
+ <source>Scope</source>
+ <translation>Oscilloscope</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="308"/>
+ <source>Off</source>
+ <translation>Arrêt</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="315"/>
+ <source>Analyzer Mode</source>
+ <translation>Mode analyseur</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="318"/>
+ <source>Normal</source>
+ <translation>Normal</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>Fire</source>
+ <translation>Feu</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>Vertical Lines</source>
+ <translation>Lignes verticales</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>Lines</source>
+ <translation>Lignes</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>Bars</source>
+ <translation>Barres</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <source>Peaks</source>
+ <translation>Pics</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="339"/>
+ <source>Refresh Rate</source>
+ <translation>Rafraîchir le taux</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="342"/>
+ <source>50 fps</source>
+ <translation>50 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>25 fps</source>
+ <translation>25 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="344"/>
+ <source>10 fps</source>
+ <translation>10 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="345"/>
+ <source>5 fps</source>
+ <translation>5 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="352"/>
+ <source>Analyzer Falloff</source>
+ <translation>Retombée de l&apos;analyseur</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="369"/>
+ <source>Slowest</source>
+ <translation>Très lente</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="370"/>
+ <source>Slow</source>
+ <translation>Lente</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="371"/>
+ <source>Medium</source>
+ <translation>Moyenne</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="372"/>
+ <source>Fast</source>
+ <translation>Rapide</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="373"/>
+ <source>Fastest</source>
+ <translation>Très rapide</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="366"/>
+ <source>Peaks Falloff</source>
+ <translation>Retombée des pics</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="379"/>
+ <source>Background</source>
+ <translation>Arrière-plan</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="380"/>
+ <source>Transparent</source>
+ <translation>Transparent</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="640"/>
+ <source>Default</source>
+ <translation>Défaut</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="440"/>
+ <source>Choose a directory</source>
+ <translation>Choisir un dossier</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="450"/>
+ <source>Select one or more files to open</source>
+ <translation>Sélectionner un ou plusieurs fichiers à ouvrir</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="574"/>
+ <source>&amp;Play</source>
+ <translation>&amp;Jouer</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="574"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="575"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pause</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="575"/>
+ <source>C</source>
+ <translation>C</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="576"/>
+ <source>&amp;Stop</source>
+ <translation>&amp;Arrêter</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="576"/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="577"/>
+ <source>&amp;Previous</source>
+ <translation>&amp;Précédent</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="577"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="578"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Suivant</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="578"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="581"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Aller au fichier</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="581"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="587"/>
+ <source>&amp;Settings</source>
+ <translation>&amp;Configuration</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="587"/>
+ <source>Ctrl+P</source>
+ <translation>Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="593"/>
+ <source>&amp;Exit</source>
+ <translation>&amp;Quitter</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="593"/>
+ <source>Ctrl+Q</source>
+ <translation>Ctrl+Q</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="654"/>
+ <source>Open Playlist</source>
+ <translation>Ouvrir une liste de lecture</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="678"/>
+ <source>Save Playlist</source>
+ <translation>Enregistrer une liste de lecture</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="589"/>
+ <source>&amp;About</source>
+ <translation>&amp;À propos</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="677"/>
+ <source>Playlist Files</source>
+ <translation>Fichiers de la liste de lecture</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="579"/>
+ <source>Space</source>
+ <translation>Espace</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="590"/>
+ <source>&amp;About Qt</source>
+ <translation>&amp;À propos de Qt</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="579"/>
+ <source>&amp;Play/Pause</source>
+ <translation>&amp;Jouer / Pause</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="446"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Tout les flux supportés</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="132"/>
+ <source>F</source>
+ <translation>F</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="138"/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="170"/>
+ <source>Alt+I</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="259"/>
+ <source>Ctrl+A</source>
+ <translation>Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>O</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="131"/>
+ <source>&amp;Add File</source>
+ <translation>&amp;Ajouter un fichier</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="137"/>
+ <source>&amp;Add Directory</source>
+ <translation>&amp;Ajouter un dossier</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="150"/>
+ <source>&amp;Remove Selected</source>
+ <translation>&amp;Supprimer la sélection</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="157"/>
+ <source>&amp;Remove All</source>
+ <translation>&amp;Tout supprimer</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="163"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>&amp;Ne garder que la sélection</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="169"/>
+ <source>&amp;View Track Details</source>
+ <translation>&amp;Afficher les détails du morceau</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="178"/>
+ <source>Sort List</source>
+ <translation>Trier la liste</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="208"/>
+ <source>By Title</source>
+ <translation>Par titre</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="212"/>
+ <source>By Filename</source>
+ <translation>Par nom de fichier</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="216"/>
+ <source>By Path + Filename</source>
+ <translation>Par emplacement + nom de fichier</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="220"/>
+ <source>By Date</source>
+ <translation>Par date</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="206"/>
+ <source>Sort Selection</source>
+ <translation>Trier la sélection</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="234"/>
+ <source>Randomize List</source>
+ <translation>Mélanger la liste</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="235"/>
+ <source>Reverse List</source>
+ <translation>Inverser la liste</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="244"/>
+ <source>Invert Selection</source>
+ <translation>Inverser la sélection</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="251"/>
+ <source>&amp;Select None</source>
+ <translation>&amp;Ne rien sélectionner</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>&amp;Select All</source>
+ <translation>&amp;Tout sélectionner</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>&amp;New List</source>
+ <translation>&amp;Nouvelle liste</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="267"/>
+ <source>Shift+N</source>
+ <translation>Shift+N</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="273"/>
+ <source>&amp;Load List</source>
+ <translation>&amp;Charger une liste</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="278"/>
+ <source>&amp;Save List</source>
+ <translation>&amp;Enregistrer une liste</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="279"/>
+ <source>Shift+S</source>
+ <translation>Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="151"/>
+ <source>Del</source>
+ <translation>Suppr</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="143"/>
+ <source>&amp;Add Url</source>
+ <translation>&amp;Ajouter un flux internet</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="144"/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="224"/>
+ <source>By Track Number</source>
+ <translation>Par numéro de piste</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="240"/>
+ <source>&amp;Queue</source>
+ <translation>&amp;Mettre dans la file d&apos;attente</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="240"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListModel</name>
+ <message>
+ <location filename="../playlistmodel.cpp" line="311"/>
+ <source>Url:</source>
+ <translation>Flux Internet : </translation>
+ </message>
+ <message>
+ <location filename="../playlistmodel.cpp" line="312"/>
+ <source>Title:</source>
+ <translation>Titre : </translation>
+ </message>
+ <message>
+ <location filename="../playlistmodel.cpp" line="313"/>
+ <source>Artist:</source>
+ <translation>Artiste : </translation>
+ </message>
+ <message>
+ <location filename="../playlistmodel.cpp" line="314"/>
+ <source>Album:</source>
+ <translation>Album : </translation>
+ </message>
+ <message>
+ <location filename="../playlistmodel.cpp" line="315"/>
+ <source>Comment:</source>
+ <translation>Commentaire : </translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="13"/>
+ <source>Preset Editor</source>
+ <translation>Éditeur de réglages</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="28"/>
+ <source>Load</source>
+ <translation>Charger</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="35"/>
+ <source>Delete</source>
+ <translation>Supprimer</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="46"/>
+ <source>Preset</source>
+ <translation>Réglage</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="62"/>
+ <source>Auto-preset</source>
+ <translation>Réglage auto</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="140"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Usage : qmmp [options] [fichiers]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="141"/>
+ <source>Options:</source>
+ <translation>Options : </translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="146"/>
+ <source>Print version number and exit</source>
+ <translation>Imprimer le numéro de version et quitter</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="147"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Idées, patches, rapports de bogues à envoyer à : forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="145"/>
+ <source>Display this text and exit</source>
+ <translation>Afficher ce texte et quitter</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="152"/>
+ <source>QMMP version:</source>
+ <translation>Version de Qmmp : </translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="176"/>
+ <source>Buffering:</source>
+ <translation>Tampon : </translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="62"/>
+ <source>Autoscroll Songname</source>
+ <translation>Détection automatique du nom de fichier</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="30"/>
+ <source>Visualization</source>
+ <translation>Visualisation</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_hu.ts b/src/plugins/Ui/skinned/translations/qmmp_hu.ts
new file mode 100644
index 000000000..33b2d5afc
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_hu.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hu_HU">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_en.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_en.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_en.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt alapú Multimédia Lejátszó (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Verzió:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_en.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Bemeneti pluginek:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Kimeneti pluginek:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Vizuális pluginek:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Effekt pluginek:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Általános pluginek:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>Névjegy: Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>Névjegy</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Készítők</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Fordítók</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Köszönet</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Licensz Egyezmény</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation type="unfinished">&amp;Lejátszás</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation type="unfinished">X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished">&amp;Szünet</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation type="unfinished">C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation type="unfinished">&amp;Megállítás</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation type="unfinished">V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation type="unfinished">&amp;Előző</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation type="unfinished">Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation type="unfinished">&amp;Következő</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation type="unfinished">B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation type="unfinished">&amp;Lejátszás/Szünet</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation type="unfinished">Szóköz</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation type="unfinished">J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation type="unfinished">Lista &amp;ismétlése</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation type="unfinished">Számok i&amp;smétlése</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation type="unfinished">Crtl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation type="unfinished">&amp;Véletlenszerű</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation type="unfinished">S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation type="unfinished">&amp;Fájl hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation type="unfinished">F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation type="unfinished">&amp;Könyvtár hazááadása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation type="unfinished">D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation type="unfinished">&amp;Url hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation type="unfinished">U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation type="unfinished">&amp;Megjelöltek eltávolítása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation type="unfinished">Del</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation type="unfinished">&amp;Összes eltávolítása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation type="unfinished">&amp;Jelöletlenek eltávolítása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation type="unfinished">Elérhetetlen fájlok eltávolítása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation type="unfinished">Duplikációk eltávolítása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation type="unfinished">Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation type="unfinished">Fordított kijelölés</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation type="unfinished">&amp;Kijelölés megszűntetése</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation type="unfinished">&amp;Összes kijelölése</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation type="unfinished">Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation type="unfinished">Szám adatainak &amp;megnézése</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation type="unfinished">Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation type="unfinished">&amp;Új lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation type="unfinished">Ctrl+T</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished">&amp;Lista törlése</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation type="unfinished">Ctrl+W</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation type="unfinished">&amp;Lista betöltése</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation type="unfinished">O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation type="unfinished">Lista &amp;mentése</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation type="unfinished">Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation type="unfinished">&amp;Következő lista választása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation type="unfinished">Ctrl+PgDown</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation type="unfinished">&amp;Előző lista választása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation type="unfinished">Ctrl+PgUp</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation type="unfinished">&amp;Lejátszási lista mutatása</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation type="unfinished">P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation type="unfinished">&amp;Beállítások</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation type="unfinished">Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation type="unfinished">&amp;Névjegy</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation type="unfinished">N&amp;évjegy: Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation type="unfinished">&amp;Kilépés</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Hiba</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Írj be egy URL-t a hozzáadáshoz</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Hozzáad</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Mégsem</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation type="unfinished">Ne töröld a lejátszási listát</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Aktuális szám lejátszásának indítása</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Aktuális szám szüneteltetése</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Szünet ha lejátszás van, különben lejátszás</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Aktuális szám megállítása</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Számra ugrás ablak mutatása</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Lejátszási hangerő beállítása (pl.: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Lejátszási lista következő számának kihagyása</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Lejátszási lista előző számainak kihagyása</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Alkalmazás mutatása/elrejtése</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Fájl hozzáadása ablak mutatása</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Könyvtár hozzáadása ablak mutatása</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Tömörített skin</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Tömörítettlen skin</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Leírás</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Fájlnév</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Előadó</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Cím</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Műfaj</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Év</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Megjegyzés</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Szám</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Kikapcsolva</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Transzportálás</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Dekóderek</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Motorok</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Zeneszám</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>Két jegyű zeneszám</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Zeneszerző</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>Lemezszám</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Fájl neve</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>File útvonala</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Feltétel</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Skin fájl kiválasztása</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Skin fájlok</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Qmmp beállítások</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Megjelenés</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Lejátszási lista</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Beépülők</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Haladó</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Összekapcsolhatóság</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Skinek</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Hozzáad...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Frissít</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Vegyes</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Betűtípus</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Lejátszó:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Lejátszási lista:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Bittérképes betűtípus használata, ha elérhető</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Skin egértéma használata</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Metaadatok</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Metaadatok betöltése fájlból</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Szám kijelző</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Cím formátum:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Lepontozottak átalakítása üressé</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Átalakítás %20 üressé</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Protokol mutatása</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Zene sorszámának mutatása</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Lejátszási lista mutatása</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Felugró információk mutatása</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Tulajdonságok</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Információ</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Lejátszás</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Lejátszás folytatása indításkor</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation type="unfinished">ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16 bites kimenet</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Vizualizáció</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Effektek</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Általános</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Audió</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>Replay Gain</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Replay Gain mód:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Preamp:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Alapértelmezett gain:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Csúcs információ használata a klippelés megelőzéséhez</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Kimenet:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Szoftveres hangerőszabályzó használata</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Elrejtés bezáráskor</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Rejtve induljon</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Fájl ablak</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Átlátszóság</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Megnéz</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Fő ablak</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Hangszínszabályozó</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Borító beszerzése</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Különböző képfájlok használata</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Tartalmazott fájlok:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Kihagyott fájlok:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Rekúrzív keresési mélység:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Proxy használatának engedélyezése</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Proxy host name:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Proxy port:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Hitelesítés hasznáalta proxy-val</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Proxy felhasználónév:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Proxy jelszó:</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>beállítás</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Betölt/Töröl</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>Beálítás &amp;mentése</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Automatikusan betöltödő beállítás mentése</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importálás</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Törlés</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Beállítások mentése</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Beállítás neve:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>beállítás #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Beállítás importálása</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Ugrás számra</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Szűrő</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>Sorba betesz</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Frissít</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Ugrás</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Sorból kivesz</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Előző</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Lejátszás</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Szünet</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Megállít</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Következő</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Fájl hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Hangszínszabályzó</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Lejátszási lista</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Lista ismétlése</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Véletlenszerű</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Hangerő</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Egyensúly</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Vizualizációs mód</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Analyzer</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Scope</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Ki</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Analyzer mód</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Hagyományos</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Tűz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Függőleges vonalak</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Vonalak</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Csíkok</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Csúcsok</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Ráta frissítése</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Analízer esése</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Lassabb</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Lassú</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Közepes</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Gyors</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Gyorsabb</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Csúcsok esése</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Háttér</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Átlátszóság</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Válassz egy könyvtárat</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Minden támogatott bitráta</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Válassz egy vagy több fájlat megnyitásra</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Lejátszási lista</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Ugrás fájlra</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation type="unfinished">Megnéz</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Eszközök</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Lejátszási lista fájl</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Lista megnyitása</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Lista mentése</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Lejátszási lista</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Lista rendezése</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Cím szerint</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>Album szerint</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>Előadó szerint</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Fájlnév szerint</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>Elérési út és fájlnév szerint</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Dátum szerint</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Zene sorszáma szerint</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Jelöltek rendezése</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Lista összekeverése</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Fordított lista</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Tevékenységek</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Lejátszási lista böngésző</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Új</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Törlés</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Átnevez</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Betölt</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>&amp;Mentés másként...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Átnevez</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Törlés</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Lista átnevezése</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Lista neve:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Popup Információs Beállítások</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Borító mutatása</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Átlátszóság:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Késleltetés:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Borító mérete:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Sablon</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Visszaállít</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Beszúr</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Előadó</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Cím</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Zeneszám</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>Két jegyű zeneszám</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Műfaj</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Megjegyzés</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Szerző</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Időtartam</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>Lemezszám</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Fájl neve</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Fájl útvonala</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Év</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Feltétel</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Beállítás szerkesztő</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Betölt</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Töröl</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Beállítás</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Automatikus beállítás</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Ismeretlen parancs</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Használat: qmmp [opciók] [fájlok]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Opciók:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Mutasd ezt a szöveget, majd lépj ki</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Mutasd a verziószámot, majd lépj ki</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Ötleteket, foltokat, hibajelentéseket küld a forkotov02@hotmail.ru címre</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>QMMP verzió:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Qt verzió:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Számok címének görgetése</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Vizualizáció</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_it.ts b/src/plugins/Ui/skinned/translations/qmmp_it.ts
new file mode 100644
index 000000000..a94b67cc7
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_it.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="it">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>Informazioni su Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>Info</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Contratto di licenza</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Autori</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Ringraziamenti</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_it.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_it.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt-based Multimedia Player (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Versione: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_it.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Moduli d&apos;entrata: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Moduli d&apos;uscita : </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Moduli di visualizzazione: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Мoduli per gli effetti: </translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Moduli generali: </translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Traduttori</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_it.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation type="unfinished">&amp;Esegui</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation type="unfinished">X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished">&amp;Pausa</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation type="unfinished">C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation type="unfinished">&amp;Arresta</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation type="unfinished">V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation type="unfinished">&amp;Precedente</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation type="unfinished">Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation type="unfinished">&amp;Successivo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation type="unfinished">B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation type="unfinished">&amp;Esegui / Pausa</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation type="unfinished">Spazio</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation type="unfinished">J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation type="unfinished">&amp;Ripeti lista brani</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation type="unfinished">R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation type="unfinished">&amp;Ripeti brano</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation type="unfinished">Ctrl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation type="unfinished">&amp;Ordine casuale</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation type="unfinished">S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation type="unfinished">&amp;Aggiungi brani</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation type="unfinished">F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation type="unfinished">&amp;Aggiungi cartelle</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation type="unfinished">D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation type="unfinished">&amp;Aggiungi URL</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation type="unfinished">U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation type="unfinished">&amp;Elimina la selezione</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation type="unfinished">Canc</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation type="unfinished">&amp;Elimina tutto</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation type="unfinished">&amp;Elimina i non selezionati</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation type="unfinished">Rimuovi files non disponibili</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation type="unfinished">Rimuovi duplicati</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation type="unfinished">Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation type="unfinished">Inverti la selezione</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation type="unfinished">&amp;Non scegliere alcun brano</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation type="unfinished">&amp;Seleziona tutto</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation type="unfinished">Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation type="unfinished">&amp;Dettagli della traccia</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation type="unfinished">Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation type="unfinished">&amp;Nuova lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation type="unfinished">Ctrl+T</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished">&amp;Cancella lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation type="unfinished">Ctrl+W</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation type="unfinished">&amp;Carica lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation type="unfinished">O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation type="unfinished">&amp;Salva lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation type="unfinished">Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation type="unfinished">&amp;Seleziona la successiva lista esecuzione brani</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation type="unfinished">Ctrl+PgDown</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation type="unfinished">&amp;Seleziona la rpecedente lista esecuzione brani</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation type="unfinished">Ctrl+PgUp</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation type="unfinished">Mostra lista esecuzione brani</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation type="unfinished">P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation type="unfinished">&amp;Configurazione</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation type="unfinished">Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation type="unfinished">&amp;Informazioni</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation type="unfinished">&amp;Informazioni su Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation type="unfinished">&amp;Esci</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Errore</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Aggiungi un URL</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Aggiungi</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annulla</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Scorri in avanti lista dei brani</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Scorri indietro la lista dei brani</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Inizia il brano scelto</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation type="unfinished">Non ripulire la lista esecuzione</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Sospendi il brano in esecuzione</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Sospendi il brano se in esecuzione; lo riprende se in pausa</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Arresta il brano in esecuzione</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Mostra il menu «Vai al brano»</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Mostra/nascondi Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Mostra il menu «Aggiungi brani»</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Mostra il menu «Aggiungi cartella»</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Descrizione</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>File</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Interprete</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Traccia</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Disabilitato</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Protocolli di trasporto</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Decodificatori</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Meccanismi</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Titolo</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Traccia n°</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>Traccia n° a due cifre</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>Disco n°</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Condizione</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Genere</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Compositore</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Nome file</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Percorso file</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Anno</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Commento</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Configurazione di Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Temi</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Caratteri</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Player: </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Lista brani : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Metadati</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Carica i metadati dai brani</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Mostra il brano</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Formato del titolo : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Impostazioni preferite</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Informazioni</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Aspetto</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Lista dei brani</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Moduli</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Avanzato</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>uscita a 16 bit</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Tema archiviato</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Tema non archiviato</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Connettività</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Visualizzazione</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Effetti</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Generale</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Menu brani</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>Normalizzazione</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Varie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Usa carattere bitmap se disponibile</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Usa cursore skin</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Mostra numero brani</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Mostra lista esecuzione brani</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Mostra informazioni popup</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Metodo di normalizzazione</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Preamp:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Normalizzazione predefinita</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Utilizza informazioni di picco per evitare tagli</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Uscita:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation type="unfinished">ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Utilizza il controllo volume del programma</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Nascondi alla chiusura</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Avvia nascosto</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Trova immagine copertina</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Usa immagini separate</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Includi i file:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Escludi i file:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Profondità ricerca ricorsiva:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Riproduzione</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Continua la riproduzione all&apos;avvio</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Attiva il proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Nome del server : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Porta del server : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Usa autenticazione con il proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Utente: </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Password : </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Converti il carattere « _ » in spazi</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Converti il carattere « %20 » in spazi</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Seleziona aspetto</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Aspetto</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Aggiungi...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Aggiorna</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Motra protocollo</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Transparenza</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Finestra principale</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Equalizzatore</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>Impostazione</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Carica/Elimina</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Salva preimpostazione</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Salvare preimpostazioni caricate automaticamente</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Cancella</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Salvataggio preimpostazioni</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Nome delle preimpostazioni: </translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>Preimpostazione #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importa</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation type="unfinished">Equalizzatore</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Importa preimpostazione</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Elimna dalla coda</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>Metti in coda</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Vai alla traccia</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filtra</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Aggiorna</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Vai a</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Brano precedente</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Esegui</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Sospendi</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Ferma</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Brano successivo</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Aggiungi brani</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Equalizzatore</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Lista brani</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Ripeti la lista brani</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Ordine casuale</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Volume</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Bilanciamento</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Modo visualizzazione</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Analizzatore</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Oscilloscopio</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Chiudi</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Modo analizzatore</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Normale</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Fuoco</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Linee verticali</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Linee</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Barre</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Picchi</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Velocità di aggiornamento</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Ricaduta analizzatore</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Molto lenta</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Lenta</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Media</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Rapida</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Molto veloce</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Ricadua picchi</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Sfondo</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Transparente</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Scegliere una cartella</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Seleziona uno o più brani da aprire</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Vai al brano</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Apri lista di brani</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Salva lista di brani</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Brani della lista</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Elenco di tutti i tipi di flusso accettati</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Strumenti</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Riordina la lista</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Per titolo</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>Per album</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>PEr interprete</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Per titolo del brano</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>per percorso più titolo del brano</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Per data</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Riordina la selezione</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Mescola i brnai della lista</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Inverti la lista</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Per numero di traccia</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Azioni</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Esplora lista esecuzione</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Nuova</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Elimina</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Rinomina</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Carica</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>&amp;Salva come</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Rinomina</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Elimina</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Rinomina lista brani</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Nome della lista brani:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Popup delle impostazioni</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Mostra copertina</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Trasparenza:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Ritardo:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Dimensione copertina:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Modello</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Azzera</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Inserisci</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Interprete</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Titolo</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Traccia n°</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>Traccia n° a due cifre</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Genere</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Commento</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Compositore</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Durata</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>Disco n°</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Nome file</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Percorso file</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Anno</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Condizione</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Editor delle impostazioni</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Carica</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Elimina</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Impostazioni</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Impostazioni automatiche</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Uso: qmmp [options] [fichiers]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Opzioni: </translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Stampa il numero di versione ed esci</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Per idee, modifiche, segnalazione di errori scrivire a: forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Versione Qt:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Mostra questo testo ed esci</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Comando sconosciuto</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Versione di Qmmp: </translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Scorrimento automatico del titolo del brano</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Visualizzazione</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_ja.ts b/src/plugins/Ui/skinned/translations/qmmp_ja.ts
new file mode 100644
index 000000000..1c434d85b
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_ja.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja_JP">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>QMMPについて</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>QMMPについて</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>作者</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>翻訳者</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>協力者</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>使用許諾契約</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_ja.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_ja.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_ja.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt製マルティミディアプレイヤ QMMP</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>バージョン:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_ja.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>入力側プラグイン:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>出力側プラグイン:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>視覚効果プラグイン:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>音響効果プラグイン:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>一般プラグイン:</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>再生(&amp;Y)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>一時停止(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation>C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>終止(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>前の曲(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>次の曲(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>再生/停止(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation>Space</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation>ファイルを指定して即刻再生(&amp;J)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>プレイリストを繰り返す(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>トラックを繰り返す(&amp;T)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation>Ctrl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>シャッフル(&amp;F)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation>S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation>次の曲に進まず終止(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation>Ctrl+N</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation>選んだ曲を再生後に終止(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation>Ctrl+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>キューを消去(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation>Alt+Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>プレイリストを表示</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation>Alt+E</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>イコライザを表示</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation>Alt+G</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>常に前面へ</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>常に表示中のワークスペースに置く</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>倍サイズ</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>ファイルを追加(&amp;F)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation>F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>ディレクトリを追加(&amp;D)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>URLを追加(&amp;U)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>選択したものを除去(&amp;V)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation>Delele</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>すべて除去(&amp;M)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>選択外のものを除去(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>無効なファイルを除去</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>重複分を除去</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation>選んだプレイリストをキューに追加/キューから撤去</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>選択範囲を反転</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>選択を解除(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>すべて選択(&amp;E)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation>Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>トラックの詳細を表示(&amp;D)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>新規リスト(&amp;W)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation>Ctrl+T</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>リストを削除(&amp;D)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation>Ctrl+W</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>リストを読込(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>リストを保存(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation>Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>次のプレイリストを選択(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation>Ctrl+PgDown</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>前のプレイリストを選択(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation>Ctrl+PgUp</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>プレイリストを表示(&amp;H)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation>P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>設定(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation>Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>QMMPについて(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>Qtについて(&amp;Q)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>終了(&amp;X)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation>Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>追加したいURLを記入</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>追加(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>キャンセル(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>事故</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>プレイリストをクリアしない</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>今の曲から再生を開始</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>今の曲で一時停止</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>再生中なら一時停止、一時停止しておれば再生</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>今の曲で終止</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>「ファイルを指定して即刻再生」ダイアログを表示</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>音量設定 (例: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>プレイリストでの次の曲にスキップ</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>プレイリストで前の曲にスキップ</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>アプリケーションウィンドウを表示/非表示</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>「ファイル追加」ダイアログを表示</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>「ディレクトリ追加」ダイアログを表示</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>QMMP設定</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>外観</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>プレイリスト</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>プラグイン</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>上級</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>接続</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>音響</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>ショートカット</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>スキン</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>追加...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>更新</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>各種設定</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>観容</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>「閉じる」で隠す</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>開始時に隠す</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>スキンカーソルを使用</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>書体</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>プレイヤ:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>プレイリスト:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>あればビットマップフォントを使用</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>透過効果</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>メインウィンドウ</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>イコライザ</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>メタデータ</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>ファイルからメタデータを読み込む</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>演目表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>タイトルの表示形式:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>下線記号_を空白文字で表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>%20を空白文字で表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>プロトコルを表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>曲番号つきで表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>プレイリストを表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>情報吹き出しを表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>ひな型を編集</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation>アンカーを表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation>曲番号のみを表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>プラグイン調整</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>情報</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>プラグイン分類</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>ファイル名</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>ファイルダイアログ</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>アルバム表紙画像の取得</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>分割された画像ファイルを利用</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>対象ファイル形式:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>除外ファイル形式:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>再帰検索の深度:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>再生</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>前回終了時の曲から継続して再生</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>代理</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>代理を利用する</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>代理ホスト名:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>代理ポート:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>代理経由の認証を利用</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>代理者ユーザ名:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>代理者パスワード:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>リプレイゲイン</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>リプレイゲインモード:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>プリアンプ:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>デフォルトゲイン:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>クリッピング現象を抑えるためピーク情報を使う</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>出力:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>バッファサイズ:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation>ミリ秒</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>ソフトウェアによる音量制御を利用</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16ビット出力</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>動作</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>ショートカット</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>変更</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>トラック</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>アルバム</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>無効</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>書庫化スキン</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>非書庫化スキン</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>転送</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>デコーダ</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>エンジン</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>音響効果</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>視覚効果</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>一般</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>いろいろ</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>アーティスト</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>タイトル</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>トラック番号</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>トラック番号 数字2桁</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>ジャンル</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>コメント</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>作曲者</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>ディスク番号</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>ファイル名</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>ファイルパス</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>年</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>定番</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>スキンファイルを選択</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>スキンファイル</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>イコライザ</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>プリセット</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>読み込み/削除(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>プリセットを保存(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>自動読み込みされたプリセットを保存(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>移入(&amp;I)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>消去(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>プリセットを保存しています</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>プリセット名:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>プリセット番号</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>プリセットを移入</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>トラックを指定して即刻再生</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>フィルタ</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>キューに入れる</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>再実行</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>この曲に跳ぶ</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>キューから除く</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>前の曲</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>再生</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>一時停止</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>終止</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>次の曲</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>ファイルを追加</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>イコライザ</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>プレイリスト</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>プレイリストを繰り返し</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>シャッフル</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>音量</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>バランス</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>音量: %1%</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>バランス: %1% 右へ</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>バランス: %1% 左へ</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>バランス: 中央に</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>%1 に移動</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>視覚効果モード</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>スペクトルアナライザ</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>オシロスコープ</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>使わない</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>アナライザモード</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>通常</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>炎</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>線</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>線</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>点</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>ピーク表示</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>再描画の頻度</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 フレーム毎秒</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 フレーム毎秒</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 フレーム毎秒</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 フレーム毎秒</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>アナライザ減衰速度</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>さらに遅く</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>遅く</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>適度</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>速く</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>さらに速く</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>ピーク減衰速度</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>背景</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>透過させる</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>ディレクトリを選択</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>サポート対象のすべてのデジタル録音物</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>開きたいファイルを選ぶ (複数可)</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>プレイリスト</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>ファイルを指定して即刻再生(&amp;J)</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>観容</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>ツール</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>プレイリストファイル</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>プレイリストを開く</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>プレイリストを保存</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>プレイリスト</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>選んだ曲目で新しいプレイリストを作る(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>リストを並び換え</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>タイトル順に</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>アルバム名順に</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>アーティスト名順に</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>ファイル名順に</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>パスとファイル名の順に</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>日付順に</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>トラック番号順に</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>選択範囲内で並び換え</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>リストを順不同に</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>リストを逆順に</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>動作</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>新しいプレイリスト(&amp;N)</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>プレイリストブラウザ</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>新規</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>削除</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>名前を変更</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>読込(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>名前を付けて保存(&amp;A)...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>名前を変更</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>削除(&amp;D)</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>プレイリスト名を変更</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>プレイリスト名:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>吹き出し情報の設定</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>雛形</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>リセット</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>挿入</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>表紙を表示</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>表紙の大きさ:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>透明度:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>待ち時間:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>ミリ秒</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>アーティスト</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>アルバム</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>タイトル</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>トラック番号</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>トラック番号 数字2桁</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>ジャンル</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>コメント</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>作曲者</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>再生時間</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>ディスク番号</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>ファイル名</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>ファイルパス</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>年</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>定番</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>プリセットエディタ</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>プリセット</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>自動プリセット</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>読込</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>削除</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>不明なコマンドです</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>使用法: qmmp [オプション] [ファイル名:複数可]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>オプション:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>アプリケーションを始動しない</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>このメッセージを表示して終了</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>バージョン番号を表示して終了</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>名案, パッチ, バグ報告は forkotov02@hotmail.ru まで</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>QMMP 版番号:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Qt 版番号:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>ショートカットを変更</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>割り当てたい組み合わせキーを押します</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>消去</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>曲名を自動スクロール</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>バッファへ先読み: %1%</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>視覚効果</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_kk.ts b/src/plugins/Ui/skinned/translations/qmmp_kk.ts
new file mode 100644
index 000000000..9e338e2fc
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_kk.ts
@@ -0,0 +1,1247 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="kk_KZ">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="13"/>
+ <source>About Qmmp</source>
+ <translation>Qmmp туралы</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="51"/>
+ <source>About</source>
+ <translatorcomment>Осы туралы</translatorcomment>
+ <translation>О программе</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="158"/>
+ <source>License Agreement</source>
+ <translation>Лицензиясы</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="83"/>
+ <source>Authors</source>
+ <translation>Авторрлары</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="129"/>
+ <source>Thanks To</source>
+ <translation>Алғыстар</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_kk.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_kk.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt-негізіндегі мультимедиа плеері (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Нұсқасы:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_kk.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Кіріс модульдері:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Шығыс модульдері:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Визуализация модульдері:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Эффекттер модульдері:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Жалпы модульдері:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="115"/>
+ <source>Translators</source>
+ <translation>Аудармашылар</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_kk.txt</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="107"/>
+ <source>Error</source>
+ <translation>Қате</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Қосу үшін адресті енгізіңіз</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>Қ&amp;осу</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Бас тарту</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="68"/>
+ <source>Skip forward in playlist</source>
+ <translation>Келесіге өту</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="69"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Алдыңғысына өту</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Start playing current song</source>
+ <translation>Ағымдағы өленді ойнату</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Pause current song</source>
+ <translation>Ағымдағы өленді аялдату</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Аялдату/ойнату</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Stop current song</source>
+ <translation>Ағымдағы өленді тоқтату</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="67"/>
+ <source>Set playback volume(example: qmmp --volume20, qmmp --volume100)</source>
+ <translation>Дыбыс деңгейін орнату (мысалы: qmmp --volume20, qmmp --volume100)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Файлға өту сұхбатын көрсету</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="70"/>
+ <source>Show/hide application</source>
+ <translation>Бағдарламаны көрсету/жасыру</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="71"/>
+ <source>Display Add File dialog</source>
+ <translation>Файлдарды қосу сұхбатын көрсету</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="72"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Бумаларды қосу сұхбатын көрсету</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../configdialog.cpp" line="215"/>
+ <location filename="../configdialog.cpp" line="244"/>
+ <location filename="../configdialog.cpp" line="275"/>
+ <location filename="../configdialog.cpp" line="307"/>
+ <location filename="../configdialog.cpp" line="339"/>
+ <source>Enabled</source>
+ <translation>Қосулы</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="215"/>
+ <location filename="../configdialog.cpp" line="244"/>
+ <location filename="../configdialog.cpp" line="275"/>
+ <location filename="../configdialog.cpp" line="307"/>
+ <location filename="../configdialog.cpp" line="339"/>
+ <source>Description</source>
+ <translation>Анықтамасы</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="215"/>
+ <location filename="../configdialog.cpp" line="244"/>
+ <location filename="../configdialog.cpp" line="275"/>
+ <location filename="../configdialog.cpp" line="307"/>
+ <location filename="../configdialog.cpp" line="339"/>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Filename</source>
+ <translation>Файл аты</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="519"/>
+ <source>Artist</source>
+ <translation>Орындаушы</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="520"/>
+ <source>Album</source>
+ <translation>Альбом</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="521"/>
+ <source>Title</source>
+ <translation>Аты</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="522"/>
+ <source>Tracknumber</source>
+ <translation>Трек нөмірі</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="523"/>
+ <source>Genre</source>
+ <translation>Жанры</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Filepath</source>
+ <translation>Файл жолы</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="526"/>
+ <source>Date</source>
+ <translation>Күні</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="527"/>
+ <source>Year</source>
+ <translation>Жылы</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="528"/>
+ <source>Comment</source>
+ <translation>Қосымша</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Qmmp баптаулары</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="162"/>
+ <source>Skins</source>
+ <translation>Скиндар</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="222"/>
+ <source>Fonts</source>
+ <translation>Қаріптер</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="234"/>
+ <source>Player:</source>
+ <translation>Плеер:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="270"/>
+ <source>Playlist:</source>
+ <translation>Тізім:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="250"/>
+ <location filename="../forms/configdialog.ui" line="286"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="257"/>
+ <location filename="../forms/configdialog.ui" line="293"/>
+ <location filename="../forms/configdialog.ui" line="348"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="307"/>
+ <source>Metadata</source>
+ <translation>Метаақпараты</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="319"/>
+ <source>Load metadata from files</source>
+ <translation>Метаақпаратты файлдардан оқу</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="329"/>
+ <source>Song Display</source>
+ <translation>Өлендер тізімі</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="335"/>
+ <source>Title format:</source>
+ <translation>Атаудың пішімі:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="460"/>
+ <source>Input</source>
+ <translation>Кіріс</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="489"/>
+ <source>Output</source>
+ <translation>Шығыс</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="417"/>
+ <source>Preferences</source>
+ <translation>Баптаулар</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="430"/>
+ <location filename="../forms/configdialog.ui" line="618"/>
+ <source>Information</source>
+ <translation>Ақпараты</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="83"/>
+ <source>Appearance</source>
+ <translation>Сыртқы түрі</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="92"/>
+ <location filename="../forms/configdialog.ui" line="701"/>
+ <source>Playlist</source>
+ <translation>Тізім</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="101"/>
+ <source>Plugins</source>
+ <translation>Модульдер</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="110"/>
+ <source>Advanced</source>
+ <translation>Кеңейтілген</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="876"/>
+ <source>Close</source>
+ <translation>Жабу</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="177"/>
+ <source>Archived skin</source>
+ <translation>Сығылған скин</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="197"/>
+ <source>Unarchived skin</source>
+ <translation>Тарқатылған скин</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="119"/>
+ <source>Connectivity</source>
+ <translation>Желі</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="512"/>
+ <source>Visualization</source>
+ <translation>Визуализация</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="529"/>
+ <source>Effects</source>
+ <translation>Эффекттер</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="546"/>
+ <source>General</source>
+ <translation>Жалпы</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="609"/>
+ <source>File Dialog</source>
+ <translation>Файл сұхбат терезесі</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="570"/>
+ <source>Audio</source>
+ <translation>Аудио</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="576"/>
+ <source>Use software volume control</source>
+ <translation>Дауыс деңгейін бағдарламалық тәсілмен өзгертіу</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="586"/>
+ <source>Visibility Control</source>
+ <translation>Көрінуін басқару</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="592"/>
+ <source>Hide on close</source>
+ <translation>Жабылғанда жасыру</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="599"/>
+ <source>Start hidden</source>
+ <translation>Жасырын түрінде қосылу</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="744"/>
+ <source>Proxy</source>
+ <translation>Прокси</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="756"/>
+ <source>Enable proxy usage</source>
+ <translation>Проксиді қолдану</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="763"/>
+ <source>Proxy host name:</source>
+ <translation>Прокси сервері:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="776"/>
+ <source>Proxy port:</source>
+ <translation>Прокси порты:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="789"/>
+ <source>Use authentication with proxy</source>
+ <translation>Прокси аутентификациясын қолдану</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="796"/>
+ <source>Proxy user name:</source>
+ <translation>Прокси пайдаланушысы:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="809"/>
+ <source>Proxy password:</source>
+ <translation>Паролі:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="355"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Астыңғы сызуды бос орынға алмастыру</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="362"/>
+ <source>Convert %20 to blanks</source>
+ <translation>%20 бос орынға алмасытру</translation>
+ </message>
+ <message>
+ <source>Show full path of a stream</source>
+ <translation type="obsolete">Показывать полный путь для потоков</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="645"/>
+ <source>Select Skin Files</source>
+ <translation>Скин файлдарын таңдау</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="646"/>
+ <source>Skin files</source>
+ <translation>Скин файлдары</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="193"/>
+ <source>Add...</source>
+ <translation>Қосу...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="206"/>
+ <source>Refresh</source>
+ <translation>Жаңарту</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="369"/>
+ <source>Show protocol</source>
+ <translation>Хаттаманы көрсету</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="641"/>
+ <source>Transparency</source>
+ <translation>Мөлдірлілігі</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="647"/>
+ <source>Main window</source>
+ <translation>Басты терезе</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="670"/>
+ <location filename="../forms/configdialog.ui" line="694"/>
+ <location filename="../forms/configdialog.ui" line="718"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="677"/>
+ <source>Equalizer</source>
+ <translation>Эквалайзер</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="153"/>
+ <location filename="../eqwidget.cpp" line="176"/>
+ <source>preset</source>
+ <translation>орнату</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="262"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Жүктеу/Өшіру</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="264"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Орнатуды сақтау</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Авто-орнатуды сақтау</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="268"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Тазарту</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="297"/>
+ <source>Saving Preset</source>
+ <translation>Орнатуды сақтау</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="298"/>
+ <source>Preset name:</source>
+ <translation>Орнату атауы:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>preset #</source>
+ <translation>орнату #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="266"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Импорттау</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="390"/>
+ <source>Import Preset</source>
+ <translation>Орнатуды импорттау</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="81"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Unqueue</source>
+ <translation>Кезектен алып тастау</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="79"/>
+ <location filename="../jumptotrackdialog.cpp" line="83"/>
+ <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <source>Queue</source>
+ <translation>Кезекке қою</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="13"/>
+ <source>Jump To Track</source>
+ <translation>Трекке өту</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="33"/>
+ <source>Filter</source>
+ <translation>Фильтр</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="86"/>
+ <source>Refresh</source>
+ <translation>Жаңарту</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="93"/>
+ <source>Jump To</source>
+ <translation>Өту</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="100"/>
+ <source>Close</source>
+ <translation>Жабу</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Previous</source>
+ <translation>Алдыңғысы</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="65"/>
+ <source>Play</source>
+ <translation>Ойнату</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="69"/>
+ <source>Pause</source>
+ <translation>Аялдату</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Stop</source>
+ <translation>Тоқтату</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="77"/>
+ <source>Next</source>
+ <translation>Келесіге өту</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="81"/>
+ <source>Add file</source>
+ <translation>Файлды қосу</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="96"/>
+ <source>Equalizer</source>
+ <translation>Эквалайзер</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Playlist</source>
+ <translation>Тізім</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="109"/>
+ <source>Repeat playlist</source>
+ <translation>Тізімді қайталау</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="113"/>
+ <source>Shuffle</source>
+ <translation>Кез-келген ретпен</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="144"/>
+ <source>Volume</source>
+ <translation>Даусы</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="150"/>
+ <source>Balance</source>
+ <translation>Баланс</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="294"/>
+ <source>Visualization Mode</source>
+ <translation>Визуализация түрі</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Analyzer</source>
+ <translation>Анализатор</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Scope</source>
+ <translation>Осциллограф</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Off</source>
+ <translation>Сөндірілген</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="306"/>
+ <source>Analyzer Mode</source>
+ <translation>Анализатор режимі</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="309"/>
+ <source>Normal</source>
+ <translation>Кәдімгі</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="310"/>
+ <source>Fire</source>
+ <translation>От</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="311"/>
+ <source>Vertical Lines</source>
+ <translation>Тік сызықтар</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Lines</source>
+ <translation>Сызықтар</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="313"/>
+ <source>Bars</source>
+ <translation>Жолақшалар</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="326"/>
+ <source>Peaks</source>
+ <translation>Пиктер</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="330"/>
+ <source>Refresh Rate</source>
+ <translation>Жаңарту жиілігі</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <source>50 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <source>25 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <source>10 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <source>5 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Analyzer Falloff</source>
+ <translation>Анализатор түсуі</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <location filename="../mainvisual.cpp" line="360"/>
+ <source>Slowest</source>
+ <translation>Ең баяу</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <location filename="../mainvisual.cpp" line="361"/>
+ <source>Slow</source>
+ <translation>Баяу</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <location filename="../mainvisual.cpp" line="362"/>
+ <source>Medium</source>
+ <translation>Орташа</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <location filename="../mainvisual.cpp" line="363"/>
+ <source>Fast</source>
+ <translation>Жылдам</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <location filename="../mainvisual.cpp" line="364"/>
+ <source>Fastest</source>
+ <translation>Ең жылдам</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Peaks Falloff</source>
+ <translation>Пиктер түсуі</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="370"/>
+ <source>Background</source>
+ <translation>Фон</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="371"/>
+ <source>Transparent</source>
+ <translation>Мөлдір</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="64"/>
+ <location filename="../mainwindow.cpp" line="480"/>
+ <source>Default</source>
+ <translation>Бастапқы</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="280"/>
+ <source>Choose a directory</source>
+ <translation>Буманы таңдаңыз</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="290"/>
+ <source>Select one or more files to open</source>
+ <translation>Бір немесе бірнеше файлды таңдаңыз</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="417"/>
+ <source>&amp;Play</source>
+ <translation>&amp;Ойнату</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="417"/>
+ <source>X</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="418"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Аялдату</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="418"/>
+ <source>C</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="419"/>
+ <source>&amp;Stop</source>
+ <translation>&amp;Тоқтату</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="419"/>
+ <source>V</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="420"/>
+ <source>&amp;Previous</source>
+ <translation>Ал&amp;дыңғысы</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="420"/>
+ <source>Z</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Келесісі</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>B</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="440"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Файлға өту</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="440"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="446"/>
+ <source>&amp;Settings</source>
+ <translation>&amp;Баптаулары</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="446"/>
+ <source>Ctrl+P</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="452"/>
+ <source>&amp;Exit</source>
+ <translation>&amp;Шығу</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="452"/>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="494"/>
+ <source>Open Playlist</source>
+ <translation>Тізімді ашу</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="519"/>
+ <source>Save Playlist</source>
+ <translation>Тізімді сақтау</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="448"/>
+ <source>&amp;About</source>
+ <translation>&amp;Осы туралы</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="492"/>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Playlist Files</source>
+ <translation>Тізімдер файлдары</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="422"/>
+ <source>Space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="449"/>
+ <source>&amp;About Qt</source>
+ <translation>Qt т&amp;уралы</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="422"/>
+ <source>&amp;Play/Pause</source>
+ <translation>О&amp;йнат/аялдат</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="286"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Барлық пішімдер</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="425"/>
+ <source>&amp;Repeat Track</source>
+ <translation>Т&amp;ректі қайталау</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="426"/>
+ <source>&amp;Shuffle</source>
+ <translation>Ке&amp;з-келген ретпен</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="430"/>
+ <source>R</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="431"/>
+ <source>Ctrl+R</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="432"/>
+ <source>S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="424"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>Тізі&amp;мді қайталау</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="444"/>
+ <source>Tools</source>
+ <translation>Қызмет</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="136"/>
+ <source>F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="142"/>
+ <source>D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="174"/>
+ <source>Alt+I</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>Ctrl+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="281"/>
+ <source>O</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="135"/>
+ <source>&amp;Add File</source>
+ <translation>Фа&amp;йлды қосу</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="141"/>
+ <source>&amp;Add Directory</source>
+ <translation>Бу&amp;маны қосу</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="154"/>
+ <source>&amp;Remove Selected</source>
+ <translation>Таңда&amp;лғанды өшіру</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="161"/>
+ <source>&amp;Remove All</source>
+ <translation>&amp;Барлығын өшіру</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="167"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>Таң&amp;далмағанды өшіру</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="173"/>
+ <source>&amp;View Track Details</source>
+ <translation>&amp;Ақпараты</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="182"/>
+ <source>Sort List</source>
+ <translation>Сұрыптау</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="185"/>
+ <location filename="../playlist.cpp" line="212"/>
+ <source>By Title</source>
+ <translation>Аты бойынша</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="189"/>
+ <location filename="../playlist.cpp" line="216"/>
+ <source>By Filename</source>
+ <translation>Файл аты бойынша</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="193"/>
+ <location filename="../playlist.cpp" line="220"/>
+ <source>By Path + Filename</source>
+ <translation>Жолы мен файл аты бойынша</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="197"/>
+ <location filename="../playlist.cpp" line="224"/>
+ <source>By Date</source>
+ <translation>Уақыты бойынша</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="210"/>
+ <source>Sort Selection</source>
+ <translation>Таңдалғанды сұрыптау</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="238"/>
+ <source>Randomize List</source>
+ <translation>Тізімді араластыру</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Reverse List</source>
+ <translation>Тізімді кері айналдыру</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="251"/>
+ <source>Invert Selection</source>
+ <translation>Таңдауды кері айналдыру</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>&amp;Select None</source>
+ <translation>Т&amp;аңдауды алу</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="265"/>
+ <source>&amp;Select All</source>
+ <translation>&amp;Барлығын таңдау</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="273"/>
+ <source>&amp;New List</source>
+ <translation>&amp;Жаңа тізім</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Shift+N</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="280"/>
+ <source>&amp;Load List</source>
+ <translation>Ті&amp;зімді жүктеу</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="285"/>
+ <source>&amp;Save List</source>
+ <translation>Тізімді &amp;сақтау</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="286"/>
+ <source>Shift+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="155"/>
+ <source>Del</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="147"/>
+ <source>&amp;Add Url</source>
+ <translation>URL-д&amp;ы қосу</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="148"/>
+ <source>U</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="201"/>
+ <location filename="../playlist.cpp" line="228"/>
+ <source>By Track Number</source>
+ <translation>Трек нөмірі бойынша</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="247"/>
+ <source>&amp;Queue</source>
+ <translation>&amp;Кезекке</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="247"/>
+ <source>Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="244"/>
+ <source>Actions</source>
+ <translation>Әрекеттер</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="13"/>
+ <source>Preset Editor</source>
+ <translation>Орнатулар түзеткіші</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="28"/>
+ <source>Load</source>
+ <translation>Жүктеу</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="35"/>
+ <source>Delete</source>
+ <translation>Өшіру</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="46"/>
+ <source>Preset</source>
+ <translation>Орнату</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="62"/>
+ <source>Auto-preset</source>
+ <translation>Авто-орнату</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="142"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Қолданылуы: qmmp [опциялар] [файлдар]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="143"/>
+ <source>Options:</source>
+ <translation>Опциялары:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="149"/>
+ <source>Print version number and exit</source>
+ <translation>Нұсқасын көрсету мен шығу</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="150"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Ұсыныстар, түзетулер, қателер туралы хабарласыңыз: forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="148"/>
+ <source>Display this text and exit</source>
+ <translation>Осы мәтінді көрсету және шығу</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="155"/>
+ <source>QMMP version:</source>
+ <translation>QMMP нұсқасы:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="145"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>Тізімді тазартпау</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="156"/>
+ <source>Qt version:</source>
+ <translation>Qt нұсқасы:</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="176"/>
+ <source>Buffering:</source>
+ <translation>Буферизация:</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="62"/>
+ <source>Autoscroll Songname</source>
+ <translation>Өлен атауын автоайналдыру</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="30"/>
+ <source>Visualization</source>
+ <translation>Визуализация</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_locales.qrc b/src/plugins/Ui/skinned/translations/qmmp_locales.qrc
new file mode 100644
index 000000000..2442f6dc1
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_locales.qrc
@@ -0,0 +1,22 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource>
+ <file>qmmp_ru.qm</file>
+ <file>qmmp_tr.qm</file>
+ <file>qmmp_zh_CN.qm</file>
+ <file>qmmp_uk_UA.qm</file>
+ <file>qmmp_zh_TW.qm</file>
+ <file>qmmp_cs.qm</file>
+ <file>qmmp_pt_BR.qm</file>
+ <file>qmmp_de.qm</file>
+ <file>qmmp_pl_PL.qm</file>
+ <file>qmmp_fr.qm</file>
+ <file>qmmp_it.qm</file>
+ <file>qmmp_kk.qm</file>
+ <file>qmmp_lt.qm</file>
+ <file>qmmp_hu.qm</file>
+ <file>qmmp_nl.qm</file>
+ <file>qmmp_ja.qm</file>
+ <file>qmmp_sk.qm</file>
+ </qresource>
+</RCC>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_lt.ts b/src/plugins/Ui/skinned/translations/qmmp_lt.ts
new file mode 100644
index 000000000..87ad73c4a
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_lt.ts
@@ -0,0 +1,1837 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="lt">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>Apie Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>Apie</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Licenzija</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Autoriai</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Dėkojame</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_lt.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_lt.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Versija:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_lt.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Įeinantys:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Išeinantys:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Vizualizacijos:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Efektai:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Bendriniai įskiepiai:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Vertėjai</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_lt.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>&amp;Groti</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pristabdyti</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>&amp;Sustabdyti</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>&amp;Ankstesnis</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Sekantis</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>&amp;Groti/Pristabdyti</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation>Tarpas</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation>&amp;Peršokti prie failo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>&amp;Kartoti grojaraštį</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>&amp;Kartoti takelį</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>&amp;Sumaišyti</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translatorcomment>?????</translatorcomment>
+ <translation>&amp;Nesislinkti grojaraščiu</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation>&amp;Stabdyti po pasirinkto</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>&amp;Išvalyti eilę</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>Rodyti grojaraštį</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>Rodyti glotintuvą</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>Visada viršuje</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>Įkelti į visus darbastalius</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>Dvigubas dydis</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>&amp;Pridėti bylą</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>&amp;Pridėti aplanką</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>&amp;Pridėti interneto adresą</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>&amp;Pašalinti pasirinktus</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>&amp;Pašalinti visus</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>&amp;Pašalinti NEpasirinktus</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>Pašalinti neesamas bylas</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>Pašalinti besidubliuojančius pavadinimus</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation>&amp;Įtraukti į eilę</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>Apverstinis pasirinkimas</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>&amp;Nepasirinkti nei vieno</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>&amp;Pasirinkti visus</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>&amp;Takelio informacija</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>&amp;Naujas sąrašas</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>&amp;Pašalinti sąrašą</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>&amp;Įkelti sąrašą</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>&amp;Išsaugoti sąrašą</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>&amp;Pasirinkti sekantį grojaraštį</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>&amp;Pasirinkti ankstesnį grojaraštį</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>&amp;Rodyti grojaraščius</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>&amp;Nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>&amp;Apie</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>&amp;Apie Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>&amp;Išeiti</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Klaida</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Įveskite adresą</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Pridėti</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Atšaukti</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Eiti prie sekančio elemento</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Eiti prie ankstesnio elemento</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Groti dainą</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>Neišvalyti sąrašo</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Pristabdyti dainą</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Pristabdyti/Groti</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Sustabdyti dainą</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Parodyti langą bylos pasirinkimui</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Nustatyti grojimo garsą (pvz: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Parodyti/Slėpti programą</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Parodyti langą bylų pridėjimui</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Parodyti langą aplanko pridėjimui</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Aprašymas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Bylos pavadinimas</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Atlikėjas</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Albumas</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Takelis</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Išjungta</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Transportas</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Dekoderiai</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Varikliai</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>Įvairūs</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Pavadinimas</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Takelio numeris</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>Dviejų skaičių takelio numeris</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>Disko numeris</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Būklė</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Autorius</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Bylos pavadinimas</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Bylos kelias</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Žanras</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Metai</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Komentaras</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Qmmp nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Temos</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Šriftai</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Grotuvas:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Gojaraštis:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Meta duomenys</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Įkelti metaduomenis iš bylų</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Dainų sąrašas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Pavadinimo formatas:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Informacija</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Išvaizda</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Grojaraštis</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Įskiepiai</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Papildomi</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16 bitų išvestis</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Suspausta tema</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Išskleista tema</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Tinklas</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Vizualizacija</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Efektai</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Bendri</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Pasirinkimo langas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translatorcomment>Neįsivaizduoju kaip verst</translatorcomment>
+ <translation>Replay Gain</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Kiti</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Naudoti bitmap šriftą, jei įmanoma</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Naudoti temos kursorių</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Rodyti takelių numerius</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Rodyti grojaraščius</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Rodyti iššokančią informaciją</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Replay Gain metodas:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Išankstinis stiprinimas:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Stiprinimas pagal nutylėjima:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Naudoti pikų informaciją trūkinėjimo išvengimui</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Išvestis</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>Buferio dydis:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Naudoti programinį garso valdymą</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Rodyti</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>Santrumpos</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Paslėpti išjungus</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Įjungti paslėptą</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>Taisyti šabloną</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation>Lygiuoti dainų numerius</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Parsiųsti cd viršelį</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Naudoti atskiras paveiksliukų bylas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Įtraukti bylas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Išskirti bylas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Rekursinės paieškos gylis</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Grojimas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Tęsti grojimą įjungus</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Įjungti proxy palaikymą </translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Proxy serveris:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Proxy portas:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Naudoti proxy autentifikavimą</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Proxy vartotojo vardas:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Proxy slaptažodis:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>Veiksmas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>Trumpinys</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>Keisti trumpinį...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Paversti brūkšnius į tarpus</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Paversti %20 į tarpus</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Pasirinkti temų bylas</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Temų bylos</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Pridėti...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Atnaujinti</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Rodyti bylos galūnę</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Permatomumas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Pagrindinis langas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Glodintuvas</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>Nustatymas</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Įkelti/Pašalinti</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Išsaugoti nustatymus</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Išsaugoti auto-nustatymą</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;išvalyti</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Išsaugojamas nustatymas</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Nustatymo pavadinimas:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>Nustatymas #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importuoti</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>Glotintuvas</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Importuoti nustatymus</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Pašalinti iš eilės</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>Į eilę</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Pereiti prie takelio</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filtras</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Atnaujinti</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Prereiti prie</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Ankstesnis</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Groti</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Pristabdyti</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Sustoti</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Sekantis</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Pridėti bylą</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Glotintuvas</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Grojaraštis</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Gartoti grojaraštį</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Atsitiktine tvarka</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Garsumas</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Balansas</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>Garsas: %1%</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>Balansas: %1% dešinė</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>Balansas: %1% kairė</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>Balansas: centras</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>Peršokti į: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Vizualizacijos metodas</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Analizatorius</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Scope</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Išjungta</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Analizatoriaus metodas</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Įprastinis</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Ugnis</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Vertikalios linijos</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Linijos</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Bangos</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Pikai</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Atnaujinimo dažnumas</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 kps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 kps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 kps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 kps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Analyzer Falloff</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Lėčiausias</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Lėtas</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Vidutinis</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Greitas</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Greičiausias</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Peaks Falloff</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Fonas</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Permatomumas</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Pasirinkite aplanką</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Pasirinkite vieną ar kelias bylas atvėrimui</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Pereiti prie bylos</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>Rodyti</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>Grojaraštis</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Atverti grojaraštį</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Išsaugoti grojaraštį</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Grojaraščio bylos</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Palaikomi bylų tipai</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Įrankiai</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>&amp;Kopijuoti pasirinkimą į</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Rūšiuoti</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Pagal dainos pavadinimą</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>Pagal albumą</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>Pagal atlikėją</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Pagal bylos pavadinimą</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>Pagal kelią iki bylos</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Pagal datą</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Rūšiuoti pasirinktus</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Sumaišyti sąrašą</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Apversti</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>&amp;Naujas grojaraštis</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Pagal takelio numerį</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>Grojaraštis</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Veiksmai</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Grojaraščių naršyklė</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Naujas</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Ištrinti</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Pervadinti</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Įkelti</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>&amp;Įrašyti kaip...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Pervadinti</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Ištrinti</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Pervadinti grojaraštį</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Grojaraščio pavadinimas</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Iššokančios informacijos nustatymai</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Rodyti viršelį</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Permatomumas</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Atidėjimas:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Nuotraukos dydis</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Šablonas</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Ištrinti</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Įtraukti</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Atlikėjas</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Albumas</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Pavadinimas</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Takelio numeris</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>Dviejų skaičių takelio numeris</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Žanras</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Komentaras</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Autorius</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Ilgis</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>Disko numeris</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Bylos pavadinimas</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Bylos kelias</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Metai</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Būklė</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Nustatymų redaktorius</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Įkelti</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Ištrinti</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Nustatymas</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Auto-nustatymas</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Naudojimas: qmmp [nuostatos] [bylos]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Nustatymai:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Parodyti versiją ir išeiti</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Parodyti šį tekstą ir išeiti</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Nežinoma komanda</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>Nepaleisti programos</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Idėjas, pataisymus, klaidas siųsti forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>QMMP versija:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Qt versija:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>Keisti trumpinį</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>Paspauskite klavišų kombinaciją, kurią norite priskirti</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>Išvalyti</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Automatinis takelio slinkimas</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>Buferis: %1%</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Vizualizacija</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_nl.ts b/src/plugins/Ui/skinned/translations/qmmp_nl.ts
new file mode 100644
index 000000000..3036c8504
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_nl.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="nl">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>Over Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>Over</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Auteurs</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Met Dank Aan</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Licentie</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_nl.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_nl.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt MultiMedia Player (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Versie:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_nl.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Invoer Modules:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Uitvoer Modules:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Visuele Modules:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Effecten Modules:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Algemene Modules:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Vertalers</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_nl.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation type="unfinished">&amp;Afspelen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation type="unfinished">X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished">&amp;Pauze</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation type="unfinished">C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation type="unfinished">&amp;Stop</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation type="unfinished">V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation type="unfinished">&amp;Vorige</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation type="unfinished">Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation type="unfinished">&amp;Volgende</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation type="unfinished">B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation type="unfinished">&amp;Afspelen/Pauze</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation type="unfinished">Spatie</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation type="unfinished">J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation type="unfinished">&amp;Herhaal Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation type="unfinished">R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation type="unfinished">&amp;Herhaal Nummer</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation type="unfinished">Ctrl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation type="unfinished">&amp;Willekeurig</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation type="unfinished">S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation type="unfinished">&amp;Voeg Bestand Toe</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation type="unfinished">F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation type="unfinished">&amp;Voeg Map toe</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation type="unfinished">D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation type="unfinished">&amp;Voeg URL toe</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation type="unfinished">U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation type="unfinished">&amp;Verwijder Geselecteerd</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation type="unfinished">Del</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation type="unfinished">&amp;Verwijder Alles</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation type="unfinished">&amp;Verwijder Gedeselecteerde</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation type="unfinished">Verwijder niet aanwezige bestanden</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation type="unfinished">Verwijder duplicaten</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation type="unfinished">Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation type="unfinished">Draai Selectie Om</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation type="unfinished">&amp;Selecteer Niets</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation type="unfinished">&amp;Selecteer Alles</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation type="unfinished">Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation type="unfinished">&amp;Bekijk Nummer Details</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation type="unfinished">Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation type="unfinished">&amp;Nieuwe Lijst</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation type="unfinished">Ctrl+T</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished">&amp;Verwijder Lijst</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation type="unfinished">Ctrl+W</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation type="unfinished">&amp;Laad Lijst</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation type="unfinished">O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation type="unfinished">&amp;Bewaar Lijst</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation type="unfinished">Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation type="unfinished">&amp;Selecteer Volgende Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation type="unfinished">Ctrl+PgDown</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation type="unfinished">&amp;Selecteer Vorige Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation type="unfinished">Ctrl+PgUp</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation type="unfinished">&amp;Toon Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation type="unfinished">P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation type="unfinished">&amp;Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation type="unfinished">Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation type="unfinished">&amp;Over</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation type="unfinished">&amp;Over Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation type="unfinished">&amp;Sluit</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>URL om toe te voegen</translation>
+ </message>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Fout</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Toevoegen</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuleren</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Naar voren springen in afspeellijstb</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Naar achteren springen in afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Begin met afspelen van huidig nummer</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation type="unfinished">Niet de afspellijst leeghalen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Pauzeer huidig nummer</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Pauzeer als er wordt gespeeld, anders spelen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Stop huidig nummer</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Toon Ga Naar Bestandsdialoog</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Zet afspeelvolume (voorbeeld: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Toon/verberg programma</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Toon venster om bestanden toe te voegen</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Toon venster om mappen toe te voegen</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Popis</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Bestandsnaam</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Artiest</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Nummer</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Uitgeschakeld</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Protocols</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Decoders</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Engines</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Naam</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Liednummer</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>Twee-getal liednummer</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>CD nummer</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Staat</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Componist</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Bestandsnaam</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Pad</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Genre</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Jaar</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Commentaar</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Qmmp Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Vertoning</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Modules</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Geavanceerd</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Thema&apos;s</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Lettertypen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Speler:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Afspeellijst:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>Replay Gain</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Overige</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Gebruik bitmap lettertype indien aanwezig</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Gebruik thema cursor</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Metadata</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Laad metadata van bestanden</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Nummer Weergave</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Titel formaat:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Toon liednummers</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Toon afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Toon popup informatie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Voorkeuren</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Informatie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Lees Hoes Af</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Gebruik aparte afbeeldingsbestanden</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Inclusief de bestanden:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Exclusief de bestanden:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Recursieve zoekdiepte:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Afspelen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Verdergaan met afspelen bij opstarten</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Replay Gain stand:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Voorversterking:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Standaard verhoging:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Gebruik piek info om stotteren te voorkomen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Uitvoer:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation type="unfinished">ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16bit uitvoer</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Connectiviteit</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Weergave</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Bestandsdialoog</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Gebruik proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Proxy host naam:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Proxy poort:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Gebruik authenticatie bij proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Proxy gebruikersnaam:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Proxy wachtwoord:</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Gearchiveerd thema</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Niet gearchiveerd thema</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Visualisatie</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Effecten</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Algemeen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Audio</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Gebruik software volume</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Verberg bij sluit</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Start verborgen</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Zet lage strepen om in spaties</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Zet %20 om in spaties</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Selecteer themabestanden</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Thema bestanden</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Toevoegen...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Herlaad</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Laad protocol</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Transparantie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Hoofdscherm</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Equalizer</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation type="unfinished">Equalizer</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>voorinstelling</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Laad/Verwijder</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Bewaar Instelling</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Bewaar Auto-laad Instelling</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importeer</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Leeghalen</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Bewaren van Preset</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Instellingnaam:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>instelling #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Importer Instelling</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Verwijder uit lijst</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>Rij</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Ga Naar Nummer</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filter</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Herlaad</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Ga Naar</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Vorige</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Afspelen</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Pauze</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Stop</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Volgende</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Bestand toevoegen</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Equalizer</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Herhaal afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Willekeurig</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Volume</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Balans</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Visualisatiestand</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Analysator</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Scoop</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Uit</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Analysatorstand</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Normaal</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Vuur</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Verticale Lijnen</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Lijnen</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Strepen</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Toppen</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Vernieuw Frequentie</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 Hz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 Hz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 Hz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 Hz</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Analysator Uitval</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Traagst</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Traag</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Normaal</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Snel</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Snelst</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Toppen Uitval</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Achtergrond</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Transparantie</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Kies een map</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Kies een of meer bestanden om te openen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Spring Naar Bestand</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation type="unfinished">Weergave</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Afspeellijst Bestanden</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Open Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Bewaar Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Alle Ondersteunde Bitstromen</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Gereedschappen</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Sorteer Lijst</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Op Titel</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>Op Album</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>Op Artiest</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Op Bestandsnaam</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>Op Pad + Bestandsnaam</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Op Datum</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Sorteer Selectie</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Schud Lijst</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Draai Lijst Om</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Op Lied Nummer</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Acties</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Afspeellijst Browser</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Nieuw</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Verwijder</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Hernoem</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Laad</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>&amp;Bewaar Als...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Hernoem</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Verwijder</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Hernoem Afspeellijst</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Afspeellijst:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Popup Informatie Instellingen</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Toon Hoes</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Transparantie:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Vertraging:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Hoesgrootte:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Layout</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Terugzetten</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Invoegen</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Artiest</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Naam</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Liednummer</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>Twee-cijfer liednummer</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Genre</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Commentaar</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Componist</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Duur</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>CD nummer</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Bestandsnaam</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Pad</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Jaar</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Staat</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Instellingen Bewerker</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Laad</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Verwijder</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Instelling</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Auto-instellingen</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Gebruik: qmmp [opties] [bestanden]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Opties:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Print versienummer en sluit</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Ideëen, patches, foutrapporten zenden naar forkotov02@hotmail.ru (anglicky)</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Toon dit tekstje en sluit</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Onbekend commando</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>QMMP versie:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Qt versie:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Automatisch naar Liednummer Scrollen</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Visualisatie</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_pl_PL.ts b/src/plugins/Ui/skinned/translations/qmmp_pl_PL.ts
new file mode 100644
index 000000000..adcf47709
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_pl_PL.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pl">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>O programie Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>O programie</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Warunki licencji</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Autorzy</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Podziękowania</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Odtwarzacz Multimedialny oparty na QT (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Wersja:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Wtyczki wejściowe:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Wtyczki wyjściowe:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Wtyczki wizualizacji:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Wtyczki efektów:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Wtyczki ogólne:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Tłumacze</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>&amp;Odtwarzaj</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Wstrzymaj</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation>C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>&amp;Zatrzymaj</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>&amp;Poprzedni</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Następny</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>&amp;Odtwarzaj/Wstrzymaj</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation>Spacja</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation>Skocz do utworu</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>Powtó&amp;rz listę odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>&amp;Powtórz utwór</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>&amp;Losowo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation>Zatrzymaj po aktualnie odtwarzanym utworze</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>Wy&amp;czyść kolejkę</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>Pokaż listę odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>Pokaż korektor</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>Zawsze na wierzchu</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>Na wszystkie pulpity</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>Podwójny rozmiar</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>&amp;Dodaj plik</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation>F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>Dodaj &amp;katalog</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>Dod&amp;aj Url</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>&amp;Usuń zaznaczone</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation>Del</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>Usuń &amp;wszystkie</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>Usuń &amp;niezaznaczone</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>Usuń niedostępne pliki</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>Usuń duplikaty</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation>Dodaj do/Usuń z kolejki</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>Odwróć zaznaczenie</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>&amp;Odznacz wszystkie</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>&amp;Zaznacz wszystkie</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation>Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>&amp;Pokaż informacje o pliku</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>&amp;Nowa lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>Usuń listę o&amp;dtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>&amp;Ładuj listę</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>&amp;Zapisz listę</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation>Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>Wybierz na&amp;stępną listę</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>Wybierz poprzednią li&amp;stę</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>Pokaż li&amp;sty odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>&amp;Ustawienia</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation>Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>&amp;O programie</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>&amp;O Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>&amp;Wyjście</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation>Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Błąd</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Wpisz URL</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Dodaj</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Anuluj</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Przeskocz do przodu na liście odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Przeskocz do tyłu na liście odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Zacznij odtwarzać bieżący utwór</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>Nie czyść listy</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Wstrzymaj bieżący utwór</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Wstrzymaj jeśli odtwarza, odtwarzaj w przeciwnym wypadku</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Zatrzymaj bieżący utwór</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Wyświetl okno dialogowe Skocz do</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Ustaw głośność odtwarzania (np: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Pokaż/ukryj aplikację</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Wyświetl okno dialogowe dodawania plików</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Wyświetl okno dialogowe dodawania katalogów</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Opis</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Nazwa pliku</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Artysta</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Utwór</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Wyłączone</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Transporty</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Dekodery</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Silniki</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>Inne</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Tytuł</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Numer utworu</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>Dwuznakowy numer utworu</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>Numer albumu</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Warunek</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Gatunek</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Kompozytor</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Nazwa pliku</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Lokalizacja</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Rok</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Komentarz</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Ustawienia Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Skóry</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Czcionki</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Odtwarzacz:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Lista odtwarzania:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Metadane</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Załaduj metadane z pliku</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Wyświetlanie utworu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Format tytułu:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Ustawienia</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Informacje</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Wygląd</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Lista odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Wtyczki</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Zaawansowane</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16-bitowe odtwarzanie</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Skompresowana skórka</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Niekompresowana skórka</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Sieć</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Wizualizacje</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Efekty</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Ogólne</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Okno dialogowe</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Dźwięk</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Zaawansowane</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Użyj czcionki bitmapowej jeśli jest dostępna</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Użyj kursorów z motywu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Wyświetl numery utworów na liście odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Pokaż listy odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Pokaż informację popup</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Tryb Replay Gain:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Domyślne wzmocnienie:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Użyj informacji peak by zapobiec &quot;klipnięciom&quot;</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Wyjście:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>Rozmiar bufora:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Użyj programowej regulacji głośności</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Wygląd</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>Skróty klawiszowe</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Zminimalizuj przy zamykaniu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Uruchom zminimalizowany</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>Edytuj szablon</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation>Pokaż kotwicę</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation>Wyrównaj w pionie numery utworów</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Pobieranie okładek</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Użyj oddzielnych obrazków</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Użyj plików:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Wyłącz pliki:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Głębokość rekursywnego przeszukiwania:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Odtwarzanie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Wznów odtwarzanie po uruchomieniu programu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Włącz proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Nazwa hosta proxy:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Port proxy:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Użyj autoryzacji z proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Nazwa użytkownika:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Hasło:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>Akcje</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>Skrót</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>Zmień skrót...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Konwertuj podkreślenia na spacje</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Konwertuj sekwencje %20 na spacje</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Wybierz skórę</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Pliki skór</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Dodaj...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Odśwież</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Pokaż protokół</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Przezroczystość</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Okno główne</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Korektor</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>profil</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>Wczytaj/&amp;Usuń</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>Zapi&amp;sz Profil</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>Zapi&amp;sz Auto-ładowanie Profilu</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Wyczyść</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Zapisywanie Profilu</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Nazwa Profilu:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>profil #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importuj</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>Korektor</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Importuj Profil</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Wykolejkuj</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>Kolejkuj</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Skocz do utworu</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filtr</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Odśwież</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Skocz do</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Poprzedni</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Odtwarzaj</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Pauza</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Zatrzymaj</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Następny</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Dodaj plik</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Equalizer</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Lista odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Powtórz listę odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Losowo</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Głośność</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Balans</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>Głośność: %1%</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>Balans: %1% prawy</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>Balans: %1% lewy</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>Balans: środek</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>Przewijanie: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Tryb wizualizacji</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Analizator</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Wyłączone</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Tryb Analizatora</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Normalny</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Ogień</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Pionowe Linie</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Linie</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Słupki</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Piki</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Odświeżanie</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Prędkość Analizatora</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Najwolniej</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Wolno</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Średnio</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Szybko</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Najszybciej</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Opadanie Pików</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Tło</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Przezroczystość</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Wybierz katalog</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Wybierz jeden lub więcej plików do otwarcia</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Skocz do pliku</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>Wygląd</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>Lista odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Otwórz listę odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Zapisz listę odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Pliki listy odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Wszystkie wspierane formaty</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Narzędzia</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>Kopiuj zazna&amp;czenie do</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Sortuj listę</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Według nazwy</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>Według nazwy albumu</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>Według artysty</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Według nazwy pliku</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>Według Ścieżki + Nazwy pliku</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Wg Daty</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Sortuj zaznaczone</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Tasuj listę</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Odwróć listę</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>&amp;Nowa lista odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Wg numeru utworu</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>Lista odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Akcje</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Menedżer list odtwarzania</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Nowa</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Usuń</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Zmień nazwę</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>Załaduj</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>Zapi&amp;sz jako...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Zmień nazwę</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>Usuń</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Zmień nazwę listy</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Nazwa listy odtwarzania:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Ustawienia informacji Popup</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Pokaż okładkę</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Przezroczystość:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Opóźnienie:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Rozmiar okładki:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Szablon</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Przywróć</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Wstaw</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Artysta</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Tytuł</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Numer utworu</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>Dwuznakowy numer utworu</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Gatunek</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Komentarz</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Kompozytor</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Długość</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>Numer albumu</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Nazwa pliku</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Lokalizacja</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Rok</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Warunek</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Edytor Profili</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Ładuj</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Usuń</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Profil</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Auto-profil</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Użycie: qmmp [opcje] [pliki]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Opcje:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>Nie uruchamiaj aplikacji</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Wyświetla wersję programu i wychodzi</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Pomysły, poprawki, raporty o błędach proszę wysyłać na forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Wyświetla ten tekst i wychodzi</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Nieznane polecenie</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Wersja QMMP:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Wersja QT:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>Modyfikuj skrót</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>Wciśnij kombinację klawiszy, które chcesz przypisać</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>Wyczyść</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Automatyczne przewijanie tytułu utworu</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>Buforowanie: : %1%</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Wizualizacja</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_pt_BR.ts b/src/plugins/Ui/skinned/translations/qmmp_pt_BR.ts
new file mode 100644
index 000000000..548b20727
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_pt_BR.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pt">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation type="unfinished">Sobre QMMP</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation type="unfinished">Sobre</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation type="unfinished">Concordância com a Licença</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation type="unfinished">Autores</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation type="unfinished">Agradecimentos para</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation type="unfinished">Tocar</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished">Pausar</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation type="unfinished">Parar</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation type="unfinished">Anterior</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation type="unfinished">Próximo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation type="unfinished">&amp;Adicionar arquivo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation type="unfinished">&amp;Adicionar Diretorio</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation type="unfinished">&amp;Remover selecionadas</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation type="unfinished">&amp;Remover tudo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation type="unfinished">&amp;Remover não selecionadas</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation type="unfinished">Inverter Seleção</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation type="unfinished">&amp;Nenhum selecionado</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation type="unfinished">&amp;Selecionar tudo</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation type="unfinished">&amp;Ver detalhes da Faixa</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation type="unfinished">&amp;Nova lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation type="unfinished">&amp;Carregar lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation type="unfinished">&amp;Salvar lista</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation type="unfinished">Configurações</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation type="unfinished">&amp;Sobre</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation type="unfinished">Sair</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation type="unfinished">Descrição</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation type="unfinished">Nome do Arquivo</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation type="unfinished">Artista</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation type="unfinished">Álbum</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation type="unfinished">Título</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation type="unfinished">Gênero</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation type="unfinished">Ano</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation type="unfinished">Comentário</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation type="unfinished">Configurações</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation type="unfinished">Temas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation type="unfinished">Fontes</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation type="unfinished">Player</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation type="unfinished">Lista de músicas:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation type="unfinished">MetaData</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation type="unfinished">Carregar arquivo MetaData</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation type="unfinished">Mostrar música</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation type="unfinished">Tipo de Formato:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation type="unfinished">Preferências</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation type="unfinished">Informações</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation type="unfinished">Aparência</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Lista de músicas</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation type="unfinished">Plugins</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation type="unfinished">Avançado</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation type="unfinished">Recarregar</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation type="unfinished">preset</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation type="unfinished">&amp;Carregar/Deletar</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation type="unfinished">%Salvar preset</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation type="unfinished">&amp;Salvar Auto-Carregar preset</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation type="unfinished">&amp;Limpar</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation type="unfinished">Salvando Preset</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation type="unfinished">Nome Preset:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation type="unfinished">Preset #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation type="unfinished">&amp;Importar</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation type="unfinished">Importar Preset</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation type="unfinished">Sem Faixa na Fila</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation type="unfinished">Faixa na Fila</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation type="unfinished">Pular de faixa</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filtro</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation type="unfinished">Recarregar</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation type="unfinished">Pular para</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Lista de músicas</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation type="unfinished">Escolher o diretorio</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation type="unfinished">Selecionar um ou mais arquivos</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation type="unfinished">Pular para arquivo</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Lista de músicas</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation type="unfinished">Abrir Playlist</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation type="unfinished">Salvar Playlist</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation type="unfinished">ФArquivos de lista de músicas</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation type="unfinished">Classificar lista</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation type="unfinished">Por Título</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation type="unfinished">Por Nome</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation type="unfinished">Por Dirertório + Nome</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation type="unfinished">Por Data</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation type="unfinished">Classificar por Seleção</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation type="unfinished">Lista Eleatória</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation type="unfinished">Lista Revertida</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Lista de músicas</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation type="unfinished">Remover</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation type="unfinished">...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation type="unfinished">Artista</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation type="unfinished">Álbum</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation type="unfinished">Título</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation type="unfinished">Gênero</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation type="unfinished">Comentário</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation type="unfinished">Ano</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation type="unfinished">Editor de Preset</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation type="unfinished">Carregar</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation type="unfinished">Remover</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation type="unfinished">Preset</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation type="unfinished">Auto-preset</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_ru.ts b/src/plugins/Ui/skinned/translations/qmmp_ru.ts
new file mode 100644
index 000000000..52b8a5b2d
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_ru.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru_RU">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>О Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>О программе</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Лицензия</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Авторы</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Благодарности</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_ru.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_ru.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Версия:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_ru.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Модули ввода:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Модули вывода:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Модули визуализации:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Модули эффектов:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Общие модули:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Переводчики</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_ru.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>&amp;Воспроизвести</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Приостановить</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>&amp;Стоп</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>&amp;Предыдущий фрагмент</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Следующий фрагмент</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>&amp;Воспр/приост</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>&amp;Повторять список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>&amp;Повторять трек</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>&amp;В случайном порядке</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation>&amp;Не продвигаться по списку</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation>&amp;Остановить после выделенного</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>&amp;Очистить очередь</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>Показывать список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>Показывать эквалайзер</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>Поверх всех окон</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>Разместить на всех рабочих столах</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>Двойной размер</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>&amp;Добавить файл</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>&amp;Добавить директорию</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>&amp;Добавить URL</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>&amp;Удалить выделенное</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>&amp;Удалить всё</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>&amp;Удалить невыделенное</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>Удалить недоступные файлы</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>Удалить дубликаты</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation>&amp;В очередь</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>Инвертировать выделение</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>&amp;Снять выделение</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>&amp;Выделить всё</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>&amp;Информация</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>&amp;Новый список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>&amp;Удалить список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>&amp;Загрузить список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>&amp;Сохранить список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>&amp;Выбрать следующий список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>&amp;Выбрать предыдущий список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>&amp;Показать списки</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>&amp;Настройки</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>&amp;О программе</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>&amp;О библиотеке Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>&amp;Выход</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Ошибка</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Введите адрес для добавления</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Добавить</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Отмена</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Перейти к следующему фрагменту</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Перейти к предыдущему фрагменту</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Воспроизвести текущую песню</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>Не очищать лист</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Приостановить текущую песню</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Приостановить/воспроизвести</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Остановить текущую песню</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Показать диалог перехода к файлу</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation>Завершить приложение</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Установить громкость (пример: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Показать/скрыть приложение</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Показать диалог добавления файлов</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Показать диалог добавления директорий</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Описание</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Имя файла</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Исполнитель</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Альбом</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Дорожка</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Отключено</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Транспорты</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Декодеры</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Внешние проигрыватели</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>Другие</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Название</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Номер трека</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>2-x разрядный номер трека</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>Номер диска</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Условие</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Жанр</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Композитор</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Имя файла</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Путь к файлу</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Год</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Комментарий</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Настройки Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Обложки</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Шрифты</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Плеер:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Список:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Метаданные</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Считывать метаданные из файлов</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Список песен</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Формат названия:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Настройки</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Информация</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Внешний вид</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Список</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Модули</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Дополнительно</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16-битный вывод</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Упакованная тема</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Распакованная тема</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Сеть</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Визуализация</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Эффекты</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Общие</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Файловый диалог</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Аудио</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>Выравнивание громкости (Replay Gain)</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Разное</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Использовать растровые шрифты, если возможно</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Использовать встроенные курсоры</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Показывать номера песен</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Показывать списки воспроизведения</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Показывать всплывающее окно с информацией</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Режим Replay Gain:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Предусиление:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>дБ</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Усиление по умолчанию:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Использовать пиковое значение для предотвращения срезания</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Вывод:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>Размер буфера:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation>мс</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Использовать программную регулировку громкости</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Вид</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>Сочетания клавиш</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Скрывать при закрытии</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Запускать скрытым</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>Редактировать шаблон</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation>Показывать &quot;якорь&quot;</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation>Выравнивать номера фрагментов</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Поиск обложки альбома</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Использовать отдельные файлы с изображениями</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Включить файлы:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Исключить файлы:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Глубина рекурсивного поиска:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Воспроизведение</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Продолжить воспроизведение после запуска</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Прокси</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Использовать прокси</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Прокси сервер:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Прокси порт:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Использовать авторизацию на прокси</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Имя пользователя прокси:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Пароль прокси:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>Действие</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>Сочетание клавиш</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>Изменить сочетание клавиш...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Преобразовывать подчёркивание в пробел</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Преобразовывать %20 в пробел</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Выберите файлы обложек</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Файлы обложек</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Добавить...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Обновить</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Показывать протокол</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Прозрачность</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Главное окно</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Эквалайзер</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>предустановка</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Загрузить/Удалить</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Сохранить предустановку</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Сохранить авто-предустановку</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Очистить</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Сохранение предустановки</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Имя предустановки:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>предустановка #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Импортировать</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>Эквалайзер</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Импорт предустановки</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Снять с очереди</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>В очередь</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Перейти к треку</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Фильтр</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Обновить</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Перейти к</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Предыдущий фрагмент</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Воспроизвести</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Приостановить</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Стоп</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Следующий фрагмент</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Добавить файл</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Эквалайзер</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Список</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Повторять список</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>В случайном порядке</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Громкость</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Баланс</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>Громкость: %1%</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>Баланс: %1% вправо</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>Баланс: %1% влево</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>Баланс: по центру</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>Поиск: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Режим визуализации</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Анализатор</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Осциллограф</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Выключено</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Режим анализатора</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Обычный</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Огонь</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Вертикальные линии</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Линии</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Полоски</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Пики</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Частота обновления</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Падение анализатора</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Самое медленное</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Медленное</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Среднее</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Быстрое</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Самое быстрое</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Падение пиков</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Фон</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Прозрачность</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Выберите директорию</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Выберите один или несколько файлов</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Перейти к файлу</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>Вид</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>Список</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Открыть список</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Сохранить список</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Файлы списков</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Все форматы</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Сервис</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>&amp;Копировать выделенное в</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Сортировать</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>По названию</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>По альбому</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>По исполнителю</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>По имени файла</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>По пути и файлу</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>По дате</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Сортировать выделенное</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Перемешать</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Перевернуть</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>&amp;Новый список</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>По номеру трека</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>Список</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Действия</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Обзор списков воспроизведения</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Создать</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Переименовать</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Загрузить</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>&amp;Сохранить как...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Переименовать</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Удалить</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Переименовать список</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Имя списка:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Настройки всплывающей информации</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Показывать обложку</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Прозрачность:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Задержка:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>мс</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Размер обложки:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Шаблон</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Сброс</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Вставить</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Исполнитель</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Альбом</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Название</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Номер трека</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>2-x разрядный номер трека</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Жанр</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Комментарий</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Композитор</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Длительность</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>Номер диска</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Имя файла</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Путь к файлу</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Год</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Условие</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Редактор предустановок</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Загрузить</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Предустановка</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Авто-предустановка</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Использование: qmmp [options] [files]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Опции:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>Не запускать приложение</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Показать версии и выйти</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Идеи, исправления, отчёты об ошибках: forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Показать этот текст и выйти</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Неизвестная команда</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Версия QMMP:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Версия Qt:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>Изменить сочетание клавиш</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>Нажмите клавиши, сочетание которых вы хотите использовать</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>Очистить</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Автопрокрутка названия песни</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>Буферизация: %1%</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Визуализация</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_sk.ts b/src/plugins/Ui/skinned/translations/qmmp_sk.ts
new file mode 100644
index 000000000..9351796c9
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_sk.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="sk">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>O Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>O progarme</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Autori</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Poďakovanie</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Licencia</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_sk.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_sk.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt-based Multimedia Player (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Verzia:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_sk.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Vstupné moduly:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Výstupné moduly:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Vizualizačné moduly:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Moduly efektov:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Všebecné moduly:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Prekladatelia</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_sk.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>&amp;Hrať</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pozastaviť</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation>C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>Za&amp;staviť</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>&amp;Predchádzajúca</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Nasledujúca</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>&amp;Hrať/Pozastaviť</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation>Medzerník</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation>P&amp;resjočiť na súbor</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>&amp;Opakovať playlist</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>&amp;Opakovať skladbu</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation>Ctrl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>&amp;Zamiešať</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation>S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation>&amp;Nepokročilý playlist</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation>Ctrl+N</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation>&amp;Zastaviť po vybranej</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation>Ctrl+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>&amp;Vyčistiť rad</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation>Alt+Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>Ukázať playlist</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation>Alt+E</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>Ukázať ekvalizér</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation>Alt+G</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>Vždy na vrchu</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>Dať na všetky plochy</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>Dvojitá veľkosť</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation>Meta+D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>&amp;Pridať súbor</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation>F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>&amp;Pridať priečinok</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>&amp;Pridať URL</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>Odst&amp;rániť vybraté</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation>Del</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>Odst&amp;rániť všetko</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>Odst&amp;rániť nevybraté</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>Odstrániť nedostupné súbory</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>Odstrániť duplikáty</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation>&amp;Zaradiť prepínanie</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>Invertovať výber</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>Zrušiť &amp;výber</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>&amp;Vybrať všetko</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation>Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>&amp;Zobraziť detaily o skladbe</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>&amp;Nový zoznam</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation>Ctrl+T</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>&amp;Vymazať zoznam</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation>Ctrl+W</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>&amp;Načítať zoznam</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>&amp;Uložiť zoznam</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation>Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>&amp;Vybrať nasledujúci playlist</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation>Ctrl+Page Down</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>&amp;Vybrať predchádzajúci playlist</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation>Ctrl+Page Up</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>&amp;kázať playlisty</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation>P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>Na&amp;stavenia</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation>Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>O progr&amp;ame</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>&amp;O Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>&amp;Ukončiť</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation>Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Pridať URL</translation>
+ </message>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Chyba</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>Prid&amp;ať</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Zrušiť</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Posunúť sa v plaliste</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Vrátiť sa v playliste</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Začať prehrávanie súčasnej piesne</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>Nevyčisťovať playlist</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Pozastaviť súčasnú pieseň</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Pozastaviť ak hrá, inak hrať</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Zastaviť súčasnú pieseň</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Zobraziť dialóg Preskočiť na súbor</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation>Ukončiť program</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Nastaviť hlasitosť prehrávania (napríklad: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Zobraziť/skryť program</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Zobraziť dialóg Pridať súbor</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Zobraziť dialóg Pridať priečinok</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Popis</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Názov súboru</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Interprét</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Skladba</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Zakázané</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Protokoly</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Dekodéry</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Prehrávače</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>Rôzn.</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Názov</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Číslo skladby</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>Dvojmiestne číslo skladby</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>Číslo disku</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Stav</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Skladateľ</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Názov súboru</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Cesta k súboru</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Žáner</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Rok</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Poznámka</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Qmmp nastavenia</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Vzhľad</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Playlist</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Moduly</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Pokročilé</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Skiny</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Písma</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Prehrávač:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Playlist:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>Zisk pri prehrávaní</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Rôzne</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Použiť bitmapové písmo, ak je dostupné</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Použiť kurzory zo skinu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>Skratky</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Metadáta</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Čítať metadáta zo súborov</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Zobrazenie skladby</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Formát titulku:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Zobrazovať čísla piesní</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Zobrazovať playlisty</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Zobrazovať upozornenia s informáciami</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation>Zobrazovať ukotvenie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation>Zarovnať čísla piesní</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Nastavenia</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Informácie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Získať obrázok obalu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Používať samostatné súbory obrázkov</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Zahrnúť súbory:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Vynechať súbory:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Hĺbka rekurzívneho hľadania:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Prehrávanie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Pri štarte pokračovať v prehrávaní</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Režim úpravy zisku pri prehrávaní:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Predzosilnenie:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation>dB</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Východzý zisk:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Použiť informáciu o vrchole k zabráneniu orezu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Výstup:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>Veľkosť bufferu:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16bitový výstup</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>Činnosť</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>Skratka</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>Zmeniť skratku...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Pripojenie k sieti</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Zobrazenie</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>Upraviť šablónu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Súborový dialóg</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Povoliť používanie proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Adresa proxy:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Port proxy:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Použiť autentifikáciu s proxy</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Proxy použivateľské meno:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Proxy heslo:</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Archivovaný skin</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Nearchivovaný skin</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Vizualizácie</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Efekty</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Všeobecné</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Zvuk</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Používať softwarové ovládanie hlasitosti</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Skryť pri zatvorení</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Spustiť skryté</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Previesť podčiarknutia na medzery</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Previesť %20 na mdezery</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Vybrať súbory skinov</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Súbory skinov</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Pridať...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Obnoviť</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Zobraziť protokol</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Priehľadnosť</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Hlavné okno</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Ekvalizér</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>Ekvalizér</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>předvolba</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Načíst/Odstranit</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Uložit předvolbu</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>Uložit &amp;automatickou předvolbu</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Importovat</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Vynulovat</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Uložení předvolby</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Název předvolby:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>předvolba #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Importovat předvolbu</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation>F5</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Vyradiť</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>Zaradiť</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Preskočiť na skladbu</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filter</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Obnoviť</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Preskočiť na</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Predchádzajúca</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Hrať</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Pozastaviť</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Zastaviť</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Nasledujúca</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Pridať súbor</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Ekvalizér</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Playlist</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Opakovať playlist</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Zamiešať</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Hlasitosť</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Vyváženie</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>Hlasitosť: %1%</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>Vyváženie: %1% vpravo</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>Vyváženie: %1% vľavo</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>Vyváženie: stred</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>Pretočiť na: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Režim vizualizácií</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Analyzér</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Osciloskop</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Vypnuté</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Režim analyzéra</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Normálny</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Oheň</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Stĺpce</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Čiary</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Prúžky</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Špičky</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Obnovovacia frekvencia</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Pokles analyzéra</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Najpomaljšie</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Pomaly</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Stredne</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Rýchlo</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Najrýchlejšie</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Pokles špičiek</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Pozadie</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Priehľadné</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Vyberte priečinok</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Vyberte jeden alebo viac súborov na otvorenie</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Preskočiť na súbor</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>Zobraziť</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>Playlist</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Súbory playlistov</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Otvoriť playlist</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Uložiť playlist</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Všetky podporované formáty</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Nástroje</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Triediť zoznam</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Podľa názvu</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>Podľa albumu</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>Podľa interpréta</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Podľa názvu súboru</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>Podľa cesty a názvu súboru</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Podľa dátumu</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Potriediť výber</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Zamiešať zoznam</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Otočiť zoznam</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>&amp;Nový playlist</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>&amp;Skopírovať výber do</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>Playlist</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Podľa čísla skladby</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Činnosti</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Prehliadač playlistu</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Nový</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Vymazať</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Premenovať</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Načítať</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>&amp;Uložiť ako...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Premenovať</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Vymazať</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Premenovať playlist</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Název playlistu:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Nastavenie informácií v upozornení</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Zobraziť obal</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Priehľadnosť:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Oneskorenie:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>ms</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Veľkosť obalu:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Šablóna</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Zresetovať</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Vložiť</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Interprét</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Album</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Názov</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Číslo skladby</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>Dvojmiestne číslo skladby</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Žáner</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Poznámka</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Skladateľ</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Dĺžka</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>Číslo disku</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Názov súboru</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Cesta k súboru</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Rok</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Stav</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Editor predvolieb</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Načítať</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Vymazať</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Predvoľba</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Automatická predvoľba</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Použitie: qmmp [možnosti] [súbory]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Možnosti:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>Nezapnúť program</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Vypísať číslo verzie a skončiť</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Nápady, záplaty, hlásenie chýb posílejte na forkotov02@hotmail.ru (anglicky)</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Zobraziť tento text a skončiť</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Neznámý príkaz</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Verzia QMMP:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Verzia Qt:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>Zmeniť skratku</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>Stlačte klávesovú kombináciu ktorú chcete priradiť</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>Vyčistiť</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Automaticky skrolovať názov piesne</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>Bufferuje sa:%1%</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Vizualizácie</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_tr.ts b/src/plugins/Ui/skinned/translations/qmmp_tr.ts
new file mode 100644
index 000000000..95b5b6d3e
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_tr.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="tr">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>Qmmp Hakkında</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>Hakkında</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Lisans Anlaşması</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Yazarlar</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Teşekkürler</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_tr.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_tr.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Qt tabanlı Çokluortam Oynatıcısı (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Sürüm:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_tr.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Girdi eklentileri:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Çıktı eklentileri:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Görsel eklentiler:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Efekt eklentileri:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Genel eklentiler:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Çevirmenler</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_tr.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation type="unfinished">&amp;Çal</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation type="unfinished">X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished">&amp;Duraklat</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation type="unfinished">C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation type="unfinished">&amp;Durdur</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation type="unfinished">V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation type="unfinished">&amp;Önceki</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation type="unfinished">Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation type="unfinished">&amp;Sonraki</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation type="unfinished">B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation type="unfinished">&amp;Oynat/Duraklat</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation type="unfinished">Boşluk</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation type="unfinished">J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation type="unfinished">&amp;Çalma Listesini Yinele</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation type="unfinished">R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation type="unfinished">&amp;Parçayı Yinele</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation type="unfinished">Ctrl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation type="unfinished">&amp;Rastgele</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation type="unfinished">S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation type="unfinished">&amp;Dosya Ekle</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation type="unfinished">F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation type="unfinished">&amp;Dizin Ekle</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation type="unfinished">D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation type="unfinished">&amp;Url Ekle</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation type="unfinished">U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation type="unfinished">&amp;Seçileni Kaldır</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation type="unfinished">Del</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation type="unfinished">&amp;Hepsini Kaldır</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation type="unfinished">&amp;Seçilmemişleri Kaldır</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation type="unfinished">Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation type="unfinished">Seçimi Tersine Çevir</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation type="unfinished">&amp;Hiçbirini Seçme</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation type="unfinished">&amp;Tümünü Seç</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation type="unfinished">Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation type="unfinished">&amp;Parça Detaylarını Göster</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation type="unfinished">Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation type="unfinished">&amp;Yeni Liste</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation type="unfinished">&amp;Liste Yükle</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation type="unfinished">O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation type="unfinished">&amp;Listeyi Kaydet</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation type="unfinished">Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation type="unfinished">&amp;Ayarlar</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation type="unfinished">Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation type="unfinished">&amp;Hakkında</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation type="unfinished">&amp;Qt Hakkında</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation type="unfinished">&amp;Çıkış</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation type="unfinished">Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Hata</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Eklenecek URL girin</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Ekle</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;İptal</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>İleri atla</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Geri atla</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Mevcut şarkıyı çalmaya başla</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation type="unfinished">Çalma listesini temizleme</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Mevcut şarkıyı duraklat</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Çalıyorsa duraklat, değilse oynat</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Mevcut şarkıyı durdur</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Dosyaya atlama diyaloğunu göster</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Uygulamayı göster/gizle</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Dosya ekleme diyaloğunu göster</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Dizin ekleme diyaloğunu göster</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Açıklama</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Dosya adı</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Sanatçı</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Albüm</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Başlık</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Tarz</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Yıl</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Yorum</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Qmmp Ayarları</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Kabuklar</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Fontlar</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Oynatıcı:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Çalma Listesi:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Veri bilgisi</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Veri bilgisini dosyadan yükle</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Şarkı Göstergesi</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Başlık formatı:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Tercihler</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Bilgi</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Görünüm</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Çalma Listesi</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Eklentiler</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Gelişmiş</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Arşivlenmiş kabuk</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Arşivlenmemiş kabuk</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Bağlanırlık</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Görsellik</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Efektler</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Genel</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Dosya Diyaloğu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Ses</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Şarkı numaralarını göster</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Yazılımsal ses kontrolünü kullan</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Kapatınca saklan</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Gizli başlat</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Vekil sunucu</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Vekil sunucu kullanımını etkinleştir</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Vekil sunucu adı:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Vekil sunucu portu:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Vekil sunucu yetkilendirmesi kullan</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Vekil sunucu kullanıcı adı:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Vekil sunucu parolası:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Alt çizgileri boşluğa çevir</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>%20 yi boşluğa çevir</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Kabuk Dosyası Seç</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Kabuk dosyaları</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Ekle...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Yenile</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Protokolü göster</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Transparanlık</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Ana pencere</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Ekolayzır</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>tanımlanmış ayar</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Yükle/Sil</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>Tanımlanmış &amp;Ayarları Kaydet</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Otomatik Tanımlanmış Ayarları Kaydet</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Temizle</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Tanımlanmış Ayarla Kaydediliyor</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Tanımlanmış ayar adı:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>tanımlanmış ayar #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;İçe Aktar</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation type="unfinished">Ekolayzır</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Tanımlanmış Ayarları Al</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation type="unfinished">Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation type="unfinished">J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Kuyrukta Değil</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>Kuyruk</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Parçaya Git</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Filtre</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Yenile</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Git</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Önceki</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Oynat</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Duraklat</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Durdur</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Sonraki</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Dosya ekle</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Ekolayzır</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Çalma Listesi</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Çalma Listesini Yinele</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Rastgele</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Ses</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Denge</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Görselleştirme Modu</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Çözümleyici</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Kapsam</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Kapat</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Çözümleyici Modu</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Normal</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Ateş</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Dikey Satırlar</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Satırlar</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Çubuklar</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Tepeler</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Tazeleme Oranı</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Çözümleyici Düşüşü</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>En yavaş</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Yavaş</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Orta</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Hızlı</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>En hızlı</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Tepe Düşüşü</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Arkaplan</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Transparan</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Bir dizin seçin</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Açmak için bir yada daha çok dosya seçin</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Parçaya Git</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Çalma Listesi</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Çalma Listesini Aç</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Çalma Listesini Kaydet</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Çalma Listesi Dosyaları</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Tüm Desteklenen Bitstreamler</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Araçlar</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Listeyi Sınıflandır</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>Başlığa Göre</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>Dosya Adına Göre</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>Dosya Yolu + Dosya Adına Göre</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>Tarihe Göre</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Seçilenleri Sınıflandır</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Rastgele Listele</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Listeyi Ters Çevir</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>Parça Numarasına Göre</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation type="unfinished">Çalma Listesi</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Eylemler</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation type="unfinished">Sil</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation type="unfinished">...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation type="unfinished">Sanatçı</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation type="unfinished">Albüm</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation type="unfinished">Başlık</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation type="unfinished">Tarz</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation type="unfinished">Yorum</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation type="unfinished">Yıl</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Tanımlanmış Ayar Düzenleyici</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Yükle</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Sil</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Tanımlanmış Ayar</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Ayarları Otomatik Tanımla</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Kullanım:qmmp [seçenek] [dosyalar]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Seçenekler:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Sürüm numarasını yazdır ve çık</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Fikirleinizi, yamalarınızı, hata raporlarınızı forkotov02@hotmail.ru adresine gönderin</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Bu metni göster ve çık</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>QMMP sürümü:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Qt sürümü:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Şarkı Adını Otomatik Kaydır</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Görüntüleme</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_uk_UA.ts b/src/plugins/Ui/skinned/translations/qmmp_uk_UA.ts
new file mode 100644
index 000000000..dd627de1b
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_uk_UA.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="uk">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>Про Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>Про програму</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>Ліцензія</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>Автори</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>Подяки</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_uk_UA.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_uk_UA.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>Мультимедійний програвач на базі Qt (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>Версія:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_uk_UA.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>Модулі введення:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>Модулі виведення:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>Модулі візуалізації:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>Модулі ефектів:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>Загальні модулі:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>Перекладачі</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_uk_UA.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>&amp;Відтворити</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Пауза</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>&amp;Стоп</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>&amp;Назад</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>&amp;Вперед</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>&amp;Грати/Пауза</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation>&amp;Перейти до файлу</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>&amp;Повторити список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>&amp;Повторити трек</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>&amp;Перемішати</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation>&amp;Не пересуватися по списку</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation>&amp;Зупинити після вибраного</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>&amp;Очистити чергу</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>Показати список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>Показати еквалайзер</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>Завжди зверху</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>Розмістити на усіх робочих столах</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>Подвійний розмір</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>&amp;Додати файл</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>&amp;Додати теку</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>&amp;Додати адресу</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>&amp;Видалити вибране</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>&amp;Видалити все</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>&amp;Видалити не вибране</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>Видалити недоступні файли</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>Видалити дублікати</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation>&amp;В чергу</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>Інвертувати вибране</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>&amp;Зняти виділення</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>&amp;Вибрати все</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>&amp;Інформація</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>&amp;Новий список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>&amp;Видалити список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>&amp;Завантажити список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>&amp;Зберегти список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>Вибрати &amp;наступний список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>Вибрати &amp;попередній список</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>Показати &amp;всі списки</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>&amp;Налаштування</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>&amp;Про програму</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>&amp;Про Qt</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>&amp;Вихід</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>Помилка</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>Вкажіть адресу для додавання</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>&amp;Додати</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Відміна</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>Перейти до наступного фрагменту</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>Перейти до попереднього фрагменту</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>Грати поточну пісню</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>Не очищати список</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>Призупитини поточну пісню</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>Призупинити/відтворити</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>Зупитини поточну пісню</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>Показати діалог переходу до файла</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation>Закрити програму</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>Встановити гучність (приклад: qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>Показати/сховати програму</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>Показати діалог додавання файлів</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>Показати діалог додавання тек</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>Пояснення</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>Ім&apos;я файлу</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>Виконавець</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>Альбом</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>Трек</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>Вимкнено</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>Транспорти</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>Декодери</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>Зовнішні програвачі</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>Інші</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>Назва</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>Номер треку</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>2- розрядний номер трека</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>Номер диску</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>Умова</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>Жанр</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>Композитор</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>Ім&apos;я файлу</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>Шлях файлу</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>Рік</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>Коментар</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Налаштування Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>Шкурки</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>Шрифти</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>Програвач:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>Список:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>Метадані</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>Зчитувати метадані з файлів</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>Список пісень</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>Формат назви:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>Налаштування</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>Інформація</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>Зовнішній вигляд</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>Список</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>Модулі</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>Додатково</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16-бітний вивід</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>Упакована тема</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>Розпакована тема</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>Мережа</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>Візуалізація</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>Ефекти</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>Загальне</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>Файловий діалог</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>Звук</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>Нормалізація гучності</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>Різне</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>Використовувати растрові шрифти, якщо доступні</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>Використовувати курсори скіна</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>Відображати номера пісень</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>Показати списки</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>Показувати спливаюче вікно з інформацією</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>Режим нормалізації гучності:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>Преамплітуда:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>Нормалізація за умовчанням:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>Використовувати інформацію піків для запобігання відсікання</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>Виведення:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>Розмір буферу:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation>мс</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>Використовувати програмний контроль гучності</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>Вигляд</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>Комбінації клавіш</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>Ховати при закритті</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>Запускати схованим</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>Редагувати шаблон</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation>Показувати &quot;якір&quot;</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation>Вирівнювати номери фрагментів</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>Пошук обладинки альбома</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>Використовувати окремі файли зображень</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>Включити файли:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>Виключити файли:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>Глибина рекурсивного пошуку:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>Відтворення</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>Продовжити відтворення при запуску</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>Проксі</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>Використосувати проксі</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>Сервер проксі:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>Порт проксі:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>Використовувати авторизацію на проксі</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>Ім&apos;я користвача проксі:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>Пароль проксі:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>Дія</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>Комбінація</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>Змінити комбінації клавіш...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>Конвертувати підкреслювання в пробіл</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>Конвертувати %20 в пробіл</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>Вибрати файли скінів</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>Файли скінів</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>Додати...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>Поновити</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>Показати протокол</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>Прозорість</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>Головне вікно</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>Еквалайзер</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>предвстановлення</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>&amp;Завантажити/Видалити</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>&amp;Зберегти предвстановлення</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>&amp;Зберегти авто-предвстановлення</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>&amp;Очистити</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>Збережені предвстановлення</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>Ім&apos;я предвстановлення:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>предвстановлення #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>&amp;Імпортувати</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>Еквалайзер</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>Імпорт предвстановлення</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>Зняти з черги</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>В чергу</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>Перейти до треку</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>Фильтр</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>Поновити</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>Перейти до</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>Назад</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>Відтворити</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>Пауза</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>Стоп</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>Вперед</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>Додати файл</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>Еквалайзер</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>Список</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>Повторити список</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>Перемішати</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>Гучність</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>Баланс</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>Гучність: %1%</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>Баланс: %1% вправо</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>Баланс: %1% вліво</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>Баланс: центр</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>Пошук: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>Режим візуалізації</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>Аналізатор</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>Осцилограф</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>Вимкнено</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>Режим аналізатора</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>Звичайний</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>Вогонь</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>Вертикальні лінії</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>Лінії</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>Смужки</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>Піки</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>Частота оновлення</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 ф/с</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 ф/с</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 ф/с</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 ф/с</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>Падіння аналізатора</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>Найповільніше</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>Повільне</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>Середнє</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>Швидке</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>Найшвидше</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>Падіння піків</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>Тло</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>Прозорість</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>Виберіть теку</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>Виберіть один чи кілька файлів</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>&amp;Перейти до файлу</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>Вигляд</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>Список</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>Відкрити список</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>Зберегти список</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>Файли списків</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>Усі формати</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>Утиліти</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>&amp;Копіювати вибране в</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>Сортувати</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>За назвою</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>За альбомом</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>За артистом</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>За ім&apos;ям файлу</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>За шляхом та файлом</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>За датою</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>Сортувати вибране</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>Перемішати</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>Перевернути</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>&amp;Новий список</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>Список</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>Дії</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>Переглядач списків</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>Новий</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>Видалити</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>Переіменувати</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>&amp;Завантажити</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>&amp;Зберегти як...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>Переіменувати</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>&amp;Видалити</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>Переіменувати список</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>Ім&apos;я списка:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>Налаштування спливаючої інформації</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>Показати обкладинку</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>Прозорість:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>Затримка:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation>мс</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>Розмір обкладинки:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>Шаблон</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>Скинути</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>Вставити</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>Виконавець</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>Альбом</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>Назва</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>Номер треку</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>2- розрядний номер трека</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>Жанр</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>Коментар</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>Композитор</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>Тривалість</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>Номер диску</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>Ім&apos;я файлу</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>Шлях файлу</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>Рік</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>Умова</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>Редактор предвстановлення</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>Завантажити</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>Видалити</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>Предвстановлення</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>Авто-предвстановлення</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>Використання: qmmp [options] [files]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>Опції:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>Не запускати програму</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>Показати версію та вийти</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>Ідеї, виправлення, звіти про помилки: forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>Показати цей текст та вийти</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>Невідома команда</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Версія QMMP:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Версія Qt:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>Змінити комбінації клавіш</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>Натисніть клавіші, комбінації яких ви бажаєте використовувати</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>Очистити</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>Автопрокрутка назви пісні</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>Буферизація: %1%</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>Візуалізація</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_zh_CN.ts b/src/plugins/Ui/skinned/translations/qmmp_zh_CN.ts
new file mode 100644
index 000000000..b8b52ed6f
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_zh_CN.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_CN">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>关于 Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>关于</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>许可协议</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>作者</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>感谢</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_zh_CN.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_zh_CN.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>基于 Qt 的多媒体播放器 (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>版本:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_zh_CN.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>输入插件:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>输出插件:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>可视化插件:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>特效插件:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>常规插件:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>翻译</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_zh_CN.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>播放(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>暂停(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation>C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>停止(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>上一曲(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>下一曲(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>播放/暂停(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation>空格</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation>跳到文件(&amp;J)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>重复列表(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>重复音轨(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation>Ctrl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>乱序(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation>S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation>无列表继续(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation>已选后停止(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>清除队列(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>显示播放列表</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>显示均衡器</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>常居顶端</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>在所有工作区</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>两倍大小</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>添加文件(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation>F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>添加文件夹(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>添加 URL (&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>删除所选(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation>Del</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>删除全部(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>删除未选(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>删除未选的文件</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>删除重复</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation>队列切换(&amp;Q)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>反选</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>无选择(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>选择全部(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation>Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>查看音轨详情(&amp;V)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>新建列表(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>删除列表(&amp;D)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>载入列表(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>保存列表(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation>Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>选择下一列表(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>选择上一列表(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>显示列表(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>设置(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation>Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>关于(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>关于 Qt (&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>退出(&amp;E)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation>Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>错误</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>输入要添加的 URL</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>添加(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>取消(&amp;C)</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>跳到播放列表中的下一曲</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>跳到播放列表中的上一曲</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>开始播放当前曲目</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>不要清除这个播放列表</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>暂停当前曲目</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>正在播放则暂停,相反处于暂停则播放</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>停止当前曲目</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>显示跳到文件对话</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>设置回放音量 (例如:qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>显示/隐藏程序</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>显示添加文件对话</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>显示添加文件夹对话</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>描述</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>文件名</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>艺术家</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>专辑</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>音轨</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>禁止</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>传输</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>解码器</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>引擎</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>杂项</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>标题</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>音轨编号</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>两位数音轨编号</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>光盘编号</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>条件</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>流派</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>作曲</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>文件名</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>文件路径</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>年代</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>备注</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Qmmp 设置</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>皮肤</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>字体</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>播放器:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>播放列表:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>元数据</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>从文件载入元数据</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>显示歌曲</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>标题格式:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>参数设置</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>信息</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>外观</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>播放列表</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>插件</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>高级</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16 位输出</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>压缩皮肤</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>未压缩皮肤</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>连接</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>可视化</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>特效</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>常规</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>文件对话</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>音频</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>回放增益</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>杂项</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>如果可用使用位图字体</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>使用皮肤光标</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>显示曲目编号</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>显示播放列表</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>显示弹出信息</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>回放增益模式:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>前置放大器:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>默认增益:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>使用峰值信息以防削波</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>输出:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>缓冲大小:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>使用软设备音量控制</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>视图</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>快捷键</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>关闭时隐藏</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>启动时隐藏</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>编辑模板</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation>显示主持人</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation>一样的曲目号</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>封面图像检索</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>使用单独图像文件</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>包含文件:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>排除文件:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>递归搜索深度:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>回放</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>启动时继续上次播放</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>代理</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>启用代理</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>主机名:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>端口:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>需要身份验证</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>用户名:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>密码:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>动作</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>快捷键</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>改变快捷键...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>转换下划线为空格</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>转换 %20 为空格</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>选择皮肤文件</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>皮肤文件</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>添加...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>刷新</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>显示协议</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>透明度</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>主窗口</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>均衡器</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>预设</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>载入/删除(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>保存预设(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>保存自动载入预设(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>清除(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>保存预设</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>预设名称:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>预设 #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>导入(&amp;I)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>均衡器</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>导入预设</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>移出队列</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>加入队列</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>跳到音轨</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>过滤</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>刷新</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>跳到</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>上一曲</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>播放</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>暂停</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>停止</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>下一曲</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>添加文件</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>均衡器</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>播放列表</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>重复播放列表</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>乱序</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>音量</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>平衡</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>音量:%1%</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>平衡:%1% 右</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>平衡:%1% 左</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>平衡:置中</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>移动至:%1</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>可视化模式</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>分析器</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>示波器</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>关闭</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>分析模式</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>标准</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>火花</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>垂直线</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>线形</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>条形</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>峰值</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>刷新率</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>分析器下降速度</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>最慢</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>慢</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>中</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>快</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>最快</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>峰值下降速度</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>背景</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>透明</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>选择一个文件夹</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>选择打开一个或更多文件</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>跳到文件(&amp;J)</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>视图</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>播放列表</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>打开播放列表</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>保存播放列表</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>播放列表文件</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>支持的全部文件</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>工具</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>复制选择到(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>列表排序</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>按标题</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>按专辑</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>按艺术家</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>按文件名</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>按路径+文件名</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>按日期</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>选择排序</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>随机产生列表</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>逆序列表</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>新建列表(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>按音轨</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>播放列表</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>动作</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>播放列表浏览</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>新建</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>删除</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>重命名</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>载入(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>另存为(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>重命名</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>删除(&amp;D)</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>重命名播放列表</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>播放列表名称:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>弹出信息设置</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>显示封面</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>透明度:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>延迟:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>封面大小:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>模板</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>重设</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>插入</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>艺术家</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>专辑</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>标题</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>音轨编号</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>两位数音轨编号</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>流派</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>备注</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>作曲</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>持续时间</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>光盘编号</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>文件名</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>文件路径</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>年代</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>条件</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>预设编辑器</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>载入</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>删除</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>预设</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>自动预设</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>使用:qmmp [设置] [文件]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>设置:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>无法启动此程序</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>显示版本并退出</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>建议、补丁或提交 bug 请发送到 forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>显示这些文本并退出</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>未知指令</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Qmmp 版本:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Qt 版本:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>改变路径</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>按下你要指派的组合键</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>清除</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>自动滚动曲目名</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>缓冲:%1%</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>可视化</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/translations/qmmp_zh_TW.ts b/src/plugins/Ui/skinned/translations/qmmp_zh_TW.ts
new file mode 100644
index 000000000..835ab58fe
--- /dev/null
+++ b/src/plugins/Ui/skinned/translations/qmmp_zh_TW.ts
@@ -0,0 +1,1835 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="zh_TW">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="14"/>
+ <source>About Qmmp</source>
+ <translation>關於 Qmmp</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="40"/>
+ <source>About</source>
+ <translation>關於</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="96"/>
+ <source>License Agreement</source>
+ <translation>許可協定</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="54"/>
+ <source>Authors</source>
+ <translation>作者</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="82"/>
+ <source>Thanks To</source>
+ <translation>感謝</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="61"/>
+ <source>:/txt/authors_en.txt</source>
+ <translation>:/txt/authors_zh_TW.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="62"/>
+ <source>:/txt/thanks_en.txt</source>
+ <translation>:/txt/thanks_zh_TW.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="81"/>
+ <source>Qt-based Multimedia Player (Qmmp)</source>
+ <translation>基於 Qt 的多媒體播放器 (Qmmp)</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="82"/>
+ <source>Version:</source>
+ <translation>版本:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="83"/>
+ <source>:txt/description_en.txt</source>
+ <translation>:txt/description_zh_TW.txt</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="84"/>
+ <source>Input plugins:</source>
+ <translation>匯入插件:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="93"/>
+ <source>Output plugins:</source>
+ <translation>匯出插件</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="102"/>
+ <source>Visual plugins:</source>
+ <translation>可視化插件</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="111"/>
+ <source>Effect plugins:</source>
+ <translation>特效插件:</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="120"/>
+ <source>General plugins:</source>
+ <translation>常規插件:</translation>
+ </message>
+ <message>
+ <location filename="../forms/aboutdialog.ui" line="68"/>
+ <source>Translators</source>
+ <translation>翻譯</translation>
+ </message>
+ <message>
+ <location filename="../aboutdialog.cpp" line="63"/>
+ <source>:/txt/translators_en.txt</source>
+ <translation>:/txt/translators_zh_TW.txt</translation>
+ </message>
+</context>
+<context>
+ <name>ActionManager</name>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>&amp;Play</source>
+ <translation>播放(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="37"/>
+ <source>X</source>
+ <translation>X</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>&amp;Pause</source>
+ <translation>暫停(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="38"/>
+ <source>C</source>
+ <translation>C</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>&amp;Stop</source>
+ <translation>停止(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="39"/>
+ <source>V</source>
+ <translation>V</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>&amp;Previous</source>
+ <translation>上一曲(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="40"/>
+ <source>Z</source>
+ <translation>Z</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>&amp;Next</source>
+ <translation>下一曲(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="41"/>
+ <source>B</source>
+ <translation>B</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>&amp;Play/Pause</source>
+ <translation>播放/暫停(&amp;P)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="42"/>
+ <source>Space</source>
+ <translation>空格</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>&amp;Jump to File</source>
+ <translation>跳到文件(&amp;J)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="43"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>&amp;Repeat Playlist</source>
+ <translation>重復播放清單(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="44"/>
+ <source>R</source>
+ <translation>R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>&amp;Repeat Track</source>
+ <translation>重復音軌(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="45"/>
+ <source>Ctrl+R</source>
+ <translation>Ctrl+R</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>&amp;Shuffle</source>
+ <translation>亂序(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="46"/>
+ <source>S</source>
+ <translation>S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="47"/>
+ <source>&amp;No Playlist Advance</source>
+ <translation>無清單繼續(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="48"/>
+ <source>Ctrl+N</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="49"/>
+ <source>&amp;Stop After Selected</source>
+ <translation>選定后停止(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="50"/>
+ <source>Ctrl+S</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>&amp;Clear Queue</source>
+ <translation>清除佇列(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="51"/>
+ <source>Alt+Q</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Show Playlist</source>
+ <translation>顯示播放清單</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="53"/>
+ <source>Alt+E</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Show Equalizer</source>
+ <translation>顯示均衡器</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="54"/>
+ <source>Alt+G</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="55"/>
+ <source>Always on Top</source>
+ <translation>常居頂端</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="56"/>
+ <source>Put on All Workspaces</source>
+ <translation>放全部工作區</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Double Size</source>
+ <translation>雙倍大小</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="57"/>
+ <source>Meta+D</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>&amp;Add File</source>
+ <translation>添加文件(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="59"/>
+ <source>F</source>
+ <translation>F</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>&amp;Add Directory</source>
+ <translation>添加文件夾(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="60"/>
+ <source>D</source>
+ <translation>D</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>&amp;Add Url</source>
+ <translation>添加 URL (&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="61"/>
+ <source>U</source>
+ <translation>U</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="62"/>
+ <source>&amp;Remove Selected</source>
+ <translation>移除所選(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="63"/>
+ <source>Del</source>
+ <translation>Del</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="64"/>
+ <source>&amp;Remove All</source>
+ <translation>移除全部(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="65"/>
+ <source>&amp;Remove Unselected</source>
+ <translation>移除未選(&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="67"/>
+ <source>Remove unavailable files</source>
+ <translation>移除未選文件</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="69"/>
+ <source>Remove duplicates</source>
+ <translation>移除重复</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>&amp;Queue Toggle</source>
+ <translation>佇列切換(&amp;Q)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="70"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="71"/>
+ <source>Invert Selection</source>
+ <translation>反選</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="72"/>
+ <source>&amp;Select None</source>
+ <translation>無選取(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="73"/>
+ <source>&amp;Select All</source>
+ <translation>選取全部(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="74"/>
+ <source>Ctrl+A</source>
+ <translation>Ctrl+A</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>&amp;View Track Details</source>
+ <translation>檢視音軌詳訊(&amp;V)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="75"/>
+ <source>Alt+I</source>
+ <translation>Alt+I</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>&amp;New List</source>
+ <translation>新建清單(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="77"/>
+ <source>Ctrl+T</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>&amp;Delete List</source>
+ <translation>移除清單(&amp;D)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="78"/>
+ <source>Ctrl+W</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>&amp;Load List</source>
+ <translation>載入清單(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="79"/>
+ <source>O</source>
+ <translation>O</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>&amp;Save List</source>
+ <translation>儲存清單(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="80"/>
+ <source>Shift+S</source>
+ <translation>Shift+S</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="81"/>
+ <source>&amp;Select Next Playlist</source>
+ <translation>選擇下一清單(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="82"/>
+ <source>Ctrl+PgDown</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="83"/>
+ <source>&amp;Select Previous Playlist</source>
+ <translation>選擇上一清單(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="84"/>
+ <source>Ctrl+PgUp</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="85"/>
+ <source>&amp;Show Playlists</source>
+ <translation>顯示播放清單(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="86"/>
+ <source>P</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>&amp;Settings</source>
+ <translation>設定(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="88"/>
+ <source>Ctrl+P</source>
+ <translation>Ctrl+P</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="89"/>
+ <source>&amp;About</source>
+ <translation>關於(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="90"/>
+ <source>&amp;About Qt</source>
+ <translation>關於 Qt (&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>&amp;Exit</source>
+ <translation>結束(&amp;E)</translation>
+ </message>
+ <message>
+ <location filename="../actionmanager.cpp" line="91"/>
+ <source>Ctrl+Q</source>
+ <translation>Ctrl+Q</translation>
+ </message>
+</context>
+<context>
+ <name>AddUrlDialog</name>
+ <message>
+ <location filename="../addurldialog.cpp" line="117"/>
+ <source>Error</source>
+ <translation>錯誤</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="13"/>
+ <source>Enter URL to add</source>
+ <translation>匯入要添加的 URL</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="51"/>
+ <source>&amp;Add</source>
+ <translation>添加(&amp;A)</translation>
+ </message>
+ <message>
+ <location filename="../forms/addurldialog.ui" line="58"/>
+ <source>&amp;Cancel</source>
+ <translation>取消(&amp;C)</translation>
+ </message>
+</context>
+<context>
+ <name>BuiltinCommandLineOption</name>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="62"/>
+ <source>Skip forward in playlist</source>
+ <translation>跳到播放清單中的下一曲</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="63"/>
+ <source>Skip backwards in playlist</source>
+ <translation>跳到播放清單中的上一曲</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="55"/>
+ <source>Start playing current song</source>
+ <translation>開始播放目前曲目</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="54"/>
+ <source>Don&apos;t clear the playlist</source>
+ <translation>不要清除這個播放清單</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="56"/>
+ <source>Pause current song</source>
+ <translation>暫停目前曲目</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="57"/>
+ <source>Pause if playing, play otherwise</source>
+ <translation>正在播放則暫停,相反處於暫停則播放</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="58"/>
+ <source>Stop current song</source>
+ <translation>停止目前曲目</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="59"/>
+ <source>Display Jump to File dialog</source>
+ <translation>察看跳到文件對話</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="60"/>
+ <source>Quit application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="61"/>
+ <source>Set playback volume (example: qmmp --volume 20)</source>
+ <translation>設置回放音量 (例如:qmmp --volume 20)</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="64"/>
+ <source>Show/hide application</source>
+ <translation>察看/隱藏程式</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="65"/>
+ <source>Display Add File dialog</source>
+ <translation>察看添加文件對話</translation>
+ </message>
+ <message>
+ <location filename="../builtincommandlineoption.cpp" line="66"/>
+ <source>Display Add Directory dialog</source>
+ <translation>察看添加目錄對話</translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../forms/configdialog.ui" line="735"/>
+ <source>Description</source>
+ <translation>說明</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="740"/>
+ <source>Filename</source>
+ <translation>文件名</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="429"/>
+ <source>Artist</source>
+ <translation>藝術家</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="75"/>
+ <location filename="../configdialog.cpp" line="430"/>
+ <source>Album</source>
+ <translation>專輯</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="74"/>
+ <source>Track</source>
+ <translation>音軌</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="76"/>
+ <source>Disabled</source>
+ <translation>禁止</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="244"/>
+ <source>Transports</source>
+ <translation>傳輸</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="255"/>
+ <source>Decoders</source>
+ <translation>解碼器</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="265"/>
+ <source>Engines</source>
+ <translation>引擎</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="372"/>
+ <source>Misc</source>
+ <translation>雜項</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="431"/>
+ <source>Title</source>
+ <translation>標題</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="432"/>
+ <source>Track number</source>
+ <translation>音軌編號</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="433"/>
+ <source>Two-digit track number</source>
+ <translation>兩位數音軌編號</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="437"/>
+ <source>Disc number</source>
+ <translation>光槃編號</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="441"/>
+ <source>Condition</source>
+ <translation>條件</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="434"/>
+ <source>Genre</source>
+ <translation>流派</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="436"/>
+ <source>Composer</source>
+ <translation>作曲</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="438"/>
+ <source>File name</source>
+ <translation>文件名</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="439"/>
+ <source>File path</source>
+ <translation>文件路徑</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="440"/>
+ <source>Year</source>
+ <translation>年代</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="435"/>
+ <source>Comment</source>
+ <translation>備註</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="14"/>
+ <source>Qmmp Settings</source>
+ <translation>Qmmp 設定</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="184"/>
+ <source>Skins</source>
+ <translation>皮膚</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="291"/>
+ <source>Fonts</source>
+ <translation>字型</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="309"/>
+ <source>Player:</source>
+ <translation>播放器:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="357"/>
+ <source>Playlist:</source>
+ <translation>播放清單:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="331"/>
+ <location filename="../forms/configdialog.ui" line="379"/>
+ <source>???</source>
+ <translation>???</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="338"/>
+ <location filename="../forms/configdialog.ui" line="386"/>
+ <location filename="../forms/configdialog.ui" line="552"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="511"/>
+ <source>Metadata</source>
+ <translation>元資料</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="523"/>
+ <source>Load metadata from files</source>
+ <translation>從文件載入元資料</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="533"/>
+ <source>Song Display</source>
+ <translation>察看歌曲</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="539"/>
+ <source>Title format:</source>
+ <translation>標題格式:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="686"/>
+ <location filename="../forms/configdialog.ui" line="1153"/>
+ <source>Preferences</source>
+ <translation>引數設定</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="699"/>
+ <location filename="../forms/configdialog.ui" line="761"/>
+ <location filename="../forms/configdialog.ui" line="1166"/>
+ <source>Information</source>
+ <translation>資訊</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="98"/>
+ <source>Appearance</source>
+ <translation>外觀</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="107"/>
+ <location filename="../forms/configdialog.ui" line="463"/>
+ <location filename="../configdialog.cpp" line="366"/>
+ <source>Playlist</source>
+ <translation>播放清單</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="116"/>
+ <source>Plugins</source>
+ <translation>插件</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="125"/>
+ <source>Advanced</source>
+ <translation>進階</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1238"/>
+ <source>16-bit output</source>
+ <translation>16 比特輸出</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="209"/>
+ <source>Archived skin</source>
+ <translation>壓縮皮膚</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="231"/>
+ <source>Unarchived skin</source>
+ <translation>未壓縮皮膚</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="134"/>
+ <source>Connectivity</source>
+ <translation>連線</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="285"/>
+ <source>Visualization</source>
+ <translation>可視化</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="275"/>
+ <source>Effects</source>
+ <translation>特效</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="295"/>
+ <source>General</source>
+ <translation>常規</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="752"/>
+ <source>File Dialog</source>
+ <translation>文件對話</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="143"/>
+ <location filename="../forms/configdialog.ui" line="1131"/>
+ <source>Audio</source>
+ <translation>聲訊</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1001"/>
+ <source>Replay Gain</source>
+ <translation>回放增益</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="249"/>
+ <source>Miscellaneous</source>
+ <translation>雜項</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="393"/>
+ <source>Use bitmap font if available</source>
+ <translation>如果可用使用位圖字體</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="275"/>
+ <source>Use skin cursors</source>
+ <translation>使用皮膚光標</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="580"/>
+ <source>Show song numbers</source>
+ <translation>顯示曲目編號</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="587"/>
+ <source>Show playlists</source>
+ <translation>顯示播放清單</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="596"/>
+ <source>Show popup information</source>
+ <translation>顯示彈出信息</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1007"/>
+ <source>Replay Gain mode:</source>
+ <translation>回放增益模式:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1024"/>
+ <source>Preamp:</source>
+ <translation>前置放大器:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1056"/>
+ <location filename="../forms/configdialog.ui" line="1101"/>
+ <source>dB</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1069"/>
+ <source>Default gain:</source>
+ <translation>默認增益:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1121"/>
+ <source>Use peak info to prevent clipping</source>
+ <translation>使用峰值信息以防削波</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1137"/>
+ <source>Output:</source>
+ <translation>輸出:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1189"/>
+ <source>Buffer size:</source>
+ <translation>緩沖大小:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1202"/>
+ <source>ms</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1231"/>
+ <source>Use software volume control</source>
+ <translation>使用軟裝置音量控制</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="255"/>
+ <location filename="../configdialog.cpp" line="360"/>
+ <source>View</source>
+ <translation>視圖</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="152"/>
+ <source>Shortcuts</source>
+ <translation>快捷鍵</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="261"/>
+ <source>Hide on close</source>
+ <translation>關閉時隱藏</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="268"/>
+ <source>Start hidden</source>
+ <translation>啟動時隱藏</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="606"/>
+ <source>Edit template</source>
+ <translation>編輯模板</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="628"/>
+ <source>Show anchor</source>
+ <translation>顯示主持人</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="638"/>
+ <source>Align song numbers</source>
+ <translation>一樣的曲目號</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="784"/>
+ <source>Cover Image Retrieve</source>
+ <translation>封面圖像檢索</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="790"/>
+ <source>Use separate image files</source>
+ <translation>使用單獨圖像文件</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="800"/>
+ <source>Include files:</source>
+ <translation>包含文檔:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="810"/>
+ <source>Exclude files:</source>
+ <translation>排除文檔:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="822"/>
+ <source>Recursive search depth:</source>
+ <translation>遞歸搜索深度:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="867"/>
+ <location filename="../configdialog.cpp" line="354"/>
+ <source>Playback</source>
+ <translation>回放</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="873"/>
+ <source>Continue playback on startup</source>
+ <translation>啟動時繼續上次播放</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="899"/>
+ <source>Proxy</source>
+ <translation>代理</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="911"/>
+ <source>Enable proxy usage</source>
+ <translation>啟用代理</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="918"/>
+ <source>Proxy host name:</source>
+ <translation>主機名:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="931"/>
+ <source>Proxy port:</source>
+ <translation>通訊埠:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="944"/>
+ <source>Use authentication with proxy</source>
+ <translation>需要身份驗證</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="951"/>
+ <source>Proxy user name:</source>
+ <translation>用戶名:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="964"/>
+ <source>Proxy password:</source>
+ <translation>密碼:</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1272"/>
+ <source>Action</source>
+ <translation>動作</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1277"/>
+ <source>Shortcut</source>
+ <translation>快捷鍵</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="1285"/>
+ <source>Change shortcut...</source>
+ <translation>改變快捷鍵...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="559"/>
+ <source>Convert underscores to blanks</source>
+ <translation>轉換底線為空格</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="566"/>
+ <source>Convert %20 to blanks</source>
+ <translation>轉換 %20 為空格</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="524"/>
+ <source>Select Skin Files</source>
+ <translation>選取皮膚文件</translation>
+ </message>
+ <message>
+ <location filename="../configdialog.cpp" line="525"/>
+ <source>Skin files</source>
+ <translation>皮膚文件</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="215"/>
+ <source>Add...</source>
+ <translation>添加...</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="228"/>
+ <source>Refresh</source>
+ <translation>刷新</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="573"/>
+ <source>Show protocol</source>
+ <translation>顯示協議</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="403"/>
+ <source>Transparency</source>
+ <translation>透明度</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="409"/>
+ <source>Main window</source>
+ <translation>主窗口</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="432"/>
+ <location filename="../forms/configdialog.ui" line="456"/>
+ <location filename="../forms/configdialog.ui" line="480"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../forms/configdialog.ui" line="439"/>
+ <source>Equalizer</source>
+ <translation>均衡器</translation>
+ </message>
+</context>
+<context>
+ <name>EqWidget</name>
+ <message>
+ <location filename="../eqwidget.cpp" line="154"/>
+ <location filename="../eqwidget.cpp" line="177"/>
+ <source>preset</source>
+ <translation>預設</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="261"/>
+ <source>&amp;Load/Delete</source>
+ <translation>載入/移除(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="263"/>
+ <source>&amp;Save Preset</source>
+ <translation>儲存預設(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="265"/>
+ <source>&amp;Save Auto-load Preset</source>
+ <translation>儲存自動載入預設(&amp;S)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="270"/>
+ <source>&amp;Clear</source>
+ <translation>清除(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="299"/>
+ <source>Saving Preset</source>
+ <translation>儲存預設</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="300"/>
+ <source>Preset name:</source>
+ <translation>預設名稱:</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="301"/>
+ <source>preset #</source>
+ <translation>預設 #</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="267"/>
+ <source>&amp;Import</source>
+ <translation>導入(&amp;I)</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="43"/>
+ <source>Equalizer</source>
+ <translation>均衡器</translation>
+ </message>
+ <message>
+ <location filename="../eqwidget.cpp" line="392"/>
+ <source>Import Preset</source>
+ <translation>導入預設</translation>
+ </message>
+</context>
+<context>
+ <name>JumpToTrackDialog</name>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="53"/>
+ <source>Q</source>
+ <translation>Q</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="54"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="55"/>
+ <source>F5</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../jumptotrackdialog.cpp" line="84"/>
+ <location filename="../jumptotrackdialog.cpp" line="135"/>
+ <source>Unqueue</source>
+ <translation>移出佇列</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="70"/>
+ <location filename="../jumptotrackdialog.cpp" line="86"/>
+ <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <source>Queue</source>
+ <translation>加入佇列</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="14"/>
+ <source>Jump To Track</source>
+ <translation>跳到音軌</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="37"/>
+ <source>Filter</source>
+ <translation>過濾</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="83"/>
+ <source>Refresh</source>
+ <translation>刷新</translation>
+ </message>
+ <message>
+ <location filename="../forms/jumptotrackdialog.ui" line="96"/>
+ <source>Jump To</source>
+ <translation>跳到</translation>
+ </message>
+</context>
+<context>
+ <name>MainDisplay</name>
+ <message>
+ <location filename="../display.cpp" line="57"/>
+ <source>Previous</source>
+ <translation>上一曲</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="61"/>
+ <source>Play</source>
+ <translation>播放</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="64"/>
+ <source>Pause</source>
+ <translation>暫停</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="67"/>
+ <source>Stop</source>
+ <translation>停止</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="70"/>
+ <source>Next</source>
+ <translation>下一曲</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="73"/>
+ <source>Add file</source>
+ <translation>添加文件</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="80"/>
+ <source>Equalizer</source>
+ <translation>均衡器</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="83"/>
+ <source>Playlist</source>
+ <translation>播放清單</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="88"/>
+ <source>Repeat playlist</source>
+ <translation>重復播放清單</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="91"/>
+ <source>Shuffle</source>
+ <translation>亂序</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="101"/>
+ <source>Volume</source>
+ <translation>音量</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="107"/>
+ <source>Balance</source>
+ <translation>平衡</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="296"/>
+ <source>Volume: %1%</source>
+ <translation>音量:%1%</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="300"/>
+ <source>Balance: %1% right</source>
+ <translation>平衡:%1% 右</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="302"/>
+ <source>Balance: %1% left</source>
+ <translation>平衡:%1% 左</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="304"/>
+ <source>Balance: center</source>
+ <translation>平衡:中</translation>
+ </message>
+ <message>
+ <location filename="../display.cpp" line="315"/>
+ <source>Seek to: %1</source>
+ <translation>移動到:%1</translation>
+ </message>
+</context>
+<context>
+ <name>MainVisual</name>
+ <message>
+ <location filename="../mainvisual.cpp" line="280"/>
+ <source>Visualization Mode</source>
+ <translation>可視化型態</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="283"/>
+ <source>Analyzer</source>
+ <translation>解析器</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="284"/>
+ <source>Scope</source>
+ <translation>示波器</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="285"/>
+ <source>Off</source>
+ <translation>關閉</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="292"/>
+ <source>Analyzer Mode</source>
+ <translation>解析型態</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="295"/>
+ <source>Normal</source>
+ <translation>標準</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="296"/>
+ <source>Fire</source>
+ <translation>火花</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="297"/>
+ <source>Vertical Lines</source>
+ <translation>垂直線</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="298"/>
+ <source>Lines</source>
+ <translation>線形</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="299"/>
+ <source>Bars</source>
+ <translation>條形</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="312"/>
+ <source>Peaks</source>
+ <translation>峰值</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="316"/>
+ <source>Refresh Rate</source>
+ <translation>刷新率</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="319"/>
+ <source>50 fps</source>
+ <translation>50 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="320"/>
+ <source>25 fps</source>
+ <translation>25 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="321"/>
+ <source>10 fps</source>
+ <translation>10 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="322"/>
+ <source>5 fps</source>
+ <translation>5 fps</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="329"/>
+ <source>Analyzer Falloff</source>
+ <translation>解析器下降速度</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="332"/>
+ <location filename="../mainvisual.cpp" line="346"/>
+ <source>Slowest</source>
+ <translation>最慢</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="333"/>
+ <location filename="../mainvisual.cpp" line="347"/>
+ <source>Slow</source>
+ <translation>慢</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="334"/>
+ <location filename="../mainvisual.cpp" line="348"/>
+ <source>Medium</source>
+ <translation>中</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="335"/>
+ <location filename="../mainvisual.cpp" line="349"/>
+ <source>Fast</source>
+ <translation>快</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="336"/>
+ <location filename="../mainvisual.cpp" line="350"/>
+ <source>Fastest</source>
+ <translation>最快</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="343"/>
+ <source>Peaks Falloff</source>
+ <translation>峰值下降速度</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="356"/>
+ <source>Background</source>
+ <translation>背景</translation>
+ </message>
+ <message>
+ <location filename="../mainvisual.cpp" line="357"/>
+ <source>Transparent</source>
+ <translation>透明</translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.cpp" line="225"/>
+ <source>Choose a directory</source>
+ <translation>選取一個目錄</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="236"/>
+ <source>Select one or more files to open</source>
+ <translation>選取開啟一個或更多文件</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="410"/>
+ <source>&amp;Jump To File</source>
+ <translation>跳到文件(&amp;J)</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="411"/>
+ <source>J</source>
+ <translation>J</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="413"/>
+ <source>View</source>
+ <translation>視圖</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="421"/>
+ <source>Playlist</source>
+ <translation>播放清單</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="493"/>
+ <source>Open Playlist</source>
+ <translation>開啟播放清單</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="518"/>
+ <source>Save Playlist</source>
+ <translation>儲存播放清單</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="491"/>
+ <location filename="../mainwindow.cpp" line="517"/>
+ <source>Playlist Files</source>
+ <translation>播放清單文件</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="231"/>
+ <source>All Supported Bitstreams</source>
+ <translation>支援的全部文件</translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="441"/>
+ <source>Tools</source>
+ <translation>工具</translation>
+ </message>
+</context>
+<context>
+ <name>PlayList</name>
+ <message>
+ <location filename="../playlist.cpp" line="177"/>
+ <source>&amp;Copy Selection To</source>
+ <translation>复制選取到(&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="204"/>
+ <source>Sort List</source>
+ <translation>清單排序</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="207"/>
+ <location filename="../playlist.cpp" line="242"/>
+ <source>By Title</source>
+ <translation>按標題</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="211"/>
+ <location filename="../playlist.cpp" line="246"/>
+ <source>By Album</source>
+ <translation>按專輯</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="250"/>
+ <source>By Artist</source>
+ <translation>按藝術家</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="254"/>
+ <source>By Filename</source>
+ <translation>按文件名</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="258"/>
+ <source>By Path + Filename</source>
+ <translation>按路徑+文件名</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="262"/>
+ <source>By Date</source>
+ <translation>按日期</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="239"/>
+ <source>Sort Selection</source>
+ <translation>選取排序</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="274"/>
+ <source>Randomize List</source>
+ <translation>隨機產生清單</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="276"/>
+ <source>Reverse List</source>
+ <translation>逆串列表</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="550"/>
+ <source>&amp;New PlayList</source>
+ <translation>新建清單(&amp;N)</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="266"/>
+ <source>By Track Number</source>
+ <translation>按音軌</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="53"/>
+ <source>Playlist</source>
+ <translation>播放清單</translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="283"/>
+ <source>Actions</source>
+ <translation>動作</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListBrowser</name>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="14"/>
+ <source>Playlist Browser</source>
+ <translation>播放清單瀏覽</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="45"/>
+ <source>New</source>
+ <translation>新建</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
+ <location filename="../playlistbrowser.cpp" line="39"/>
+ <source>Delete</source>
+ <translation>移除</translation>
+ </message>
+ <message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
+ <location filename="../forms/playlistbrowser.ui" line="79"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../playlistbrowser.cpp" line="38"/>
+ <source>Rename</source>
+ <translation>重命名</translation>
+ </message>
+</context>
+<context>
+ <name>PlayListSelector</name>
+ <message>
+ <location filename="../playlistselector.cpp" line="51"/>
+ <source>&amp;Load</source>
+ <translation>載入(&amp;L)</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="52"/>
+ <source>&amp;Save As...</source>
+ <translation>另存為(&amp;S)...</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="54"/>
+ <source>Rename</source>
+ <translation>重命名</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="55"/>
+ <source>&amp;Delete</source>
+ <translation>移除(&amp;D)</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Rename Playlist</source>
+ <translation>重命播放清單名</translation>
+ </message>
+ <message>
+ <location filename="../playlistselector.cpp" line="111"/>
+ <source>Playlist name:</source>
+ <translation>重命文件名:</translation>
+ </message>
+</context>
+<context>
+ <name>PopupSettings</name>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="14"/>
+ <source>Popup Information Settings</source>
+ <translation>彈出信息設置</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="75"/>
+ <source>Show cover</source>
+ <translation>顯示封面</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="115"/>
+ <source>Transparency:</source>
+ <translation>透明度:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="145"/>
+ <source>Delay:</source>
+ <translation>延遲:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="178"/>
+ <source>ms</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="89"/>
+ <source>Cover size:</source>
+ <translation>封面大小:</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="29"/>
+ <source>Template</source>
+ <translation>模板</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="58"/>
+ <source>Reset</source>
+ <translation>重設</translation>
+ </message>
+ <message>
+ <location filename="../forms/popupsettings.ui" line="65"/>
+ <source>Insert</source>
+ <translation>插入</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="62"/>
+ <source>Artist</source>
+ <translation>藝術家</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="63"/>
+ <source>Album</source>
+ <translation>專輯</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="64"/>
+ <source>Title</source>
+ <translation>標題</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="65"/>
+ <source>Track number</source>
+ <translation>音軌編號</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="66"/>
+ <source>Two-digit track number</source>
+ <translation>兩位數音軌編號</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="67"/>
+ <source>Genre</source>
+ <translation>流派</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="68"/>
+ <source>Comment</source>
+ <translation>備註</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="69"/>
+ <source>Composer</source>
+ <translation>作曲</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="70"/>
+ <source>Duration</source>
+ <translation>持續時間</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="71"/>
+ <source>Disc number</source>
+ <translation>光槃編號</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="72"/>
+ <source>File name</source>
+ <translation>文件名</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="73"/>
+ <source>File path</source>
+ <translation>文件路徑</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="74"/>
+ <source>Year</source>
+ <translation>年代</translation>
+ </message>
+ <message>
+ <location filename="../popupsettings.cpp" line="75"/>
+ <source>Condition</source>
+ <translation>條件</translation>
+ </message>
+</context>
+<context>
+ <name>PresetEditor</name>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="14"/>
+ <source>Preset Editor</source>
+ <translation>預設編輯程式</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="77"/>
+ <source>Load</source>
+ <translation>載入</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="84"/>
+ <source>Delete</source>
+ <translation>移除</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="36"/>
+ <source>Preset</source>
+ <translation>預設</translation>
+ </message>
+ <message>
+ <location filename="../forms/preseteditor.ui" line="52"/>
+ <source>Auto-preset</source>
+ <translation>自動預設</translation>
+ </message>
+</context>
+<context>
+ <name>QMMPStarter</name>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="212"/>
+ <source>Usage: qmmp [options] [files]</source>
+ <translation>使用:qmmp [設定] [文件]</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="213"/>
+ <source>Options:</source>
+ <translation>設定:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="217"/>
+ <source>Don&apos;t start the application</source>
+ <translation>無法啟動此程式</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="219"/>
+ <source>Print version number and exit</source>
+ <translation>察看版本並結束</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="220"/>
+ <source>Ideas, patches, bugreports send to forkotov02@hotmail.ru</source>
+ <translation>建議、補丁或提交 bug 請傳送到 forkotov02@hotmail.ru</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="218"/>
+ <source>Display this text and exit</source>
+ <translation>察看這些字檔並結束</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="71"/>
+ <source>Unknown command</source>
+ <translation>未知指令</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="225"/>
+ <source>QMMP version:</source>
+ <translation>Qmmp 版本:</translation>
+ </message>
+ <message>
+ <location filename="../qmmpstarter.cpp" line="226"/>
+ <source>Qt version:</source>
+ <translation>Qt 版本:</translation>
+ </message>
+</context>
+<context>
+ <name>ShortcutDialog</name>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="14"/>
+ <source>Change Shortcut</source>
+ <translation>更改快捷鍵...</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="29"/>
+ <source>Press the key combination you want to assign</source>
+ <translation>按下你要指定的組合鍵</translation>
+ </message>
+ <message>
+ <location filename="../forms/shortcutdialog.ui" line="43"/>
+ <source>Clear</source>
+ <translation>清除</translation>
+ </message>
+</context>
+<context>
+ <name>TextScroller</name>
+ <message>
+ <location filename="../textscroller.cpp" line="52"/>
+ <source>Autoscroll Songname</source>
+ <translation>自動捲動曲目名</translation>
+ </message>
+ <message>
+ <location filename="../textscroller.cpp" line="117"/>
+ <source>Buffering: %1%</source>
+ <translation>緩沖:%1%</translation>
+ </message>
+</context>
+<context>
+ <name>VisualMenu</name>
+ <message>
+ <location filename="../visualmenu.cpp" line="29"/>
+ <source>Visualization</source>
+ <translation>可視化</translation>
+ </message>
+</context>
+</TS>
diff --git a/src/plugins/Ui/skinned/txt/authors_cs.txt b/src/plugins/Ui/skinned/txt/authors_cs.txt
new file mode 100644
index 000000000..191228144
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_cs.txt
@@ -0,0 +1,16 @@
+Vývojáři programu:
+
+ Илья Котов (Ilja Kotov) <forkotov02@hotmail.ru> (nápad a základní kód)
+ Владимир Кузнецов (Vladimír Kuzněcov) <vovanec@gmail.com> (vzhled a mnoho vylepšení)
+
+Vývojáři zásuvných modulů:
+
+ Юрий Журавлёв (Jurij Žuravljov) <stalkerg@gmail.com> (jack plugin)
+
+Grafika:
+
+ Андрей Адреев (Andrej Adrejev) <andreev00@gmail.com>
+
+Český překlad:
+
+ Karel Volný <kavol@seznam.cz>
diff --git a/src/plugins/Ui/skinned/txt/authors_de.txt b/src/plugins/Ui/skinned/txt/authors_de.txt
new file mode 100644
index 000000000..331a0c8d6
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_de.txt
@@ -0,0 +1,14 @@
+Hauptentwickler:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (Idee und Programmierung)
+ Vladimir Kuznetsov <vovanec@gmail.com> (Look & Feel und viele Verbesserungen)
+
+Plugin-Entwickler:
+
+ Artur Guzik <aguzik88@gmail.com> (KDE-4-Benachrichtigungs-Modul, Verbesserungen am Statussymbol-Modul)
+ Yuriy Zhuravlev <stalkerg@gmail.com> (JACK- und OSS-Plugin)
+
+Artwork:
+
+ Andrey Adreev <andreev00@gmail.com>
+
diff --git a/src/plugins/Ui/skinned/txt/authors_en.txt b/src/plugins/Ui/skinned/txt/authors_en.txt
new file mode 100644
index 000000000..87231af8c
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_en.txt
@@ -0,0 +1,14 @@
+Core Developers:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (idea and base code)
+ Vladimir Kuznetsov <vovanec@gmail.com> (look&feel and many improvements)
+
+Plugin Developers:
+
+ Artur Guzik <aguzik88@gmail.com> (kde4 notification plugin, tray icon improvements)
+ Yuriy Zhuravlev <stalkerg@gmail.com> (jack & oss plugin)
+
+Artwork:
+
+ Andrey Adreev <andreev00@gmail.com>
+
diff --git a/src/plugins/Ui/skinned/txt/authors_es.txt b/src/plugins/Ui/skinned/txt/authors_es.txt
new file mode 100644
index 000000000..3acfbaf71
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_es.txt
@@ -0,0 +1,14 @@
+Desarrolladores principales:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (idea y cdigo base)
+ Vladimir Kuznetsov <vovanec@gmail.com> (estilo y muchas mejoras)
+
+Desarrolladores de mdulos:
+
+ Artur Guzik <aguzik88@gmail.com> (mdulo de notificacin kde4, mejoras en el icono de estado)
+ Yuriy Zhuravlev <stalkerg@gmail.com> (mdulos para jack y oss)
+
+Material grfico:
+
+ Andrey Adreev <andreev00@gmail.com>
+
diff --git a/src/plugins/Ui/skinned/txt/authors_it.txt b/src/plugins/Ui/skinned/txt/authors_it.txt
new file mode 100644
index 000000000..2d205cb32
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_it.txt
@@ -0,0 +1,13 @@
+Sviluppatori del programma base:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (idea e codice di base)
+ Vladimir Kuznetsov <vovanec@gmail.com> (aspetto e molti miglioramenti)
+
+Sviluppatori dei moduli:
+
+ Yuriy Zhuravlev <stalkerg@gmail.com> (moduli & oss jack)
+
+Grafica:
+
+ Andrey Adreev <andreev00@gmail.com>
+
diff --git a/src/plugins/Ui/skinned/txt/authors_ja.txt b/src/plugins/Ui/skinned/txt/authors_ja.txt
new file mode 100644
index 000000000..e5c460acf
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_ja.txt
@@ -0,0 +1,14 @@
+中心的な開発者:
+
+ Илья Котов (Ilya Kotov) <forkotov02@hotmail.ru> (発案と基礎コード)
+ Владимир Кузнецов (Vladimir Kuznetsov) <vovanec@gmail.com> (使い勝手及び外見、 数多くの拡張)
+
+プラグイン開発者:
+
+ Artur Guzik <aguzik88@gmail.com> (KDE4通知プラグイン、 トレイアイコン拡張)
+ Юрий Журавлёв (Yuriy Zhuravlev) <stalkerg@gmail.com> (jack & OSS プラグイン)
+
+美術:
+
+ Андрей Андреев (Andrey Andreev) <andreev00@gmail.com>
+
diff --git a/src/plugins/Ui/skinned/txt/authors_lt.txt b/src/plugins/Ui/skinned/txt/authors_lt.txt
new file mode 100644
index 000000000..b778cefc2
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_lt.txt
@@ -0,0 +1,13 @@
+Programos autoriai:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (Idėja ir pagrindinis kodas)
+ Vladimir Kuznetsov <vovanec@gmail.com> (Išvaizda ir daugybė patobulinimų)
+
+Įskiepiai:
+
+ Artur Guzik <aguzik88@gmail.com> (kde4 pranešimų įskiepis, sistemos dėklo ikonos patobulinimai)
+ Yuriy Zhuravlev <stalkerg@gmail.com> (Įskiepiai jack, oss)
+
+Grafika:
+
+ Andrey Adreev <andreev00@gmail.com>
diff --git a/src/plugins/Ui/skinned/txt/authors_nl.txt b/src/plugins/Ui/skinned/txt/authors_nl.txt
new file mode 100644
index 000000000..4fe8fac4b
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_nl.txt
@@ -0,0 +1,14 @@
+Hoofdontwikkelaars:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (idee en codebasis)
+ Vladimir Kuznetsov <vovanec@gmail.com> (uiterlijk&gebruik en vele verbeteringen)
+
+Module-ontwikkelaars:
+
+ Artur Guzik <aguzik88@gmail.com> (kde4 notificatie plugin, taak icoon verbeteringen)
+ Yuriy Zhuravlev <stalkerg@gmail.com> (jack & oss module)
+
+Ontwerp:
+
+ Andrey Adreev <andreev00@gmail.com>
+
diff --git a/src/plugins/Ui/skinned/txt/authors_pl.txt b/src/plugins/Ui/skinned/txt/authors_pl.txt
new file mode 100644
index 000000000..e37d88ee4
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_pl.txt
@@ -0,0 +1,14 @@
+Główni programiści:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (pomysł i właściwy kod)
+ Vladimir Kuznetsov <vovanec@gmail.com> (look&feel oraz wiele usprawnień)
+
+Twórcy wtyczek:
+
+ Artur Guzik <aguzik88@gmail.com> (wtyczka powiadamiania KDE4, usprawnienia ikony statusu)
+ Yuriy Zhuravlev <stalkerg@gmail.com> (wtyczki jack & oss)
+
+Grafika:
+
+ Andrey Adreev <andreev00@gmail.com>
+
diff --git a/src/plugins/Ui/skinned/txt/authors_ru.txt b/src/plugins/Ui/skinned/txt/authors_ru.txt
new file mode 100644
index 000000000..9b6336d80
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_ru.txt
@@ -0,0 +1,13 @@
+Разработчики ядра:
+
+ Владимир Кузнецов <vovanec@gmail.com> (внешний вид и множество улучшений)
+ Илья Котов <forkotov02@hotmail.ru> (идея и основной код)
+
+Разработчики модулей:
+
+ Artur Guzik <aguzik88@gmail.com> (модуль уведомлений kde4, улучшения в модуле системного лотка)
+ Юрий Журавлёв <stalkerg@gmail.com> (модули jack, oss)
+
+Графика:
+
+ Андрей Андреев <andreev00@gmail.com>
diff --git a/src/plugins/Ui/skinned/txt/authors_tr.txt b/src/plugins/Ui/skinned/txt/authors_tr.txt
new file mode 100644
index 000000000..292b222d7
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_tr.txt
@@ -0,0 +1,13 @@
+Çekirdek Geliştiriciler:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (fikirler ve temel kod)
+ Vladimir Kuznetsov <vovanec@gmail.com> (görünüm ve birçok iyileştirme)
+
+Eklenti Geliştiricileri:
+
+ Yuriy Zhuravlev <stalkerg@gmail.com> (jack & oss eklentisi)
+
+Artwork:
+
+ Andrey Adreev <andreev00@gmail.com>
+
diff --git a/src/plugins/Ui/skinned/txt/authors_uk_UA.txt b/src/plugins/Ui/skinned/txt/authors_uk_UA.txt
new file mode 100644
index 000000000..9dd59194d
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_uk_UA.txt
@@ -0,0 +1,16 @@
+Розробники ядра:
+
+ Володимир Кузнєцов <vovanec@gmail.com> (зовнішній вигляд і безліч поліпшень)
+ Ілля Котов <forkotov02@hotmail.ru> (ідея і основний код)
+
+Розробники модулів:
+
+ Юрій Журавльов <stalkerg@gmail.com> (модулі jack, oss)
+
+Український переклад:
+
+ Моцьо Геннадій <drool@altlinux.ru>
+
+Графіка:
+
+ Андрій Андрєєв <andreev00@gmail.com>
diff --git a/src/plugins/Ui/skinned/txt/authors_zh_CN.txt b/src/plugins/Ui/skinned/txt/authors_zh_CN.txt
new file mode 100644
index 000000000..f554ce7e9
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_zh_CN.txt
@@ -0,0 +1,12 @@
+核心开发:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (idea and base code)
+ Vladimir Kuznetsov <vovanec@gmail.com> (look&feel and many improvements)
+
+插件开发:
+
+ Yuriy Zhuravlev <stalkerg@gmail.com> (jack plugin)
+
+美术:
+
+ Andrey Adreev <andreev00@gmail.com>
diff --git a/src/plugins/Ui/skinned/txt/authors_zh_TW.txt b/src/plugins/Ui/skinned/txt/authors_zh_TW.txt
new file mode 100644
index 000000000..fa9f8482d
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/authors_zh_TW.txt
@@ -0,0 +1,13 @@
+核心開發:
+
+ Ilya Kotov <forkotov02@hotmail.ru> (idea and base code)
+ Vladimir Kuznetsov <vovanec@gmail.com> (look&feel and many improvements)
+
+插件開發:
+
+ Yuriy Zhuravlev <stalkerg@gmail.com> (jack plugin)
+
+美術:
+
+ Andrey Adreev <andreev00@gmail.com>
+
diff --git a/src/plugins/Ui/skinned/txt/description_cs.txt b/src/plugins/Ui/skinned/txt/description_cs.txt
new file mode 100644
index 000000000..d262da180
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_cs.txt
@@ -0,0 +1 @@
+Tento program je zvukový přehrávač napsaný s pomocí knihovny Qt. \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/description_de.txt b/src/plugins/Ui/skinned/txt/description_de.txt
new file mode 100644
index 000000000..d9087c5dd
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_de.txt
@@ -0,0 +1 @@
+Dieses Programm ist ein Audio-Abspielprogramm, der mit Hilfe der Qt-Bibliotheken geschrieben wurde. \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/description_en.txt b/src/plugins/Ui/skinned/txt/description_en.txt
new file mode 100644
index 000000000..23f6dd619
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_en.txt
@@ -0,0 +1 @@
+This program is an audio-player, written with the help of the Qt library. \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/description_es.txt b/src/plugins/Ui/skinned/txt/description_es.txt
new file mode 100644
index 000000000..6bf33e46b
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_es.txt
@@ -0,0 +1 @@
+Este programa es un reproductor de audio, escrito con ayuda de la librería Qt.
diff --git a/src/plugins/Ui/skinned/txt/description_it.txt b/src/plugins/Ui/skinned/txt/description_it.txt
new file mode 100644
index 000000000..fc6cf7ae5
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_it.txt
@@ -0,0 +1 @@
+Programma di riproduzione audio scritto con l'ausilio di librerie QT.
diff --git a/src/plugins/Ui/skinned/txt/description_ja.txt b/src/plugins/Ui/skinned/txt/description_ja.txt
new file mode 100644
index 000000000..3eabd97c5
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_ja.txt
@@ -0,0 +1 @@
+このプログラムは、 Qtライブラリの力を借りて作られたオーディオプレイヤです。
diff --git a/src/plugins/Ui/skinned/txt/description_lt.txt b/src/plugins/Ui/skinned/txt/description_lt.txt
new file mode 100644
index 000000000..f8116e9d3
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_lt.txt
@@ -0,0 +1 @@
+Ši programa yra audio grotuvas, sukurtas Qt pagrindu.
diff --git a/src/plugins/Ui/skinned/txt/description_nl.txt b/src/plugins/Ui/skinned/txt/description_nl.txt
new file mode 100644
index 000000000..aa3e93337
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_nl.txt
@@ -0,0 +1 @@
+Dit programma is een audio-speler, geschreven met de hulp van de Qt bibliotheek. \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/description_pl.txt b/src/plugins/Ui/skinned/txt/description_pl.txt
new file mode 100644
index 000000000..4481835a4
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_pl.txt
@@ -0,0 +1 @@
+Qmmp to odtwarzacz muzyki napisany przy użyciu biblioteki QT. \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/description_ru.txt b/src/plugins/Ui/skinned/txt/description_ru.txt
new file mode 100644
index 000000000..18d772ab3
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_ru.txt
@@ -0,0 +1 @@
+Данная программа является аудио-плеером, написанным с использованием библиотеки Qt.
diff --git a/src/plugins/Ui/skinned/txt/description_tr.txt b/src/plugins/Ui/skinned/txt/description_tr.txt
new file mode 100644
index 000000000..135d0f010
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_tr.txt
@@ -0,0 +1 @@
+Bu program Qt kitaplığı kullaılarak yazılmış bir çoklu ortam oynatıcısıdır.
diff --git a/src/plugins/Ui/skinned/txt/description_uk_UA.txt b/src/plugins/Ui/skinned/txt/description_uk_UA.txt
new file mode 100644
index 000000000..9e5d45b60
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_uk_UA.txt
@@ -0,0 +1 @@
+Ця програма є аудіопрогравачем, написаним за допомогою бібліотеки Qt. \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/description_zh_CN.txt b/src/plugins/Ui/skinned/txt/description_zh_CN.txt
new file mode 100644
index 000000000..9d672c6d1
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_zh_CN.txt
@@ -0,0 +1 @@
+此程序是一个音乐播放器,基于 Qt 库开发。 \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/description_zh_TW.txt b/src/plugins/Ui/skinned/txt/description_zh_TW.txt
new file mode 100644
index 000000000..a1da82850
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/description_zh_TW.txt
@@ -0,0 +1 @@
+此程式是一個音樂播放器,程式的編寫基於Qt庫。 \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/thanks_cs.txt b/src/plugins/Ui/skinned/txt/thanks_cs.txt
new file mode 100644
index 000000000..9bc0388da
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_cs.txt
@@ -0,0 +1,3 @@
+Poděkování patří:
+
+ Вадим Калинников (Vadim Kalinnikov) <moose@ylsoftware.com> (hosting projektu)
diff --git a/src/plugins/Ui/skinned/txt/thanks_de.txt b/src/plugins/Ui/skinned/txt/thanks_de.txt
new file mode 100644
index 000000000..3392e9f19
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_de.txt
@@ -0,0 +1,17 @@
+Dank an:
+
+ Adria Arrufat <swiftscythe@gmail.com> – Fehlerberichte
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> – Korrekturen am JACK-Modul, Fehlerberichte
+ Csaba Hruska <csaba.hruska@gmail.com> – Korrekturen am FFmpeg-Modul
+ Dmitry Kostin <kostindima@gmail.com> – Unterstützung für iso.wv
+ Gennadi Motsyo <drool@altlinux.ru> – Fehlerberichte
+ Vadim Kalinnikov <moose@ylsoftware.com> – Projekt-Hosting
+ Erik Ölsar <erlk.ozlr@gmail.com> – Designte Mauszeiger, Verbesserungen an der Oberfläche
+ Funda Wang <fundawang@gmail.com> – Korrekturen an den CMake-Dateien
+ Michail Zheludkov <zheludkovm@mail.ru> – Korrekturen am FFmpeg-Modul
+ Panagiotis Papadopoulos <pano_90@gmx.net> – Korrekturen an der Oberfläche, Fehlerberichte
+ Pino Toscano <toscano.pino@tiscali.it> – Verbesserungen der Portabilität
+ Karel Volný <kvolny@redhat.com> – Verschiedene Korrekturen
+ Sebastian Pipping <webmaster@hartwork.org> – bs2b-Verbesserungen
+ Stefan Koelling <stefankoelling.ext@googlemail.com> – Kompilierungskorrekturen
+ Yaakov Selkowitz <yselkowitz@gmail.com> – Cygwin-Verbesserungen
diff --git a/src/plugins/Ui/skinned/txt/thanks_en.txt b/src/plugins/Ui/skinned/txt/thanks_en.txt
new file mode 100644
index 000000000..2e52ed482
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_en.txt
@@ -0,0 +1,21 @@
+Thanks to:
+
+ Adria Arrufat <swiftscythe@gmail.com> - bug reports
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - jack plugin fixes, bug reports
+ Anton Petrusevich <casus@casus.us> - random playback improvements
+ Avihay Baratz <avihayb@gmail.com> - auto stop feature, bug fixes
+ Csaba Hruska <csaba.hruska@gmail.com> - ffmpeg plugin fixes
+ Dmitry Kostin <kostindima@gmail.com> - iso.wv support
+ Evgeny Gleyzerman <evgley@gmail.com> - cue parsing improvements
+ Gennadi Motsyo <drool@altlinux.ru> - bug reports
+ Vadim Kalinnikov <moose@ylsoftware.com> - project hosting
+ Erik Ölsar <erlk.ozlr@gmail.com> - skinned cursors, ui improvements
+ Funda Wang <fundawang@gmail.com> - cmake files fixes
+ Michail Zheludkov <zheludkovm@mail.ru> - ffmpeg plugin fixes
+ Michał Grosicki <grosik88@o2.pl> - alsa plugin fixes
+ Panagiotis Papadopoulos <pano_90@gmx.net> - ui fixes, bug reports
+ Pino Toscano <toscano.pino@tiscali.it> - portability patches
+ Karel Volný <kvolny@redhat.com> - various fixes
+ Sebastian Pipping <webmaster@hartwork.org> - bs2b patches
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - some build fixes
+ Yaakov Selkowitz <yselkowitz@gmail.com> - cygwin patches
diff --git a/src/plugins/Ui/skinned/txt/thanks_es.txt b/src/plugins/Ui/skinned/txt/thanks_es.txt
new file mode 100644
index 000000000..dec15461f
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_es.txt
@@ -0,0 +1,17 @@
+Gracias a:
+
+ Adria Arrufat <swiftscythe@gmail.com> - reporte de errores
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - arreglos en el módulo jack, reporte de errores
+ Csaba Hruska <csaba.hruska@gmail.com> - arreglos en el módulo ffmpeg
+ Dmitry Kostin <kostindima@gmail.com> - soporte iso.wv
+ Gennadi Motsyo <drool@altlinux.ru> - reporte de errores
+ Vadim Kalinnikov <moose@ylsoftware.com> - alojamiento del proyecto
+ Erik Ölsar <erlk.ozlr@gmail.com> - temas de cursores, mejoras en el interfaz
+ Funda Wang <fundawang@gmail.com> - arreglos en los archivos cmake
+ Michail Zheludkov <zheludkovm@mail.ru> - arreglos en el módulo ffmpeg
+ Panagiotis Papadopoulos <pano_90@gmx.net> - arreglos en el interfaz, reporte de errores
+ Pino Toscano <toscano.pino@tiscali.it> - parches de portabilidad
+ Karel Volný <kvolny@redhat.com> - varios arreglos
+ Sebastian Pipping <webmaster@hartwork.org> - parches para bs2b
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - algunos arreglos en la compilación
+ Yaakov Selkowitz <yselkowitz@gmail.com> - parches para cygwin
diff --git a/src/plugins/Ui/skinned/txt/thanks_it.txt b/src/plugins/Ui/skinned/txt/thanks_it.txt
new file mode 100644
index 000000000..46b6987db
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_it.txt
@@ -0,0 +1,3 @@
+Grazie a:
+
+ Vadim Kalinnikov <moose@ylsoftware.com> (spazio ospite del progetto)
diff --git a/src/plugins/Ui/skinned/txt/thanks_ja.txt b/src/plugins/Ui/skinned/txt/thanks_ja.txt
new file mode 100644
index 000000000..a7b7b820e
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_ja.txt
@@ -0,0 +1,21 @@
+協力者:
+
+ Adria Arrufat <swiftscythe@gmail.com> - バグ報告
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - jack プラグイン改修, バグ報告
+ Anton Petrusevich <casus@casus.us> - シャッフル再生の改良
+ Avihay Baratz <avihayb@gmail.com> - 自動終止機能, バグ改修
+ Csaba Hruska <csaba.hruska@gmail.com> - ffmpeg プラグイン改修
+ Dmitry Kostin <kostindima@gmail.com> - iso.wv サポート
+ Evgeny Gleyzerman <evgley@gmail.com> - cue 解析の改良
+ Геннадий Моцьо (Gennadi Motsyo) <drool@altlinux.ru> - バグ報告
+ Вадим Калинников (Vadim Kalinnikov) <moose@ylsoftware.com> - ホスト提供
+ Erik Ölsar <erlk.ozlr@gmail.com> - スキン化カーソル, UI改良
+ Funda Wang <fundawang@gmail.com> - cmake files 改修
+ Михаил Желудков (Michail Zheludkov) <zheludkovm@mail.ru> - ffmpeg プラグイン改修
+ Michał Grosicki <grosik88@o2.pl> - alsa プラグイン改修
+ Panagiotis Papadopoulos <pano_90@gmx.net> - UI改修, バグ報告
+ Pino Toscano <toscano.pino@tiscali.it> - 移植適用パッチ
+ Karel Volný <kvolny@redhat.com> - 各種改修
+ Sebastian Pipping <webmaster@hartwork.org> - bs2b パッチ
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - ビルド改修
+ Yaakov Selkowitz <yselkowitz@gmail.com> - cygwin パッチ
diff --git a/src/plugins/Ui/skinned/txt/thanks_lt.txt b/src/plugins/Ui/skinned/txt/thanks_lt.txt
new file mode 100644
index 000000000..fbfa16ac0
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_lt.txt
@@ -0,0 +1,17 @@
+Dėkojame:
+
+ Adria Arrufat <swiftscythe@gmail.com> - klaidų pranešimai
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - jack įskiepio pataisymai, klaidų pranešimai
+ Csaba Hruska <csaba.hruska@gmail.com> - ffmpeg įskiepio pataisymai
+ Dmitry Kostin <kostindima@gmail.com> - iso.wv palaikymas
+ Gennadi Motsyo <drool@altlinux.ru> - klaidų pranešimai
+ Vadim Kalinnikov <moose@ylsoftware.com> - svetainės talpinimas
+ Erik Ölsar <erlk.ozlr@gmail.com> - temų kursoriai, ui patobulinimai
+ Funda Wang <fundawang@gmail.com> - cmake bylų pataisymai
+ Michail Zheludkov <zheludkovm@mail.ru> - ffmpeg įskiepio pataisymai
+ Panagiotis Papadopoulos <pano_90@gmx.net> - ui pataisymai, klaidų pranešimai
+ Pino Toscano <toscano.pino@tiscali.it> - portability patches
+ Karel Volný <kvolny@redhat.com> - įvairūs pataisymai
+ Sebastian Pipping <webmaster@hartwork.org> - bs2b lopai
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - keletas kompiliavimo pataisymų
+ Yaakov Selkowitz <yselkowitz@gmail.com> - cygwin lopai
diff --git a/src/plugins/Ui/skinned/txt/thanks_nl.txt b/src/plugins/Ui/skinned/txt/thanks_nl.txt
new file mode 100644
index 000000000..145d2f4bb
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_nl.txt
@@ -0,0 +1,17 @@
+Met dank aan:
+
+ Adria Arrufat <swiftscythe@gmail.com> - foutrapportage
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - jack module reparatie's, foutrapportage
+ Csaba Hruska <csaba.hruska@gmail.com> - ffmpeg module aanpassingen
+ Dmitry Kostin <kostindima@gmail.com> - iso.wv ondersteuning
+ Gennadi Motsyo <drool@altlinux.ru> - foutrapportage
+ Vadim Kalinnikov <moose@ylsoftware.com> - project hosting
+ Erik Ölsar <erlk.ozlr@gmail.com> - cursor thema's, verbeteringen van de gebruikersinterface
+ Funda Wang <fundawang@gmail.com> - verbeteringen in cmake bestanden
+ Michail Zheludkov <zheludkovm@mail.ru> - ffmpeg module aanpassingen
+ Panagiotis Papadopoulos <pano_90@gmx.net> - interface reparatie's, foutrapportage
+ Pino Toscano <toscano.pino@tiscali.it> - compatibiliteit andere systemen
+ Karel Volný <kvolny@redhat.com> - overige reparatie's
+ Sebastian Pipping <webmaster@hartwork.org> - bs2b contributie
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - aanpassingen voor bouwsysteem
+ Yaakov Selkowitz <yselkowitz@gmail.com> - cygwin aanpassingen
diff --git a/src/plugins/Ui/skinned/txt/thanks_pl.txt b/src/plugins/Ui/skinned/txt/thanks_pl.txt
new file mode 100644
index 000000000..fa839dbf3
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_pl.txt
@@ -0,0 +1,21 @@
+Podziękowania:
+
+ Adria Arrufat <swiftscythe@gmail.com> - raporty błędów
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - poprawki dla wtyczki jack, raporty błędów
+ Anton Petrusevich <casus@casus.us> - ulepszenia losowego odtwarzania
+ Avihay Baratz <avihayb@gmail.com> - funkcja auto stop, poprawki błędów
+ Csaba Hruska <csaba.hruska@gmail.com> - poprawki dla wtyczki ffmpeg
+ Dmitry Kostin <kostindima@gmail.com> - wsparcie dla iso.wv
+ Evgeny Gleyzerman <evgley@gmail.com> - poprawki przetwarzania cue
+ Gennadi Motsyo <drool@altlinux.ru> - raporty błędów
+ Vadim Kalinnikov <moose@ylsoftware.com> - hosting projektu
+ Erik Ölsar <erlk.ozlr@gmail.com> - wsparcie dla kursorów z motywu, udoskonalenia dla ui
+ Funda Wang <fundawang@gmail.com> - poprawki plików cmake
+ Michail Zheludkov <zheludkovm@mail.ru> - poprawki dla wtyczki ffmpeg
+ Michał Grosicki <grosik88@o2.pl> - poprawki wtyczki alsa
+ Panagiotis Papadopoulos <pano_90@gmx.net> - poprawki ui, raporty błędów
+ Pino Toscano <toscano.pino@tiscali.it> - poprawki dotyczące przenośności programu
+ Karel Volný <kvolny@redhat.com> - różne poprawki
+ Sebastian Pipping <webmaster@hartwork.org> - poprawki bs2b
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - poprawki błędów kompilacji
+ Yaakov Selkowitz <yselkowitz@gmail.com> - poprawki cygwin \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/thanks_ru.txt b/src/plugins/Ui/skinned/txt/thanks_ru.txt
new file mode 100644
index 000000000..c6edb7110
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_ru.txt
@@ -0,0 +1,21 @@
+Благодарности:
+
+ Adria Arrufat <swiftscythe@gmail.com> - сообщения об ошибках
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - исправления в модуле jack plugin, сообщения об ошибках
+ Anton Petrusevich <casus@casus.us> - улучшение случайного воспроизведения
+ Avihay Baratz <avihayb@gmail.com> - опции авто-остановки, исправления ошибок
+ Csaba Hruska <csaba.hruska@gmail.com> - исправления в модуле ffmpeg
+ Dmitry Kostin <kostindima@gmail.com> - поддержка iso.wv
+ Evgeny Gleyzerman <evgley@gmail.com> - улучшение поддержки cue
+ Геннадий Моцьо <drool@altlinux.ru> - сообщения об ошибках
+ Вадим Калинников <moose@ylsoftware.com> - хоcтинг проекта
+ Erik Ölsar <erlk.ozlr@gmail.com> - растровые курсоры, улучшения в интерфейсе пользователя
+ Funda Wang <fundawang@gmail.com> - исправления файлов cmake
+ Михаил Желудков <zheludkovm@mail.ru> - исправления в модуле ffmpeg
+ Michał Grosicki <grosik88@o2.pl> - исправления в модуле alsa
+ Panagiotis Papadopoulos <pano_90@gmx.net> - улучшения в интерфейсе пользователя, сообщения об ошибках
+ Pino Toscano <toscano.pino@tiscali.it> - улучшение кроссплатформенности
+ Karel Volný <kvolny@redhat.com> - различные исправления
+ Sebastian Pipping <webmaster@hartwork.org> - патчи bs2b
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - исправления сборки
+ Yaakov Selkowitz <yselkowitz@gmail.com> - поддержка cygwin
diff --git a/src/plugins/Ui/skinned/txt/thanks_tr.txt b/src/plugins/Ui/skinned/txt/thanks_tr.txt
new file mode 100644
index 000000000..9bdf21ef0
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_tr.txt
@@ -0,0 +1,3 @@
+Teşekkürler:
+
+ Vadim Kalinnikov <moose@ylsoftware.com> (proje barındırma)
diff --git a/src/plugins/Ui/skinned/txt/thanks_uk_UA.txt b/src/plugins/Ui/skinned/txt/thanks_uk_UA.txt
new file mode 100644
index 000000000..31803ec40
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_uk_UA.txt
@@ -0,0 +1,20 @@
+Подяки:
+
+ Вадиму Каліннікову <moose@ylsoftware.com> - хостинг проекту
+ Adria Arrufat <swiftscythe@gmail.com> - повідомлення про помилки
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - виправлення в модулі jack plugin, повідомлення про помилки
+ Anton Petrusevich <casus@casus.us> - покращення випадкового відтворення
+ Avihay Baratz <avihayb@gmail.com> - опції авто-зупинки, виправлення помилок
+ Csaba Hruska <csaba.hruska@gmail.com> - виправлення в модулі ffmpeg
+ Dmitry Kostin <kostindima@gmail.com> - підтримка iso.wv
+ Evgeny Gleyzerman <evgley@gmail.com> - покращення підтримки cue
+ Геннадій Моцьо <drool@altlinux.ru> - повідомлення про помилки
+ Erik Ölsar <erlk.ozlr@gmail.com> - растрові курсори, покращення інтерфейсу користувача
+ Funda Wang <fundawang@gmail.com> - виправлення файлів cmake
+ Михаил Желудков <zheludkovm@mail.ru> - виправлення в модулі ffmpeg
+ Panagiotis Papadopoulos <pano_90@gmx.net> - покращення інтерфейсу користувача, повідомлення про помилки
+ Pino Toscano <toscano.pino@tiscali.it> - покращення кроссплатформності
+ Karel Volný <kvolny@redhat.com> - різноманітні виправлення
+ Sebastian Pipping <webmaster@hartwork.org> - патчі bs2b
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - виправлення збірки
+ Yaakov Selkowitz <yselkowitz@gmail.com> - підтримка cygwin
diff --git a/src/plugins/Ui/skinned/txt/thanks_zh_CN.txt b/src/plugins/Ui/skinned/txt/thanks_zh_CN.txt
new file mode 100644
index 000000000..6f9ba0a1d
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_zh_CN.txt
@@ -0,0 +1,21 @@
+感谢:
+
+ Adria Arrufat <swiftscythe@gmail.com> - bug 报告
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - jack 插件修正,bug 报告
+ Anton Petrusevich <casus@casus.us> - 随机播放改进
+ Avihay Baratz <avihayb@gmail.com> - 自动停放功能,bug 修正
+ Csaba Hruska <csaba.hruska@gmail.com> - ffmpeg 插件修正
+ Dmitry Kostin <kostindima@gmail.com> - iso.wv 支持
+ Evgeny Gleyzerman <evgley@gmail.com> - cue 解析改进
+ Gennadi Motsyo <drool@altlinux.ru> - bug 报告
+ Vadim Kalinnikov <moose@ylsoftware.com> - 项目网络支持
+ Erik Ölsar <erlk.ozlr@gmail.com> - 光标皮肤、用户界面改进
+ Funda Wang <fundawang@gmail.com> - cmake 文件修正
+ Michail Zheludkov <zheludkovm@mail.ru> - ffmpeg 插件修正
+ Michał Grosicki <grosik88@o2.pl> - alsa 插件修正
+ Panagiotis Papadopoulos <pano_90@gmx.net> - 用户界面修正,bug 报告
+ Pino Toscano <toscano.pino@tiscali.it> - 可移植性补丁
+ Karel Volný <kvolny@redhat.com> - 多项修正
+ Sebastian Pipping <webmaster@hartwork.org> - bs2b 补丁
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - 一些编译修正
+ Yaakov Selkowitz <yselkowitz@gmail.com> - cygwin 补丁
diff --git a/src/plugins/Ui/skinned/txt/thanks_zh_TW.txt b/src/plugins/Ui/skinned/txt/thanks_zh_TW.txt
new file mode 100644
index 000000000..d1b898fef
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/thanks_zh_TW.txt
@@ -0,0 +1,21 @@
+感謝:
+
+ Adria Arrufat <​​swiftscythe@gmail.com> - bug 報告
+ Adrian Knoth <adi@drcomp.erfurt.thur.de> - jack 插件修正,bug 報告
+ Anton Petrusevich <casus@casus.us> - 隨機播放改進
+ Avihay Baratz <avihayb@gmail.com> - 自動停放功能,bug 修正
+ Csaba Hruska <csaba.hruska@gmail.com> - ffmpeg 插件修正
+ Dmitry Kostin <kostindima@gmail.com> - iso.wv 支持
+ Evgeny Gleyzerman <evgley@gmail.com> - cue 解析改進
+ Gennadi Motsyo <drool@altlinux.ru> - bug 報告
+ Vadim Kalinnikov <moose@ylsoftware.com> - 項目網絡支持
+ Erik Ölsar <erlk.ozlr@gmail.com> - 光標皮膚、用戶界面改進
+ Funda Wang <fundawang@gmail.com> - cmake 文件修正
+ Michail Zheludkov <zheludkovm@mail.ru> - ffmpeg 插件修正
+ Michał Grosicki <grosik88@o2.pl> - alsa 插件修正
+ Panagiotis Papadopoulos <pano_90@gmx.net> - 用戶界面修正,bug 報告
+ Pino Toscano <toscano.pino@tiscali.it> - 可移植性補丁
+ Karel Volný <kvolny@redhat.com> - 多項修正
+ Sebastian Pipping <webmaster@hartwork.org> - bs2b 補丁
+ Stefan Koelling <stefankoelling.ext@googlemail.com> - 一些編譯修正
+ Yaakov Selkowitz <yselkowitz@gmail.com> - cygwin 補丁
diff --git a/src/plugins/Ui/skinned/txt/translators_cs.txt b/src/plugins/Ui/skinned/txt/translators_cs.txt
new file mode 100644
index 000000000..545c16425
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_cs.txt
@@ -0,0 +1,24 @@
+Brazilská portugalština:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Tradiční čínština:
+ lon <lon83129@126.com>
+
+Zjednodušená čínština:
+ lon <lon83129@126.com>
+
+Čeština:
+ Karel Volný <kvolny@redhat.com>
+
+Němčina:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+
+Ruština:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+Turečtina:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+
+Ukrajinština:
+ Gennadi Motsyo <drool@altlinux.ru>
diff --git a/src/plugins/Ui/skinned/txt/translators_de.txt b/src/plugins/Ui/skinned/txt/translators_de.txt
new file mode 100644
index 000000000..eae2ab01b
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_de.txt
@@ -0,0 +1,53 @@
+Brasilianisch Portugiesisch:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Chinesisch (Langzeichen):
+ lon <lon83129@126.com>
+
+Chinesisch (Kurzzeichen):
+ lon <lon83129@126.com>
+
+Deutsch:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+Französisch:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+Italienisch:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Japanisch:
+ SimaMoto,RyoTa <liangtai.s4@gmail.com>
+
+Kasachisch:
+ Baurzhan Muftakhidinov <baurthefirst@gmail.com>
+
+Litauisch:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+Niederländisch:
+ Ronald Uitermark <ronald645@gmail.com>
+
+Polnisch:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Russisch:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+Spanisch:
+ Félix Medrano <xukosky@yahoo.es>
+
+Tschechisch:
+ Karel Volný <kvolny@redhat.com>
+
+Türkisch:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+Ukrainisch:
+ Gennadi Motsyo <drool@altlinux.ru>
+
+Ungarisch:
+ Németh Gábor <sutee84@freemail.hu> \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/translators_en.txt b/src/plugins/Ui/skinned/txt/translators_en.txt
new file mode 100644
index 000000000..9d13b3ac3
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_en.txt
@@ -0,0 +1,56 @@
+Brazilian Portuguese:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Chinese Traditional:
+ lon <lon83129@126.com>
+
+Chinese Simplified:
+ lon <lon83129@126.com>
+
+Czech:
+ Karel Volný <kvolny@redhat.com>
+
+Dutch:
+ Ronald Uitermark <ronald645@gmail.com>
+
+French:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+German:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+Hungarian:
+ Németh Gábor <sutee84@freemail.hu>
+
+Italian:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Japanese:
+ Ryota Shimamoto <liangtai.s4@gmail.com>
+
+Kazakh:
+ Baurzhan Muftakhidinov <baurthefirst@gmail.com>
+
+Lithuanian:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+Polish:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Russian:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+Slovak:
+ Ján Ďanovský <dagsoftware@yahoo.com>
+
+Spanish:
+ Félix Medrano <xukosky@yahoo.es>
+
+Turkish:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+Ukrainian:
+ Gennadi Motsyo <drool@altlinux.ru>
diff --git a/src/plugins/Ui/skinned/txt/translators_es.txt b/src/plugins/Ui/skinned/txt/translators_es.txt
new file mode 100644
index 000000000..3d5570dd2
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_es.txt
@@ -0,0 +1,47 @@
+Portugués de Brasil:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Chino tradicional:
+ lon <lon83129@126.com>
+
+Chino simplificado:
+ lon <lon83129@126.com>
+
+Checo:
+ Karel Volný <kvolny@redhat.com>
+
+Holandés:
+ Ronald Uitermark <ronald645@gmail.com>
+
+Francés:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+Alemán:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+Húngaro:
+ Németh Gábor <sutee84@freemail.hu>
+
+Italiano:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Kazajo:
+ Baurzhan Muftakhidinov <baurthefirst@gmail.com>
+
+Lituano:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+Polaco:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Ruso:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+Turco:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+Ucraniano:
+ Gennadi Motsyo <drool@altlinux.ru>
diff --git a/src/plugins/Ui/skinned/txt/translators_it.txt b/src/plugins/Ui/skinned/txt/translators_it.txt
new file mode 100644
index 000000000..8a238be38
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_it.txt
@@ -0,0 +1,34 @@
+Brasiliano portoghese:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Cinese tradizionale:
+ lon <lon83129@126.com>
+
+Cinese semplificato:
+ lon <lon83129@126.com>
+
+Ceco:
+ Karel Volný <kvolny@redhat.com>
+
+Francese:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+Italiano:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Polacco:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Russo:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+Tedesco:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+Turco:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+
+Ucraino:
+ Gennadi Motsyo <drool@altlinux.ru>
diff --git a/src/plugins/Ui/skinned/txt/translators_ja.txt b/src/plugins/Ui/skinned/txt/translators_ja.txt
new file mode 100644
index 000000000..11c5537d7
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_ja.txt
@@ -0,0 +1,53 @@
+イタリア語:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+ウクライナ語:
+ Gennadi Motsyo <drool@altlinux.ru>
+
+オランダ語:
+ Ronald Uitermark <ronald645@gmail.com>
+
+カザフ語:
+ Baurzhan Muftakhidinov <baurthefirst@gmail.com>
+
+スペイン語:
+ Félix Medrano <xukosky@yahoo.es>
+
+チェコ語:
+ Karel Volný <kvolny@redhat.com>
+
+ドイツ語:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+トルコ語:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+ハンガリー語:
+ Németh Gábor <sutee84@freemail.hu>
+
+ブラジル ポルトガル語:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+フランス語:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+ポーランド語:
+ Grzegorz Gibas <amigib@gmail.com>
+
+リトアニア語:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+ロシア語:
+ Илья Котов (Ilya Kotov) <forkotov02@hotmail.ru>
+
+簡体字中国語:
+ 李红昆 (lon) <lon83129@126.com>
+
+繁体字中国語:
+ 李红昆 (lon) <lon83129@126.com>
+
+日本語:
+ 島本良太 <liangtai.s4@gmail.com>
diff --git a/src/plugins/Ui/skinned/txt/translators_lt.txt b/src/plugins/Ui/skinned/txt/translators_lt.txt
new file mode 100644
index 000000000..7cc6d8bbd
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_lt.txt
@@ -0,0 +1,50 @@
+Brazilų, Portugalų:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Ispanų:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Kinų tradicinis:
+ lon <lon83129@126.com>
+
+Kinų supaprastintas:
+ lon <lon83129@126.com>
+
+Lenkų
+ Grzegorz Gibas <amigib@gmail.com>
+
+Čekų:
+ Karel Volný <kvolny@redhat.com>
+
+Vokiečių:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+Rusų:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+Turkų:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+
+Ukrainiečių:
+ Gennadi Motsyo <drool@altlinux.ru>
+
+Lietuvių:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+Lenkų:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Rusų:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+spanų:
+ Félix Medrano <xukosky@yahoo.es>
+
+Turkų:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+Ukrainiečių:
+ Gennadi Motsyo <drool@altlinux.ru>
diff --git a/src/plugins/Ui/skinned/txt/translators_nl.txt b/src/plugins/Ui/skinned/txt/translators_nl.txt
new file mode 100644
index 000000000..88211a6ae
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_nl.txt
@@ -0,0 +1,47 @@
+Braziliaans Portugees:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Traditioneel Chinees:
+ lon <lon83129@126.com>
+
+Simpel Chinees:
+ lon <lon83129@126.com>
+
+Tsjechisch:
+ Karel Volný <kvolny@redhat.com>
+
+Nederlands:
+ Ronald Uitermark <ronald645@gmail.com>
+
+Frans:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+Duits:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+Hongaars:
+ Németh Gábor <sutee84@freemail.hu>
+
+Italiaans:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Kazachstaans:
+ Baurzhan Muftakhidinov <baurthefirst@gmail.com>
+
+Litouws:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+Pools:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Russisch:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+Turks:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+Oekrains:
+ Gennadi Motsyo <drool@altlinux.ru>
diff --git a/src/plugins/Ui/skinned/txt/translators_pl.txt b/src/plugins/Ui/skinned/txt/translators_pl.txt
new file mode 100644
index 000000000..a5ea9d78e
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_pl.txt
@@ -0,0 +1,53 @@
+Brazylijski Portugalski:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Chiński Tradycyjny:
+ lon <lon83129@126.com>
+
+Chiński Uproszczony:
+ lon <lon83129@126.com>
+
+Czeski:
+ Karel Volný <kvolny@redhat.com>
+
+Holenderski:
+ Ronald Uitermark <ronald645@gmail.com>
+
+Francuski:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+Niemiecki:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+Węgierski:
+ Németh Gábor <sutee84@freemail.hu>
+
+Włoski:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Japoński:
+ Rjota Šimamoto <liangtai.s4@gmail.com>
+
+Kazachski:
+ Baurzhan Muftakhidinov <baurthefirst@gmail.com>
+
+Litewski:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+Polski:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Rosyjski:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+Hiszpański:
+ Félix Medrano <xukosky@yahoo.es>
+
+Turecki:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+Ukraiński:
+ Gennadi Motsyo <drool@altlinux.ru>
diff --git a/src/plugins/Ui/skinned/txt/translators_ru.txt b/src/plugins/Ui/skinned/txt/translators_ru.txt
new file mode 100644
index 000000000..18152ee20
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_ru.txt
@@ -0,0 +1,56 @@
+Бразильский португальский:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Венгерский:
+ Németh Gábor <sutee84@freemail.hu>
+
+Голландский:
+ Ronald Uitermark <ronald645@gmail.com>
+
+Итальянский:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Японский:
+ Рёта Симамото <liangtai.s4@gmail.com>
+
+Казахский:
+ Бауржан Муфтахидинов <baurthefirst@gmail.com>
+
+Китайский традиционный:
+ lon <lon83129@126.com>
+
+Китайский упрощённый:
+ lon <lon83129@126.com>
+
+Литовский:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+Польский:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Чешский:
+ Karel Volný <kvolny@redhat.com>
+
+Немецкий:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+Русский:
+ Илья Котов <forkotov02@hotmail.ru>
+
+Словацкий:
+ Ján Ďanovský <dagsoftware@yahoo.co>
+
+Испанский:
+ Félix Medrano <xukosky@yahoo.es>
+
+Турецкий:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+Украинский:
+ Геннадий Моцьо <drool@altlinux.ru>
+
+Французский:
+ Stanislas Zeller <uncensored.assault@gmail.com>
diff --git a/src/plugins/Ui/skinned/txt/translators_tr.txt b/src/plugins/Ui/skinned/txt/translators_tr.txt
new file mode 100644
index 000000000..1a8df1494
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_tr.txt
@@ -0,0 +1,35 @@
+Brezilya Portekizcesi:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Geleneksel Çince:
+ lon <lon83129@126.com>
+
+Basitleştirilmiş Çince:
+ lon <lon83129@126.com>
+
+Çekce:
+ Karel Volný <kvolny@redhat.com>
+
+Fransızca:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+Almanca:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+İtalyanca:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Polonyaca:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Rusça:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+Türkçe:
+ Mustafa GUNAY <mustafagunay@gmail.com>
+ Bilgesu Güngör <bilgesugungor@gmail.com>
+
+Ukraynaca:
+ Gennadi Motsyo <drool@altlinux.ru>
diff --git a/src/plugins/Ui/skinned/txt/translators_uk_UA.txt b/src/plugins/Ui/skinned/txt/translators_uk_UA.txt
new file mode 100644
index 000000000..120369499
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_uk_UA.txt
@@ -0,0 +1,53 @@
+Бразильська португальська:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+Угорська:
+ Németh Gábor <sutee84@freemail.hu>
+
+Голландська:
+ Ronald Uitermark <ronald645@gmail.com>
+
+Італійська:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+Японська:
+ Рета Сімамото <liangtai.s4@gmail.com>
+
+Казахська:
+ Бауржан Муфтахідінов <baurthefirst@gmail.com>
+
+Китайська традиційна:
+ lon <lon83129@126.com>
+
+Китайська спрощена:
+ lon <lon83129@126.com>
+
+Литовська:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+Польська:
+ Grzegorz Gibas <amigib@gmail.com>
+
+Чеська:
+ Karel Volný <kvolny@redhat.com>
+
+Німецька:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+Російська:
+ Ілля Котов <forkotov02@hotmail.ru>
+
+Іспанська:
+ Félix Medrano <xukosky@yahoo.es>
+
+Турецька:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+Українська:
+ Геннадій Моцьо <drool@altlinux.ru>
+
+Французька:
+ Stanislas Zeller <uncensored.assault@gmail.com> \ No newline at end of file
diff --git a/src/plugins/Ui/skinned/txt/translators_zh_CN.txt b/src/plugins/Ui/skinned/txt/translators_zh_CN.txt
new file mode 100644
index 000000000..e24bb5a29
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_zh_CN.txt
@@ -0,0 +1,54 @@
+巴西 葡萄牙语:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+简体中文:
+ 李红昆 (lon) <lon83129@126.com>
+
+繁体中文:
+ 李红昆 (lon) <lon83129@126.com>
+
+捷克语:
+ Karel Volný <kvolny@redhat.com>
+
+荷兰语:
+ Ronald Uitermark <ronald645@gmail.com>
+
+法语:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+德语:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+匈牙利语:
+ Németh Gábor <sutee84@freemail.hu>
+
+意大利语:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+日语:
+ 岛本良太 (Ryota Shimamoto) <liangtai.s4@gmail.com>
+
+哈萨克语:
+ Baurzhan Muftakhidinov <baurthefirst@gmail.com>
+
+立陶宛语:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+波兰语:
+ Grzegorz Gibas <amigib@gmail.com>
+
+俄语:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+西班牙语:
+ Félix Medrano <xukosky@yahoo.es>
+
+土耳其语:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+乌克兰语:
+ Gennadi Motsyo <drool@altlinux.ru>
+
diff --git a/src/plugins/Ui/skinned/txt/translators_zh_TW.txt b/src/plugins/Ui/skinned/txt/translators_zh_TW.txt
new file mode 100644
index 000000000..2ed3da7ac
--- /dev/null
+++ b/src/plugins/Ui/skinned/txt/translators_zh_TW.txt
@@ -0,0 +1,53 @@
+巴西 葡萄牙語:
+ Klaos Lacerda
+ Bruno Gonçalves
+
+簡體中文:
+ 李紅昆 (lon) <lon83129@126.com>
+
+繁體中文:
+ 李紅昆 (lon) <lon83129@126.com>
+
+捷克語:
+ Karel Volný <kvolny@redhat.com>
+
+荷蘭語:
+ Ronald Uitermark <ronald645@gmail.com>
+
+法語:
+ Stanislas Zeller <uncensored.assault@gmail.com>
+
+德語:
+ Stefan Koelling <stefankoelling.ext@googlemail.com>
+ Panagiotis Papadopoulos <pano_90@gmx.net>
+
+匈牙利語:
+ Németh Gábor <sutee84@freemail.hu>
+
+意大利語:
+ Gian Paolo Renello <emmerkar@gmail.com>
+
+日語:
+ 島本良太 (Ryota Shimamoto) <liangtai.s4@gmail.com>
+
+哈薩克語:
+ Baurzhan Muftakhidinov <baurthefirst@gmail.com>
+
+立陶宛語:
+ Algirdas Butkus <butkus.algirdas@gmail.com>
+
+波蘭語:
+ Grzegorz Gibas <amigib@gmail.com>
+
+俄語:
+ Ilya Kotov <forkotov02@hotmail.ru>
+
+西班牙語:
+ Félix Medrano <xukosky@yahoo.es>
+
+土耳其語:
+ Mustafa GUNAY <mustafagunay@pgmail.com>
+ Bilgesu Güngör <h.ibrahim.gungor@gmail.com>
+
+烏克蘭語:
+ Gennadi Motsyo <drool@altlinux.ru>
diff --git a/src/plugins/Ui/skinned/visualmenu.cpp b/src/plugins/Ui/skinned/visualmenu.cpp
new file mode 100644
index 000000000..af8e936d2
--- /dev/null
+++ b/src/plugins/Ui/skinned/visualmenu.cpp
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * Copyright (C) 2007-2010 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 <qmmp/visual.h>
+#include <qmmp/visualfactory.h>
+
+#include "pluginitem.h"
+#include "visualmenu.h"
+
+VisualMenu::VisualMenu(QWidget *parent) : QMenu(tr("Visualization"), parent)
+{
+ VisualFactory *factory = 0;
+ foreach(factory, *Visual::factories())
+ {
+ VisualAction *act = new VisualAction(factory, this);
+ addAction(act);
+ }
+}
+
+VisualMenu::~VisualMenu()
+{
+}
+
+void VisualMenu::updateActions()
+{
+ for(int i = 0; i < Visual::factories()->size(); ++i)
+ {
+ actions()[i]->setChecked(Visual::isEnabled(Visual::factories()->at(i)));
+ }
+}
+
+VisualAction::VisualAction(VisualFactory *factory, QWidget *parent) :
+ QAction(factory->properties().name, parent)
+{
+ setCheckable (true);
+ setChecked (Visual::isEnabled(factory));
+ m_factory = factory;
+ connect(this, SIGNAL(triggered(bool)), SLOT(select(bool)));
+}
+
+void VisualAction::select(bool select)
+{
+ Visual::setEnabled(m_factory, select);
+}
diff --git a/src/plugins/Ui/skinned/visualmenu.h b/src/plugins/Ui/skinned/visualmenu.h
new file mode 100644
index 000000000..0039c7aaf
--- /dev/null
+++ b/src/plugins/Ui/skinned/visualmenu.h
@@ -0,0 +1,57 @@
+/***************************************************************************
+ * Copyright (C) 2007-2010 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 VISUALMENU_H
+#define VISUALMENU_H
+
+#include <QMenu>
+#include <QAction>
+
+class VisualFactory;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class VisualMenu : public QMenu
+{
+ Q_OBJECT
+public:
+ VisualMenu(QWidget *parent = 0);
+
+ ~VisualMenu();
+
+public slots:
+ void updateActions();
+};
+
+class VisualAction : public QAction
+{
+ Q_OBJECT
+public:
+ VisualAction(VisualFactory *factory, QWidget *parent = 0);
+
+private slots:
+ void select(bool);
+
+private:
+ VisualFactory *m_factory;
+
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/volumebar.cpp b/src/plugins/Ui/skinned/volumebar.cpp
new file mode 100644
index 000000000..e0829e659
--- /dev/null
+++ b/src/plugins/Ui/skinned/volumebar.cpp
@@ -0,0 +1,127 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 <QMouseEvent>
+#include <QPainter>
+#include <math.h>
+#include "skin.h"
+#include "button.h"
+#include "mainwindow.h"
+#include "volumebar.h"
+
+
+VolumeBar::VolumeBar(QWidget *parent) : PixmapWidget(parent)
+{
+ m_skin = Skin::instance();
+ connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin()));
+ setPixmap(m_skin->getVolumeBar(0));
+ mw = qobject_cast<MainWindow*>(window());
+ m_moving = false;
+ m_min = 0;
+ m_max = 100;
+ m_old = m_value = 0;
+ draw(false);
+}
+
+VolumeBar::~VolumeBar()
+{}
+
+void VolumeBar::mousePressEvent(QMouseEvent *e)
+{
+ m_moving = true;
+ press_pos = e->x();
+ if(m_pos<e->x() && e->x()<m_pos+11*m_skin->ratio())
+ {
+ press_pos = e->x()-m_pos;
+ emit sliderPressed();
+ }
+ else
+ {
+ m_value = convert(qMax(qMin(width()-18*m_skin->ratio(),e->x()-6*m_skin->ratio()),0));
+ press_pos = 6*m_skin->ratio();
+ emit sliderPressed();
+ if (m_value != m_old)
+ emit sliderMoved(m_value);
+ }
+ draw();
+}
+
+void VolumeBar::mouseMoveEvent (QMouseEvent *e)
+{
+ if(m_moving)
+ {
+ int po = e->x();
+ po = po - press_pos;
+
+ if(0<=po && po<=width()-18*m_skin->ratio())
+ {
+ m_value = convert(po);
+ draw();
+ emit sliderMoved(m_value);
+ }
+ }
+}
+
+void VolumeBar::mouseReleaseEvent(QMouseEvent*)
+{
+ m_moving = false;
+ draw(false);
+ m_old = m_value;
+ emit sliderReleased();
+}
+
+void VolumeBar::setValue(int v)
+{
+ if (m_moving || m_max == 0)
+ return;
+ m_value = v;
+ draw(false);
+}
+
+void VolumeBar::setMax(int max)
+{
+ m_max = max;
+ draw(false);
+}
+
+void VolumeBar::updateSkin()
+{
+ resize(m_skin->getVolumeBar(0).size());
+ draw(false);
+ setCursor(m_skin->getCursor(Skin::CUR_VOLBAL));
+}
+
+void VolumeBar::draw(bool pressed)
+{
+ int p=int(ceil(double(m_value-m_min)*(width()-18*m_skin->ratio())/(m_max-m_min)));
+ m_pixmap = m_skin->getVolumeBar(27*(m_value-m_min)/(m_max-m_min));
+ QPainter paint(&m_pixmap);
+ if(pressed)
+ paint.drawPixmap(p,1,m_skin->getButton(Skin::BT_VOL_P));
+ else
+ paint.drawPixmap(p,1,m_skin->getButton(Skin::BT_VOL_N));
+ setPixmap(m_pixmap);
+ m_pos = p;
+}
+
+int VolumeBar::convert(int p)
+{
+ return int(ceil(double(m_max-m_min)*(p)/(width()-18*m_skin->ratio())+m_min));
+}
diff --git a/src/plugins/Ui/skinned/volumebar.h b/src/plugins/Ui/skinned/volumebar.h
new file mode 100644
index 000000000..47d4dcb0d
--- /dev/null
+++ b/src/plugins/Ui/skinned/volumebar.h
@@ -0,0 +1,76 @@
+/***************************************************************************
+ * Copyright (C) 2006-2011 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 VOLUMEBAR_H
+#define VOLUMEBAR_H
+
+#include "pixmapwidget.h"
+
+class Skin;
+class MainWindow;
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class VolumeBar : public PixmapWidget
+{
+Q_OBJECT
+public:
+ VolumeBar(QWidget *parent = 0);
+
+ ~VolumeBar();
+
+ int value()
+ {
+ return m_value;
+ }
+ int isPressed()
+ {
+ return m_moving;
+ }
+
+public slots:
+ void setValue(int);
+ void setMax(int);
+
+signals:
+ void sliderMoved (int);
+ void sliderPressed();
+ void sliderReleased();
+
+private slots:
+ void updateSkin();
+
+private:
+ Skin *m_skin;
+ bool m_moving;
+ int press_pos;
+ int m_max, m_min, m_pos, m_value, m_old;
+ QPixmap m_pixmap;
+ MainWindow *mw;
+ int convert(int); // value = convert(position);
+ void draw(bool pressed = true);
+
+protected:
+ void mousePressEvent(QMouseEvent*);
+ void mouseReleaseEvent(QMouseEvent*);
+ void mouseMoveEvent(QMouseEvent*);
+};
+
+#endif
diff --git a/src/plugins/Ui/skinned/windowsystem.cpp b/src/plugins/Ui/skinned/windowsystem.cpp
new file mode 100644
index 000000000..4b66ae025
--- /dev/null
+++ b/src/plugins/Ui/skinned/windowsystem.cpp
@@ -0,0 +1,213 @@
+/***************************************************************************
+ * Based on Licq *
+ * Copyright (C) 2006-2009 Licq developers *
+ * Copyright (C) 2011 Ilya Kotov *
+ * *
+ * 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 "windowsystem.h"
+#include <QCoreApplication>
+#ifdef Q_WS_X11
+#include <QX11Info>
+#include <X11/X.h>
+#include <X11/Xatom.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#endif
+
+#ifdef Q_WS_X11
+void WindowSystem::ghostWindow(WId win)
+{
+ Display* dsp = QX11Info::display();
+ Window root = DefaultRootWindow(dsp);
+
+ Atom win_state = XInternAtom(dsp, "_NET_WM_STATE", False);
+ Atom win_state_add = XInternAtom(dsp, "_NET_WM_STATE_ADD", False);
+ Atom win_state_settings[] =
+ {
+ XInternAtom(dsp, "_NET_WM_STATE_SKIP_TASKBAR", False),
+ XInternAtom(dsp, "_NET_WM_STATE_SKIP_PAGER", False)
+ };
+ XChangeProperty(dsp, win, win_state, XA_ATOM, 32, PropModeReplace,
+ reinterpret_cast<unsigned char*>(&win_state_settings), 2);
+
+ XEvent xev;
+ xev.type = ClientMessage;
+ xev.xclient.type = ClientMessage;
+ xev.xclient.display = dsp;
+ xev.xclient.window = win;
+ xev.xclient.message_type = win_state;
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = win_state_add;
+ xev.xclient.data.l[1] = win_state_settings[0];
+ xev.xclient.data.l[2] = win_state_settings[1];
+
+ XSendEvent(dsp, root, false,
+ SubstructureRedirectMask | SubstructureNotifyMask, &xev);
+}
+
+QString WindowSystem::netWindowManagerName()
+{
+ Display* dsp = QX11Info::display();
+ WId root = DefaultRootWindow(dsp);
+
+ unsigned char* retValue1 = NULL;
+ unsigned char* retValue2 = NULL;
+
+ retValue1 = getWindowProperty(root, "_NET_SUPPORTING_WM_CHECK");
+ if (retValue1 == NULL)
+ return QString();
+
+ WId win = *(reinterpret_cast<unsigned long*>(retValue1));
+
+ retValue2 = getWindowProperty(win, "_NET_SUPPORTING_WM_CHECK");
+ if (retValue2 == NULL)
+ {
+ XFree(retValue1);
+ return QString();
+ }
+
+ if (win != *(reinterpret_cast<unsigned long*>(retValue2)))
+ {
+ XFree(retValue1);
+ XFree(retValue2);
+ return QString();
+ }
+
+ XFree(retValue2);
+ retValue2 = NULL;
+
+ retValue2 = getWindowProperty(win, "_NET_WM_NAME");
+ XFree(retValue1);
+ if (retValue2 == NULL)
+ return QString();
+
+ QString name = QString((char *)retValue2);
+ XFree(retValue2);
+ return name;
+}
+
+void WindowSystem::changeWinSticky(WId win, bool stick)
+{
+ qDebug("WindowSystem: setting sticky state of window 0x%lx to %s.",
+ static_cast<unsigned long>(win), stick ? "true" : "false");
+ Display* dsp = QX11Info::display();
+ Window root = DefaultRootWindow(dsp);
+
+ unsigned long desktop = ~(0UL);
+
+ if (!stick)
+ {
+ unsigned char* tmp = getWindowProperty(root, "_NET_CURRENT_DESKTOP");
+
+ if (tmp == NULL)
+ qWarning("WindowSystem: error reading current desktop property.");
+ else
+ {
+ desktop = *(reinterpret_cast<unsigned long*>(tmp));
+ XFree(tmp);
+ }
+ }
+
+ XEvent xev;
+ xev.type = ClientMessage;
+ xev.xclient.type = ClientMessage;
+ xev.xclient.display = dsp;
+ xev.xclient.window = win;
+ xev.xclient.message_type = XInternAtom(dsp, "_NET_WM_DESKTOP", False);
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = desktop;
+
+ XSendEvent(dsp, root, False,
+ SubstructureRedirectMask | SubstructureNotifyMask, &xev);
+}
+
+void WindowSystem::setWinHint(WId win, const char *res_name, const char *res_class)
+{
+ Display* dsp = QX11Info::display();
+ XClassHint hint;
+ hint.res_name = strdup(res_name);
+ hint.res_class = strdup(res_class);
+ XSetClassHint(dsp, win, &hint);
+ free(hint.res_name);
+ free(hint.res_class);
+}
+
+unsigned char* WindowSystem::getWindowProperty(WId win, const char* prop)
+{
+ Display* dsp = QX11Info::display();
+
+ // We inhibit new Atom creation since if you request for it
+ // then such Atom most probably exists already.
+ // Otherwise, no surprise we return NULL here.
+ Atom reqAtom = XInternAtom(dsp, prop, True);
+
+ if (reqAtom == None)
+ return NULL;
+
+ int retCheck = None;
+ Atom retType = None;
+ int retFormat = 0;
+ unsigned long retItems = 0UL;
+ unsigned long retMoreBytes = 0UL;
+ unsigned char* retValue = NULL;
+
+ // Check if the property exists and calculate its length.
+ retCheck = XGetWindowProperty(dsp, win,
+ reqAtom, 0L, 0L, False, AnyPropertyType,
+ &retType, &retFormat, &retItems, &retMoreBytes, &retValue);
+
+ // The value is most probably empty, since we requested to read
+ // only 0L length, thus, it's just useless...
+ if (retValue != NULL)
+ {
+ XFree(retValue);
+ retValue = NULL;
+ }
+
+ if (retCheck != Success ||
+ retType == None ||
+ retMoreBytes == 0)
+ return NULL;
+
+ // These are not needed for now.
+ retCheck = None;
+ retFormat = 0;
+ retItems = 0UL;
+
+ // Convert the byte length into 32bit multiples.
+ if (retMoreBytes % 4 != 0)
+ retMoreBytes += 4 - retMoreBytes % 4;
+ retMoreBytes /= 4;
+
+ // Now request the actual property value with correct length and type.
+ retCheck = XGetWindowProperty(dsp, win,
+ reqAtom, 0L, retMoreBytes, False, retType,
+ &retType, &retFormat, &retItems, &retMoreBytes, &retValue);
+
+ if (retCheck != Success ||
+ retMoreBytes != 0)
+ {
+ if (retValue != NULL)
+ XFree(retValue);
+ return NULL;
+ }
+
+ return retValue;
+}
+
+#endif
diff --git a/src/plugins/Ui/skinned/windowsystem.h b/src/plugins/Ui/skinned/windowsystem.h
new file mode 100644
index 000000000..a9d8fb001
--- /dev/null
+++ b/src/plugins/Ui/skinned/windowsystem.h
@@ -0,0 +1,39 @@
+/***************************************************************************
+ * Based on Licq *
+ * Copyright (C) 2006-2009 Licq developers *
+ * Copyright (C) 2011 Ilya Kotov *
+ * *
+ * 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 WINDOWSYSTEM_H
+#define WINDOWSYSTEM_H
+
+#include <QWidget>
+
+class WindowSystem
+{
+public:
+#ifdef Q_WS_X11
+ static void ghostWindow(WId id);
+ static QString netWindowManagerName();
+ static void changeWinSticky(WId win, bool stick);
+ static void setWinHint(WId win, const char *res_name, const char *res_class);
+private:
+ static unsigned char* getWindowProperty(WId win, const char* prop);
+#endif
+};
+#endif // WINDOWSYSTEM_H
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 12a27a3fe..8128cd3db 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -2,7 +2,8 @@ SUBDIRS += Input \
Output \
General \
Visual \
- Transports
+ Transports \
+ Ui
unix:SUBDIRS += Effect \
PlaylistFormats \