diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-07-01 18:54:41 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-07-01 18:54:41 +0000 |
| commit | b8b7804fcc229e9c34e18dc3ec6dfafd2e3485b0 (patch) | |
| tree | 1a63bd6647225ae445adf01dceb8271632723a83 /src/plugins | |
| parent | bb31a704825263be94b5528a2e362898af109cf9 (diff) | |
| download | qmmp-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')
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 Binary files differnew file mode 100644 index 000000000..1c2467f49 --- /dev/null +++ b/src/plugins/Ui/skinned/default/balance.png diff --git a/src/plugins/Ui/skinned/default/cbuttons.png b/src/plugins/Ui/skinned/default/cbuttons.png Binary files differnew file mode 100644 index 000000000..15666b838 --- /dev/null +++ b/src/plugins/Ui/skinned/default/cbuttons.png diff --git a/src/plugins/Ui/skinned/default/eq_ex.png b/src/plugins/Ui/skinned/default/eq_ex.png Binary files differnew file mode 100644 index 000000000..172a57c83 --- /dev/null +++ b/src/plugins/Ui/skinned/default/eq_ex.png diff --git a/src/plugins/Ui/skinned/default/eqmain.png b/src/plugins/Ui/skinned/default/eqmain.png Binary files differnew file mode 100644 index 000000000..8e332d178 --- /dev/null +++ b/src/plugins/Ui/skinned/default/eqmain.png diff --git a/src/plugins/Ui/skinned/default/main.png b/src/plugins/Ui/skinned/default/main.png Binary files differnew file mode 100644 index 000000000..3980c579d --- /dev/null +++ b/src/plugins/Ui/skinned/default/main.png diff --git a/src/plugins/Ui/skinned/default/monoster.png b/src/plugins/Ui/skinned/default/monoster.png Binary files differnew file mode 100644 index 000000000..fe941fc44 --- /dev/null +++ b/src/plugins/Ui/skinned/default/monoster.png diff --git a/src/plugins/Ui/skinned/default/numbers.png b/src/plugins/Ui/skinned/default/numbers.png Binary files differnew file mode 100644 index 000000000..009d0228c --- /dev/null +++ b/src/plugins/Ui/skinned/default/numbers.png diff --git a/src/plugins/Ui/skinned/default/playpaus.png b/src/plugins/Ui/skinned/default/playpaus.png Binary files differnew file mode 100644 index 000000000..268e2a43a --- /dev/null +++ b/src/plugins/Ui/skinned/default/playpaus.png diff --git a/src/plugins/Ui/skinned/default/pledit.png b/src/plugins/Ui/skinned/default/pledit.png Binary files differnew file mode 100644 index 000000000..7e8c7bc1a --- /dev/null +++ b/src/plugins/Ui/skinned/default/pledit.png 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 Binary files differnew file mode 100644 index 000000000..1f1608c8b --- /dev/null +++ b/src/plugins/Ui/skinned/default/posbar.png 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 Binary files differnew file mode 100644 index 000000000..aa063c810 --- /dev/null +++ b/src/plugins/Ui/skinned/default/shufrep.png diff --git a/src/plugins/Ui/skinned/default/text.png b/src/plugins/Ui/skinned/default/text.png Binary files differnew file mode 100644 index 000000000..dcf1559e5 --- /dev/null +++ b/src/plugins/Ui/skinned/default/text.png diff --git a/src/plugins/Ui/skinned/default/titlebar.png b/src/plugins/Ui/skinned/default/titlebar.png Binary files differnew file mode 100644 index 000000000..9ff2e1f22 --- /dev/null +++ b/src/plugins/Ui/skinned/default/titlebar.png 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 Binary files differnew file mode 100644 index 000000000..cd33da4cf --- /dev/null +++ b/src/plugins/Ui/skinned/default/volume.png 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>&Add</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QPushButton" name="cancelButton" > + <property name="text" > + <string>&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 Binary files differnew file mode 100644 index 000000000..d6bca13fd --- /dev/null +++ b/src/plugins/Ui/skinned/images/16x16/qmmp.png diff --git a/src/plugins/Ui/skinned/images/32x32/qmmp.png b/src/plugins/Ui/skinned/images/32x32/qmmp.png Binary files differnew file mode 100644 index 000000000..32126f83b --- /dev/null +++ b/src/plugins/Ui/skinned/images/32x32/qmmp.png diff --git a/src/plugins/Ui/skinned/images/48x48/qmmp.png b/src/plugins/Ui/skinned/images/48x48/qmmp.png Binary files differnew file mode 100644 index 000000000..3f8a8f3a0 --- /dev/null +++ b/src/plugins/Ui/skinned/images/48x48/qmmp.png diff --git a/src/plugins/Ui/skinned/images/56x56/qmmp.png b/src/plugins/Ui/skinned/images/56x56/qmmp.png Binary files differnew file mode 100644 index 000000000..4a3b7903a --- /dev/null +++ b/src/plugins/Ui/skinned/images/56x56/qmmp.png diff --git a/src/plugins/Ui/skinned/images/advanced.png b/src/plugins/Ui/skinned/images/advanced.png Binary files differnew file mode 100644 index 000000000..862464242 --- /dev/null +++ b/src/plugins/Ui/skinned/images/advanced.png 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 Binary files differnew file mode 100644 index 000000000..ebedddde2 --- /dev/null +++ b/src/plugins/Ui/skinned/images/interface.png diff --git a/src/plugins/Ui/skinned/images/logo-qmmp.png b/src/plugins/Ui/skinned/images/logo-qmmp.png Binary files differnew file mode 100644 index 000000000..d6c7e9bd8 --- /dev/null +++ b/src/plugins/Ui/skinned/images/logo-qmmp.png diff --git a/src/plugins/Ui/skinned/images/network.png b/src/plugins/Ui/skinned/images/network.png Binary files differnew file mode 100644 index 000000000..3a52c1130 --- /dev/null +++ b/src/plugins/Ui/skinned/images/network.png diff --git a/src/plugins/Ui/skinned/images/playlist.png b/src/plugins/Ui/skinned/images/playlist.png Binary files differnew file mode 100644 index 000000000..7b750db0a --- /dev/null +++ b/src/plugins/Ui/skinned/images/playlist.png diff --git a/src/plugins/Ui/skinned/images/plugins.png b/src/plugins/Ui/skinned/images/plugins.png Binary files differnew file mode 100644 index 000000000..931d4d1da --- /dev/null +++ b/src/plugins/Ui/skinned/images/plugins.png diff --git a/src/plugins/Ui/skinned/images/replaygain.png b/src/plugins/Ui/skinned/images/replaygain.png Binary files differnew file mode 100644 index 000000000..d2f78947b --- /dev/null +++ b/src/plugins/Ui/skinned/images/replaygain.png diff --git a/src/plugins/Ui/skinned/images/scalable/qmmp-simple.svgz b/src/plugins/Ui/skinned/images/scalable/qmmp-simple.svgz Binary files differnew file mode 100644 index 000000000..8ac48346b --- /dev/null +++ b/src/plugins/Ui/skinned/images/scalable/qmmp-simple.svgz diff --git a/src/plugins/Ui/skinned/images/scalable/qmmp.svgz b/src/plugins/Ui/skinned/images/scalable/qmmp.svgz Binary files differnew file mode 100644 index 000000000..7050b41c9 --- /dev/null +++ b/src/plugins/Ui/skinned/images/scalable/qmmp.svgz diff --git a/src/plugins/Ui/skinned/images/shortcuts.png b/src/plugins/Ui/skinned/images/shortcuts.png Binary files differnew file mode 100644 index 000000000..45d917220 --- /dev/null +++ b/src/plugins/Ui/skinned/images/shortcuts.png diff --git a/src/plugins/Ui/skinned/images/ui_no_cover.png b/src/plugins/Ui/skinned/images/ui_no_cover.png Binary files differnew file mode 100644 index 000000000..ac8c587e3 --- /dev/null +++ b/src/plugins/Ui/skinned/images/ui_no_cover.png 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>&Play</source> + <translation type="unfinished">Pře&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>&Pause</source> + <translation type="unfinished">Pau&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>&Stop</source> + <translation type="unfinished">&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>&Previous</source> + <translation type="unfinished">&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>&Next</source> + <translation type="unfinished">&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>&Play/Pause</source> + <translation type="unfinished">&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>&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>&Repeat Playlist</source> + <translation type="unfinished">&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>&Repeat Track</source> + <translation type="unfinished">&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>&Shuffle</source> + <translation type="unfinished">Za&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>&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>&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>&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>&Add File</source> + <translation type="unfinished">Přidat &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>&Add Directory</source> + <translation type="unfinished">Přidat &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>&Add Url</source> + <translation type="unfinished">Přidat &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>&Remove Selected</source> + <translation type="unfinished">&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>&Remove All</source> + <translation type="unfinished">Odstranit &vše</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation type="unfinished">Odstranit &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>&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>&Select None</source> + <translation type="unfinished">&Zrušit výběr</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation type="unfinished">&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>&View Track Details</source> + <translation type="unfinished">Zobrazit &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>&New List</source> + <translation type="unfinished">&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>&Delete List</source> + <translation type="unfinished">O&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>&Load List</source> + <translation type="unfinished">Načíst &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>&Save List</source> + <translation type="unfinished">&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>&Select Next Playlist</source> + <translation type="unfinished">Vybrat další &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>&Select Previous Playlist</source> + <translation type="unfinished">Vybrat předchozí &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>&Show Playlists</source> + <translation type="unfinished">Zobrazit &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>&Settings</source> + <translation type="unfinished">&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>&About</source> + <translation type="unfinished">O &aplikaci</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation type="unfinished">O knihovně &Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation type="unfinished">U&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>&Add</source> + <translation>Přid&at</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>Z&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'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>&Load/Delete</source> + <translation>&Načíst/Odstranit</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Uložit předvolbu</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>Uložit &automatickou předvolbu</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="267"/> + <source>&Import</source> + <translation>&Importovat</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Jump To File</source> + <translation>Přeskočit na soubo&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>&New PlayList</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../playlist.cpp" line="177"/> + <source>&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>&Load</source> + <translation>&Načíst</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>Uložit j&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>&Delete</source> + <translation>O&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'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>&Play</source> + <translation>&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>&Pause</source> + <translation>&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>&Stop</source> + <translation>&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>&Previous</source> + <translation>&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>&Next</source> + <translation>&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>&Play/Pause</source> + <translation>Wieder&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>&Jump to File</source> + <translation>&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>&Repeat Playlist</source> + <translation>W&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>&Repeat Track</source> + <translation>Tite&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>&Shuffle</source> + <translation>&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>&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>&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>&Clear Queue</source> + <translation>Wartes&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>&Add File</source> + <translation>&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>&Add Directory</source> + <translation>&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>&Add Url</source> + <translation>&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>&Remove Selected</source> + <translation>&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>&Remove All</source> + <translation>Alle &entfernen</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>&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>&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>&Select None</source> + <translation>&Auswahl aufheben</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>Alle aus&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>&View Track Details</source> + <translation>&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>&New List</source> + <translation>&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>&Delete List</source> + <translation>Wie&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>&Load List</source> + <translation>Wiedergabeliste &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>&Save List</source> + <translation>Wiedergabeliste &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>&Select Next Playlist</source> + <translation>Näch&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>&Select Previous Playlist</source> + <translation>Vorherige Wiedergabeli&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>&Show Playlists</source> + <translation>Wiedergabeli&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>&Settings</source> + <translation>Ein&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>&About</source> + <translation>Ü&ber</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>Übe&r Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>Be&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>&Add</source> + <translation>&Hinzufügen</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&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'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>&Load/Delete</source> + <translation>&Laden/Löschen</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Voreinstellung speichern</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Automatische Voreinstellungen speichern</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="267"/> + <source>&Import</source> + <translation>&Importieren</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Jump To File</source> + <translation>Springe zu &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>&New PlayList</source> + <translation>&Neue Wiedergabeliste</translation> + </message> + <message> + <location filename="../playlist.cpp" line="177"/> + <source>&Copy Selection To</source> + <translation>Auswahl kopieren na&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>&Load</source> + <translation>&Laden</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>&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>&Delete</source> + <translation>L&ö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'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 <forkotov02@hotmail.ru> 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>&Play</source> + <translation>&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>&Pause</source> + <translation>&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>&Stop</source> + <translation>&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>&Previous</source> + <translation>&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>&Next</source> + <translation>&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>&Play/Pause</source> + <translation>&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>&Jump to File</source> + <translation>&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>&Repeat Playlist</source> + <translation>&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>&Repeat Track</source> + <translation>&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>&Shuffle</source> + <translation>&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>&No Playlist Advance</source> + <translation>&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>&Stop After Selected</source> + <translation>&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>&Clear Queue</source> + <translation>&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>&Add File</source> + <translation>&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>&Add Directory</source> + <translation>&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>&Add Url</source> + <translation>&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>&Remove Selected</source> + <translation>&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>&Remove All</source> + <translation>&Eliminar todo</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>&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>&Queue Toggle</source> + <translation>&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>&Select None</source> + <translation>&No seleccionar nada</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>&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>&View Track Details</source> + <translation>&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>&New List</source> + <translation>&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>&Delete List</source> + <translation>&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>&Load List</source> + <translation>&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>&Save List</source> + <translation>&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>&Select Next Playlist</source> + <translation>&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>&Select Previous Playlist</source> + <translation>&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>&Show Playlists</source> + <translation>&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>&Settings</source> + <translation>&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>&About</source> + <translation>&Acerca de</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>&Acerca de Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>&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>&Add</source> + <translation>&Añadir</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&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'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>&Load/Delete</source> + <translation>&Cargar/Eliminar</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Guardar preprogramado</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Guardar preprogramado autocargable</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Import</source> + <translation>&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>&Jump To File</source> + <translation>&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>&Copy Selection To</source> + <translation>&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>&New PlayList</source> + <translation>&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>&Load</source> + <translation>&Cargar</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>&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>&Delete</source> + <translation>&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'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'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'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>&Add</source> + <translation>&Ajouter</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&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'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'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'authentification avec le serveur mandataire</translation> + </message> + <message> + <location filename="../forms/configdialog.ui" line="738"/> + <source>Proxy user name:</source> + <translation>Nom d'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'emplacement complet d'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>&Load/Delete</source> + <translation>&Charger / Supprimer</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Enregistrer un réglage</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="264"/> + <source>&Save Auto-load Preset</source> + <translation>&Enregistrer un réglage automatiquement-chargé</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="267"/> + <source>&Clear</source> + <translation>&Effacer</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="296"/> + <source>Saving Preset</source> + <translation>Réglage en cours d'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>&Import</source> + <translation>&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'attente</translation> + </message> + <message> + <location filename="../jumptotrackdialog.cpp" line="125"/> + <source>Queue</source> + <translation>Mettre dans la file d'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'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>&Play</source> + <translation>&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>&Pause</source> + <translation>&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>&Stop</source> + <translation>&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>&Previous</source> + <translation>&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>&Next</source> + <translation>&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>&Jump To File</source> + <translation>&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>&Settings</source> + <translation>&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>&Exit</source> + <translation>&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>&About</source> + <translation>&À 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>&About Qt</source> + <translation>&À propos de Qt</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="579"/> + <source>&Play/Pause</source> + <translation>&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>&Add File</source> + <translation>&Ajouter un fichier</translation> + </message> + <message> + <location filename="../playlist.cpp" line="137"/> + <source>&Add Directory</source> + <translation>&Ajouter un dossier</translation> + </message> + <message> + <location filename="../playlist.cpp" line="150"/> + <source>&Remove Selected</source> + <translation>&Supprimer la sélection</translation> + </message> + <message> + <location filename="../playlist.cpp" line="157"/> + <source>&Remove All</source> + <translation>&Tout supprimer</translation> + </message> + <message> + <location filename="../playlist.cpp" line="163"/> + <source>&Remove Unselected</source> + <translation>&Ne garder que la sélection</translation> + </message> + <message> + <location filename="../playlist.cpp" line="169"/> + <source>&View Track Details</source> + <translation>&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>&Select None</source> + <translation>&Ne rien sélectionner</translation> + </message> + <message> + <location filename="../playlist.cpp" line="258"/> + <source>&Select All</source> + <translation>&Tout sélectionner</translation> + </message> + <message> + <location filename="../playlist.cpp" line="266"/> + <source>&New List</source> + <translation>&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>&Load List</source> + <translation>&Charger une liste</translation> + </message> + <message> + <location filename="../playlist.cpp" line="278"/> + <source>&Save List</source> + <translation>&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>&Add Url</source> + <translation>&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>&Queue</source> + <translation>&Mettre dans la file d'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>&Play</source> + <translation type="unfinished">&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>&Pause</source> + <translation type="unfinished">&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>&Stop</source> + <translation type="unfinished">&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>&Previous</source> + <translation type="unfinished">&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>&Next</source> + <translation type="unfinished">&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>&Play/Pause</source> + <translation type="unfinished">&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>&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>&Repeat Playlist</source> + <translation type="unfinished">Lista &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>&Repeat Track</source> + <translation type="unfinished">Számok i&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>&Shuffle</source> + <translation type="unfinished">&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>&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>&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>&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>&Add File</source> + <translation type="unfinished">&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>&Add Directory</source> + <translation type="unfinished">&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>&Add Url</source> + <translation type="unfinished">&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>&Remove Selected</source> + <translation type="unfinished">&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>&Remove All</source> + <translation type="unfinished">&Összes eltávolítása</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation type="unfinished">&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>&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>&Select None</source> + <translation type="unfinished">&Kijelölés megszűntetése</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation type="unfinished">&Ö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>&View Track Details</source> + <translation type="unfinished">Szám adatainak &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>&New List</source> + <translation type="unfinished">&Ú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>&Delete List</source> + <translation type="unfinished">&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>&Load List</source> + <translation type="unfinished">&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>&Save List</source> + <translation type="unfinished">Lista &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>&Select Next Playlist</source> + <translation type="unfinished">&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>&Select Previous Playlist</source> + <translation type="unfinished">&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>&Show Playlists</source> + <translation type="unfinished">&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>&Settings</source> + <translation type="unfinished">&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>&About</source> + <translation type="unfinished">&Névjegy</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation type="unfinished">N&évjegy: Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation type="unfinished">&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>&Add</source> + <translation>&Hozzáad</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&Mégsem</translation> + </message> +</context> +<context> + <name>BuiltinCommandLineOption</name> + <message> + <location filename="../builtincommandlineoption.cpp" line="54"/> + <source>Don'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>&Load/Delete</source> + <translation>&Betölt/Töröl</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>Beálítás &mentése</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Automatikusan betöltödő beállítás mentése</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="267"/> + <source>&Import</source> + <translation>&Importálás</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Jump To File</source> + <translation>&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>&New PlayList</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../playlist.cpp" line="177"/> + <source>&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>&Load</source> + <translation>&Betölt</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>&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>&Delete</source> + <translation>&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'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'entrata: </translation> + </message> + <message> + <location filename="../aboutdialog.cpp" line="93"/> + <source>Output plugins:</source> + <translation>Moduli d'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>&Play</source> + <translation type="unfinished">&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>&Pause</source> + <translation type="unfinished">&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>&Stop</source> + <translation type="unfinished">&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>&Previous</source> + <translation type="unfinished">&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>&Next</source> + <translation type="unfinished">&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>&Play/Pause</source> + <translation type="unfinished">&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>&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>&Repeat Playlist</source> + <translation type="unfinished">&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>&Repeat Track</source> + <translation type="unfinished">&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>&Shuffle</source> + <translation type="unfinished">&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>&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>&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>&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>&Add File</source> + <translation type="unfinished">&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>&Add Directory</source> + <translation type="unfinished">&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>&Add Url</source> + <translation type="unfinished">&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>&Remove Selected</source> + <translation type="unfinished">&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>&Remove All</source> + <translation type="unfinished">&Elimina tutto</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation type="unfinished">&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>&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>&Select None</source> + <translation type="unfinished">&Non scegliere alcun brano</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation type="unfinished">&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>&View Track Details</source> + <translation type="unfinished">&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>&New List</source> + <translation type="unfinished">&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>&Delete List</source> + <translation type="unfinished">&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>&Load List</source> + <translation type="unfinished">&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>&Save List</source> + <translation type="unfinished">&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>&Select Next Playlist</source> + <translation type="unfinished">&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>&Select Previous Playlist</source> + <translation type="unfinished">&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>&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>&Settings</source> + <translation type="unfinished">&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>&About</source> + <translation type="unfinished">&Informazioni</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation type="unfinished">&Informazioni su Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation type="unfinished">&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>&Add</source> + <translation>&Aggiungi</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&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'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'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>&Load/Delete</source> + <translation>&Carica/Elimina</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Salva preimpostazione</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Salvare preimpostazioni caricate automaticamente</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Import</source> + <translation>&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>&Jump To File</source> + <translation>&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>&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>&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>&Load</source> + <translation>&Carica</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>&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>&Delete</source> + <translation>&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'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>&Play</source> + <translation>再生(&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>&Pause</source> + <translation>一時停止(&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>&Stop</source> + <translation>終止(&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>&Previous</source> + <translation>前の曲(&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>&Next</source> + <translation>次の曲(&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>&Play/Pause</source> + <translation>再生/停止(&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>&Jump to File</source> + <translation>ファイルを指定して即刻再生(&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>&Repeat Playlist</source> + <translation>プレイリストを繰り返す(&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>&Repeat Track</source> + <translation>トラックを繰り返す(&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>&Shuffle</source> + <translation>シャッフル(&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>&No Playlist Advance</source> + <translation>次の曲に進まず終止(&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>&Stop After Selected</source> + <translation>選んだ曲を再生後に終止(&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>&Clear Queue</source> + <translation>キューを消去(&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>&Add File</source> + <translation>ファイルを追加(&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>&Add Directory</source> + <translation>ディレクトリを追加(&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>&Add Url</source> + <translation>URLを追加(&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>&Remove Selected</source> + <translation>選択したものを除去(&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>&Remove All</source> + <translation>すべて除去(&M)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>選択外のものを除去(&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>&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>&Select None</source> + <translation>選択を解除(&N)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>すべて選択(&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>&View Track Details</source> + <translation>トラックの詳細を表示(&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>&New List</source> + <translation>新規リスト(&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>&Delete List</source> + <translation>リストを削除(&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>&Load List</source> + <translation>リストを読込(&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>&Save List</source> + <translation>リストを保存(&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>&Select Next Playlist</source> + <translation>次のプレイリストを選択(&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>&Select Previous Playlist</source> + <translation>前のプレイリストを選択(&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>&Show Playlists</source> + <translation>プレイリストを表示(&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>&Settings</source> + <translation>設定(&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>&About</source> + <translation>QMMPについて(&A)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>Qtについて(&Q)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>終了(&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>&Add</source> + <translation>追加(&A)</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>キャンセル(&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'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>&Load/Delete</source> + <translation>読み込み/削除(&L)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>プリセットを保存(&S)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>自動読み込みされたプリセットを保存(&S)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="267"/> + <source>&Import</source> + <translation>移入(&I)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>消去(&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>&Jump To File</source> + <translation>ファイルを指定して即刻再生(&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>&Copy Selection To</source> + <translation>選んだ曲目で新しいプレイリストを作る(&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>&New PlayList</source> + <translation>新しいプレイリスト(&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>&Load</source> + <translation>読込(&L)</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>名前を付けて保存(&A)...</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="54"/> + <source>Rename</source> + <translation>名前を変更</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="55"/> + <source>&Delete</source> + <translation>削除(&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'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>&Add</source> + <translation>Қ&осу</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&Бас тарту</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>&Load/Delete</source> + <translation>&Жүктеу/Өшіру</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="264"/> + <source>&Save Preset</source> + <translation>&Орнатуды сақтау</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Авто-орнатуды сақтау</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="268"/> + <source>&Clear</source> + <translation>&Тазарту</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>&Import</source> + <translation>&Импорттау</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>&Play</source> + <translation>&Ойнату</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>&Pause</source> + <translation>&Аялдату</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>&Stop</source> + <translation>&Тоқтату</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>&Previous</source> + <translation>Ал&дыңғысы</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>&Next</source> + <translation>&Келесісі</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>&Jump To File</source> + <translation>&Файлға өту</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>&Settings</source> + <translation>&Баптаулары</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>&Exit</source> + <translation>&Шығу</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>&About</source> + <translation>&Осы туралы</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>&About Qt</source> + <translation>Qt т&уралы</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="422"/> + <source>&Play/Pause</source> + <translation>О&йнат/аялдат</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>&Repeat Track</source> + <translation>Т&ректі қайталау</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="426"/> + <source>&Shuffle</source> + <translation>Ке&з-келген ретпен</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>&Repeat Playlist</source> + <translation>Тізі&мді қайталау</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>&Add File</source> + <translation>Фа&йлды қосу</translation> + </message> + <message> + <location filename="../playlist.cpp" line="141"/> + <source>&Add Directory</source> + <translation>Бу&маны қосу</translation> + </message> + <message> + <location filename="../playlist.cpp" line="154"/> + <source>&Remove Selected</source> + <translation>Таңда&лғанды өшіру</translation> + </message> + <message> + <location filename="../playlist.cpp" line="161"/> + <source>&Remove All</source> + <translation>&Барлығын өшіру</translation> + </message> + <message> + <location filename="../playlist.cpp" line="167"/> + <source>&Remove Unselected</source> + <translation>Таң&далмағанды өшіру</translation> + </message> + <message> + <location filename="../playlist.cpp" line="173"/> + <source>&View Track Details</source> + <translation>&Ақпараты</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>&Select None</source> + <translation>Т&аңдауды алу</translation> + </message> + <message> + <location filename="../playlist.cpp" line="265"/> + <source>&Select All</source> + <translation>&Барлығын таңдау</translation> + </message> + <message> + <location filename="../playlist.cpp" line="273"/> + <source>&New List</source> + <translation>&Жаңа тізім</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>&Load List</source> + <translation>Ті&зімді жүктеу</translation> + </message> + <message> + <location filename="../playlist.cpp" line="285"/> + <source>&Save List</source> + <translation>Тізімді &сақтау</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>&Add Url</source> + <translation>URL-д&ы қосу</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>&Queue</source> + <translation>&Кезекке</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'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>&Play</source> + <translation>&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>&Pause</source> + <translation>&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>&Stop</source> + <translation>&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>&Previous</source> + <translation>&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>&Next</source> + <translation>&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>&Play/Pause</source> + <translation>&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>&Jump to File</source> + <translation>&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>&Repeat Playlist</source> + <translation>&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>&Repeat Track</source> + <translation>&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>&Shuffle</source> + <translation>&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>&No Playlist Advance</source> + <translatorcomment>?????</translatorcomment> + <translation>&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>&Stop After Selected</source> + <translation>&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>&Clear Queue</source> + <translation>&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>&Add File</source> + <translation>&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>&Add Directory</source> + <translation>&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>&Add Url</source> + <translation>&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>&Remove Selected</source> + <translation>&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>&Remove All</source> + <translation>&Pašalinti visus</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>&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>&Queue Toggle</source> + <translation>&Į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>&Select None</source> + <translation>&Nepasirinkti nei vieno</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>&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>&View Track Details</source> + <translation>&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>&New List</source> + <translation>&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>&Delete List</source> + <translation>&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>&Load List</source> + <translation>&Į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>&Save List</source> + <translation>&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>&Select Next Playlist</source> + <translation>&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>&Select Previous Playlist</source> + <translation>&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>&Show Playlists</source> + <translation>&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>&Settings</source> + <translation>&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>&About</source> + <translation>&Apie</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>&Apie Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>&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>&Add</source> + <translation>&Pridėti</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&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'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>&Load/Delete</source> + <translation>&Įkelti/Pašalinti</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Išsaugoti nustatymus</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Išsaugoti auto-nustatymą</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Import</source> + <translation>&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>&Jump To File</source> + <translation>&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>&Copy Selection To</source> + <translation>&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>&New PlayList</source> + <translation>&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>&Load</source> + <translation>&Įkelti</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>&Į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>&Delete</source> + <translation>&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'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>&Play</source> + <translation type="unfinished">&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>&Pause</source> + <translation type="unfinished">&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>&Stop</source> + <translation type="unfinished">&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>&Previous</source> + <translation type="unfinished">&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>&Next</source> + <translation type="unfinished">&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>&Play/Pause</source> + <translation type="unfinished">&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>&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>&Repeat Playlist</source> + <translation type="unfinished">&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>&Repeat Track</source> + <translation type="unfinished">&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>&Shuffle</source> + <translation type="unfinished">&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>&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>&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>&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>&Add File</source> + <translation type="unfinished">&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>&Add Directory</source> + <translation type="unfinished">&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>&Add Url</source> + <translation type="unfinished">&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>&Remove Selected</source> + <translation type="unfinished">&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>&Remove All</source> + <translation type="unfinished">&Verwijder Alles</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation type="unfinished">&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>&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>&Select None</source> + <translation type="unfinished">&Selecteer Niets</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation type="unfinished">&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>&View Track Details</source> + <translation type="unfinished">&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>&New List</source> + <translation type="unfinished">&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>&Delete List</source> + <translation type="unfinished">&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>&Load List</source> + <translation type="unfinished">&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>&Save List</source> + <translation type="unfinished">&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>&Select Next Playlist</source> + <translation type="unfinished">&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>&Select Previous Playlist</source> + <translation type="unfinished">&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>&Show Playlists</source> + <translation type="unfinished">&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>&Settings</source> + <translation type="unfinished">&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>&About</source> + <translation type="unfinished">&Over</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation type="unfinished">&Over Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation type="unfinished">&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>&Add</source> + <translation>&Toevoegen</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&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'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'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>&Load/Delete</source> + <translation>&Laad/Verwijder</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Bewaar Instelling</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Bewaar Auto-laad Instelling</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="267"/> + <source>&Import</source> + <translation>&Importeer</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Jump To File</source> + <translation>&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>&New PlayList</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../playlist.cpp" line="177"/> + <source>&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>&Load</source> + <translation>&Laad</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>&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>&Delete</source> + <translation>&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'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>&Play</source> + <translation>&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>&Pause</source> + <translation>&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>&Stop</source> + <translation>&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>&Previous</source> + <translation>&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>&Next</source> + <translation>&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>&Play/Pause</source> + <translation>&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>&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>&Repeat Playlist</source> + <translation>Powtó&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>&Repeat Track</source> + <translation>&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>&Shuffle</source> + <translation>&Losowo</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="46"/> + <source>S</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="47"/> + <source>&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>&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>&Clear Queue</source> + <translation>Wy&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>&Add File</source> + <translation>&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>&Add Directory</source> + <translation>Dodaj &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>&Add Url</source> + <translation>Dod&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>&Remove Selected</source> + <translation>&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>&Remove All</source> + <translation>Usuń &wszystkie</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>Usuń &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>&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>&Select None</source> + <translation>&Odznacz wszystkie</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>&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>&View Track Details</source> + <translation>&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>&New List</source> + <translation>&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>&Delete List</source> + <translation>Usuń listę o&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>&Load List</source> + <translation>&Ł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>&Save List</source> + <translation>&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>&Select Next Playlist</source> + <translation>Wybierz na&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>&Select Previous Playlist</source> + <translation>Wybierz poprzednią li&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>&Show Playlists</source> + <translation>Pokaż li&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>&Settings</source> + <translation>&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>&About</source> + <translation>&O programie</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>&O Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>&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>&Add</source> + <translation>&Dodaj</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&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'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 "klipnięciom"</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>&Load/Delete</source> + <translation>Wczytaj/&Usuń</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>Zapi&sz Profil</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>Zapi&sz Auto-ładowanie Profilu</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Import</source> + <translation>&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>&Jump To File</source> + <translation>&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>&Copy Selection To</source> + <translation>Kopiuj zazna&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>&New PlayList</source> + <translation>&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>&Load</source> + <translation>Załaduj</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>Zapi&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>&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'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>&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>&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>&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>&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>&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>&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>&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>&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>&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>&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>&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>&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>&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>&Add File</source> + <translation type="unfinished">&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>&Add Directory</source> + <translation type="unfinished">&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>&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>&Remove Selected</source> + <translation type="unfinished">&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>&Remove All</source> + <translation type="unfinished">&Remover tudo</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation type="unfinished">&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>&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>&Select None</source> + <translation type="unfinished">&Nenhum selecionado</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation type="unfinished">&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>&View Track Details</source> + <translation type="unfinished">&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>&New List</source> + <translation type="unfinished">&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>&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>&Load List</source> + <translation type="unfinished">&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>&Save List</source> + <translation type="unfinished">&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>&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>&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>&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>&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>&About</source> + <translation type="unfinished">&Sobre</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&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>&Add</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&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'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>&Load/Delete</source> + <translation type="unfinished">&Carregar/Deletar</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation type="unfinished">%Salvar preset</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation type="unfinished">&Salvar Auto-Carregar preset</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation type="unfinished">&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>&Import</source> + <translation type="unfinished">&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>&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>&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>&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>&Load</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&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>&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'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>&Play</source> + <translation>&Воспроизвести</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>&Pause</source> + <translation>&Приостановить</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>&Stop</source> + <translation>&Стоп</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>&Previous</source> + <translation>&Предыдущий фрагмент</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>&Next</source> + <translation>&Следующий фрагмент</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>&Play/Pause</source> + <translation>&Воспр/приост</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>&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>&Repeat Playlist</source> + <translation>&Повторять список</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>&Repeat Track</source> + <translation>&Повторять трек</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>&Shuffle</source> + <translation>&В случайном порядке</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>&No Playlist Advance</source> + <translation>&Не продвигаться по списку</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>&Stop After Selected</source> + <translation>&Остановить после выделенного</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>&Clear Queue</source> + <translation>&Очистить очередь</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>&Add File</source> + <translation>&Добавить файл</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>&Add Directory</source> + <translation>&Добавить директорию</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>&Add Url</source> + <translation>&Добавить 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>&Remove Selected</source> + <translation>&Удалить выделенное</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>&Remove All</source> + <translation>&Удалить всё</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>&Удалить невыделенное</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>&Queue Toggle</source> + <translation>&В очередь</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>&Select None</source> + <translation>&Снять выделение</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>&Выделить всё</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>&View Track Details</source> + <translation>&Информация</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>&New List</source> + <translation>&Новый список</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>&Delete List</source> + <translation>&Удалить список</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>&Load List</source> + <translation>&Загрузить список</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>&Save List</source> + <translation>&Сохранить список</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>&Select Next Playlist</source> + <translation>&Выбрать следующий список</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>&Select Previous Playlist</source> + <translation>&Выбрать предыдущий список</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>&Show Playlists</source> + <translation>&Показать списки</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>&Settings</source> + <translation>&Настройки</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>&About</source> + <translation>&О программе</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>&О библиотеке Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>&Выход</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>&Add</source> + <translation>&Добавить</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&Отмена</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'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>Показывать "якорь"</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>&Load/Delete</source> + <translation>&Загрузить/Удалить</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Сохранить предустановку</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Сохранить авто-предустановку</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&Очистить</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>&Import</source> + <translation>&Импортировать</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>&Jump To File</source> + <translation>&Перейти к файлу</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>&Copy Selection To</source> + <translation>&Копировать выделенное в</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>&New PlayList</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="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>&Load</source> + <translation>&Загрузить</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>&Сохранить как...</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="54"/> + <source>Rename</source> + <translation>Переименовать</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="55"/> + <source>&Delete</source> + <translation>&Удалить</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'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>&Play</source> + <translation>&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>&Pause</source> + <translation>&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>&Stop</source> + <translation>Za&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>&Previous</source> + <translation>&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>&Next</source> + <translation>&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>&Play/Pause</source> + <translation>&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>&Jump to File</source> + <translation>P&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>&Repeat Playlist</source> + <translation>&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>&Repeat Track</source> + <translation>&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>&Shuffle</source> + <translation>&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>&No Playlist Advance</source> + <translation>&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>&Stop After Selected</source> + <translation>&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>&Clear Queue</source> + <translation>&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>&Add File</source> + <translation>&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>&Add Directory</source> + <translation>&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>&Add Url</source> + <translation>&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>&Remove Selected</source> + <translation>Odst&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>&Remove All</source> + <translation>Odst&rániť všetko</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>Odst&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>&Queue Toggle</source> + <translation>&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>&Select None</source> + <translation>Zrušiť &výber</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>&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>&View Track Details</source> + <translation>&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>&New List</source> + <translation>&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>&Delete List</source> + <translation>&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>&Load List</source> + <translation>&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>&Save List</source> + <translation>&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>&Select Next Playlist</source> + <translation>&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>&Select Previous Playlist</source> + <translation>&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>&Show Playlists</source> + <translation>&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>&Settings</source> + <translation>Na&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>&About</source> + <translation>O progr&ame</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>&O Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>&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>&Add</source> + <translation>Prid&ať</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&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'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>&Load/Delete</source> + <translation>&Načíst/Odstranit</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Uložit předvolbu</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>Uložit &automatickou předvolbu</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="267"/> + <source>&Import</source> + <translation>&Importovat</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Jump To File</source> + <translation>&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>&New PlayList</source> + <translation>&Nový playlist</translation> + </message> + <message> + <location filename="../playlist.cpp" line="177"/> + <source>&Copy Selection To</source> + <translation>&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>&Load</source> + <translation>&Načítať</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>&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>&Delete</source> + <translation>&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'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>&Play</source> + <translation type="unfinished">&Ç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>&Pause</source> + <translation type="unfinished">&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>&Stop</source> + <translation type="unfinished">&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>&Previous</source> + <translation type="unfinished">&Ö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>&Next</source> + <translation type="unfinished">&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>&Play/Pause</source> + <translation type="unfinished">&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>&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>&Repeat Playlist</source> + <translation type="unfinished">&Ç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>&Repeat Track</source> + <translation type="unfinished">&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>&Shuffle</source> + <translation type="unfinished">&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>&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>&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>&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>&Add File</source> + <translation type="unfinished">&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>&Add Directory</source> + <translation type="unfinished">&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>&Add Url</source> + <translation type="unfinished">&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>&Remove Selected</source> + <translation type="unfinished">&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>&Remove All</source> + <translation type="unfinished">&Hepsini Kaldır</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation type="unfinished">&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>&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>&Select None</source> + <translation type="unfinished">&Hiçbirini Seçme</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation type="unfinished">&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>&View Track Details</source> + <translation type="unfinished">&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>&New List</source> + <translation type="unfinished">&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>&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>&Load List</source> + <translation type="unfinished">&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>&Save List</source> + <translation type="unfinished">&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>&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>&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>&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>&Settings</source> + <translation type="unfinished">&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>&About</source> + <translation type="unfinished">&Hakkında</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation type="unfinished">&Qt Hakkında</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation type="unfinished">&Çı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>&Add</source> + <translation>&Ekle</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&İ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'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>&Load/Delete</source> + <translation>&Yükle/Sil</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>Tanımlanmış &Ayarları Kaydet</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Otomatik Tanımlanmış Ayarları Kaydet</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&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>&Import</source> + <translation>&İç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>&Jump To File</source> + <translation>&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>&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>&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>&Load</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&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>&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'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>&Play</source> + <translation>&Відтворити</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="37"/> + <source>X</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="38"/> + <source>&Pause</source> + <translation>&Пауза</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="38"/> + <source>C</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="39"/> + <source>&Stop</source> + <translation>&Стоп</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="39"/> + <source>V</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="40"/> + <source>&Previous</source> + <translation>&Назад</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="40"/> + <source>Z</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="41"/> + <source>&Next</source> + <translation>&Вперед</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="41"/> + <source>B</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="42"/> + <source>&Play/Pause</source> + <translation>&Грати/Пауза</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="42"/> + <source>Space</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="43"/> + <source>&Jump to File</source> + <translation>&Перейти до файлу</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="43"/> + <source>J</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="44"/> + <source>&Repeat Playlist</source> + <translation>&Повторити список</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="44"/> + <source>R</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="45"/> + <source>&Repeat Track</source> + <translation>&Повторити трек</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="45"/> + <source>Ctrl+R</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="46"/> + <source>&Shuffle</source> + <translation>&Перемішати</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="46"/> + <source>S</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="47"/> + <source>&No Playlist Advance</source> + <translation>&Не пересуватися по списку</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="48"/> + <source>Ctrl+N</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="49"/> + <source>&Stop After Selected</source> + <translation>&Зупинити після вибраного</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="50"/> + <source>Ctrl+S</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="51"/> + <source>&Clear Queue</source> + <translation>&Очистити чергу</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>&Add File</source> + <translation>&Додати файл</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="59"/> + <source>F</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="60"/> + <source>&Add Directory</source> + <translation>&Додати теку</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="60"/> + <source>D</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="61"/> + <source>&Add Url</source> + <translation>&Додати адресу</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="61"/> + <source>U</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="62"/> + <source>&Remove Selected</source> + <translation>&Видалити вибране</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="63"/> + <source>Del</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="64"/> + <source>&Remove All</source> + <translation>&Видалити все</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>&Видалити не вибране</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>&Queue Toggle</source> + <translation>&В чергу</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>&Select None</source> + <translation>&Зняти виділення</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>&Вибрати все</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="74"/> + <source>Ctrl+A</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="75"/> + <source>&View Track Details</source> + <translation>&Інформація</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="75"/> + <source>Alt+I</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="77"/> + <source>&New List</source> + <translation>&Новий список</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="77"/> + <source>Ctrl+T</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="78"/> + <source>&Delete List</source> + <translation>&Видалити список</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="78"/> + <source>Ctrl+W</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="79"/> + <source>&Load List</source> + <translation>&Завантажити список</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="79"/> + <source>O</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="80"/> + <source>&Save List</source> + <translation>&Зберегти список</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="80"/> + <source>Shift+S</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="81"/> + <source>&Select Next Playlist</source> + <translation>Вибрати &наступний список</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="82"/> + <source>Ctrl+PgDown</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="83"/> + <source>&Select Previous Playlist</source> + <translation>Вибрати &попередній список</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="84"/> + <source>Ctrl+PgUp</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="85"/> + <source>&Show Playlists</source> + <translation>Показати &всі списки</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="86"/> + <source>P</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="88"/> + <source>&Settings</source> + <translation>&Налаштування</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="88"/> + <source>Ctrl+P</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="89"/> + <source>&About</source> + <translation>&Про програму</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>&Про Qt</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>&Вихід</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>&Add</source> + <translation>&Додати</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>&Відміна</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'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- розрядний номер трека</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></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>&Load/Delete</source> + <translation>&Завантажити/Видалити</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>&Зберегти предвстановлення</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>&Зберегти авто-предвстановлення</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>&Очистити</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>&Import</source> + <translation>&Імпортувати</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>&Jump To File</source> + <translation>&Перейти до файлу</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>&Copy Selection To</source> + <translation>&Копіювати вибране в</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>&New PlayList</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="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>&Load</source> + <translation>&Завантажити</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>&Зберегти як...</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="54"/> + <source>Rename</source> + <translation>Переіменувати</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="55"/> + <source>&Delete</source> + <translation>&Видалити</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- розрядний номер трека</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'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>&Play</source> + <translation>播放(&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>&Pause</source> + <translation>暂停(&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>&Stop</source> + <translation>停止(&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>&Previous</source> + <translation>上一曲(&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>&Next</source> + <translation>下一曲(&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>&Play/Pause</source> + <translation>播放/暂停(&P)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="42"/> + <source>Space</source> + <translation>空格</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="43"/> + <source>&Jump to File</source> + <translation>跳到文件(&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>&Repeat Playlist</source> + <translation>重复列表(&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>&Repeat Track</source> + <translation>重复音轨(&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>&Shuffle</source> + <translation>乱序(&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>&No Playlist Advance</source> + <translation>无列表继续(&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>&Stop After Selected</source> + <translation>已选后停止(&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>&Clear Queue</source> + <translation>清除队列(&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>&Add File</source> + <translation>添加文件(&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>&Add Directory</source> + <translation>添加文件夹(&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>&Add Url</source> + <translation>添加 URL (&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>&Remove Selected</source> + <translation>删除所选(&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>&Remove All</source> + <translation>删除全部(&R)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>删除未选(&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>&Queue Toggle</source> + <translation>队列切换(&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>&Select None</source> + <translation>无选择(&S)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>选择全部(&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>&View Track Details</source> + <translation>查看音轨详情(&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>&New List</source> + <translation>新建列表(&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>&Delete List</source> + <translation>删除列表(&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>&Load List</source> + <translation>载入列表(&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>&Save List</source> + <translation>保存列表(&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>&Select Next Playlist</source> + <translation>选择下一列表(&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>&Select Previous Playlist</source> + <translation>选择上一列表(&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>&Show Playlists</source> + <translation>显示列表(&S)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="86"/> + <source>P</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="88"/> + <source>&Settings</source> + <translation>设置(&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>&About</source> + <translation>关于(&A)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>关于 Qt (&A)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>退出(&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>&Add</source> + <translation>添加(&A)</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>取消(&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'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>&Load/Delete</source> + <translation>载入/删除(&L)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>保存预设(&S)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>保存自动载入预设(&S)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>清除(&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>&Import</source> + <translation>导入(&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>&Jump To File</source> + <translation>跳到文件(&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>&Copy Selection To</source> + <translation>复制选择到(&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>&New PlayList</source> + <translation>新建列表(&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>&Load</source> + <translation>载入(&L)</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>另存为(&S)</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="54"/> + <source>Rename</source> + <translation>重命名</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="55"/> + <source>&Delete</source> + <translation>删除(&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'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>&Play</source> + <translation>播放(&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>&Pause</source> + <translation>暫停(&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>&Stop</source> + <translation>停止(&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>&Previous</source> + <translation>上一曲(&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>&Next</source> + <translation>下一曲(&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>&Play/Pause</source> + <translation>播放/暫停(&P)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="42"/> + <source>Space</source> + <translation>空格</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="43"/> + <source>&Jump to File</source> + <translation>跳到文件(&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>&Repeat Playlist</source> + <translation>重復播放清單(&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>&Repeat Track</source> + <translation>重復音軌(&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>&Shuffle</source> + <translation>亂序(&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>&No Playlist Advance</source> + <translation>無清單繼續(&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>&Stop After Selected</source> + <translation>選定后停止(&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>&Clear Queue</source> + <translation>清除佇列(&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>&Add File</source> + <translation>添加文件(&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>&Add Directory</source> + <translation>添加文件夾(&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>&Add Url</source> + <translation>添加 URL (&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>&Remove Selected</source> + <translation>移除所選(&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>&Remove All</source> + <translation>移除全部(&R)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="65"/> + <source>&Remove Unselected</source> + <translation>移除未選(&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>&Queue Toggle</source> + <translation>佇列切換(&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>&Select None</source> + <translation>無選取(&S)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="73"/> + <source>&Select All</source> + <translation>選取全部(&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>&View Track Details</source> + <translation>檢視音軌詳訊(&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>&New List</source> + <translation>新建清單(&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>&Delete List</source> + <translation>移除清單(&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>&Load List</source> + <translation>載入清單(&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>&Save List</source> + <translation>儲存清單(&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>&Select Next Playlist</source> + <translation>選擇下一清單(&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>&Select Previous Playlist</source> + <translation>選擇上一清單(&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>&Show Playlists</source> + <translation>顯示播放清單(&S)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="86"/> + <source>P</source> + <translation></translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="88"/> + <source>&Settings</source> + <translation>設定(&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>&About</source> + <translation>關於(&A)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="90"/> + <source>&About Qt</source> + <translation>關於 Qt (&A)</translation> + </message> + <message> + <location filename="../actionmanager.cpp" line="91"/> + <source>&Exit</source> + <translation>結束(&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>&Add</source> + <translation>添加(&A)</translation> + </message> + <message> + <location filename="../forms/addurldialog.ui" line="58"/> + <source>&Cancel</source> + <translation>取消(&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'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>&Load/Delete</source> + <translation>載入/移除(&L)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="263"/> + <source>&Save Preset</source> + <translation>儲存預設(&S)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="265"/> + <source>&Save Auto-load Preset</source> + <translation>儲存自動載入預設(&S)</translation> + </message> + <message> + <location filename="../eqwidget.cpp" line="270"/> + <source>&Clear</source> + <translation>清除(&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>&Import</source> + <translation>導入(&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>&Jump To File</source> + <translation>跳到文件(&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>&Copy Selection To</source> + <translation>复制選取到(&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>&New PlayList</source> + <translation>新建清單(&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>&Load</source> + <translation>載入(&L)</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="52"/> + <source>&Save As...</source> + <translation>另存為(&S)...</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="54"/> + <source>Rename</source> + <translation>重命名</translation> + </message> + <message> + <location filename="../playlistselector.cpp" line="55"/> + <source>&Delete</source> + <translation>移除(&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'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 \ |
