From 017d2d27bfbcd97ada407212e925b280ff3482b5 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Tue, 11 Aug 2015 09:08:12 +0000 Subject: added qsui plugin git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5367 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Ui/qsui/CMakeLists.txt | 98 ++ src/plugins/Ui/qsui/aboutqsuidialog.cpp | 80 + src/plugins/Ui/qsui/aboutqsuidialog.h | 43 + src/plugins/Ui/qsui/actionmanager.cpp | 231 +++ src/plugins/Ui/qsui/actionmanager.h | 128 ++ src/plugins/Ui/qsui/colorwidget.cpp | 53 + src/plugins/Ui/qsui/colorwidget.h | 49 + src/plugins/Ui/qsui/coverwidget.cpp | 71 + src/plugins/Ui/qsui/coverwidget.h | 50 + src/plugins/Ui/qsui/elidinglabel.cpp | 86 ++ src/plugins/Ui/qsui/elidinglabel.h | 59 + src/plugins/Ui/qsui/eqpreset.cpp | 55 + src/plugins/Ui/qsui/eqpreset.h | 45 + src/plugins/Ui/qsui/equalizer.cpp | 280 ++++ src/plugins/Ui/qsui/equalizer.h | 67 + src/plugins/Ui/qsui/fft.c | 296 ++++ src/plugins/Ui/qsui/fft.h | 45 + src/plugins/Ui/qsui/filesystembrowser.cpp | 149 ++ src/plugins/Ui/qsui/filesystembrowser.h | 61 + src/plugins/Ui/qsui/forms/aboutqsuidialog.ui | 104 ++ src/plugins/Ui/qsui/forms/hotkeyeditor.ui | 68 + src/plugins/Ui/qsui/forms/mainwindow.ui | 323 ++++ src/plugins/Ui/qsui/forms/popupsettings.ui | 251 ++++ src/plugins/Ui/qsui/forms/qsuisettings.ui | 1038 +++++++++++++ src/plugins/Ui/qsui/forms/shortcutdialog.ui | 132 ++ src/plugins/Ui/qsui/forms/toolbareditor.ui | 228 +++ src/plugins/Ui/qsui/hotkeyeditor.cpp | 100 ++ src/plugins/Ui/qsui/hotkeyeditor.h | 50 + src/plugins/Ui/qsui/inlines.h | 57 + src/plugins/Ui/qsui/keyboardmanager.cpp | 315 ++++ src/plugins/Ui/qsui/keyboardmanager.h | 65 + src/plugins/Ui/qsui/listwidget.cpp | 686 +++++++++ src/plugins/Ui/qsui/listwidget.h | 139 ++ src/plugins/Ui/qsui/listwidgetdrawer.cpp | 429 ++++++ src/plugins/Ui/qsui/listwidgetdrawer.h | 108 ++ src/plugins/Ui/qsui/logo.cpp | 284 ++++ src/plugins/Ui/qsui/logo.h | 65 + src/plugins/Ui/qsui/mainwindow.cpp | 924 ++++++++++++ src/plugins/Ui/qsui/mainwindow.h | 123 ++ src/plugins/Ui/qsui/playlistbrowser.cpp | 156 ++ src/plugins/Ui/qsui/playlistbrowser.h | 59 + src/plugins/Ui/qsui/playlistheader.cpp | 768 ++++++++++ src/plugins/Ui/qsui/playlistheader.h | 129 ++ src/plugins/Ui/qsui/popupsettings.cpp | 89 ++ src/plugins/Ui/qsui/popupsettings.h | 52 + src/plugins/Ui/qsui/popupwidget.cpp | 132 ++ src/plugins/Ui/qsui/popupwidget.h | 68 + src/plugins/Ui/qsui/positionslider.cpp | 67 + src/plugins/Ui/qsui/positionslider.h | 47 + src/plugins/Ui/qsui/qsui.pro | 117 ++ src/plugins/Ui/qsui/qsuianalyzer.cpp | 404 +++++ src/plugins/Ui/qsui/qsuianalyzer.h | 97 ++ src/plugins/Ui/qsui/qsuifactory.cpp | 57 + src/plugins/Ui/qsui/qsuifactory.h | 41 + src/plugins/Ui/qsui/qsuisettings.cpp | 245 +++ src/plugins/Ui/qsui/qsuisettings.h | 59 + src/plugins/Ui/qsui/qsuitabbar.cpp | 39 + src/plugins/Ui/qsui/qsuitabbar.h | 40 + src/plugins/Ui/qsui/qsuitabwidget.cpp | 148 ++ src/plugins/Ui/qsui/qsuitabwidget.h | 65 + .../Ui/qsui/resources/audio-volume-high.png | Bin 0 -> 309 bytes src/plugins/Ui/qsui/resources/audio-volume-low.png | Bin 0 -> 322 bytes .../Ui/qsui/resources/audio-volume-medium.png | Bin 0 -> 318 bytes .../Ui/qsui/resources/audio-volume-muted.png | Bin 0 -> 431 bytes src/plugins/Ui/qsui/resources/eq16.preset | 324 ++++ src/plugins/Ui/qsui/resources/media-eject.png | Bin 0 -> 296 bytes .../Ui/qsui/resources/media-playback-pause.png | Bin 0 -> 247 bytes .../Ui/qsui/resources/media-playback-start.png | Bin 0 -> 300 bytes .../Ui/qsui/resources/media-playback-stop.png | Bin 0 -> 241 bytes .../Ui/qsui/resources/media-skip-backward.png | Bin 0 -> 282 bytes .../Ui/qsui/resources/media-skip-forward.png | Bin 0 -> 306 bytes src/plugins/Ui/qsui/resources/qsui_resources.qrc | 19 + src/plugins/Ui/qsui/resources/qsui_settings.png | Bin 0 -> 599 bytes src/plugins/Ui/qsui/resources/qsui_shortcuts.png | Bin 0 -> 603 bytes src/plugins/Ui/qsui/resources/terminus.png | Bin 0 -> 550 bytes src/plugins/Ui/qsui/resources/ui_no_cover.png | Bin 0 -> 4170 bytes src/plugins/Ui/qsui/shortcutdialog.cpp | 67 + src/plugins/Ui/qsui/shortcutdialog.h | 49 + src/plugins/Ui/qsui/shortcutitem.cpp | 39 + src/plugins/Ui/qsui/shortcutitem.h | 44 + src/plugins/Ui/qsui/toolbareditor.cpp | 185 +++ src/plugins/Ui/qsui/toolbareditor.h | 59 + src/plugins/Ui/qsui/translations/qsui_plugin_bg.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_cs.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_de.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_el.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_en.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_es.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_fr.ts | 1558 +++++++++++++++++++ .../Ui/qsui/translations/qsui_plugin_gl_ES.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_he.ts | 1559 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_hu.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_it.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_ja.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_kk.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_lt.ts | 1560 ++++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_nl.ts | 1560 ++++++++++++++++++++ .../Ui/qsui/translations/qsui_plugin_pl_PL.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_pt.ts | 1558 +++++++++++++++++++ .../Ui/qsui/translations/qsui_plugin_pt_BR.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_ru.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_sk.ts | 1558 +++++++++++++++++++ .../Ui/qsui/translations/qsui_plugin_sr_BA.ts | 1558 +++++++++++++++++++ .../Ui/qsui/translations/qsui_plugin_sr_RS.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/qsui_plugin_tr.ts | 1558 +++++++++++++++++++ .../Ui/qsui/translations/qsui_plugin_uk_UA.ts | 1560 ++++++++++++++++++++ .../Ui/qsui/translations/qsui_plugin_zh_CN.ts | 1558 +++++++++++++++++++ .../Ui/qsui/translations/qsui_plugin_zh_TW.ts | 1558 +++++++++++++++++++ src/plugins/Ui/qsui/translations/translations.qrc | 30 + src/plugins/Ui/qsui/txt/ascii_logo.txt | 18 + src/plugins/Ui/qsui/txt/qsui_authors.txt | 63 + src/plugins/Ui/qsui/txt/qsui_authors_cs.txt | 57 + src/plugins/Ui/qsui/txt/qsui_authors_de.txt | 63 + src/plugins/Ui/qsui/txt/qsui_authors_he.txt | 54 + src/plugins/Ui/qsui/txt/qsui_authors_ja.txt | 58 + src/plugins/Ui/qsui/txt/qsui_authors_lt_LT.txt | 54 + src/plugins/Ui/qsui/txt/qsui_authors_nl.txt | 54 + src/plugins/Ui/qsui/txt/qsui_authors_pl_PL.txt | 60 + src/plugins/Ui/qsui/txt/qsui_authors_pt.txt | 63 + src/plugins/Ui/qsui/txt/qsui_authors_ru.txt | 71 + src/plugins/Ui/qsui/txt/qsui_authors_sr_BA.txt | 60 + src/plugins/Ui/qsui/txt/qsui_authors_sr_RS.txt | 60 + src/plugins/Ui/qsui/txt/qsui_authors_uk_UA.txt | 62 + src/plugins/Ui/qsui/txt/qsui_txt.qrc | 19 + src/plugins/Ui/qsui/visualmenu.cpp | 61 + src/plugins/Ui/qsui/visualmenu.h | 57 + 126 files changed, 52579 insertions(+) create mode 100644 src/plugins/Ui/qsui/CMakeLists.txt create mode 100644 src/plugins/Ui/qsui/aboutqsuidialog.cpp create mode 100644 src/plugins/Ui/qsui/aboutqsuidialog.h create mode 100644 src/plugins/Ui/qsui/actionmanager.cpp create mode 100644 src/plugins/Ui/qsui/actionmanager.h create mode 100644 src/plugins/Ui/qsui/colorwidget.cpp create mode 100644 src/plugins/Ui/qsui/colorwidget.h create mode 100644 src/plugins/Ui/qsui/coverwidget.cpp create mode 100644 src/plugins/Ui/qsui/coverwidget.h create mode 100644 src/plugins/Ui/qsui/elidinglabel.cpp create mode 100644 src/plugins/Ui/qsui/elidinglabel.h create mode 100644 src/plugins/Ui/qsui/eqpreset.cpp create mode 100644 src/plugins/Ui/qsui/eqpreset.h create mode 100644 src/plugins/Ui/qsui/equalizer.cpp create mode 100644 src/plugins/Ui/qsui/equalizer.h create mode 100644 src/plugins/Ui/qsui/fft.c create mode 100644 src/plugins/Ui/qsui/fft.h create mode 100644 src/plugins/Ui/qsui/filesystembrowser.cpp create mode 100644 src/plugins/Ui/qsui/filesystembrowser.h create mode 100644 src/plugins/Ui/qsui/forms/aboutqsuidialog.ui create mode 100644 src/plugins/Ui/qsui/forms/hotkeyeditor.ui create mode 100644 src/plugins/Ui/qsui/forms/mainwindow.ui create mode 100644 src/plugins/Ui/qsui/forms/popupsettings.ui create mode 100644 src/plugins/Ui/qsui/forms/qsuisettings.ui create mode 100644 src/plugins/Ui/qsui/forms/shortcutdialog.ui create mode 100644 src/plugins/Ui/qsui/forms/toolbareditor.ui create mode 100644 src/plugins/Ui/qsui/hotkeyeditor.cpp create mode 100644 src/plugins/Ui/qsui/hotkeyeditor.h create mode 100644 src/plugins/Ui/qsui/inlines.h create mode 100644 src/plugins/Ui/qsui/keyboardmanager.cpp create mode 100644 src/plugins/Ui/qsui/keyboardmanager.h create mode 100644 src/plugins/Ui/qsui/listwidget.cpp create mode 100644 src/plugins/Ui/qsui/listwidget.h create mode 100644 src/plugins/Ui/qsui/listwidgetdrawer.cpp create mode 100644 src/plugins/Ui/qsui/listwidgetdrawer.h create mode 100644 src/plugins/Ui/qsui/logo.cpp create mode 100644 src/plugins/Ui/qsui/logo.h create mode 100644 src/plugins/Ui/qsui/mainwindow.cpp create mode 100644 src/plugins/Ui/qsui/mainwindow.h create mode 100644 src/plugins/Ui/qsui/playlistbrowser.cpp create mode 100644 src/plugins/Ui/qsui/playlistbrowser.h create mode 100644 src/plugins/Ui/qsui/playlistheader.cpp create mode 100644 src/plugins/Ui/qsui/playlistheader.h create mode 100644 src/plugins/Ui/qsui/popupsettings.cpp create mode 100644 src/plugins/Ui/qsui/popupsettings.h create mode 100644 src/plugins/Ui/qsui/popupwidget.cpp create mode 100644 src/plugins/Ui/qsui/popupwidget.h create mode 100644 src/plugins/Ui/qsui/positionslider.cpp create mode 100644 src/plugins/Ui/qsui/positionslider.h create mode 100644 src/plugins/Ui/qsui/qsui.pro create mode 100644 src/plugins/Ui/qsui/qsuianalyzer.cpp create mode 100644 src/plugins/Ui/qsui/qsuianalyzer.h create mode 100644 src/plugins/Ui/qsui/qsuifactory.cpp create mode 100644 src/plugins/Ui/qsui/qsuifactory.h create mode 100644 src/plugins/Ui/qsui/qsuisettings.cpp create mode 100644 src/plugins/Ui/qsui/qsuisettings.h create mode 100644 src/plugins/Ui/qsui/qsuitabbar.cpp create mode 100644 src/plugins/Ui/qsui/qsuitabbar.h create mode 100644 src/plugins/Ui/qsui/qsuitabwidget.cpp create mode 100644 src/plugins/Ui/qsui/qsuitabwidget.h create mode 100644 src/plugins/Ui/qsui/resources/audio-volume-high.png create mode 100644 src/plugins/Ui/qsui/resources/audio-volume-low.png create mode 100644 src/plugins/Ui/qsui/resources/audio-volume-medium.png create mode 100644 src/plugins/Ui/qsui/resources/audio-volume-muted.png create mode 100644 src/plugins/Ui/qsui/resources/eq16.preset create mode 100644 src/plugins/Ui/qsui/resources/media-eject.png create mode 100644 src/plugins/Ui/qsui/resources/media-playback-pause.png create mode 100644 src/plugins/Ui/qsui/resources/media-playback-start.png create mode 100644 src/plugins/Ui/qsui/resources/media-playback-stop.png create mode 100644 src/plugins/Ui/qsui/resources/media-skip-backward.png create mode 100644 src/plugins/Ui/qsui/resources/media-skip-forward.png create mode 100644 src/plugins/Ui/qsui/resources/qsui_resources.qrc create mode 100644 src/plugins/Ui/qsui/resources/qsui_settings.png create mode 100644 src/plugins/Ui/qsui/resources/qsui_shortcuts.png create mode 100644 src/plugins/Ui/qsui/resources/terminus.png create mode 100644 src/plugins/Ui/qsui/resources/ui_no_cover.png create mode 100644 src/plugins/Ui/qsui/shortcutdialog.cpp create mode 100644 src/plugins/Ui/qsui/shortcutdialog.h create mode 100644 src/plugins/Ui/qsui/shortcutitem.cpp create mode 100644 src/plugins/Ui/qsui/shortcutitem.h create mode 100644 src/plugins/Ui/qsui/toolbareditor.cpp create mode 100644 src/plugins/Ui/qsui/toolbareditor.h create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_bg.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_cs.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_de.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_el.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_en.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_es.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_fr.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_gl_ES.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_he.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_hu.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_it.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_ja.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_kk.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_lt.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_nl.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_pl_PL.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_pt.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_pt_BR.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_ru.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_sk.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_sr_BA.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_sr_RS.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_tr.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_uk_UA.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_zh_CN.ts create mode 100644 src/plugins/Ui/qsui/translations/qsui_plugin_zh_TW.ts create mode 100644 src/plugins/Ui/qsui/translations/translations.qrc create mode 100644 src/plugins/Ui/qsui/txt/ascii_logo.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_cs.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_de.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_he.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_ja.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_lt_LT.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_nl.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_pl_PL.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_pt.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_ru.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_sr_BA.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_sr_RS.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_authors_uk_UA.txt create mode 100644 src/plugins/Ui/qsui/txt/qsui_txt.qrc create mode 100644 src/plugins/Ui/qsui/visualmenu.cpp create mode 100644 src/plugins/Ui/qsui/visualmenu.h (limited to 'src/plugins/Ui/qsui') diff --git a/src/plugins/Ui/qsui/CMakeLists.txt b/src/plugins/Ui/qsui/CMakeLists.txt new file mode 100644 index 000000000..df4241a36 --- /dev/null +++ b/src/plugins/Ui/qsui/CMakeLists.txt @@ -0,0 +1,98 @@ +project(libqsui) + +cmake_minimum_required(VERSION 2.4.7) + +if(COMMAND cmake_policy) + cmake_policy(SET CMP0003 OLD) + cmake_policy(SET CMP0005 OLD) +endif(COMMAND cmake_policy) + +# qt plugin +ADD_DEFINITIONS( -Wall ) +ADD_DEFINITIONS(${QT_DEFINITIONS}) +ADD_DEFINITIONS(-DQT_PLUGIN) +ADD_DEFINITIONS(-DQT_NO_DEBUG) +ADD_DEFINITIONS(-DQT_SHARED) +ADD_DEFINITIONS(-DQT_THREAD) + +IF(SVN_VERSION) +ADD_DEFINITIONS(-DQMMP_PLUGIN_PACK_VERSION=\\\"${QMMP_PLUGIN_PACK_VERSION}-dev\\\") +ELSE(SVN_VERSION) +ADD_DEFINITIONS(-DQMMP_PLUGIN_PACK_VERSION=\\\"${QMMP_PLUGIN_PACK_VERSION}\\\") +ENDIF(SVN_VERSION) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +# libqmmp +include_directories(${QMMP_INCLUDE_DIRS}) +link_directories( ${QMMP_LIBRARY_DIRS}) + +# libqmmpui +include_directories(${QMMPUI_INCLUDE_DIRS}) +link_directories( ${QMMPUI_LIBRARY_DIRS}) + + +SET(libqsui_SRCS + actionmanager.cpp + listwidget.cpp + mainwindow.cpp + popupsettings.cpp + popupwidget.cpp + positionslider.cpp + shortcutdialog.cpp + shortcutitem.cpp + qsuifactory.cpp + qsuisettings.cpp + visualmenu.cpp + equalizer.cpp + logo.cpp + aboutqsuidialog.cpp + keyboardmanager.cpp + qsuianalyzer.cpp + fft.c + colorwidget.cpp + qsuitabwidget.cpp + qsuitabbar.cpp + eqpreset.cpp + filesystembrowser.cpp + elidinglabel.cpp + coverwidget.cpp + playlistbrowser.cpp + toolbareditor.cpp + listwidgetdrawer.cpp + playlistheader.cpp + hotkeyeditor.cpp +) + +SET(libqsui_HDRS + shortcutitem.h + inlines.h + fft.h + eqpreset.h + listwidgetdrawer.h +) + +SET(libqsui_RCCS translations/translations.qrc txt/qsui_txt.qrc resources/qsui_resources.qrc) + +QT4_ADD_RESOURCES(libqsui_RCC_SRCS ${libqsui_RCCS}) + +# user interface + +SET(libqsui_UIS + forms/mainwindow.ui + forms/popupsettings.ui + forms/shortcutdialog.ui + forms/qsuisettings.ui + forms/aboutqsuidialog.ui + forms/toolbareditor.ui + forms/hotkeyeditor.ui +) + +QT4_WRAP_UI(libqsui_UIS_H ${libqsui_UIS}) +# Don't forget to include output directory, otherwise +# the UI file won't be wrapped! +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +ADD_LIBRARY(qsui MODULE ${libqsui_SRCS} ${libqsui_UIS_H} ${libqsui_RCC_SRCS} ${libqsui_HDRS}) +target_link_libraries(qsui ${QT_LIBRARIES} ${QMMP_LDFLAGS} ${QMMPUI_LDFLAGS}) +install(TARGETS qsui DESTINATION ${LIB_DIR}/qmmp/Ui) diff --git a/src/plugins/Ui/qsui/aboutqsuidialog.cpp b/src/plugins/Ui/qsui/aboutqsuidialog.cpp new file mode 100644 index 000000000..b873c3fbb --- /dev/null +++ b/src/plugins/Ui/qsui/aboutqsuidialog.cpp @@ -0,0 +1,80 @@ +/*************************************************************************** + * Copyright (C) 2011-2012 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include "aboutqsuidialog.h" + +AboutQSUIDialog::AboutQSUIDialog(QWidget *parent) : + QDialog(parent) +{ + m_ui.setupUi(this); + m_ui.aboutTextEdit->setHtml(loadAbout()); +} + +AboutQSUIDialog::~AboutQSUIDialog(){} + +QString AboutQSUIDialog::loadAbout() +{ + QString text; + text.append(""); + text.append(""); + text.append(""); + text.append("

"+tr("Qmmp Simple User Interface (QSUI)")+"

"); + text.append(tr("Qmmp version: %1").arg(Qmmp::strVersion())); + text.append("
"); + text.append(tr("QSUI version: %1").arg(QMMP_PLUGIN_PACK_VERSION)); + text.append("

"); + text.append(tr("Simple user interface based on standard widgets set.")); + text.append("

"); + text.append("

"); + text.append(getStringFromResource(":qsui_authors").replace("<", "<") + .replace(">", ">").replace("\n", "
")); + text.append("

"); + return text; +} + +QString AboutQSUIDialog::getStringFromResource(const QString& res_file) +{ + QString ret_string; + QStringList paths; + paths << res_file + "_" + Qmmp::systemLanguageID() + ".txt"; + if(Qmmp::systemLanguageID().contains(".")) + paths << res_file + "_" + Qmmp::systemLanguageID().split(".").at(0) + ".txt"; + if(Qmmp::systemLanguageID().contains("_")) + paths << res_file + "_" + Qmmp::systemLanguageID().split("_").at(0) + ".txt"; + paths << res_file + ".txt"; + paths << res_file; + + foreach(QString path, paths) + { + QFile file(path); + if (file.open(QIODevice::ReadOnly)) + { + QTextStream ts(&file); + ts.setCodec("UTF-8"); + ret_string = ts.readAll(); + file.close(); + return ret_string; + } + } + return ret_string; +} diff --git a/src/plugins/Ui/qsui/aboutqsuidialog.h b/src/plugins/Ui/qsui/aboutqsuidialog.h new file mode 100644 index 000000000..308aaa9d6 --- /dev/null +++ b/src/plugins/Ui/qsui/aboutqsuidialog.h @@ -0,0 +1,43 @@ +/*************************************************************************** + * Copyright (C) 2011-2012 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef ABOUTQSUIDIALOG_H +#define ABOUTQSUIDIALOG_H + +#include +#include "ui_aboutqsuidialog.h" + +/** + @author Ilya Kotov +*/ +class AboutQSUIDialog : public QDialog +{ + Q_OBJECT +public: + explicit AboutQSUIDialog(QWidget *parent = 0); + virtual ~AboutQSUIDialog(); + +private: + Ui::AboutQSUIDialog m_ui; + QString loadAbout(); + QString getStringFromResource(const QString& res_file); +}; + +#endif // ABOUTQSUIDIALOG_H diff --git a/src/plugins/Ui/qsui/actionmanager.cpp b/src/plugins/Ui/qsui/actionmanager.cpp new file mode 100644 index 000000000..97d153206 --- /dev/null +++ b/src/plugins/Ui/qsui/actionmanager.cpp @@ -0,0 +1,231 @@ +/*************************************************************************** + * Copyright (C) 2010-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#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("SimpleUiShortcuts"); + //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 Track"), "jump", tr("J"), "go-up"); + m_actions[EJECT] = createAction(tr("&Play Files"), "eject", tr("E"), "media-eject"); + + m_actions[REPEAT_ALL] = createAction2(tr("&Repeat Playlist"), "repeate_playlist", tr("R"), + "media-playlist-repeat"); + m_actions[REPEAT_TRACK] = createAction2(tr("&Repeat Track"), "repeate_track", tr("Ctrl+R")); + m_actions[SHUFFLE] = createAction2(tr("&Shuffle"), "shuffle", tr("S"), "media-playlist-shuffle"); + 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[WM_ALLWAYS_ON_TOP] = createAction2(tr("Always on Top"), "always_on_top", ""); + m_actions[WM_STICKY] = createAction2(tr("Put on All Workspaces"), "sticky", ""); + m_actions[UI_ANALYZER] = 0; //external action + m_actions[UI_FILEBROWSER] = 0; //external action + m_actions[UI_COVER] = 0; //external action + m_actions[UI_PLAYLISTBROWSER] = 0; //external action + m_actions[UI_SHOW_TABS] = createAction2(tr("Show Tabs"), "show_tabs", ""); + m_actions[UI_SHOW_TITLEBARS] = createAction2(tr("Show Title Bars"), "show_titlebars", ""); + m_actions[UI_BLOCK_TOOLBARS] = createAction2(tr("Block Toolbars"), "block_toolbars", ""); + //volume + m_actions[VOL_ENC] = createAction(tr("Volume &+"), "vol_enc", tr("0")); + m_actions[VOL_DEC] = createAction(tr("Volume &-"), "vol_dec", tr("9")); + m_actions[VOL_MUTE] = createAction2(tr("&Mute"), "vol_mute", tr("M")); + //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_RENAME] = createAction(tr("&Rename List"), "pl_rename", tr("F2")); + + 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_GROUP_TRACKS] = createAction2(tr("&Group Tracks"), "group_tracks", tr("Ctrl+G")); + m_actions[PL_SHOW_HEADER] = createAction2(tr("&Show Column Headers"), "show_header", tr("Ctrl+H")); + //other + m_actions[EQUALIZER] = createAction(tr("&Equalizer"), "equalizer", tr("Ctrl+E")); + m_actions[SETTINGS] = createAction(tr("&Settings"), "show_settings", tr("Ctrl+P"), "configure"); + m_actions[ABOUT_UI] = createAction(tr("&About Ui"), "about_ui", ""); + m_actions[ABOUT] = createAction(tr("&About"), "about", ""); + 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(); + readStates(); + delete m_settings; + m_settings = 0; + m_actions[ABOUT]->setIcon(qApp->windowIcon()); +} + +ActionManager::~ActionManager() +{ + saveStates(); + 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; +} + +QList ActionManager::actions() +{ + return m_actions.values(); +} + +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); + action->setProperty("defaultShortcut", key); + if(iconName.isEmpty()) + return action; + if(QFile::exists(iconName)) + action->setIcon(QIcon(iconName)); + else if(QIcon::hasThemeIcon(iconName)) + action->setIcon(QIcon::fromTheme(iconName)); + else if(QFile::exists(QString(":/qsui/")+iconName+".png")) + action->setIcon(QIcon(QString(":/qsui/")+iconName+".png")); + return action; +} + +QAction *ActionManager::createAction2(QString name, QString confKey, QString key, QString iconName) +{ + QAction *action = createAction(name, confKey, key); + action->setCheckable(true); + action->setIconVisibleInMenu(false); + if(iconName.isEmpty()) + return action; + if(QFile::exists(iconName)) + action->setIcon(QIcon(iconName)); + else if(QIcon::hasThemeIcon(iconName)) + action->setIcon(QIcon::fromTheme(iconName)); + else if(QFile::exists(QString(":/qsui/")+iconName+".png")) + action->setIcon(QIcon(QString(":/qsui/")+iconName+".png")); + return action; +} + +void ActionManager::readStates() +{ + m_settings->beginGroup("Simple"); + m_actions[PL_SHOW_HEADER]->setChecked(m_settings->value("pl_show_header", true).toBool()); + m_settings->endGroup(); +} + +void ActionManager::saveStates() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + settings.setValue("pl_show_header", m_actions[PL_SHOW_HEADER]->isChecked()); + settings.endGroup(); +} + +void ActionManager::saveActions() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + foreach(QAction *action, m_actions.values()) + { + settings.setValue(QString("SimpleUiShortcuts/")+action->objectName(), action->shortcut()); + } +} + +void ActionManager::resetShortcuts() +{ + foreach (QAction *action, m_actions.values()) + { + action->setShortcut(action->property("defaultShortcut").toString()); + } +} + +void ActionManager::registerAction(int id, QAction *action, QString confKey, QString key) +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("SimpleUiShortcuts"); + action->setShortcut(settings.value(confKey, key).toString()); + action->setProperty("defaultShortcut", key); + action->setObjectName(confKey); + if(m_actions.value(id)) + qFatal("ActionManager: invalid action id"); + m_actions[id] = action; + settings.endGroup(); +} + +QStringList ActionManager::toolBarActionNames() const +{ + QList idList; + idList << PL_ADD_FILE << PL_ADD_DIRECTORY << PREVIOUS << PLAY << PAUSE << STOP << NEXT << EJECT; + QStringList names; + foreach (Type id, idList) + { + names << m_actions.value(id)->objectName(); + } + return names; +} diff --git a/src/plugins/Ui/qsui/actionmanager.h b/src/plugins/Ui/qsui/actionmanager.h new file mode 100644 index 000000000..e863c5788 --- /dev/null +++ b/src/plugins/Ui/qsui/actionmanager.h @@ -0,0 +1,128 @@ +/*************************************************************************** + * Copyright (C) 2010-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef ACTIONMANAGER_H +#define ACTIONMANAGER_H + +#include +#include +#include + +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 +*/ +class ActionManager : public QObject +{ + Q_OBJECT +public: + explicit ActionManager(QObject *parent = 0); + ~ActionManager(); + + enum Type + { + PLAY = 0, + PAUSE, + STOP, + PREVIOUS, + NEXT, + PLAY_PAUSE, + JUMP, + EJECT, + + REPEAT_ALL, + REPEAT_TRACK, + SHUFFLE, + NO_PL_ADVANCE, + STOP_AFTER_SELECTED, + CLEAR_QUEUE, + + WM_ALLWAYS_ON_TOP, + WM_STICKY, + UI_ANALYZER, + UI_FILEBROWSER, + UI_COVER, + UI_PLAYLISTBROWSER, + UI_SHOW_TABS, + UI_SHOW_TITLEBARS, + UI_BLOCK_TOOLBARS, + + VOL_ENC, + VOL_DEC, + VOL_MUTE, + + 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_RENAME, + PL_SELECT_NEXT, + PL_SELECT_PREVIOUS, + PL_GROUP_TRACKS, + PL_SHOW_HEADER, + + EQUALIZER, + SETTINGS, + ABOUT_UI, + ABOUT, + ABOUT_QT, + QUIT + }; + + QAction *action(int type); + QAction *use(int type, const QObject *receiver, const char *member); + QList actions(); + void saveActions(); + void resetShortcuts(); + void registerAction(int id, QAction *action, QString confKey, QString key); + QStringList toolBarActionNames() const; + static ActionManager* instance(); + +private: + QAction *createAction(QString name, QString confKey, QString key, QString iconName = QString()); + QAction *createAction2(QString name, QString confKey, QString key, QString iconName = QString()); + void readStates(); + void saveStates(); + + QSettings *m_settings; + QHash m_actions; + static ActionManager *m_instance; + +}; + +#endif // ACTIONMANAGER_H diff --git a/src/plugins/Ui/qsui/colorwidget.cpp b/src/plugins/Ui/qsui/colorwidget.cpp new file mode 100644 index 000000000..2cb9f14a6 --- /dev/null +++ b/src/plugins/Ui/qsui/colorwidget.cpp @@ -0,0 +1,53 @@ +/*************************************************************************** + * Copyright (C) 2005-2014 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include "colorwidget.h" + +ColorWidget::ColorWidget(QWidget *parent) : QFrame(parent) +{ + setFrameShape(QFrame::Box); + setAutoFillBackground(true); +} + +ColorWidget::~ColorWidget() +{} + +void ColorWidget::mousePressEvent(QMouseEvent *) +{ + QColor color = QColorDialog::getColor(palette().color(backgroundRole()), parentWidget(), + tr("Select Color")); + if (color.isValid()) + { + setColor(color.name()); + } +} + +void ColorWidget::setColor(QString c) +{ + m_colorName = c; + setStyleSheet(QString("QFrame { background: %1 }").arg(m_colorName)); +} + +const QString ColorWidget::colorName() const +{ + return m_colorName; +} diff --git a/src/plugins/Ui/qsui/colorwidget.h b/src/plugins/Ui/qsui/colorwidget.h new file mode 100644 index 000000000..abbf867ff --- /dev/null +++ b/src/plugins/Ui/qsui/colorwidget.h @@ -0,0 +1,49 @@ +/*************************************************************************** + * Copyright (C) 2005-2014 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef COLORWIDGET_H +#define COLORWIDGET_H + +#include +#include + +/** +@author Ilya Kotov +*/ +class ColorWidget : public QFrame +{ + Q_OBJECT +public: + ColorWidget(QWidget *parent = 0); + + ~ColorWidget(); + + const QString colorName() const; + +public slots: + void setColor (QString); + +private: + void mousePressEvent(QMouseEvent *); + QString m_colorName; + + +}; + +#endif diff --git a/src/plugins/Ui/qsui/coverwidget.cpp b/src/plugins/Ui/qsui/coverwidget.cpp new file mode 100644 index 000000000..9fdd1440f --- /dev/null +++ b/src/plugins/Ui/qsui/coverwidget.cpp @@ -0,0 +1,71 @@ +/*************************************************************************** + * Copyright (C) 2013-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include "coverwidget.h" + +CoverWidget::CoverWidget(QWidget *parent) + : QWidget(parent) +{ + setContextMenuPolicy(Qt::ActionsContextMenu); + QAction *saveAsAction = new QAction(tr("&Save As..."), this); + connect(saveAsAction, SIGNAL(triggered()), SLOT(saveAs())); + addAction(saveAsAction); + m_pixmap = QPixmap(":/qsui/ui_no_cover.png"); +} + +CoverWidget::~CoverWidget() +{} + +void CoverWidget::setCover(const QPixmap &pixmap) +{ + m_pixmap = pixmap.isNull() ? QPixmap(":/qsui/ui_no_cover.png") : pixmap; + update(); +} + +void CoverWidget::clearCover() +{ + setCover(QPixmap()); + update(); +} + +void CoverWidget::paintEvent(QPaintEvent *p) +{ + QPainter paint(this); + if(!m_pixmap.isNull()) + { + int w = qMin(p->rect().width(), p->rect().height()); + paint.drawPixmap(0,0, m_pixmap.scaled(w,w,Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + } +} + +void CoverWidget::saveAs() +{ + QString path = FileDialog::getSaveFileName(this, tr("Save Cover As"), + QDir::homePath() + "/cover.jpg", + tr("Images") +" (*.png *.jpg)"); + + if (!path.isEmpty()) + m_pixmap.save(path); +} diff --git a/src/plugins/Ui/qsui/coverwidget.h b/src/plugins/Ui/qsui/coverwidget.h new file mode 100644 index 000000000..ab064dfc5 --- /dev/null +++ b/src/plugins/Ui/qsui/coverwidget.h @@ -0,0 +1,50 @@ +/*************************************************************************** + * Copyright (C) 2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef PIXMAPWIDGET_H +#define PIXMAPWIDGET_H + +#include +#include + + +/** + @author Ilya Kotov +*/ + +class CoverWidget : public QWidget +{ +Q_OBJECT +public: + CoverWidget(QWidget *parent = 0); + + ~CoverWidget(); + + void setCover(const QPixmap&); + void clearCover(); + +private slots: + void saveAs(); + +private: + void paintEvent (QPaintEvent *event); + QPixmap m_pixmap; +}; + +#endif diff --git a/src/plugins/Ui/qsui/elidinglabel.cpp b/src/plugins/Ui/qsui/elidinglabel.cpp new file mode 100644 index 000000000..7fda25390 --- /dev/null +++ b/src/plugins/Ui/qsui/elidinglabel.cpp @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "elidinglabel.h" +#include +#include +#include + +/*! + \class Utils::ElidingLabel + + \brief The ElidingLabel class is a label suitable for displaying elided + text. +*/ + +namespace Utils { + +ElidingLabel::ElidingLabel(QWidget *parent) + : QLabel(parent), m_elideMode(Qt::ElideRight) +{ + setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred, QSizePolicy::Label)); +} + +ElidingLabel::ElidingLabel(const QString &text, QWidget *parent) + : QLabel(text, parent), m_elideMode(Qt::ElideRight) +{ + setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred, QSizePolicy::Label)); +} + +Qt::TextElideMode ElidingLabel::elideMode() const +{ + return m_elideMode; +} + +void ElidingLabel::setElideMode(const Qt::TextElideMode &elideMode) +{ + m_elideMode = elideMode; + update(); +} + +void ElidingLabel::paintEvent(QPaintEvent *) +{ + const int m = margin(); + QRect contents = contentsRect().adjusted(m, m, -m, -m); + QFontMetrics fm = fontMetrics(); + QString txt = text(); + if (txt.length() > 4 && fm.width(txt) > contents.width()) { + setToolTip(txt); + txt = fm.elidedText(txt, m_elideMode, contents.width()); + } else { + setToolTip(QString()); + } + int flags = QStyle::visualAlignment(layoutDirection(), alignment()) | Qt::TextSingleLine; + + QPainter painter(this); + drawFrame(&painter); + painter.drawText(contents, flags, txt); +} + +} // namespace Utils diff --git a/src/plugins/Ui/qsui/elidinglabel.h b/src/plugins/Ui/qsui/elidinglabel.h new file mode 100644 index 000000000..70e35fd2f --- /dev/null +++ b/src/plugins/Ui/qsui/elidinglabel.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef ELIDINGLABEL_H +#define ELIDINGLABEL_H + +//#include "utils_global.h" +#include + +namespace Utils { + +class /*QTCREATOR_UTILS_EXPORT*/ ElidingLabel : public QLabel +{ + Q_OBJECT + Q_PROPERTY(Qt::TextElideMode elideMode READ elideMode WRITE setElideMode DESIGNABLE true) + +public: + explicit ElidingLabel(QWidget *parent = 0); + explicit ElidingLabel(const QString &text, QWidget *parent = 0); + + Qt::TextElideMode elideMode() const; + void setElideMode(const Qt::TextElideMode &elideMode); + +protected: + void paintEvent(QPaintEvent *event); + +private: + Qt::TextElideMode m_elideMode; +}; + +} // namespace Utils + +#endif // ELIDINGLABEL_H diff --git a/src/plugins/Ui/qsui/eqpreset.cpp b/src/plugins/Ui/qsui/eqpreset.cpp new file mode 100644 index 000000000..a1ab77f11 --- /dev/null +++ b/src/plugins/Ui/qsui/eqpreset.cpp @@ -0,0 +1,55 @@ +/*************************************************************************** + * Copyright (C) 2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#include "eqpreset.h" + +EQPreset::EQPreset() +{ + 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 > 14 || n < 0) + return; + m_bands[n] = value; +} + +void EQPreset::setPreamp(double preamp) +{ + m_preamp = preamp; +} + +double EQPreset::gain(int n) +{ + if(n > 14 || n < 0) + return 0; + return m_bands[n]; +} + +double EQPreset::preamp() +{ + return m_preamp; +} diff --git a/src/plugins/Ui/qsui/eqpreset.h b/src/plugins/Ui/qsui/eqpreset.h new file mode 100644 index 000000000..46a835585 --- /dev/null +++ b/src/plugins/Ui/qsui/eqpreset.h @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright (C) 2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef EQPRESET_H +#define EQPRESET_H + +/** + @author Ilya Kotov +*/ +class EQPreset +{ +public: + EQPreset(); + + ~EQPreset(); + + void setGain(int n, double value); + void setPreamp(double); + + double gain(int n); + double preamp(); + +private: + double m_bands[15]; + double m_preamp; + +}; + +#endif diff --git a/src/plugins/Ui/qsui/equalizer.cpp b/src/plugins/Ui/qsui/equalizer.cpp new file mode 100644 index 000000000..df986828e --- /dev/null +++ b/src/plugins/Ui/qsui/equalizer.cpp @@ -0,0 +1,280 @@ +/*************************************************************************** + * Copyright (C) 2011-2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "equalizer.h" + +Equalizer::Equalizer(QWidget *parent) : QDialog(parent) +{ + setWindowTitle(tr("Equalizer")); + + m_layout = new QVBoxLayout(this); + setLayout(m_layout); + m_layout->setSpacing(5); + m_layout->setMargin(5); + + QHBoxLayout *buttonsLayout = new QHBoxLayout; + buttonsLayout->setSpacing(5); + m_enabled = new QCheckBox(tr("Enable equalizer"), this); + buttonsLayout->addWidget(m_enabled); + + buttonsLayout->addSpacerItem(new QSpacerItem(30, 0, QSizePolicy::Fixed, QSizePolicy::Fixed)); + + QLabel *label = new QLabel(this); + label->setText(tr("Preset:")); + buttonsLayout->addWidget(label); + + m_presetComboBox = new QComboBox(this); + m_presetComboBox->setEditable(true); + connect(m_presetComboBox, SIGNAL(activated(int)), SLOT(loadPreset(int))); + buttonsLayout->addWidget(m_presetComboBox); + + QPushButton *saveButton = new QPushButton(tr("Save"), this); + connect(saveButton, SIGNAL(pressed()), SLOT(savePreset())); + buttonsLayout->addWidget(saveButton); + + QPushButton *deleteButton = new QPushButton(tr("Delete"), this); + connect(deleteButton, SIGNAL(pressed()), SLOT(deletePreset())); + buttonsLayout->addWidget(deleteButton); + + QPushButton *reset = new QPushButton(tr("Reset"), this); + connect(reset, SIGNAL(clicked()), SLOT(resetSettings())); + buttonsLayout->addWidget(reset); + + QDialogButtonBox *dialogButtons = new QDialogButtonBox(QDialogButtonBox::Close, Qt::Horizontal, this); + dialogButtons->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + connect(dialogButtons, SIGNAL(rejected()), SLOT(reject())); + buttonsLayout->addWidget(dialogButtons); + + QGridLayout *slidersLayout = new QGridLayout; + slidersLayout->setSpacing(5); + + QStringList names; + names << tr("Preamp") << "25" << "40" << "63" << "100" << "160" << "250" + << "400" << "630" << "1k" << "1,6k" << "2,5k" + << "4k" << "6,3k" << "10k" << "16k"; + + for(int i = 0; i < 16; ++i) + { + QSlider *slider = new QSlider(this); + slider->setRange(-20, 20); + slider->setTickPosition(QSlider::TicksLeft); + slider->setTickInterval(10); + QLabel *label = new QLabel(this); + label->setFrameShape(QFrame::Box); + label->setText(names.at(i)); + slidersLayout->addWidget(slider, 1, i, Qt::AlignHCenter); + slidersLayout->addWidget(label, 2, i, Qt::AlignHCenter); + + QLabel *label2 = new QLabel(this); + label2->setText(tr("%1dB").arg(0)); + label2->setFrameShape(QFrame::Box); + label2->setMinimumWidth(fontMetrics().width(tr("+%1dB").arg(20) + 5)); + label2->setAlignment(Qt::AlignCenter); + slidersLayout->addWidget(label2, 0, i, Qt::AlignHCenter); + connect(slider, SIGNAL(valueChanged(int)), SLOT(updateLabel())); + m_sliders << slider; + m_labels << label2; + } + m_layout->addItem(slidersLayout); + m_layout->addItem(buttonsLayout); + setMinimumHeight(300); + foreach(QSlider *slider, m_sliders) + { + connect(slider, SIGNAL(sliderMoved(int)), SLOT(applySettings())); + } + connect(m_enabled, SIGNAL(clicked()), SLOT(applySettings())); + readSettigs(); + loadPresets(); +} + +Equalizer::~Equalizer() +{ + savePresets(); + qDeleteAll(m_presets); + m_presets.clear(); +} + +void Equalizer::readSettigs() +{ + EqSettings settings = QmmpSettings::instance()->eqSettings(); + m_enabled->setChecked(settings.isEnabled()); + m_sliders.at(0)->setValue(settings.preamp()); + for(int i = 0; i < EqSettings::EQ_BANDS_15; ++i) + { + m_sliders.at(i+1)->setValue(settings.gain(i)); + } +} + +void Equalizer::loadPresets() +{ + m_presetComboBox->clear(); + //equalizer presets + QString preset_path = QDir::homePath() +"/.qmmp/eq16.preset"; + if(!QFile::exists(preset_path)) + preset_path = ":/qsui/eq16.preset"; + QSettings eq_preset (preset_path, QSettings::IniFormat); + int i = 0; + forever + { + i++; + if (eq_preset.contains("Presets/Preset"+QString("%1").arg(i))) + { + QString name = eq_preset.value(QString("Presets/Preset%1").arg(i), tr("preset")).toString(); + EQPreset *preset = new EQPreset(); + //preset->setText(name); + eq_preset.beginGroup(name); + for (int j = 0; j < EqSettings::EQ_BANDS_15; ++j) + { + preset->setGain(j,eq_preset.value(QString("Band%1").arg(j), 0).toDouble()); + } + preset->setPreamp(eq_preset.value("Preamp",0).toDouble()); + m_presets.append(preset); + m_presetComboBox->addItem(name); + eq_preset.endGroup(); + } + else + break; + } + m_presetComboBox->clearEditText(); +} + +void Equalizer::applySettings() +{ + EqSettings settings(EqSettings::EQ_BANDS_15); + settings.setPreamp(m_sliders.at(0)->value()); + settings.setEnabled(m_enabled->isChecked()); + for(int i = 0; i < EqSettings::EQ_BANDS_15; ++i) + { + settings.setGain(i, m_sliders.at(i+1)->value()); + } + QmmpSettings::instance()->setEqSettings(settings); +} + +void Equalizer::resetSettings() +{ + foreach(QSlider *slider, m_sliders) + { + slider->setValue(0); + } + applySettings(); + m_presetComboBox->setCurrentIndex(-1); +} + +void Equalizer::updateLabel() +{ + QSlider *slider = qobject_cast(sender()); + int index = m_sliders.indexOf(slider); + if(index < 0) + return; + if(slider->value() > 0) + m_labels[index]->setText(tr("+%1dB").arg(slider->value())); + else + m_labels[index]->setText(tr("%1dB").arg(slider->value())); +} + +void Equalizer::loadPreset(int index) +{ + EQPreset *preset = m_presets.at(index); + m_sliders.at(0)->setValue(preset->preamp()); + for(int i = 0; i < EqSettings::EQ_BANDS_15; ++i) + { + m_sliders.at(i+1)->setValue(preset->gain(i)); + } + applySettings(); +} + +void Equalizer::savePreset() +{ + QString name = m_presetComboBox->currentText(); + if(name.isEmpty()) + return; + + int index = m_presetComboBox->findText(name); + if(index != -1) + { + if(QMessageBox::question(this, tr("Overwrite Request"), + tr("Preset '%1' already exists. Overwrite?").arg(name), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + return; + m_presets[index]->setPreamp(m_sliders.at(0)->value()); + for(int i = 0; i < EqSettings::EQ_BANDS_15; ++i) + { + m_presets[index]->setGain(i, m_sliders.at(i+1)->value()); + } + } + else + { + m_presetComboBox->addItem(name); + EQPreset *preset = new EQPreset(); + preset->setPreamp(m_sliders.at(0)->value()); + for(int i = 0; i < EqSettings::EQ_BANDS_15; ++i) + { + preset->setGain(i, m_sliders.at(i+1)->value()); + } + m_presets.append(preset); + } + m_presetComboBox->clearEditText(); +} + +void Equalizer::savePresets() +{ + QSettings eq_preset (QDir::homePath() +"/.qmmp/eq16.preset", QSettings::IniFormat); + eq_preset.clear (); + for (int i = 0; i < m_presets.size(); ++i) + { + eq_preset.setValue(QString("Presets/Preset%1").arg(i+1), m_presetComboBox->itemText(i)); + eq_preset.beginGroup(m_presetComboBox->itemText(i)); + for (int j = 0; j < EqSettings::EQ_BANDS_15; ++j) + { + eq_preset.setValue(QString("Band%1").arg(j),m_presets.at(i)->gain(j)); + } + eq_preset.setValue("Preamp",m_presets.at(i)->preamp()); + eq_preset.endGroup(); + } +} + +void Equalizer::deletePreset() +{ + QString name = m_presetComboBox->currentText(); + if(name.isEmpty()) + return; + + int index = m_presetComboBox->findText(name); + if(index != -1) + { + m_presetComboBox->removeItem(index); + delete m_presets.takeAt(index); + } + m_presetComboBox->clearEditText(); +} diff --git a/src/plugins/Ui/qsui/equalizer.h b/src/plugins/Ui/qsui/equalizer.h new file mode 100644 index 000000000..2c50298de --- /dev/null +++ b/src/plugins/Ui/qsui/equalizer.h @@ -0,0 +1,67 @@ +/*************************************************************************** + * Copyright (C) 2011-2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef EQUALIZER_H +#define EQUALIZER_H + +#include +#include +#include "eqpreset.h" + +class QVBoxLayout; +class QCheckBox; +class QSlider; +class QLabel; +class QComboBox; + +/** + @author Ilya Kotov +*/ +class Equalizer : public QDialog +{ + Q_OBJECT +public: + explicit Equalizer(QWidget *parent = 0); + ~Equalizer(); + + +private slots: + void applySettings(); + void resetSettings(); + void updateLabel(); + void loadPreset(int index); + void savePreset(); + void savePresets(); + void deletePreset(); + +private: + void readSettigs(); + void loadPresets(); + + QVBoxLayout *m_layout; + QCheckBox *m_enabled; + QComboBox *m_presetComboBox; + QList m_sliders; + QList m_labels; + QList m_presets; + +}; + +#endif // EQUALIZER_H diff --git a/src/plugins/Ui/qsui/fft.c b/src/plugins/Ui/qsui/fft.c new file mode 100644 index 000000000..0ea89eae6 --- /dev/null +++ b/src/plugins/Ui/qsui/fft.c @@ -0,0 +1,296 @@ +/* fft.c: Iterative implementation of a FFT + * Copyright (C) 1999 Richard Boulton + * Convolution stuff by Ralph Loader + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/* + * 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 +#include +#include +#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/qsui/fft.h b/src/plugins/Ui/qsui/fft.h new file mode 100644 index 000000000..915bccaf6 --- /dev/null +++ b/src/plugins/Ui/qsui/fft.h @@ -0,0 +1,45 @@ +/* fft.h: Header for iterative implementation of a FFT + * Copyright (C) 1999 Richard Boulton + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef _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/qsui/filesystembrowser.cpp b/src/plugins/Ui/qsui/filesystembrowser.cpp new file mode 100644 index 000000000..72c2f6b0f --- /dev/null +++ b/src/plugins/Ui/qsui/filesystembrowser.cpp @@ -0,0 +1,149 @@ +/*************************************************************************** + * Copyright (C) 2013-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "elidinglabel.h" +#include "filesystembrowser.h" + +FileSystemBrowser::FileSystemBrowser(QWidget *parent) : + QWidget(parent) +{ + m_update = false; + + m_listView = new QListView(this); + m_listView->setFrameStyle(QFrame::NoFrame); + m_listView->setDragEnabled(true); + m_listView->setSelectionMode(QAbstractItemView::ExtendedSelection); + connect(m_listView, SIGNAL(activated(QModelIndex)), SLOT(onListViewActivated(QModelIndex))); + + m_label = new Utils::ElidingLabel(this); + m_label->setContentsMargins(5,5,5,0); + m_label->setMargin(0); + + QVBoxLayout *layout = new QVBoxLayout(); + layout->setContentsMargins(0,0,0,0); + layout->addWidget(m_label); + layout->addWidget(m_listView); + setLayout(layout); + + m_model = new QFileSystemModel(this); + m_model->setReadOnly(true); + m_model->setNameFilterDisables(false); + m_model->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDot); + m_listView->setModel(m_model); + + setContextMenuPolicy(Qt::ActionsContextMenu); + QAction *addToPlaylistAction = new QAction(tr("Add to Playlist"), this); + connect(addToPlaylistAction, SIGNAL(triggered()), SLOT(addToPlayList())); + addAction(addToPlaylistAction); + QAction *selectDirAction = new QAction(tr("Change Directory"), this); + connect(selectDirAction, SIGNAL(triggered()), SLOT(selectDirectory())); + addAction(selectDirAction); + + readSettings(); +} + +FileSystemBrowser::~FileSystemBrowser() +{ + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + settings.setValue("fsbrowser_current_dir", m_model->rootPath()); + settings.endGroup(); +} + +void FileSystemBrowser::readSettings() +{ + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + if(!m_update) + { + m_update = true; + setCurrentDirectory(settings.value("fsbrowser_current_dir", + QDir::homePath()).toString()); + } + settings.endGroup(); + m_model->setNameFilters(MetaDataManager::instance()->nameFilters()); +} + +void FileSystemBrowser::onListViewActivated(const QModelIndex &index) +{ + if (!index.isValid()) + return; + + QString name = m_model->fileName(index); + + if(name == "..") + { + setCurrentDirectory(m_model->fileInfo(index).absoluteFilePath()); + } + else if(m_model->isDir(index)) + { + QFileInfo info = m_model->fileInfo(index); + if(info.isExecutable() && info.isReadable()) + setCurrentDirectory(m_model->filePath(index)); + } +} + +void FileSystemBrowser::addToPlayList() +{ + foreach (QModelIndex index, m_listView->selectionModel()->selectedIndexes()) + { + if(!index.isValid()) + continue; + + QString name = m_model->fileName(index); + if(name == "..") + continue; + PlayListManager::instance()->selectedPlayList()->add(m_model->filePath(index)); + } +} + +void FileSystemBrowser::selectDirectory() +{ + QString dir = FileDialog::getExistingDirectory(qApp->activeWindow(), + tr("Select Directory"), m_model->rootPath()); + if(!dir.isEmpty()) + setCurrentDirectory(dir); +} + +void FileSystemBrowser::setCurrentDirectory(const QString &path) +{ + if(path.isEmpty()) + return; + + QModelIndex index = m_model->setRootPath(QDir(path).exists() ? path : QDir::homePath()); + if(index.isValid()) + { + m_listView->setRootIndex(index); + m_label->setText(QDir(m_model->rootPath()).dirName()); + } + else + m_label->clear(); +} diff --git a/src/plugins/Ui/qsui/filesystembrowser.h b/src/plugins/Ui/qsui/filesystembrowser.h new file mode 100644 index 000000000..debc02566 --- /dev/null +++ b/src/plugins/Ui/qsui/filesystembrowser.h @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright (C) 2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef FILESYSTEMBROWSER_H +#define FILESYSTEMBROWSER_H + +#include + +class QFileSystemModel; +class QModelIndex; +class QListView; + +namespace Utils { + class ElidingLabel; +} + + +/** + @author Ilya Kotov +*/ +class FileSystemBrowser : public QWidget +{ + Q_OBJECT +public: + explicit FileSystemBrowser(QWidget *parent = 0); + ~FileSystemBrowser(); + + void readSettings(); + +private slots: + void onListViewActivated(const QModelIndex &index); + void addToPlayList(); + void selectDirectory(); + +private: + void setCurrentDirectory(const QString &path); + bool m_update; + Utils::ElidingLabel *m_label; + QFileSystemModel *m_model; + QListView *m_listView; + +}; + +#endif // FILESYSTEMBROWSER_H diff --git a/src/plugins/Ui/qsui/forms/aboutqsuidialog.ui b/src/plugins/Ui/qsui/forms/aboutqsuidialog.ui new file mode 100644 index 000000000..3e53e1f95 --- /dev/null +++ b/src/plugins/Ui/qsui/forms/aboutqsuidialog.ui @@ -0,0 +1,104 @@ + + + AboutQSUIDialog + + + + 0 + 0 + 454 + 494 + + + + About QSUI + + + + 6 + + + 6 + + + 6 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + + + + + true + + + + + + + + Logo + QWidget +
logo.h
+ 1 +
+
+ + + + buttonBox + accepted() + AboutQSUIDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + AboutQSUIDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +
diff --git a/src/plugins/Ui/qsui/forms/hotkeyeditor.ui b/src/plugins/Ui/qsui/forms/hotkeyeditor.ui new file mode 100644 index 000000000..f2d49bd0c --- /dev/null +++ b/src/plugins/Ui/qsui/forms/hotkeyeditor.ui @@ -0,0 +1,68 @@ + + + HotkeyEditor + + + + 0 + 0 + 406 + 365 + + + + Shortcuts + + + + + + Qt::Horizontal + + + + 262 + 20 + + + + + + + + Change shortcut... + + + + + + + Reset + + + + + + + true + + + true + + + + Action + + + + + Shortcut + + + + + + + + + diff --git a/src/plugins/Ui/qsui/forms/mainwindow.ui b/src/plugins/Ui/qsui/forms/mainwindow.ui new file mode 100644 index 000000000..5a9eb2797 --- /dev/null +++ b/src/plugins/Ui/qsui/forms/mainwindow.ui @@ -0,0 +1,323 @@ + + + MainWindow + + + + 0 + 0 + 614 + 474 + + + + Qmmp + + + QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks|QMainWindow::VerticalTabs + + + + + 2 + + + 0 + + + + + Qt::StrongFocus + + + -1 + + + false + + + + + + + + + + 0 + 0 + 614 + 25 + + + + + &File + + + + + &Tools + + + + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + + + + + + + + Playback + + + + 16 + 16 + + + + TopToolBarArea + + + false + + + + + + 0 + 0 + + + + Progress + + + + 16 + 16 + + + + TopToolBarArea + + + false + + + + + + 0 + 0 + + + + + 79 + 50 + + + + Spectrum Analyzer + + + 8 + + + + + + + 130 + 41 + + + + Files + + + 1 + + + + + + + 0 + 0 + + + + Cover + + + 1 + + + + + + Playlists + + + 1 + + + + + + + :/images/previous.png + + + + Previous + + + + + + :/images/play.png + + + + Play + + + + + + :/images/pause.png + + + + Pause + + + + + + :/images/next.png + + + + Next + + + + + + :/images/stop.png + + + + Stop + + + + + &Add File + + + + + &Remove All + + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + + + + + &Exit + + + + + About + + + + + About Qt + + + + + &Select All + + + + + &Remove Selected + + + + + &Remove Unselected + + + + + Visualization + + + + + Settings + + + + + Rename Playlist + + + + + + QSUiTabWidget + QTabWidget +
qsuitabwidget.h
+ 1 +
+
+ + +
diff --git a/src/plugins/Ui/qsui/forms/popupsettings.ui b/src/plugins/Ui/qsui/forms/popupsettings.ui new file mode 100644 index 000000000..c59db2b72 --- /dev/null +++ b/src/plugins/Ui/qsui/forms/popupsettings.ui @@ -0,0 +1,251 @@ + + + PopupSettings + + + + 0 + 0 + 277 + 335 + + + + Popup Information Settings + + + + 6 + + + 6 + + + 6 + + + + + Template + + + + + + + 0 + 0 + + + + + + + + Qt::Horizontal + + + + 138 + 20 + + + + + + + + Reset + + + + + + + Insert + + + + + + + + + + Show cover + + + + + + + 0 + + + + + + + Cover size: + + + + + + + 32 + + + 128 + + + 1 + + + 16 + + + Qt::Horizontal + + + + + + + Transparency: + + + + + + + 90 + + + Qt::Horizontal + + + + + + + + 18 + 0 + + + + 0 + + + + + + + Delay: + + + + + + + 20 + + + 7000 + + + 500 + + + + + + + + 0 + 0 + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + ms + + + + + + + + + buttonBox + accepted() + PopupSettings + accept() + + + 281 + 286 + + + 62 + 299 + + + + + buttonBox + rejected() + PopupSettings + reject() + + + 281 + 286 + + + 95 + 299 + + + + + transparencySlider + valueChanged(int) + trasparencyLabel + setNum(int) + + + 258 + 251 + + + 282 + 251 + + + + + coverSizeSlider + valueChanged(int) + coverSizeLabel + setNum(int) + + + 258 + 223 + + + 282 + 223 + + + + + diff --git a/src/plugins/Ui/qsui/forms/qsuisettings.ui b/src/plugins/Ui/qsui/forms/qsuisettings.ui new file mode 100644 index 000000000..26b2790eb --- /dev/null +++ b/src/plugins/Ui/qsui/forms/qsuisettings.ui @@ -0,0 +1,1038 @@ + + + QSUISettings + + + + 0 + 0 + 463 + 483 + + + + Form + + + + + + 0 + + + + View + + + + + + Main Window + + + + + + Hide on close + + + + + + + Start hidden + + + + + + + + + Window title format: + + + + + + + + + + ... + + + + + + + + + + + + Song Display + + + + + + Show protocol + + + + + + + Show anchor + + + + + + + Show popup information + + + + + + + + + false + + + Edit template + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Single Column Mode + + + + + + Show song numbers + + + + + + + Show song lengths + + + + + + + false + + + Align song numbers + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Colors + + + + + + Analyzer Colors + + + + + + Analyzer #1: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + QFrame::Plain + + + + + + + Peaks: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + + + + + Analyzer #2: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + + + + + Background: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + + + + + Analyzer #3: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + Qt::Horizontal + + + + 10 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + Playlist Colors + + + + + + Use system colors + + + true + + + + + + + false + + + + 0 + + + + + Background #1: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + + + + + Normal text: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + + + + + Background #2: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + + + + + Current text: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + + + + + Highlighted background: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + + + + + Hightlighted text: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + + 20 + 20 + + + + QFrame::Box + + + QFrame::Plain + + + + + + + Group background: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + QFrame::Box + + + QFrame::Plain + + + + + + + Group text: + + + + + + + + 0 + 0 + + + + + 20 + 20 + + + + QFrame::Box + + + QFrame::Plain + + + + + + + Qt::Horizontal + + + + 66 + 68 + + + + + + + + Qt::Horizontal + + + + 40 + 43 + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 129 + + + + + + + + + Fonts + + + + + + Use system fonts + + + true + + + + + + + false + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Sunken + + + ??? + + + + + + + ... + + + + + + + + 0 + 0 + + + + Playlist: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + ... + + + + + + + + 0 + 0 + + + + Tab names: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Sunken + + + ??? + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Sunken + + + ??? + + + + + + + ... + + + + + + + + + Qt::Horizontal + + + + 108 + 20 + + + + + + + + Reset fonts + + + + + + + + + + 0 + 0 + + + + Column headers: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + + + Qt::Vertical + + + + 308 + 382 + + + + + + + + + Miscellaneous + + + + + + Tabs + + + + + + Show close buttons + + + + + + + Show tab list menu + + + + + + + Show 'New Playlist' button + + + + + + + + + + Qt::Vertical + + + + 20 + 267 + + + + + + + + + + + + + ColorWidget + QFrame +
colorwidget.h
+ 1 +
+
+ + + + numbersCheckBox + toggled(bool) + alignCheckBox + setEnabled(bool) + + + 154 + 220 + + + 184 + 276 + + + + + popupCheckBox + toggled(bool) + popupTemplateButton + setEnabled(bool) + + + 152 + 332 + + + 144 + 368 + + + + + systemFontsCheckBox + toggled(bool) + widget + setDisabled(bool) + + + 88 + 49 + + + 101 + 77 + + + + + plSystemColorsCheckBox + toggled(bool) + widget_2 + setDisabled(bool) + + + 107 + 196 + + + 189 + 237 + + + + +
diff --git a/src/plugins/Ui/qsui/forms/shortcutdialog.ui b/src/plugins/Ui/qsui/forms/shortcutdialog.ui new file mode 100644 index 000000000..77ffded82 --- /dev/null +++ b/src/plugins/Ui/qsui/forms/shortcutdialog.ui @@ -0,0 +1,132 @@ + + + ShortcutDialog + + + + 0 + 0 + 310 + 99 + + + + Change Shortcut + + + + 6 + + + 6 + + + 6 + + + + + Press the key combination you want to assign + + + + + + + Qt::NoFocus + + + true + + + + + + + Qt::NoFocus + + + Qt::NoContextMenu + + + Clear + + + + + + + Qt::Horizontal + + + + 106 + 20 + + + + + + + + Qt::NoFocus + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + ShortcutDialog + accept() + + + 212 + 70 + + + 192 + 269 + + + + + buttonBox + rejected() + ShortcutDialog + reject() + + + 212 + 70 + + + 246 + 214 + + + + + clearButton + clicked() + keyLineEdit + clear() + + + 195 + 22 + + + 113 + 25 + + + + + diff --git a/src/plugins/Ui/qsui/forms/toolbareditor.ui b/src/plugins/Ui/qsui/forms/toolbareditor.ui new file mode 100644 index 000000000..b13af57d7 --- /dev/null +++ b/src/plugins/Ui/qsui/forms/toolbareditor.ui @@ -0,0 +1,228 @@ + + + ToolBarEditor + + + + 0 + 0 + 524 + 419 + + + + ToolBar Editor + + + + 6 + + + 6 + + + 6 + + + + + QAbstractItemView::NoEditTriggers + + + false + + + true + + + QAbstractItemView::DragDrop + + + Qt::MoveAction + + + true + + + + 16 + 16 + + + + QListView::Free + + + + + + + Qt::Vertical + + + + 20 + 137 + + + + + + + + QAbstractItemView::NoEditTriggers + + + true + + + false + + + QAbstractItemView::DragDrop + + + Qt::MoveAction + + + true + + + + 16 + 16 + + + + QListView::Free + + + + + + + + + + 0 + 0 + + + + ... + + + true + + + + + + + ... + + + true + + + + + + + ... + + + true + + + + + + + + 0 + 0 + + + + ... + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 137 + + + + + + + + + + Reset + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + buttonBox + accepted() + ToolBarEditor + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + ToolBarEditor + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/plugins/Ui/qsui/hotkeyeditor.cpp b/src/plugins/Ui/qsui/hotkeyeditor.cpp new file mode 100644 index 000000000..ea76dc57e --- /dev/null +++ b/src/plugins/Ui/qsui/hotkeyeditor.cpp @@ -0,0 +1,100 @@ +/*************************************************************************** + * Copyright (C) 2011-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include "actionmanager.h" +#include "hotkeyeditor.h" +#include "shortcutdialog.h" +#include "shortcutitem.h" +#include "ui_hotkeyeditor.h" + +HotkeyEditor::HotkeyEditor(QWidget *parent) : QWidget(parent), m_ui(new Ui::HotkeyEditor) +{ + m_ui->setupUi(this); + loadShortcuts(); + m_ui->changeShortcutButton->setIcon(QIcon::fromTheme("configure")); +} + +HotkeyEditor::~HotkeyEditor() +{ + delete m_ui; +} + +void HotkeyEditor::on_changeShortcutButton_clicked() +{ + ShortcutItem *item = dynamic_cast (m_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()); + } +} + +void HotkeyEditor::on_resetShortcutsButton_clicked() +{ + if(QMessageBox::question(this, tr("Reset Shortcuts"), + tr("Do you want to restore default shortcuts?"), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) + { + ActionManager::instance()->resetShortcuts(); + loadShortcuts(); + } +} + +void HotkeyEditor::loadShortcuts() +{ + m_ui->shortcutTreeWidget->clear(); + //playback + QTreeWidgetItem *item = new QTreeWidgetItem (m_ui->shortcutTreeWidget, QStringList() << tr("Playback")); + for(int i = ActionManager::PLAY; i <= ActionManager::CLEAR_QUEUE; ++i) + new ShortcutItem(item, i); + item->setExpanded(true); + m_ui->shortcutTreeWidget->addTopLevelItem(item); + //view + item = new QTreeWidgetItem (m_ui->shortcutTreeWidget, QStringList() << tr("View")); + for(int i = ActionManager::WM_ALLWAYS_ON_TOP; i <= ActionManager::UI_BLOCK_TOOLBARS; ++i) + new ShortcutItem(item, i); + item->setExpanded(true); + m_ui->shortcutTreeWidget->addTopLevelItem(item); + //volume + item = new QTreeWidgetItem (m_ui->shortcutTreeWidget, QStringList() << tr("Volume")); + for(int i = ActionManager::VOL_ENC; i <= ActionManager::VOL_MUTE; ++i) + new ShortcutItem(item, i); + item->setExpanded(true); + m_ui->shortcutTreeWidget->addTopLevelItem(item); + //playlist + item = new QTreeWidgetItem (m_ui->shortcutTreeWidget, QStringList() << tr("Playlist")); + for(int i = ActionManager::PL_ADD_FILE; i <= ActionManager::PL_SHOW_HEADER; ++i) + new ShortcutItem(item, i); + item->setExpanded(true); + m_ui->shortcutTreeWidget->addTopLevelItem(item); + //misc + item = new QTreeWidgetItem (m_ui->shortcutTreeWidget, QStringList() << tr("Misc")); + for(int i = ActionManager::EQUALIZER; i <= ActionManager::QUIT; ++i) + new ShortcutItem(item, i); + item->setExpanded(true); + m_ui->shortcutTreeWidget->addTopLevelItem(item); + + m_ui->shortcutTreeWidget->resizeColumnToContents(0); + m_ui->shortcutTreeWidget->resizeColumnToContents(1); +} diff --git a/src/plugins/Ui/qsui/hotkeyeditor.h b/src/plugins/Ui/qsui/hotkeyeditor.h new file mode 100644 index 000000000..21a21301d --- /dev/null +++ b/src/plugins/Ui/qsui/hotkeyeditor.h @@ -0,0 +1,50 @@ +/*************************************************************************** + * Copyright (C) 2011-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef HOTKEYEDITOR_H +#define HOTKEYEDITOR_H + +#include + +namespace Ui { + class HotkeyEditor; +} + +/** + @author Ilya Kotov +*/ +class HotkeyEditor : public QWidget +{ + Q_OBJECT + +public: + explicit HotkeyEditor(QWidget *parent = 0); + virtual ~HotkeyEditor(); + +private slots: + void on_changeShortcutButton_clicked(); + void on_resetShortcutsButton_clicked(); + +private: + void loadShortcuts(); + Ui::HotkeyEditor *m_ui; +}; + +#endif // HOTKEYEDITOR_H diff --git a/src/plugins/Ui/qsui/inlines.h b/src/plugins/Ui/qsui/inlines.h new file mode 100644 index 000000000..39b81bd57 --- /dev/null +++ b/src/plugins/Ui/qsui/inlines.h @@ -0,0 +1,57 @@ +// Copyright (c) 2000-2001 Brad Hughes +// +// 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/qsui/keyboardmanager.cpp b/src/plugins/Ui/qsui/keyboardmanager.cpp new file mode 100644 index 000000000..cc480c8c8 --- /dev/null +++ b/src/plugins/Ui/qsui/keyboardmanager.cpp @@ -0,0 +1,315 @@ +/*************************************************************************** + * Copyright (C) 2011-2014 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "listwidget.h" +#include "keyboardmanager.h" + +KeyboardManager::KeyboardManager(QObject *parent) : + QObject(parent) +{ + m_listWidget = 0; + + addAction(Qt::Key_Up, SLOT(processUp())); + addAction(Qt::Key_Up + Qt::ShiftModifier, SLOT(processUp())); + addAction(Qt::Key_Up + Qt::AltModifier, SLOT(processUp())); + addAction(Qt::Key_Up + Qt::ControlModifier, SLOT(processUp())); + + addAction(Qt::Key_Down, SLOT(processDown())); + addAction(Qt::Key_Down + Qt::ShiftModifier, SLOT(processDown())); + addAction(Qt::Key_Down + Qt::AltModifier, SLOT(processDown())); + addAction(Qt::Key_Down + Qt::ControlModifier, SLOT(processDown())); + + addAction(Qt::Key_Return, SLOT(processEnter())); + addAction(Qt::Key_PageUp, SLOT(processPgUp())); + addAction(Qt::Key_PageUp + Qt::ShiftModifier, SLOT(processPgUp())); + addAction(Qt::Key_PageDown, SLOT(processPgDown())); + addAction(Qt::Key_PageDown + Qt::ShiftModifier, SLOT(processPgDown())); + addAction(Qt::Key_Home, SLOT(processHome())); + addAction(Qt::Key_Home + Qt::ShiftModifier, SLOT(processHome())); + addAction(Qt::Key_End, SLOT(processEnd())); + addAction(Qt::Key_End + Qt::ShiftModifier, SLOT(processEnd())); +} + +QList KeyboardManager::actions() +{ + return m_actions; +} + +void KeyboardManager::processUp() +{ + if(!m_listWidget) + return; + + int keys = qobject_cast(sender())->shortcut()[0]; + + QList rows = m_listWidget->model()->selectedIndexes(); + + if(rows.isEmpty()) + { + m_listWidget->model()->setSelected(m_listWidget->firstVisibleIndex(), true); + m_listWidget->setAnchorIndex(m_listWidget->firstVisibleIndex()); + return; + } + + if (!(keys & Qt::ShiftModifier || keys & Qt::AltModifier || keys & Qt::ControlModifier)) + { + m_listWidget->model()->clearSelection(); + m_listWidget->setAnchorIndex(-1); + } + + int first_visible = m_listWidget->firstVisibleIndex(); + int last_visible = m_listWidget->visibleRows() + first_visible - 1; + + int s = SELECT_NEXT; + + if(rows.last() < first_visible) + s = SELECT_TOP; + else if(rows.first() > last_visible) + s = SELECT_BOTTOM; + + if (keys & Qt::AltModifier) + { + if(rows.first() == 0) + return; + m_listWidget->model()->moveItems (rows.first(), rows.first() - 1); + m_listWidget->setAnchorIndex (rows.first() - 1); + } + else if(keys & Qt::ControlModifier) + { + m_listWidget->setAnchorIndex (qMax(m_listWidget->anchorIndex() - 1, 0)); + } + else + { + if(s == SELECT_TOP) + { + m_listWidget->model()->setSelected (first_visible, true); + m_listWidget->setAnchorIndex(first_visible); + } + else if(s == SELECT_BOTTOM) + { + m_listWidget->model()->setSelected (last_visible, true); + m_listWidget->setAnchorIndex(last_visible); + } + else if(rows.first() == 0) + { + m_listWidget->model()->setSelected (rows.first(), true); + m_listWidget->setAnchorIndex(rows.first()); + } + else if(rows.contains(m_listWidget->anchorIndex()) || m_listWidget->anchorIndex() < 0) + { + m_listWidget->model()->setSelected (rows.first() - 1, true); + m_listWidget->setAnchorIndex(rows.first() - 1); + } + else if(m_listWidget->anchorIndex() >= 0) + { + m_listWidget->model()->setSelected (m_listWidget->anchorIndex(), true); + } + } + + if(m_listWidget->anchorIndex() < first_visible) + { + m_listWidget->scroll (m_listWidget->firstVisibleIndex() - 1); + } +} + +void KeyboardManager::processDown() +{ + if(!m_listWidget) + return; + + int keys = qobject_cast(sender())->shortcut()[0]; + + QList rows = m_listWidget->model()->selectedIndexes(); + + if(rows.isEmpty()) + { + m_listWidget->model()->setSelected(m_listWidget->firstVisibleIndex(), true); + m_listWidget->setAnchorIndex(m_listWidget->firstVisibleIndex()); + return; + } + + if (!(keys & Qt::ShiftModifier || keys & Qt::AltModifier || keys & Qt::ControlModifier)) + { + m_listWidget->model()->clearSelection(); + m_listWidget->setAnchorIndex(-1); + } + + int first_visible = m_listWidget->firstVisibleIndex(); + int last_visible = m_listWidget->visibleRows() + first_visible - 1; + + int s = SELECT_NEXT; + + if(rows.last() < first_visible) + s = SELECT_TOP; + else if(rows.first() > last_visible) + s = SELECT_BOTTOM; + + if (keys & Qt::AltModifier) + { + if(rows.last() == m_listWidget->model()->count() - 1) + return; + m_listWidget->model()->moveItems (rows.last(), rows.last() + 1); + m_listWidget->setAnchorIndex (rows.last() + 1); + } + else if(keys & Qt::ControlModifier) + { + m_listWidget->setAnchorIndex (qMin(m_listWidget->anchorIndex() + 1, + m_listWidget->model()->count() - 1)); + } + else + { + if(s == SELECT_TOP) + { + m_listWidget->model()->setSelected (first_visible, true); + m_listWidget->setAnchorIndex(first_visible); + } + else if(s == SELECT_BOTTOM) + { + m_listWidget->model()->setSelected (last_visible, true); + m_listWidget->setAnchorIndex(last_visible); + } + else if(rows.last() == m_listWidget->model()->count() - 1) + { + m_listWidget->model()->setSelected (rows.last(), true); + m_listWidget->setAnchorIndex(rows.last()); + } + else if(rows.contains(m_listWidget->anchorIndex()) || m_listWidget->anchorIndex() < 0) + { + m_listWidget->model()->setSelected (rows.last() + 1, true); + m_listWidget->setAnchorIndex(rows.last() + 1); + } + else if(m_listWidget->anchorIndex() >= 0) + { + m_listWidget->model()->setSelected (m_listWidget->anchorIndex(), true); + } + } + + if(m_listWidget->anchorIndex() > last_visible) + { + m_listWidget->scroll (m_listWidget->firstVisibleIndex() + 1); + } +} + +void KeyboardManager::setListWidget(ListWidget *listWidget) +{ + m_listWidget = listWidget; +} + +void KeyboardManager::processEnter() +{ + if(!m_listWidget) + return; + QList rows = m_listWidget->model()->selectedIndexes(); + if(rows.isEmpty()) + return; + SoundCore::instance()->stop(); + PlayListManager::instance()->activatePlayList(m_listWidget->model()); + m_listWidget->model()->setCurrent (rows.first()); + MediaPlayer::instance()->play(); +} + +void KeyboardManager::processPgUp() +{ + if(!m_listWidget) + return; + + int first = m_listWidget->firstVisibleIndex(); + int offset = qMax(m_listWidget->firstVisibleIndex() - m_listWidget->visibleRows(), 0); + m_listWidget->scroll (offset); + + m_listWidget->model()->clearSelection(); + if(m_listWidget->firstVisibleIndex() == first) + m_listWidget->setAnchorIndex(0); + else + m_listWidget->setAnchorIndex(m_listWidget->firstVisibleIndex() + m_listWidget->visibleRows()/2); + m_listWidget->model()->setSelected(m_listWidget->anchorIndex(), true); +} + +void KeyboardManager::processPgDown() +{ + if(!m_listWidget) + return; + + int first = m_listWidget->firstVisibleIndex(); + int offset = qMin(first + m_listWidget->visibleRows(), + m_listWidget->model()->count() - 1); + m_listWidget->scroll (offset); + + m_listWidget->model()->clearSelection(); + if(m_listWidget->firstVisibleIndex() == first) + m_listWidget->setAnchorIndex(m_listWidget->model()->count() - 1); + else + m_listWidget->setAnchorIndex(m_listWidget->firstVisibleIndex() + m_listWidget->visibleRows()/2); + m_listWidget->model()->setSelected(m_listWidget->anchorIndex(), true); +} + +void KeyboardManager::processHome() +{ + if(!m_listWidget) + return; + int keys = qobject_cast(sender())->shortcut()[0]; + m_listWidget->scroll (0); + if(keys & Qt::ShiftModifier) + { + m_listWidget->model()->setSelected (0, m_listWidget->anchorIndex(), true); + } + else if(m_listWidget->model()->count() != 0) + { + m_listWidget->model()->clearSelection(); + m_listWidget->setAnchorIndex(0); + m_listWidget->model()->setSelected(0, true); + } +} + +void KeyboardManager::processEnd() +{ + if(!m_listWidget) + return; + + int keys = qobject_cast(sender())->shortcut()[0]; + int scroll_to = m_listWidget->model()->count() - m_listWidget->visibleRows(); + if(scroll_to >= 0) + m_listWidget->scroll(scroll_to); + + if(keys & Qt::ShiftModifier) + { + m_listWidget->model()->setSelected (m_listWidget->anchorIndex(), m_listWidget->model()->count() - 1, true); + } + else if(m_listWidget->model()->count() > 0) + { + m_listWidget->model()->clearSelection(); + m_listWidget->setAnchorIndex(m_listWidget->model()->count() - 1); + m_listWidget->model()->setSelected(m_listWidget->anchorIndex(), true); + } +} + +void KeyboardManager::addAction(int keys, const char *method) +{ + QAction *action = new QAction(this); + action->setShortcut(QKeySequence(keys)); + connect(action, SIGNAL(triggered()), method); + m_actions << action; +} diff --git a/src/plugins/Ui/qsui/keyboardmanager.h b/src/plugins/Ui/qsui/keyboardmanager.h new file mode 100644 index 000000000..d1c2a428c --- /dev/null +++ b/src/plugins/Ui/qsui/keyboardmanager.h @@ -0,0 +1,65 @@ +/*************************************************************************** + * Copyright (C) 2011-2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef KEYBOARDMANAGER_H +#define KEYBOARDMANAGER_H + +#include +#include + +class QAction; +class ListWidget; + +/** + @author Ilya Kotov +*/ +class KeyboardManager : public QObject +{ + Q_OBJECT +public: + explicit KeyboardManager(QObject *parent = 0); + + QList actions(); + void setListWidget(ListWidget *listWidget); + +private slots: + void processUp(); + void processDown(); + void processEnter(); + void processPgUp(); + void processPgDown(); + void processHome(); + void processEnd(); + +private: + QList m_actions; + ListWidget *m_listWidget; + void addAction(int keys, const char * method); + + enum SelectMode + { + SELECT_TOP = 0, + SELECT_BOTTOM, + SELECT_NEXT + }; + +}; + +#endif // KEYBOARDMANAGER_H diff --git a/src/plugins/Ui/qsui/listwidget.cpp b/src/plugins/Ui/qsui/listwidget.cpp new file mode 100644 index 000000000..8f2c9bf97 --- /dev/null +++ b/src/plugins/Ui/qsui/listwidget.cpp @@ -0,0 +1,686 @@ +/*************************************************************************** + * Copyright (C) 2006-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "listwidget.h" +#include "playlistheader.h" +#include "actionmanager.h" +#include "popupwidget.h" + +#define INVALID_INDEX -1 + +ListWidget::ListWidget(PlayListModel *model, QWidget *parent) + : QWidget(parent) +{ + setFocusPolicy(Qt::StrongFocus); + m_popupWidget = 0; + m_ui_settings = QmmpUiSettings::instance(); + m_menu = 0; + m_model = model; + m_timer = new QTimer(this); + m_timer->setInterval(50); + + m_header = new PlayListHeader(this); + m_scrollBar = new QScrollBar(Qt::Vertical, this); + m_hslider = new QScrollBar(Qt::Horizontal, this); + m_hslider->setPageStep(50); + m_update = false; + m_drop_index = INVALID_INDEX; + m_scroll_direction = NONE; + m_prev_y = 0; + m_anchor_index = INVALID_INDEX; + m_pressed_index = INVALID_INDEX; + m_first = 0; + m_row_count = 0; + m_select_on_release = false; + + setAcceptDrops(true); + setMouseTracking(true); + + readSettings(); + connect(m_ui_settings, SIGNAL(repeatableTrackChanged(bool)), SLOT(updateRepeatIndicator())); + connect(m_timer, SIGNAL(timeout()), SLOT(autoscroll())); + connect(m_scrollBar, SIGNAL(valueChanged (int)), SLOT(scroll(int))); + connect(m_hslider, SIGNAL(valueChanged(int)), m_header, SLOT(scroll(int))); + connect(m_hslider, SIGNAL(valueChanged(int)), this, SLOT(update())); + connect(m_model, SIGNAL(currentVisibleRequest()), SLOT(scrollToCurrent())); + connect(m_model, SIGNAL(listChanged(int)), SLOT(updateList(int))); + connect(m_model, SIGNAL(sortingByColumnFinished(int,bool)), m_header, SLOT(showSortIndicator(int,bool))); + SET_ACTION(ActionManager::PL_SHOW_HEADER, this, SLOT(readSettings())); +} + +ListWidget::~ListWidget() +{ + qDeleteAll(m_rows); + m_rows.clear(); +} + +void ListWidget::readSettings() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + m_show_protocol = settings.value ("pl_show_protocol", false).toBool(); + bool show_popup = settings.value("pl_show_popup", false).toBool(); + + m_header->readSettings(); + m_header->setVisible(ACTION(ActionManager::PL_SHOW_HEADER)->isChecked()); + m_header->setGeometry(0,0,width(), m_header->requiredHeight()); + + if (m_update) + { + m_drawer.readSettings(); + updateList(PlayListModel::STRUCTURE); + if(m_popupWidget) + { + m_popupWidget->deleteLater(); + m_popupWidget = 0; + } + } + else + { + m_update = true; + } + + if(show_popup) + m_popupWidget = new PlayListPopup::PopupWidget(this); +} + +int ListWidget::visibleRows() const +{ + return m_row_count; +} + +int ListWidget::firstVisibleIndex() const +{ + return m_first; +} + +int ListWidget::anchorIndex() const +{ + return m_anchor_index; +} + +void ListWidget::setAnchorIndex(int index) +{ + m_anchor_index = index; + updateList(PlayListModel::SELECTION); +} + +QMenu *ListWidget::menu() +{ + return m_menu; +} + +void ListWidget::setMenu(QMenu *menu) +{ + m_menu = menu; +} + +PlayListModel *ListWidget::model() +{ + Q_ASSERT(m_model); + return m_model; +} + +void ListWidget::paintEvent(QPaintEvent *) +{ + QPainter painter(this); + m_drawer.fillBackground(&painter, width(), height()); +#if QT_VERSION >= 0x040700 + painter.setLayoutDirection(Qt::LayoutDirectionAuto); +#endif + bool rtl = (layoutDirection() == Qt::RightToLeft); + int scroll_bar_width = m_scrollBar->isVisibleTo(this) ? m_scrollBar->sizeHint().width() : 0; + + painter.setClipRect(5,0,width() - scroll_bar_width - 9, height()); + painter.translate(rtl ? m_header->offset() : -m_header->offset(), 0); + + for (int i = 0; i < m_rows.size(); ++i ) + { + m_drawer.drawBackground(&painter, m_rows[i], i); + + if(m_rows[i]->flags & ListWidgetRow::GROUP) + { + m_drawer.drawSeparator(&painter, m_rows[i], rtl); + continue; + } + + m_drawer.drawTrack(&painter, m_rows[i], rtl); + } + //draw drop line + if(m_drop_index != INVALID_INDEX) + { + m_drawer.drawDropLine(&painter, m_drop_index - m_first, width(), + m_header->isVisible() ? m_header->height() : 0); + } +} + +void ListWidget::mouseDoubleClickEvent (QMouseEvent *e) +{ + int y = e->y(); + int index = indexAt(y); + if (INVALID_INDEX != index) + { + m_model->setCurrent(index); + MediaPlayer *player = MediaPlayer::instance(); + player->playListManager()->selectPlayList(m_model); + player->playListManager()->activatePlayList(m_model); + player->stop(); + player->play(); + emit selectionChanged(); + update(); + } +} + +void ListWidget::mousePressEvent(QMouseEvent *e) +{ + if(m_popupWidget) + m_popupWidget->hide(); + + int index = indexAt(e->y()); + + if (INVALID_INDEX != index && m_model->count() > index) + { + m_pressed_index = index; + if(e->button() == Qt::RightButton) + { + if(!m_model->isSelected(index)) + { + m_anchor_index = m_pressed_index; + m_model->clearSelection(); + m_model->setSelected(index, true); + } + if(m_model->isGroup(index) && m_model->selectedTracks().isEmpty()) + { + m_anchor_index = m_pressed_index; + PlayListGroup *group = m_model->group(index); + m_model->setSelected(group->tracks()); + } + QWidget::mousePressEvent(e); + return; + } + + if (m_model->isSelected(index) && (e->modifiers() == Qt::NoModifier)) + { + m_select_on_release = true; + QWidget::mousePressEvent(e); + return; + } + + if ((Qt::ShiftModifier & e->modifiers())) + { + int prev_anchor_index = m_anchor_index; + m_anchor_index = m_pressed_index; + m_model->setSelected(m_pressed_index, prev_anchor_index, true); + } + else //ShiftModifier released + { + m_anchor_index = m_pressed_index; + if ((Qt::ControlModifier & e->modifiers())) + { + m_model->setSelected(index, !m_model->isSelected(index)); + } + else //ControlModifier released + { + m_model->clearSelection(); + m_model->setSelected(index, true); + } + + } + update(); + } + QWidget::mousePressEvent(e); +} + +void ListWidget::resizeEvent(QResizeEvent *e) +{ + m_header->setGeometry(0,0,width(), m_header->requiredHeight()); + if(e->oldSize().height() < 10) + updateList(PlayListModel::STRUCTURE | PlayListModel::CURRENT); //recenter to current on first resize + else + updateList(PlayListModel::STRUCTURE); + QWidget::resizeEvent(e); +} + +void ListWidget::wheelEvent (QWheelEvent *e) +{ + if(m_hslider->underMouse()) + return; + + if (m_model->count() <= m_row_count) + return; + if ((m_first == 0 && e->delta() > 0) || + ((m_first == m_model->count() - m_row_count) && 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_row_count) + m_first = m_model->count() - m_row_count; + + updateList(PlayListModel::STRUCTURE); +} + +void ListWidget::showEvent(QShowEvent *) +{ + if(!m_rows.isEmpty()) + updateList(PlayListModel::METADATA); +} + +bool ListWidget::event (QEvent *e) +{ + if(m_popupWidget) + { + if(e->type() == QEvent::ToolTip) + { + QHelpEvent *helpEvent = (QHelpEvent *) e; + int index = indexAt(helpEvent->y()); + if(index < 0 || !m_model->isTrack(index)) + { + m_popupWidget->deactivate(); + return QWidget::event(e); + } + e->accept(); + m_popupWidget->prepare(m_model->track(index), helpEvent->globalPos()); + return true; + } + else if(e->type() == QEvent::Leave) + m_popupWidget->deactivate(); + } + return QWidget::event(e); +} + +void ListWidget::updateList(int flags) +{ + m_hslider->setVisible(m_header->maxScrollValue() > 0); + m_hslider->setRange(0, m_header->maxScrollValue()); + m_hslider->setValue(m_header->offset()); + + if(updateRowCount()) + flags |= PlayListModel::STRUCTURE; + + if(flags & PlayListModel::CURRENT) + recenterCurrent(); + + QList items; + + if(flags & PlayListModel::STRUCTURE || flags & PlayListModel::CURRENT) + { + if(m_row_count >= m_model->count()) + { + m_first = 0; + m_scrollBar->setMaximum(0); + m_scrollBar->setValue(0); + emit positionChanged(0,0); + } + else if(m_first + m_row_count >= m_model->count()) + { + m_first = qMax(0, m_model->count() - m_row_count); + m_scrollBar->setMaximum(m_model->count() - m_row_count); + m_scrollBar->setValue(m_first); + emit positionChanged(m_first, m_first); + } + else + { + m_scrollBar->setMaximum(m_model->count() - m_row_count); + m_scrollBar->setValue(m_first); + emit positionChanged(m_first, m_model->count() - m_row_count); + } + + items = m_model->mid(m_first, m_row_count); + + while(m_rows.count() < qMin(m_row_count, items.count())) + m_rows << new ListWidgetRow; + while(m_rows.count() > qMin(m_row_count, items.count())) + delete m_rows.takeFirst(); + + m_scrollBar->setVisible(m_model->count() > m_row_count); + } + else + { + items = m_model->mid(m_first, m_row_count); + } + + if(flags & PlayListModel::STRUCTURE) + m_header->hideSortIndicator(); + + if(flags & PlayListModel::STRUCTURE || flags & PlayListModel::METADATA) + { + //song numbers width + m_drawer.calculateNumberWidth(m_model->trackCount()); + m_drawer.setSingleColumnMode(m_model->columnCount() == 1); + m_header->setNumberWidth(m_drawer.numberWidth()); + } + + updateScrollBars(); + + int scroll_bar_width = m_scrollBar->isVisibleTo(this) ? m_scrollBar->sizeHint().width() : 0; + int trackStateColumn = m_header->trackStateColumn(); + int rowWidth = width() + m_header->maxScrollValue() - 10 - scroll_bar_width; + bool rtl = layoutDirection() == Qt::RightToLeft; + m_header->setScrollBarWidth(scroll_bar_width); + + for(int i = 0; i < items.count(); ++i) + { + ListWidgetRow *row = m_rows[i]; + row->autoResize = m_header->hasAutoResizeColumn(); + row->trackStateColumn = trackStateColumn; + items[i]->isSelected() ? row->flags |= ListWidgetRow::SELECTED : + row->flags &= ~ListWidgetRow::SELECTED; + + i == (m_anchor_index - m_first) ? row->flags |= ListWidgetRow::ANCHOR : + row->flags &= ~ListWidgetRow::ANCHOR; + + if(flags == PlayListModel::SELECTION) + continue; + + if(rtl) + { + row->rect = QRect(width() - 5 - rowWidth, (m_header->isVisibleTo(this) ? m_header->height() : 0) + i * m_drawer.rowHeight(), + rowWidth, m_drawer.rowHeight() - 1); + } + else + { + row->rect = QRect(5, (m_header->isVisibleTo(this) ? m_header->height() : 0) + i * m_drawer.rowHeight(), + rowWidth, m_drawer.rowHeight() - 1); + } + + row->titles = items[i]->formattedTitles(); + row->sizes = m_header->sizes(); + + (m_first + i) == m_model->currentIndex() ? row->flags |= ListWidgetRow::CURRENT : + row->flags &= ~ListWidgetRow::CURRENT; + + if(items[i]->isGroup()) + { + row->flags |= ListWidgetRow::GROUP; + row->number = -1; + row->length.clear(); + } + else + { + row->flags &= ~ListWidgetRow::GROUP; + row->number = items.at(i)->trackIndex() + 1; + row->length = items[i]->formattedLength(); + row->extraString = getExtraString(m_first + i); + } + m_drawer.prepareRow(row); //elide titles + } + update(); +} + +void ListWidget::autoscroll() +{ + SimpleSelection sel = m_model->getSelection(m_pressed_index); + 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_row_count; + (m_first + m_row_count < m_model->count()) ? m_first ++ : m_first; + m_model->moveItems(m_pressed_index,row); + m_pressed_index = row; + } + else if(m_scroll_direction == TOP && m_first > 0) + { + m_first--; + m_model->moveItems(m_pressed_index, m_first); + m_pressed_index = m_first; + } +} + +void ListWidget::updateRepeatIndicator() +{ + updateList(PlayListModel::CURRENT | PlayListModel::STRUCTURE); +} + +void ListWidget::scrollToCurrent() +{ + updateList(PlayListModel::CURRENT | PlayListModel::STRUCTURE); +} + +void ListWidget::scroll(int sc) +{ + if (m_model->count() <= m_row_count) + return; + m_first = sc; //*(m_model->count() - m_rows)/99; + updateList(PlayListModel::STRUCTURE); +} + +void ListWidget::updateSkin() +{ + m_drawer.loadSystemColors(); + 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 list_urls = event->mimeData()->urls(); + event->acceptProposedAction(); + QApplication::restoreOverrideCursor(); + + int index = indexAt(event->pos().y()); + if(index == INVALID_INDEX) + { + index = qMin(m_first + m_row_count, m_model->count()); + } + m_model->insert(index, list_urls); + } + m_drop_index = INVALID_INDEX; +} + +void ListWidget::dragLeaveEvent(QDragLeaveEvent *) +{ + m_drop_index = INVALID_INDEX; + update(); +} + +void ListWidget::dragMoveEvent(QDragMoveEvent *event) +{ + int index = indexAt(event->pos().y()); + if(index == INVALID_INDEX) + index = qMin(m_first + m_row_count, m_model->count()); + if(index != m_drop_index) + { + m_drop_index = index; + update(); + } +} + +const QString ListWidget::getExtraString(int i) +{ + QString extra_string; + + PlayListTrack *track = m_model->track(i); + if(!track) + return extra_string; + + if (m_show_protocol && track->url().contains("://")) + extra_string = "[" + track->url().split("://").at(0) + "]"; + + if (m_model->isQueued(track)) + { + int index = m_model->queuedIndex(track); + extra_string += "|"+QString::number(index + 1)+"|"; + } + + if(m_model->currentIndex() == i && m_ui_settings->isRepeatableTrack()) + extra_string += "|R|"; + else if(m_model->isStopAfter(track)) + extra_string += "|S|"; + + return extra_string.trimmed(); //remove white space +} + +bool ListWidget::updateRowCount() +{ + int h = height(); + if(m_header->isVisibleTo(this)) + h -= m_header->requiredHeight(); + if(m_hslider->isVisibleTo(this)) + h -= m_hslider->height(); + int row_count = qMax(0, h / m_drawer.rowHeight()); + if(m_row_count != row_count) + { + m_row_count = row_count; + return true; + } + return false; +} + +void ListWidget::updateScrollBars() +{ + bool rtl = layoutDirection() == Qt::RightToLeft; + + int vslider_width = m_scrollBar->isVisibleTo(this) ? m_scrollBar->sizeHint().width() : 0; + int hslider_height = m_hslider->isVisibleTo(this) ? m_hslider->sizeHint().height() : 0; + + if(rtl) + { + m_scrollBar->setGeometry(0, 0, m_scrollBar->sizeHint().width(), height() - hslider_height); + m_hslider->setGeometry(vslider_width, height() - m_hslider->sizeHint().height(), + width() - vslider_width, m_hslider->sizeHint().height()); + } + else + { + m_scrollBar->setGeometry(width() - m_scrollBar->sizeHint().width(), 0, + m_scrollBar->sizeHint().width(), height() - hslider_height); + m_hslider->setGeometry(0, height() - m_hslider->sizeHint().height(), width() - vslider_width, + m_hslider->sizeHint().height()); + } +} + +void ListWidget::mouseMoveEvent(QMouseEvent *e) +{ + if(e->buttons() == Qt::LeftButton) + { + 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 index = indexAt(e->y()); + + if (INVALID_INDEX != index) + { + m_anchor_index = index; + SimpleSelection sel = m_model->getSelection(m_pressed_index); + 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_row_count) + return; + } + m_model->moveItems(m_pressed_index,index); + + m_prev_y = e->y(); + m_pressed_index = index; + } + } + else if(m_popupWidget) + { + int index = indexAt(e->y()); + if(index < 0 || !m_model->isTrack(index) || m_popupWidget->url() != m_model->track(index)->url()) + m_popupWidget->deactivate(); + } +} + +void ListWidget::mouseReleaseEvent(QMouseEvent *e) +{ + if (m_select_on_release) + { + m_model->clearSelection(); + m_model->setSelected(m_pressed_index,true); + m_anchor_index = m_pressed_index; + m_select_on_release = false; + } + m_pressed_index = INVALID_INDEX; + m_scroll_direction = NONE; + m_timer->stop(); + QWidget::mouseReleaseEvent(e); +} + +int ListWidget::indexAt(int y) const +{ + y -= m_header->isVisible() ? m_header->height() : 0; + for (int i = 0; i < qMin(m_row_count, m_model->count() - m_first); ++i) + { + if ((y >= i * m_drawer.rowHeight()) && (y <= (i+1) * m_drawer.rowHeight())) + return m_first + i; + } + return INVALID_INDEX; +} + +void ListWidget::contextMenuEvent(QContextMenuEvent * event) +{ + if (menu()) + menu()->exec(event->globalPos()); +} + +void ListWidget::recenterCurrent() +{ + if (m_row_count) + { + if (m_first + m_row_count < m_model->currentIndex() + 1) + m_first = qMin(m_model->count() - m_row_count, + m_model->currentIndex() - m_row_count/2); + else if (m_first > m_model->currentIndex()) + m_first = qMax (m_model->currentIndex() - m_row_count/2, 0); + } +} diff --git a/src/plugins/Ui/qsui/listwidget.h b/src/plugins/Ui/qsui/listwidget.h new file mode 100644 index 000000000..2e8986764 --- /dev/null +++ b/src/plugins/Ui/qsui/listwidget.h @@ -0,0 +1,139 @@ +/*************************************************************************** + * Copyright (C) 2006-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef LISTWIDGET_H +#define LISTWIDGET_H + +#include +#include +#include +#include +#include "listwidgetdrawer.h" + +class QFont; +class QFontMetrics; +class QMenu; +class QAction; +class QTimer; +class QScrollBar; +class PlayListModel; +class PlayListItem; +class QmmpUiSettings; +class PlayListHeader; +namespace PlayListPopup{ +class PopupWidget; +} + +/** + @author Ilya Kotov +*/ +class ListWidget : public QWidget +{ + Q_OBJECT +public: + ListWidget(PlayListModel *model, QWidget *parent = 0); + + ~ListWidget(); + + /*! + * Returns count of currently visible rows. + */ + int visibleRows() const; + /*! + * Returns index of the first visible item. + */ + int firstVisibleIndex() const; + + int anchorIndex() const; + void setAnchorIndex(int index); + QMenu *menu(); + void setMenu(QMenu *menu); + PlayListModel *model(); + +public slots: + void readSettings(); + void updateList(int flags); + void scroll(int); //0-99 + void recenterCurrent(); + +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 *); + void showEvent(QShowEvent *); + int indexAt(int)const; + void dragEnterEvent(QDragEnterEvent *event); + void dropEvent(QDropEvent *event); + void dragLeaveEvent(QDragLeaveEvent *); + void dragMoveEvent(QDragMoveEvent *event); + void contextMenuEvent (QContextMenuEvent * event); + bool event (QEvent *e); + +private slots: + void updateSkin(); + void autoscroll(); + void updateRepeatIndicator(); + void scrollToCurrent(); + +private: + enum ScrollDirection + { + NONE = 0,TOP,DOWN + }; + /*! + * Returns string with queue number or(and) repeate flag for the item number \b i. + */ + const QString getExtraString(int i); + + bool updateRowCount(); + void updateScrollBars(); + + bool m_update; + int m_pressed_index; + QMenu *m_menu; + PlayListModel *m_model; + int m_row_count, m_first; + int m_anchor_index; + /*! + * 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; + int m_drop_index; + QList m_rows; + QmmpUiSettings *m_ui_settings; + PlayListPopup::PopupWidget *m_popupWidget; + QTimer *m_timer; + QScrollBar *m_scrollBar; + ListWidgetDrawer m_drawer; + PlayListHeader *m_header; + QScrollBar *m_hslider; +}; + +#endif diff --git a/src/plugins/Ui/qsui/listwidgetdrawer.cpp b/src/plugins/Ui/qsui/listwidgetdrawer.cpp new file mode 100644 index 000000000..701cae5cf --- /dev/null +++ b/src/plugins/Ui/qsui/listwidgetdrawer.cpp @@ -0,0 +1,429 @@ +/*************************************************************************** + * Copyright (C) 2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include "listwidgetdrawer.h" + +// |= number=|=row1=|=row2=|=extra= duration=| + +ListWidgetDrawer::ListWidgetDrawer() +{ + m_header_model = PlayListManager::instance()->headerModel(); + m_update = false; + m_show_anchor = false; + m_show_number = false; + m_align_numbres = false; + m_show_lengths = false; + m_use_system_colors = false; + m_single_column = true; + m_row_height = 0; + m_number_width = 0; + m_padding = 0; + m_metrics = 0; + m_extra_metrics = 0; + m_bold_metrics = 0; + readSettings(); +} + +ListWidgetDrawer::~ListWidgetDrawer() +{ + if(m_metrics) + delete m_metrics; + if(m_extra_metrics) + delete m_extra_metrics; + if(m_bold_metrics) + delete m_bold_metrics; +} + +void ListWidgetDrawer::readSettings() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + m_show_anchor = settings.value("pl_show_anchor", false).toBool(); + m_show_number = settings.value ("pl_show_numbers", true).toBool(); + m_show_lengths = settings.value ("pl_show_lengths", true).toBool(); + m_align_numbres = settings.value ("pl_align_numbers", false).toBool(); + m_font = qApp->font("QAbstractItemView"); + + if(!settings.value("use_system_fonts", true).toBool()) + m_font.fromString(settings.value("pl_font", m_font.toString()).toString()); + + m_extra_font = m_font; + m_extra_font.setPointSize(m_font.pointSize() - 1); + m_use_system_colors = settings.value("pl_system_colors", true).toBool(); + loadSystemColors(); + + if(!m_use_system_colors) + { + m_normal_bg.setNamedColor(settings.value("pl_bg1_color", m_normal_bg.name()).toString()); + m_alternate.setNamedColor(settings.value("pl_bg2_color", m_alternate.name()).toString()); + m_selected_bg.setNamedColor(settings.value("pl_highlight_color", m_selected_bg.name()).toString()); + m_normal.setNamedColor(settings.value("pl_normal_text_color", m_normal.name()).toString()); + m_current.setNamedColor(settings.value("pl_current_text_color",m_current.name()).toString()); + m_highlighted.setNamedColor(settings.value("pl_hl_text_color",m_highlighted.name()).toString()); + m_group_bg.setNamedColor(settings.value("pl_group_bg", m_group_bg.name()).toString()); + m_group_alt_bg = m_group_bg; + m_group_text.setNamedColor(settings.value("pl_group_text", m_group_text.name()).toString()); + } + + if (m_update) + { + delete m_metrics; + delete m_extra_metrics; + delete m_bold_metrics; + } + m_update = true; + m_metrics = new QFontMetrics(m_font); + m_extra_metrics = new QFontMetrics(m_extra_font); + m_font.setBold(true); + m_bold_metrics = new QFontMetrics(m_font); + m_font.setBold(false); + m_padding = m_metrics->width("9")/2; + m_row_height = m_metrics->lineSpacing() + 1; +} + +void ListWidgetDrawer::loadSystemColors() +{ + m_normal = qApp->palette().color(QPalette::Text); + m_alternate = qApp->palette().color(QPalette::AlternateBase); + m_current = qApp->palette().color(QPalette::Text); + m_highlighted = qApp->palette().color(QPalette::HighlightedText); + m_normal_bg = qApp->palette().color(QPalette::Base); + m_selected_bg = qApp->palette().color(QPalette::Highlight); + m_group_bg = m_normal_bg; + m_group_alt_bg = m_alternate, + m_group_text = m_normal; +} + +int ListWidgetDrawer::rowHeight() const +{ + return m_row_height; +} + +int ListWidgetDrawer::numberWidth() const +{ + return m_number_width; +} + +void ListWidgetDrawer::calculateNumberWidth(int count) +{ + //song numbers width + if(m_show_number && m_align_numbres && count) + m_number_width = m_bold_metrics->width("9") * QString::number(count).size(); + else + m_number_width = 0; +} + +void ListWidgetDrawer::setSingleColumnMode(int enabled) +{ + m_single_column = enabled; +} + +void ListWidgetDrawer::prepareRow(ListWidgetRow *row) +{ + if(m_number_width && m_single_column) + row->numberColumnWidth = m_number_width + 2 * m_padding; + else + row->numberColumnWidth = 0; + + if(row->flags & ListWidgetRow::GROUP) + { + row->titles[0] = m_metrics->elidedText (row->titles[0], Qt::ElideRight, + row->rect.width() - m_number_width - 12 - 70); + return; + } + + QFontMetrics *metrics = (row->flags & ListWidgetRow::CURRENT) ? m_bold_metrics : m_metrics; + + if(row->titles.count() == 1) + { + if(m_show_number && !m_align_numbres) + row->titles[0].prepend(QString("%1").arg(row->number)+". "); + + if((m_show_lengths && !row->length.isEmpty()) || !row->extraString.isEmpty()) + row->lengthColumnWidth = m_padding; + else + row->lengthColumnWidth = 0; + + if(m_show_lengths && !row->length.isEmpty()) + row->lengthColumnWidth += metrics->width(row->length) + m_padding; + + if(!row->extraString.isEmpty()) + row->lengthColumnWidth += m_extra_metrics->width(row->extraString) + m_padding; + } + + //elide title + int visible_width = row->rect.width() - row->lengthColumnWidth - row->numberColumnWidth; + + if(row->titles.count() == 1 && !row->lengthColumnWidth) + { + row->titles[0] = metrics->elidedText (row->titles[0], Qt::ElideRight, visible_width - 2 * m_padding); + return; + } + else if(row->titles.count() == 1) + { + row->titles[0] = metrics->elidedText (row->titles[0], Qt::ElideRight, visible_width - m_padding); + return; + } + + for(int i = 0; i < row->titles.count(); ++i) + { + int size = row->sizes[i]; + if(i == row->trackStateColumn && !row->extraString.isEmpty()) + { + int text_size = qMax(0, size - 3 * m_padding - m_extra_metrics->width(row->extraString)); + row->titles[i] = metrics->elidedText (row->titles[i], Qt::ElideRight, text_size); + row->extraString = m_extra_metrics->elidedText(row->extraString, Qt::ElideRight, + size - 3 * m_padding - metrics->width(row->titles[i])); + } + else + { + row->titles[i] = metrics->elidedText (row->titles[i], Qt::ElideRight, size - 2 * m_padding); + } + visible_width -= size; + } +} + +void ListWidgetDrawer::fillBackground(QPainter *painter, int width, int height) +{ + painter->setBrush(m_normal_bg); + painter->setPen(m_normal_bg); + painter->drawRect(0,0,width,height); +} + +void ListWidgetDrawer::drawBackground(QPainter *painter, ListWidgetRow *row, int index) +{ + if(row->flags & ListWidgetRow::SELECTED) + { + painter->setBrush(m_selected_bg); + } + else if(row->flags & ListWidgetRow::GROUP) + { + if(index % 2) + { + painter->setBrush(QBrush(m_group_alt_bg)); + painter->setPen(m_group_alt_bg); + } + else + { + painter->setBrush(QBrush(m_group_bg)); + painter->setPen(m_group_bg); + } + } + else + { + if(index % 2) + { + painter->setBrush(QBrush(m_alternate)); + painter->setPen(m_alternate); + } + else + { + painter->setBrush(QBrush(m_normal_bg)); + painter->setPen(m_normal_bg); + } + } + + if(m_show_anchor && (row->flags & ListWidgetRow::ANCHOR)) + { + painter->setPen(m_normal); + } + else if(row->flags & ListWidgetRow::SELECTED) + { + painter->setPen(m_selected_bg); + } + painter->drawRect(row->rect); +} + +void ListWidgetDrawer::drawSeparator(QPainter *painter, ListWidgetRow *row, bool rtl) +{ + int sx = 50 + row->numberColumnWidth; + int sy = row->rect.y() + m_metrics->overlinePos() - 1; + + painter->setFont(m_font); + painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : m_group_text); + + if(rtl) + sx = row->rect.right() - sx - m_metrics->width(row->titles[0]); + else + sx += row->rect.x(); + + painter->drawText(sx, sy, row->titles[0]); + + sy -= m_metrics->lineSpacing()/2 - 2; + + if(rtl) + { + painter->drawLine(row->rect.x() + 5, sy, sx - 5, sy); + painter->drawLine(sx + m_metrics->width(row->titles[0]) + 5, sy, + row->rect.right() - row->numberColumnWidth - m_padding, sy); + if(row->numberColumnWidth) + { + painter->drawLine(row->rect.right() - row->numberColumnWidth, row->rect.top(), + row->rect.right() - row->numberColumnWidth, row->rect.bottom() + 1); + } + } + else + { + painter->drawLine(sx - 45, sy, sx - 5, sy); + painter->drawLine(sx + m_metrics->width(row->titles[0]) + 5, sy, + row->rect.width(), sy); + if(row->numberColumnWidth) + { + painter->drawLine(row->rect.left() + row->numberColumnWidth, row->rect.top(), + row->rect.left() + row->numberColumnWidth, row->rect.bottom() + 1); + } + } +} + +void ListWidgetDrawer::drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl) +{ + int sy = row->rect.y() + m_metrics->overlinePos() - 1; + int sx = rtl ? row->rect.right() : row->rect.x(); + + painter->setFont(m_font); + painter->setPen(row->flags & ListWidgetRow::SELECTED ? m_highlighted : m_normal); + QFontMetrics *metrics = 0; + if(row->flags & ListWidgetRow::CURRENT) + { + m_font.setBold(true); + painter->setFont(m_font); + m_font.setBold(false); + metrics = m_bold_metrics; + } + else + metrics = m_metrics; + + if(rtl) + { + //|=duration=extra=|= col1=|=number =| + if(row->titles.count() == 1) + { + if(row->numberColumnWidth) + { + sx -= row->numberColumnWidth; + QString number = QString("%1").arg(row->number); + painter->drawText(sx + m_padding, sy, number); + painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); + } + + sx -= metrics->width(row->titles[0]); + painter->drawText(sx - m_padding, sy, row->titles[0]); + sx = row->rect.x() + m_padding; + + if(m_show_lengths && !row->length.isEmpty()) + { + painter->drawText(sx, sy, row->length); + sx += metrics->width(row->length); + sx += m_padding; + } + + if(!row->extraString.isEmpty()) + { + painter->setFont(m_extra_font); + painter->drawText(sx, sy, row->extraString); + } + } + else //|=extra col1=|= col2=| + { + for(int i = 0; i < row->sizes.count(); i++) + { + painter->drawText(sx - m_padding - metrics->width(row->titles[i]), sy, row->titles[i]); + sx -= row->sizes[i]; + + if(i == row->trackStateColumn && !row->extraString.isEmpty()) + { + QFont prev_font = painter->font(); + painter->setFont(m_extra_font); + painter->drawText(sx + m_padding, sy, row->extraString); + painter->setFont(prev_font); + } + if(!row->autoResize || i < row->sizes.count() - 1) //do not draw last vertical line + { + painter->drawLine(sx - 1, row->rect.top(), sx - 1, row->rect.bottom() + 1); + } + } + } + } + else + { + //|= number=|=col =|=extra=duration=| + if(row->titles.count() == 1) + { + if(row->numberColumnWidth) + { + sx += row->numberColumnWidth; + QString number = QString("%1").arg(row->number); + painter->drawText(sx - m_padding - m_metrics->width(number), sy, number); + painter->drawLine(sx, row->rect.top(), sx, row->rect.bottom() + 1); + } + + painter->drawText(sx + m_padding, sy, row->titles[0]); + sx = row->rect.right() - m_padding; + + if(m_show_lengths && !row->length.isEmpty()) + { + sx -= metrics->width(row->length); + painter->drawText(sx, sy, row->length); + sx -= m_padding; + } + + if(!row->extraString.isEmpty()) + { + sx -= m_extra_metrics->width(row->extraString); + painter->setFont(m_extra_font); + painter->drawText(sx, sy, row->extraString); + } + } + else //|=col1 extra=|=col2 =| + { + for(int i = 0; i < row->sizes.count(); i++) + { + painter->drawText(sx + m_padding, sy, row->titles[i]); + sx += row->sizes[i]; + + if(i == row->trackStateColumn && !row->extraString.isEmpty()) + { + QFont prev_font = painter->font(); + painter->setFont(m_extra_font); + painter->drawText(sx - m_padding - m_extra_metrics->width(row->extraString), + sy, row->extraString); + painter->setFont(prev_font); + } + + if(!row->autoResize || i < row->sizes.count() - 1) //do not draw last vertical line + { + painter->drawLine(sx - 1, row->rect.top(), sx - 1, row->rect.bottom() + 1); + } + } + } + } +} + +void ListWidgetDrawer::drawDropLine(QPainter *painter, int row_number, int width, int header_height) +{ + painter->setPen(m_current); + painter->drawLine (5, header_height + row_number * m_row_height, + width - 5 , header_height + row_number * m_row_height); +} diff --git a/src/plugins/Ui/qsui/listwidgetdrawer.h b/src/plugins/Ui/qsui/listwidgetdrawer.h new file mode 100644 index 000000000..72c987427 --- /dev/null +++ b/src/plugins/Ui/qsui/listwidgetdrawer.h @@ -0,0 +1,108 @@ +/*************************************************************************** + * Copyright (C) 2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef LISTWIDGETDRAWER_H +#define LISTWIDGETDRAWER_H + +#include +#include +#include +#include +#include + + +class QPainter; +class PlayListHeaderModel; + +struct ListWidgetRow +{ + ListWidgetRow() + { + flags = NO_FLAGS; + numberColumnWidth = 0; + lengthColumnWidth = 0; + trackStateColumn = -1; + autoResize = false; + } + QStringList titles; + QList sizes; + QString length; + QString extraString; + int number; + int numberColumnWidth; + int lengthColumnWidth; + int trackStateColumn; + enum + { + NO_FLAGS = 0x00, + GROUP = 0x01, + SELECTED = 0x02, + CURRENT = 0x04, + ANCHOR = 0x08 + }; + + int flags; + QRect rect; //geometry + bool autoResize; +}; + +/** + @author Ilya Kotov +*/ +class ListWidgetDrawer +{ +public: + ListWidgetDrawer(); + ~ListWidgetDrawer(); + + void readSettings(); + void loadSystemColors(); + int rowHeight() const; + int numberWidth() const; + void calculateNumberWidth(int count); + void setSingleColumnMode(int enabled); + void prepareRow(ListWidgetRow *row); + void fillBackground(QPainter *painter, int width, int height); + void drawBackground(QPainter *painter, ListWidgetRow *row, int index); + void drawSeparator(QPainter *painter, ListWidgetRow *row, bool rtl); + void drawTrack(QPainter *painter, ListWidgetRow *row, bool rtl); + void drawDropLine(QPainter *painter, int row_number, int width, int header_height); + +private: + QColor m_normal, m_current, m_normal_bg, m_selected_bg, m_alternate, m_highlighted; + QColor m_group_bg, m_group_alt_bg, m_group_text; + QFontMetrics *m_metrics; + QFontMetrics *m_extra_metrics; + QFontMetrics *m_bold_metrics; + PlayListHeaderModel *m_header_model; + QFont m_font, m_extra_font; + bool m_update; + bool m_show_number; + bool m_show_anchor; + bool m_align_numbres; + bool m_show_lengths; + bool m_use_system_colors; + bool m_single_column; + int m_padding; + int m_number_width; + int m_row_height; +}; + +#endif // LISTWIDGETDRAWER_H diff --git a/src/plugins/Ui/qsui/logo.cpp b/src/plugins/Ui/qsui/logo.cpp new file mode 100644 index 000000000..49ec2f275 --- /dev/null +++ b/src/plugins/Ui/qsui/logo.cpp @@ -0,0 +1,284 @@ +/*************************************************************************** + * Copyright (C) 2011-2014 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include "logo.h" + +#define VISUAL_NODE_SIZE 128 //samples +#define VISUAL_BUFFER_SIZE (3*VISUAL_NODE_SIZE) + +Logo::Logo(QWidget *parent) : Visual(parent) +{ + QPixmap pixmap(":/qsui/terminus.png"); + m_letters.insert('0', pixmap.copy(0, 0, 8, 14)); + m_letters.insert('1', pixmap.copy(8, 0, 8, 14)); + m_letters.insert('2', pixmap.copy(16, 0, 8, 14)); + m_letters.insert('3', pixmap.copy(24, 0, 8, 14)); + m_letters.insert('4', pixmap.copy(32, 0, 8, 14)); + m_letters.insert('5', pixmap.copy(40, 0, 8, 14)); + m_letters.insert('6', pixmap.copy(48, 0, 8, 14)); + m_letters.insert('7', pixmap.copy(56, 0, 8, 14)); + m_letters.insert('8', pixmap.copy(64, 0, 8, 14)); + m_letters.insert('9', pixmap.copy(72, 0, 8, 14)); + m_letters.insert('A', pixmap.copy(80, 0, 8, 14)); + m_letters.insert('B', pixmap.copy(88, 0, 8, 14)); + m_letters.insert('C', pixmap.copy(96, 0, 8, 14)); + m_letters.insert('D', pixmap.copy(104, 0, 8, 14)); + m_letters.insert('E', pixmap.copy(112, 0, 8, 14)); + m_letters.insert('F', pixmap.copy(120, 0, 8, 14)); + m_letters.insert('/', pixmap.copy(128, 0, 8, 14)); + m_letters.insert('|', pixmap.copy(136, 0, 8, 14)); + m_letters.insert('\\', pixmap.copy(144, 0, 8, 14)); + m_letters.insert('_', pixmap.copy(152, 0, 8, 14)); + m_letters.insert('-', pixmap.copy(160, 0, 8, 14)); + m_letters.insert('X', pixmap.copy(168, 0, 8, 14)); + m_letters.insert('.', pixmap.copy(176, 0, 8, 14)); + m_letters.insert(' ', pixmap.copy(184, 0, 8, 14)); + + QFile file(":/ascii_logo.txt"); + file.open(QIODevice::ReadOnly | QIODevice::Text); + + while(!file.atEnd()) + { + QString line = file.readLine(); + m_source_lines.append(line); + } + + QTimer *m_timer = new QTimer(this); + connect(m_timer, SIGNAL(timeout()), SLOT(updateLetters())); + m_timer->setInterval(50); + m_timer->start(); + + m_buffer_at = 0; + m_value = 0; + m_elapsed = 0; + m_buffer = new short[VISUAL_BUFFER_SIZE]; + + updateLetters(); + Visual::add(this); +} + +Logo::~Logo() +{ + Visual::remove(this); +} + +void Logo::add(unsigned char *data, qint64 size, int chan) +{ + Q_UNUSED(chan); + if(VISUAL_BUFFER_SIZE == m_buffer_at) + { + m_buffer_at -= VISUAL_NODE_SIZE; + memmove(m_buffer, (short*) (m_buffer + VISUAL_NODE_SIZE), m_buffer_at * 2); + return; + } + int size_2 = qMin((int)size/2, VISUAL_BUFFER_SIZE - m_buffer_at); + memcpy((ushort*)(m_buffer + m_buffer_at), (short*) data, size_2 * 2); + m_buffer_at += size_2; +} + +void Logo::clear() +{ + update(); +} + +void Logo::paintEvent(QPaintEvent *) +{ + QPainter painter(this); + painter.fillRect(rect(), "black"); + + for(int row = 0; row < m_lines.count(); ++row) + { + QString text = m_lines.at(row); + for(int i = 0; i < text.size(); ++i) + { + painter.drawPixmap(width() / 2 - 155 + i*8,row*14, m_letters.value(text[i])); + } + } +} + +void Logo::mousePressEvent(QMouseEvent *) +{ + m_elapsed = 2000; + m_value = 0; +} + +void Logo::updateLetters() +{ + if(m_elapsed < 2000) + { + m_value = m_elapsed / 100; + processPreset1(); + } + else if (m_elapsed >= 2000 && m_elapsed < 6000) + { + m_value++; + processPreset2(); + } + else if(m_elapsed >= 6000 && m_elapsed < 9000) + { + m_value++; + processPreset3(); + } + else if(m_elapsed >= 9000 && m_elapsed < 12000) + { + processPreset4(); + } + else if(m_elapsed >= 12000) + { + m_value = 0; + m_elapsed = 0; + } + m_elapsed += 50; +} + +void Logo::processPreset1() +{ + m_lines.clear(); + mutex()->lock(); + QString line; + for(int i = 0; i < m_source_lines.count(); ++i) + { + line = m_source_lines[i]; + line = line.replace("X", "."); + if(m_value == i) + { + line.remove(0,2); + line.append(" "); + } + else if(m_value == i - 1 || m_value == i + 1) + { + line.remove(0,1); + line.append(" "); + } + m_lines.append(line); + } + mutex()->unlock(); + update(); +} + +void Logo::processPreset2() +{ + m_lines.clear(); + mutex()->lock(); + QString str = QString("..0000..");//.arg(Qmmp::strVersion().left(5)); + int at = m_value % str.size(); + + foreach(QString line, m_source_lines) + { + while(line.contains("X")) + { + at++; + line.replace(line.indexOf("X"), 1, QString("%1").arg(str.at(at % str.size()), + 0, 16).toUpper()); + } + + m_lines.append(line); + } + mutex()->unlock(); + update(); +} + +void Logo::processPreset3() +{ + m_lines.clear(); + mutex()->lock(); + QString str = QString("...%1...").arg(Qmmp::strVersion().left(5)); + int at = m_value % str.size(); + + foreach(QString line, m_source_lines) + { + while(line.contains("X")) + { + at++; + line.replace(line.indexOf("X"), 1, QString("%1").arg(str.at(at % str.size()), + 0, 16).toUpper()); + } + + m_lines.append(line); + } + mutex()->unlock(); + update(); +} + +void Logo::processPreset4() +{ + m_lines.clear(); + mutex()->lock(); + + int max = 0; + + if(m_buffer_at < VISUAL_NODE_SIZE) + { + m_value -= 512; + m_value = qMax(m_value, max); + } + else + { + for(int j = 0; j < VISUAL_NODE_SIZE; j+=8) + { + if(m_buffer[j] > max) + max = m_buffer[j]; + } + + m_buffer_at -= VISUAL_NODE_SIZE; + memmove(m_buffer, m_buffer + VISUAL_NODE_SIZE, m_buffer_at * 2); + m_value -= 512; + m_value = qMax(m_value, max); + } + + int at = 0; + + foreach(QString line, m_source_lines) + { + + int count = line.count("X"); + int k = 0; + + while(k < m_value * count / 2048 / 16 / 2) + { + int value = abs(m_buffer[qMin(at++, m_buffer_at)] / 2048); + line.replace(line.indexOf("X"), 1, QString("%1").arg(value, 0, 16).toUpper()); + k++; + } + + k = 0; + + while(k < m_value * count / 2048 / 16 / 2) + { + int value = abs(m_buffer[qMin(at++, m_buffer_at)] / 2048); + line.replace(line.lastIndexOf("X"), 1, QString("%1").arg(value, 0, 16).toUpper()); + k++; + } + + while(line.contains("X")) + { + line.replace(line.indexOf("X"), 1, "."); + } + + m_lines.append(line); + } + mutex()->unlock(); + update(); +} diff --git a/src/plugins/Ui/qsui/logo.h b/src/plugins/Ui/qsui/logo.h new file mode 100644 index 000000000..9b2c6284b --- /dev/null +++ b/src/plugins/Ui/qsui/logo.h @@ -0,0 +1,65 @@ +/*************************************************************************** + * Copyright (C) 2011-2014 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef LOGO_H +#define LOGO_H + +#include +#include +#include +#include +#include +#include +#include + +/** + @author Ilya Kotov +*/ +class Logo : public Visual +{ + Q_OBJECT +public: + explicit Logo(QWidget *parent = 0); + virtual ~Logo(); + + void add(unsigned char *data, qint64 size, int chan); + void clear(); + +private slots: + void updateLetters(); + +private: + void paintEvent(QPaintEvent *); + void mousePressEvent(QMouseEvent *); + void processPreset1(); + void processPreset2(); + void processPreset3(); + void processPreset4(); + QHash m_letters; + QStringList m_lines; + QStringList m_source_lines; + short *m_buffer; + int m_buffer_at; + int m_value; + qint64 m_elapsed; + +}; + +#endif // LOGO_H diff --git a/src/plugins/Ui/qsui/mainwindow.cpp b/src/plugins/Ui/qsui/mainwindow.cpp new file mode 100644 index 000000000..399eff06a --- /dev/null +++ b/src/plugins/Ui/qsui/mainwindow.cpp @@ -0,0 +1,924 @@ +/*************************************************************************** + * Copyright (C) 2009-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "toolbareditor.h" +#include "actionmanager.h" +#include "qsuianalyzer.h" +#include "visualmenu.h" +#include "listwidget.h" +#include "positionslider.h" +#include "mainwindow.h" +#include "qsuisettings.h" +#include "hotkeyeditor.h" +#include "filesystembrowser.h" +#include "aboutqsuidialog.h" +#include "keyboardmanager.h" +#include "coverwidget.h" +#include "playlistbrowser.h" +#include "equalizer.h" + +#define KEY_OFFSET 10000 + +MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) +{ + m_ui.setupUi(this); + m_balance = 0; + m_update = false; + m_wasMaximized = false; + m_titleFormatter.setPattern("%if(%p,%p - %t,%t)"); + //qmmp objects + m_player = MediaPlayer::instance(); + m_core = SoundCore::instance(); + m_pl_manager = PlayListManager::instance(); + m_uiHelper = UiHelper::instance(); + m_ui_settings = QmmpUiSettings::instance(); + connect(m_uiHelper, SIGNAL(toggleVisibilityCalled()), SLOT(toggleVisibility())); + connect(m_uiHelper, SIGNAL(showMainWindowCalled()), SLOT(showAndRaise())); + m_visMenu = new VisualMenu(this); //visual menu + m_ui.actionVisualization->setMenu(m_visMenu); + m_pl_menu = new QMenu(this); //playlist menu + new ActionManager(this); //action manager + //status + connect(m_core, SIGNAL(elapsedChanged(qint64)), SLOT(updatePosition(qint64))); + connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(showState(Qmmp::State))); + connect(m_core, SIGNAL(bitrateChanged(int)), SLOT(updateStatus())); + connect(m_core, SIGNAL(bufferingProgress(int)), SLOT(showBuffering(int))); + connect(m_core, SIGNAL(metaDataChanged()), SLOT(showMetaData())); + //keyboard manager + m_key_manager = new KeyboardManager(this); + //create tabs + foreach(PlayListModel *model, m_pl_manager->playLists()) + { + ListWidget *list = new ListWidget(model, this); + list->setMenu(m_pl_menu); + if(m_pl_manager->currentPlayList() != model) + m_ui.tabWidget->addTab(list, model->name()); + else + { + m_ui.tabWidget->addTab(list, "[" + model->name() + "]"); + m_ui.tabWidget->setCurrentWidget(list); + } + if(model == m_pl_manager->selectedPlayList()) + { + m_ui.tabWidget->setCurrentWidget(list); + m_key_manager->setListWidget(list); + } + connect(model, SIGNAL(nameChanged(QString)), SLOT(updateTabs())); + } + m_slider = new PositionSlider(this); + m_slider->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + m_ui.progressToolBar->addWidget(m_slider); + //prepare visualization + Visual::initialize(this, m_visMenu, SLOT(updateActions())); + //playlist manager + connect(m_slider, SIGNAL(sliderReleased()), SLOT(seek())); + connect(m_pl_manager, SIGNAL(currentPlayListChanged(PlayListModel*,PlayListModel*)), + SLOT(updateTabs())); + connect(m_pl_manager, SIGNAL(selectedPlayListChanged(PlayListModel*,PlayListModel*)), + SLOT(updateTabs())); + connect(m_pl_manager, SIGNAL(playListRemoved(int)), SLOT(removeTab(int))); + connect(m_pl_manager, SIGNAL(playListAdded(int)), SLOT(addTab(int))); + connect(m_ui.tabWidget,SIGNAL(currentChanged(int)), m_pl_manager, SLOT(selectPlayList(int))); + connect(m_ui.tabWidget, SIGNAL(tabCloseRequested(int)), m_pl_manager, SLOT(removePlayList(int))); + connect(m_ui.tabWidget, SIGNAL(tabMoved(int,int)), m_pl_manager, SLOT(move(int,int))); + connect(m_ui.tabWidget, SIGNAL(createPlayListRequested()), m_pl_manager, SLOT(createPlayList())); + + m_ui.tabWidget->setContextMenuPolicy(Qt::CustomContextMenu); + connect(m_ui.tabWidget, SIGNAL(customContextMenuRequested(QPoint)), SLOT(showTabMenu(QPoint))); + m_tab_menu = new QMenu(m_ui.tabWidget); + //status bar + m_timeLabel = new QLabel(this); + m_statusLabel = new QLabel(this); + m_ui.statusbar->addPermanentWidget(m_statusLabel, 0); + m_ui.statusbar->addPermanentWidget(m_timeLabel, 1); + //volume + m_ui.progressToolBar->addSeparator(); + m_volumeSlider = new QSlider(Qt::Horizontal, this); + m_volumeSlider->setFixedWidth(100); + m_volumeSlider->setRange(0,100); + QIcon volumeIcon = QIcon::fromTheme("audio-volume-high", QIcon(":/qsui/audio-volume-high.png")); + m_volumeAction = m_ui.progressToolBar->addAction(volumeIcon, tr("Volume")); + m_volumeAction->setCheckable(true); + connect(m_volumeAction, SIGNAL(triggered(bool)), m_core, SLOT(setMuted(bool))); + connect(m_volumeSlider, SIGNAL(valueChanged(int)), m_core, SLOT(setVolume(int))); + connect(m_core, SIGNAL(volumeChanged(int)), m_volumeSlider, SLOT(setValue(int))); + connect(m_core, SIGNAL(volumeChanged(int)), SLOT(updateVolumeIcon())); + connect(m_core, SIGNAL(mutedChanged(bool)), SLOT(updateVolumeIcon())); + connect(m_core, SIGNAL(mutedChanged(bool)), m_volumeAction, SLOT(setChecked(bool))); + m_volumeSlider->setValue(m_core->volume()); + updateVolumeIcon(); + m_ui.progressToolBar->addWidget(m_volumeSlider); + //visualization + m_analyzer = new QSUiAnalyzer(this); + m_ui.analyzerDockWidget->setWidget(m_analyzer); + Visual::add(m_analyzer); + //filesystem browser + m_ui.fileSystemDockWidget->setWidget(new FileSystemBrowser(this)); + //cover + m_ui.coverDockWidget->setWidget(new CoverWidget(this)); + //playlists + m_ui.playlistsDockWidget->setWidget(new PlayListBrowser(m_pl_manager, this)); + + createActions(); + createButtons(); + readSettings(); + updateStatus(); +} + +MainWindow::~MainWindow() +{ +} + +void MainWindow::addDir() +{ + m_uiHelper->addDirectory(this); +} + +void MainWindow::addFiles() +{ + m_uiHelper->addFile(this); +} + +void MainWindow::playFiles() +{ + m_uiHelper->playFiles(this); +} + +void MainWindow::addUrl() +{ + m_uiHelper->addUrl(this); +} + +void MainWindow::updatePosition(qint64 pos) +{ + m_slider->setMaximum(m_core->totalTime()/1000); + if(!m_slider->isSliderDown()) + m_slider->setValue(pos/1000); + + QString text = MetaDataFormatter::formatLength(pos/1000); + if(m_core->totalTime() > 0) + { + text.append("/"); + text.append(MetaDataFormatter::formatLength(m_core->totalTime()/1000)); + } + m_timeLabel->setText(text); +} + +void MainWindow::seek() +{ + m_core->seek(m_slider->value()*1000); +} + +void MainWindow::showState(Qmmp::State state) +{ + switch((int) state) + { + case Qmmp::Playing: + { + updateStatus(); + m_analyzer->setCover(MetaDataManager::instance()->getCover(m_core->url())); + CoverWidget *cw = qobject_cast(m_ui.coverDockWidget->widget()); + cw->setCover(MetaDataManager::instance()->getCover(m_core->url())); + break; + } + case Qmmp::Paused: + updateStatus(); + break; + case Qmmp::Stopped: + updateStatus(); + m_timeLabel->clear(); + m_slider->setValue(0); + m_analyzer->clearCover(); + qobject_cast(m_ui.coverDockWidget->widget())->clearCover(); + setWindowTitle("Qmmp"); + break; + default: + ; + } +} + +void MainWindow::updateTabs() +{ + for(int i = 0; i < m_pl_manager->count(); ++i) + { + PlayListModel *model = m_pl_manager->playListAt(i); + if(model == m_pl_manager->currentPlayList()) + m_ui.tabWidget->setTabText(i, "[" + model->name() + "]"); + else + m_ui.tabWidget->setTabText(i, model->name()); + //hack for displaying '&' + m_ui.tabWidget->setTabText(i, m_ui.tabWidget->tabText(i).replace("&", "&&")); + if(model == m_pl_manager->selectedPlayList()) + { + m_ui.tabWidget->setCurrentIndex(i); + m_key_manager->setListWidget(qobject_cast(m_ui.tabWidget->widget(i))); + } + } +} + +void MainWindow::removePlaylist() +{ + m_pl_manager->removePlayList(m_pl_manager->selectedPlayList()); +} + +void MainWindow::removePlaylistWithIndex(int index) +{ + m_pl_manager->removePlayList(m_pl_manager->playListAt(index)); +} + +void MainWindow::addTab(int index) +{ + ListWidget *list = new ListWidget(m_pl_manager->playListAt(index), this); + list->setMenu(m_pl_menu); + m_ui.tabWidget->insertTab(index, list, m_pl_manager->playListAt(index)->name()); + connect(m_pl_manager->playListAt(index), SIGNAL(nameChanged(QString)), SLOT(updateTabs())); + updateTabs(); +} + +void MainWindow::removeTab(int index) +{ + m_ui.tabWidget->widget(index)->deleteLater(); + m_ui.tabWidget->removeTab(index); + updateTabs(); +} + +void MainWindow::renameTab() +{ + 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 MainWindow::aboutUi() +{ + AboutQSUIDialog dialog(this); + dialog.exec(); +} + +void MainWindow::about() +{ + m_uiHelper->about(this); +} + +void MainWindow::toggleVisibility() +{ + if(isHidden() || isMinimized()) + showAndRaise(); + else + hide(); +} + +void MainWindow::showAndRaise() +{ + show(); + if(m_wasMaximized) + showMaximized(); + else + showNormal(); + raise(); + activateWindow(); +} + +void MainWindow::showSettings() +{ + ConfigDialog *confDialog = new ConfigDialog(this); + QSUISettings *simpleSettings = new QSUISettings(this); + confDialog->addPage(tr("Appearance"), simpleSettings, QIcon(":/qsui/qsui_settings.png")); + confDialog->addPage(tr("Shortcuts"), new HotkeyEditor(this), QIcon(":/qsui/qsui_shortcuts.png")); + confDialog->exec(); + simpleSettings->writeSettings(); + confDialog->deleteLater(); + readSettings(); + ActionManager::instance()->saveActions(); + m_analyzer->readSettings(); +} + +void MainWindow::updateVolumeIcon() +{ + int maxVol = m_core->volume(); + + QString iconName = "audio-volume-high"; + if(maxVol == 0 || m_core->isMuted()) + iconName = "audio-volume-muted"; + else if(maxVol < 30) + iconName = "audio-volume-low"; + else if(maxVol >= 30 && maxVol < 60) + iconName = "audio-volume-medium"; + + m_volumeAction->setIcon(QIcon::fromTheme(iconName, QIcon(QString(":/qsui/") + iconName + ".png"))); +} + +void MainWindow::jumpTo() +{ + m_uiHelper->jumpToTrack(this); +} + +void MainWindow::playPause() +{ + if (m_core->state() == Qmmp::Playing) + m_core->pause(); + else + m_player->play(); +} + +void MainWindow::updateStatus() +{ + int tracks = m_pl_manager->currentPlayList()->trackCount(); + int length = m_pl_manager->currentPlayList()->totalLength(); + + if(m_core->state() == Qmmp::Playing || m_core->state() == Qmmp::Paused) + { + m_statusLabel->setText(tr("%1|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps|") + .arg(m_core->state() == Qmmp::Playing ? tr("Playing") : tr("Paused")) + .arg(m_core->sampleSize()) + .arg(m_core->channels()) + .arg(m_core->frequency()) + .arg(tracks) + .arg(MetaDataFormatter::formatLength(length)) + .arg(m_core->bitrate())); + } + else if(m_core->state() == Qmmp::Stopped) + { + m_statusLabel->setText(tr("%1|tracks: %2|total time: %3|") + .arg(tr("Stopped")) + .arg(tracks) + .arg(MetaDataFormatter::formatLength(length))); + } + else + m_statusLabel->clear(); +} + +void MainWindow::closeEvent(QCloseEvent *) +{ + if(!m_hideOnClose || !m_uiHelper->visibilityControl()) + m_uiHelper->exit(); + +} + +void MainWindow::hideEvent(QHideEvent *) +{ + writeSettings(); + m_wasMaximized = isMaximized(); +} + +void MainWindow::createActions() +{ + //preprare cheackable actions + ACTION(ActionManager::REPEAT_ALL)->setChecked(m_ui_settings->isRepeatableList()); + ACTION(ActionManager::REPEAT_TRACK)->setChecked(m_ui_settings->isRepeatableTrack()); + ACTION(ActionManager::SHUFFLE)->setChecked(m_ui_settings->isShuffle()); + ACTION(ActionManager::NO_PL_ADVANCE)->setChecked(m_ui_settings->isNoPlayListAdvance()); + + connect(m_ui_settings, SIGNAL(repeatableListChanged(bool)), + ACTION(ActionManager::REPEAT_ALL), SLOT(setChecked(bool))); + connect(m_ui_settings, SIGNAL (repeatableTrackChanged(bool)), + ACTION(ActionManager::REPEAT_TRACK), SLOT(setChecked(bool))); + connect(m_ui_settings, SIGNAL (noPlayListAdvanceChanged(bool)), + ACTION(ActionManager::NO_PL_ADVANCE), SLOT(setChecked(bool))); + connect(m_ui_settings, SIGNAL(shuffleChanged(bool)), + ACTION(ActionManager::SHUFFLE), SLOT(setChecked(bool))); + //register external actions + ActionManager::instance()->registerAction(ActionManager::UI_ANALYZER, + m_ui.analyzerDockWidget->toggleViewAction(), + "analyzer", ""); + ActionManager::instance()->registerAction(ActionManager::UI_FILEBROWSER, + m_ui.fileSystemDockWidget->toggleViewAction(), + "file_browser", tr("Ctrl+0")); + ActionManager::instance()->registerAction(ActionManager::UI_COVER, + m_ui.coverDockWidget->toggleViewAction(), + "cover", ""); + ActionManager::instance()->registerAction(ActionManager::UI_PLAYLISTBROWSER, + m_ui.playlistsDockWidget->toggleViewAction(), + "playlist_browser", tr("P")); + //playback + SET_ACTION(ActionManager::PREVIOUS, m_player, SLOT(previous())); + SET_ACTION(ActionManager::PLAY, m_player, SLOT(play())); + SET_ACTION(ActionManager::PAUSE, m_core, SLOT(pause())); + SET_ACTION(ActionManager::STOP, m_player, SLOT(stop())); + SET_ACTION(ActionManager::NEXT, m_player, SLOT(next())); + SET_ACTION(ActionManager::EJECT,this, SLOT(playFiles())); + + //file menu + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_ADD_FILE, this, SLOT(addFiles()))); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_ADD_DIRECTORY, this, SLOT(addDir()))); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_ADD_URL, this, SLOT(addUrl()))); + m_ui.menuFile->addSeparator(); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_NEW, m_pl_manager, SLOT(createPlayList()))); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_CLOSE, this, SLOT(removePlaylist()))); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_RENAME, this, SLOT(renameTab()))); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_SELECT_NEXT, m_pl_manager, + SLOT(selectNextPlayList()))); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_SELECT_PREVIOUS, m_pl_manager, + SLOT(selectPreviousPlayList()))); + m_ui.menuFile->addSeparator(); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_LOAD, this, SLOT(loadPlayList()))); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::PL_SAVE, this, SLOT(savePlayList()))); + m_ui.menuFile->addSeparator(); + m_ui.menuFile->addAction(SET_ACTION(ActionManager::QUIT, m_uiHelper, SLOT(exit()))); + //edit menu + m_ui.menuEdit->addAction(SET_ACTION(ActionManager::PL_SELECT_ALL, m_pl_manager, SLOT(selectAll()))); + m_ui.menuEdit->addSeparator(); + m_ui.menuEdit->addAction(SET_ACTION(ActionManager::PL_REMOVE_SELECTED, m_pl_manager, + SLOT(removeSelected()))); + m_ui.menuEdit->addAction(SET_ACTION(ActionManager::PL_REMOVE_UNSELECTED, m_pl_manager, + SLOT(removeUnselected()))); + m_ui.menuEdit->addAction(SET_ACTION(ActionManager::PL_REMOVE_ALL, m_pl_manager, SLOT(clear()))); + m_ui.menuEdit->addAction(SET_ACTION(ActionManager::PL_REMOVE_INVALID, m_pl_manager, + SLOT(removeInvalidTracks()))); + m_ui.menuEdit->addAction(SET_ACTION(ActionManager::PL_REMOVE_DUPLICATES, m_pl_manager, + SLOT(removeDuplicates()))); + m_ui.menuEdit->addSeparator(); + //view menu + m_ui.menuView->addAction(SET_ACTION(ActionManager::WM_ALLWAYS_ON_TOP, this, SLOT(readSettings()))); + m_ui.menuView->addSeparator(); + m_ui.menuView->addAction(m_ui.analyzerDockWidget->toggleViewAction()); + m_ui.menuView->addAction(m_ui.fileSystemDockWidget->toggleViewAction()); + m_ui.menuView->addAction(m_ui.coverDockWidget->toggleViewAction()); + m_ui.menuView->addAction(m_ui.playlistsDockWidget->toggleViewAction()); + m_ui.menuView->addSeparator(); + m_ui.menuView->addAction(SET_ACTION(ActionManager::UI_SHOW_TABS, m_ui.tabWidget, SLOT(setTabsVisible(bool)))); + m_ui.menuView->addAction(SET_ACTION(ActionManager::UI_SHOW_TITLEBARS, this, SLOT(setTitleBarsVisible(bool)))); + m_ui.menuView->addAction(ACTION(ActionManager::PL_SHOW_HEADER)); + m_ui.menuView->addSeparator(); + m_ui.menuView->addAction(SET_ACTION(ActionManager::UI_BLOCK_TOOLBARS, this, SLOT(setToolBarsBlocked(bool)))); + m_ui.menuView->addAction(tr("Edit Toolbar"), this, SLOT(editToolBar())); + + QMenu* sort_mode_menu = new QMenu (tr("Sort List"), this); + 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* albumArtistAct = sort_mode_menu->addAction (tr ("By Album Artist")); + connect (albumArtistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (albumArtistAct, PlayListModel::ALBUMARTIST); + + 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); + + QAction* discAct = sort_mode_menu->addAction (tr("By Disc Number")); + connect (discAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (discAct, PlayListModel::DISCNUMBER); + + QAction* fileCreationDateAct = sort_mode_menu->addAction (tr("By File Creation Date")); + connect (fileCreationDateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (fileCreationDateAct, PlayListModel::FILE_CREATION_DATE); + + QAction* fileModificationDateAct = sort_mode_menu->addAction (tr("By File Modification Date")); + connect (fileModificationDateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (fileModificationDateAct, PlayListModel::FILE_MODIFICATION_DATE); + + QAction* groupAct = sort_mode_menu->addAction (tr("By Group")); + connect (groupAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (groupAct, PlayListModel::GROUP); + + connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sort (int))); + + m_ui.menuEdit->addMenu (sort_mode_menu); + + sort_mode_menu = new QMenu (tr("Sort Selection"), this); + 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); + + albumArtistAct = sort_mode_menu->addAction (tr ("By Album Artist")); + connect (albumArtistAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (albumArtistAct, PlayListModel::ALBUMARTIST); + + 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); + + discAct = sort_mode_menu->addAction (tr("By Disc Number")); + connect (discAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (discAct, PlayListModel::DISCNUMBER); + + fileCreationDateAct = sort_mode_menu->addAction (tr("By File Creation Date")); + connect (fileCreationDateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (fileCreationDateAct, PlayListModel::FILE_CREATION_DATE); + + fileModificationDateAct = sort_mode_menu->addAction (tr("By File Modification Date")); + connect (fileModificationDateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (fileModificationDateAct, PlayListModel::FILE_MODIFICATION_DATE); + + connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sortSelection (int))); + m_ui.menuEdit->addMenu (sort_mode_menu); + m_ui.menuEdit->addSeparator(); + m_ui.menuEdit->addAction (QIcon::fromTheme("media-playlist-shuffle"), tr("Randomize List"), + m_pl_manager, SLOT(randomizeList())); + m_ui.menuEdit->addAction (QIcon::fromTheme("view-sort-descending"), tr("Reverse List"), + m_pl_manager, SLOT(reverseList())); + m_ui.menuEdit->addAction(SET_ACTION(ActionManager::PL_GROUP_TRACKS, m_ui_settings, SLOT(setGroupsEnabled(bool)))); + ACTION(ActionManager::PL_GROUP_TRACKS)->setChecked(m_ui_settings->isGroupsEnabled()); + m_ui.menuEdit->addSeparator(); + m_ui.menuEdit->addAction(SET_ACTION(ActionManager::SETTINGS, this, SLOT(showSettings()))); + //tools + m_ui.menuTools->addMenu(m_uiHelper->createMenu(UiHelper::TOOLS_MENU, tr("Actions"), this)); + //playback menu + m_ui.menuPlayback->addAction(ACTION(ActionManager::PLAY)); + m_ui.menuPlayback->addAction(ACTION(ActionManager::STOP)); + m_ui.menuPlayback->addAction(ACTION(ActionManager::PAUSE)); + m_ui.menuPlayback->addAction(ACTION(ActionManager::NEXT)); + m_ui.menuPlayback->addAction(ACTION(ActionManager::PREVIOUS)); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::PLAY_PAUSE,this,SLOT(playPause()))); + m_ui.menuPlayback->addSeparator(); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::JUMP, this, SLOT(jumpTo()))); + m_ui.menuPlayback->addSeparator(); + m_ui.menuPlayback->addAction(ACTION(ActionManager::PL_ENQUEUE)); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::CLEAR_QUEUE, m_pl_manager, SLOT(clearQueue()))); + m_ui.menuPlayback->addSeparator(); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::REPEAT_ALL, m_ui_settings, + SLOT(setRepeatableList(bool)))); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::REPEAT_TRACK, m_ui_settings, + SLOT(setRepeatableTrack(bool)))); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::SHUFFLE, m_ui_settings, + SLOT(setShuffle(bool)))); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::NO_PL_ADVANCE, m_ui_settings, + SLOT(setNoPlayListAdvance(bool)))); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::STOP_AFTER_SELECTED, m_pl_manager, + SLOT(stopAfterSelected()))); + m_ui.menuPlayback->addSeparator(); + signalMapper = new QSignalMapper(this); + signalMapper->setMapping(ACTION(ActionManager::VOL_ENC), 5); + signalMapper->setMapping(ACTION(ActionManager::VOL_DEC), -5); + connect(signalMapper, SIGNAL(mapped(int)), m_core, SLOT(changeVolume(int))); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::VOL_ENC, signalMapper, SLOT(map()))); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::VOL_DEC, signalMapper, SLOT(map()))); + m_ui.menuPlayback->addAction(SET_ACTION(ActionManager::VOL_MUTE, m_core, SLOT(setMuted(bool)))); + connect(m_core, SIGNAL(mutedChanged(bool)), ACTION(ActionManager::VOL_MUTE), SLOT(setChecked(bool))); + + //help menu + m_ui.menuHelp->addAction(SET_ACTION(ActionManager::ABOUT_UI, this, SLOT(aboutUi()))); + m_ui.menuHelp->addAction(SET_ACTION(ActionManager::ABOUT, this, SLOT(about()))); + m_ui.menuHelp->addAction(SET_ACTION(ActionManager::ABOUT_QT, qApp, SLOT(aboutQt()))); + //playlist menu + m_pl_menu->addAction(SET_ACTION(ActionManager::PL_SHOW_INFO, m_pl_manager, SLOT(showDetails()))); + m_pl_menu->addSeparator(); + m_pl_menu->addAction(ACTION(ActionManager::PL_REMOVE_SELECTED)); + m_pl_menu->addAction(ACTION(ActionManager::PL_REMOVE_ALL)); + m_pl_menu->addAction(ACTION(ActionManager::PL_REMOVE_UNSELECTED)); + m_pl_menu->addMenu(UiHelper::instance()->createMenu(UiHelper::PLAYLIST_MENU, + tr("Actions"), this)); + m_pl_menu->addSeparator(); + m_pl_menu->addAction(SET_ACTION(ActionManager::PL_ENQUEUE, m_pl_manager, SLOT(addToQueue()))); + //tools menu + m_ui.menuTools->addAction(SET_ACTION(ActionManager::EQUALIZER, this, SLOT(showEqualizer()))); + + //tab menu + m_tab_menu->addAction(ACTION(ActionManager::PL_LOAD)); + m_tab_menu->addAction(ACTION(ActionManager::PL_SAVE)); + m_tab_menu->addSeparator(); + m_tab_menu->addAction(ACTION(ActionManager::PL_RENAME)); + m_tab_menu->addAction(ACTION(ActionManager::PL_CLOSE)); + //seeking + 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())); + + addActions(QList() << forward << backward); + addActions(ActionManager::instance()->actions()); + addActions(m_key_manager->actions()); +} + +void MainWindow::createButtons() +{ + //'new playlist' button + m_addListButton = new QToolButton(m_ui.tabWidget); + m_addListButton->setText("+"); + m_addListButton->setToolButtonStyle(Qt::ToolButtonIconOnly); + m_addListButton->setAutoRaise(true); + m_addListButton->setIcon(QIcon::fromTheme("list-add")); + m_addListButton->setToolTip(tr("Add new playlist")); + connect(m_addListButton, SIGNAL(clicked()), m_pl_manager, SLOT(createPlayList())); + //playlist menu button + m_tabListMenuButton = new QToolButton(m_ui.tabWidget); + m_tabListMenuButton->setToolButtonStyle(Qt::ToolButtonIconOnly); + m_tabListMenuButton->setAutoRaise(true); + m_tabListMenuButton->setToolTip(tr("Show all tabs")); + m_tabListMenuButton->setArrowType(Qt::DownArrow); + m_tabListMenuButton->setStyleSheet("QToolButton::menu-indicator { image: none; }"); + m_tabListMenuButton->setPopupMode(QToolButton::InstantPopup); + m_tabListMenuButton->setMenu(m_ui.tabWidget->menu()); +} + +void MainWindow::readSettings() +{ + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + m_titleFormatter.setPattern(settings.value("window_title_format","%if(%p,%p - %t,%t)").toString()); + if(m_update) + { + for(int i = 0; i < m_ui.tabWidget->count(); ++i) + { + qobject_cast(m_ui.tabWidget->widget(i))->readSettings(); + } + qobject_cast (m_ui.fileSystemDockWidget->widget())->readSettings(); + + if(ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->isChecked()) + setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); + else + setWindowFlags(windowFlags() & ~Qt::WindowStaysOnTopHint); + + if(m_core->state() == Qmmp::Playing || m_core->state() == Qmmp::Paused) + showMetaData(); + + m_ui.tabWidget->readSettings(); + + show(); + } + else + { + restoreGeometry(settings.value("mw_geometry").toByteArray()); + QByteArray wstate = settings.value("mw_state").toByteArray(); + if(wstate.isEmpty()) + { + m_ui.fileSystemDockWidget->hide(); + m_ui.coverDockWidget->hide(); + m_ui.playlistsDockWidget->hide(); + } + else + restoreState(settings.value("mw_state").toByteArray()); + if(settings.value("always_on_top", false).toBool()) + { + ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->setChecked(true); + setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); + } + show(); + qApp->processEvents(); + if(settings.value("start_hidden").toBool()) + hide(); + + bool state = settings.value("show_titlebars", true).toBool(); + ACTION(ActionManager::UI_SHOW_TITLEBARS)->setChecked(state); + setTitleBarsVisible(state); + + state = settings.value("show_tabs", true).toBool(); + ACTION(ActionManager::UI_SHOW_TABS)->setChecked(state); + m_ui.tabWidget->setTabsVisible(state); + + state = settings.value("block_toolbars", false).toBool(); + ACTION(ActionManager::UI_BLOCK_TOOLBARS)->setChecked(state); + setToolBarsBlocked(state); + + m_update = true; + } + //load toolbar actions + m_ui.buttonsToolBar->clear(); + QStringList names = ActionManager::instance()->toolBarActionNames(); + names = settings.value("toolbar_actions", names).toStringList(); + foreach (QString name, names) + { + if(name == "separator") + { + m_ui.buttonsToolBar->addSeparator(); + continue; + } + QAction *action = ActionManager::instance()->findChild(name); + if(action) + m_ui.buttonsToolBar->addAction(action); + } + + m_hideOnClose = settings.value("hide_on_close", false).toBool(); + m_ui.tabWidget->setTabsClosable(settings.value("pl_tabs_closable", false).toBool()); + + if(settings.value("pl_show_new_pl_button", false).toBool()) + { + m_ui.tabWidget->setCornerWidget(m_addListButton, Qt::TopLeftCorner); + m_addListButton->setIconSize(QSize(16, 16)); + m_addListButton->setVisible(true); + } + else + { + m_addListButton->setVisible(false); + m_ui.tabWidget->setCornerWidget(0, Qt::TopLeftCorner); + } + if(settings.value("pl_show_tab_list_menu", false).toBool()) + { + m_ui.tabWidget->setCornerWidget(m_tabListMenuButton, Qt::TopRightCorner); + m_tabListMenuButton->setIconSize(QSize(16, 16)); + m_tabListMenuButton->setVisible(true); + } + else + { + m_tabListMenuButton->setVisible(false); + m_ui.tabWidget->setCornerWidget(0, Qt::TopRightCorner); + } + settings.endGroup(); + addActions(m_uiHelper->actions(UiHelper::TOOLS_MENU)); + addActions(m_uiHelper->actions(UiHelper::PLAYLIST_MENU)); +} + +void MainWindow::showTabMenu(QPoint pos) +{ + QTabBar *tabBar = qobject_cast (m_ui.tabWidget->childAt(pos)); + if(!tabBar) + return; + + int index = tabBar->tabAt(pos); + if(index == -1) + return; + + m_pl_manager->selectPlayList(index); + m_tab_menu->popup(m_ui.tabWidget->mapToGlobal(pos)); +} + +void MainWindow::writeSettings() +{ + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("Simple/mw_geometry", saveGeometry()); + settings.setValue("Simple/mw_state", saveState()); + settings.setValue("Simple/always_on_top", ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->isChecked()); + settings.setValue("Simple/show_analyzer", ACTION(ActionManager::UI_ANALYZER)->isChecked()); + settings.setValue("Simple/show_tabs", ACTION(ActionManager::UI_SHOW_TABS)->isChecked()); + settings.setValue("Simple/show_titlebars", ACTION(ActionManager::UI_SHOW_TITLEBARS)->isChecked()); + settings.setValue("Simple/block_toolbars", ACTION(ActionManager::UI_BLOCK_TOOLBARS)->isChecked()); +} + +void MainWindow::savePlayList() +{ + m_uiHelper->savePlayList(this); +} + +void MainWindow::loadPlayList() +{ + m_uiHelper->loadPlayList(this); +} + +void MainWindow::showBuffering(int percent) +{ + if(m_core->state() == Qmmp::Buffering) + m_statusLabel->setText(tr("Buffering: %1%").arg(percent)); +} + +void MainWindow::showEqualizer() +{ + Equalizer equalizer(this); + equalizer.exec(); +} + +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::showMetaData() +{ + PlayListModel *model = m_pl_manager->currentPlayList(); + PlayListTrack *track = model->currentTrack(); + if(track && track->url() == m_core->metaData().value(Qmmp::URL)) + { + setWindowTitle(m_titleFormatter.format(track)); + } +} + +void MainWindow::setTitleBarsVisible(bool visible) +{ + if(visible) + { + QWidget *widget = 0; + if((widget = m_ui.analyzerDockWidget->titleBarWidget())) + { + m_ui.analyzerDockWidget->setTitleBarWidget(0); + delete widget; + } + if((widget = m_ui.fileSystemDockWidget->titleBarWidget())) + { + m_ui.fileSystemDockWidget->setTitleBarWidget(0); + delete widget; + } + if((widget = m_ui.coverDockWidget->titleBarWidget())) + { + m_ui.coverDockWidget->setTitleBarWidget(0); + delete widget; + } + if((widget = m_ui.playlistsDockWidget->titleBarWidget())) + { + m_ui.playlistsDockWidget->setTitleBarWidget(0); + delete widget; + } + } + else + { + if(!m_ui.analyzerDockWidget->titleBarWidget()) + m_ui.analyzerDockWidget->setTitleBarWidget(new QWidget()); + + if(!m_ui.fileSystemDockWidget->titleBarWidget()) + m_ui.fileSystemDockWidget->setTitleBarWidget(new QWidget()); + + if(!m_ui.coverDockWidget->titleBarWidget()) + m_ui.coverDockWidget->setTitleBarWidget(new QWidget()); + + if(!m_ui.playlistsDockWidget->titleBarWidget()) + m_ui.playlistsDockWidget->setTitleBarWidget(new QWidget()); + } +} + +void MainWindow::setToolBarsBlocked(bool blocked) +{ + m_ui.buttonsToolBar->setMovable(!blocked); + m_ui.progressToolBar->setMovable(!blocked); +} + +void MainWindow::editToolBar() +{ + ToolBarEditor *e = new ToolBarEditor(this); + if(e->exec() == QDialog::Accepted) + { + readSettings(); + } + e->deleteLater(); +} diff --git a/src/plugins/Ui/qsui/mainwindow.h b/src/plugins/Ui/qsui/mainwindow.h new file mode 100644 index 000000000..a151ec9c2 --- /dev/null +++ b/src/plugins/Ui/qsui/mainwindow.h @@ -0,0 +1,123 @@ +/*************************************************************************** + * Copyright (C) 2009-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include "ui_mainwindow.h" + +class QSlider; +class QLabel; +class QMenu; +class QToolButton; +class UiHelper; +class PlayListModel; +class MediaPlayer; +class SoundCore; +class QmmpUiSettings; +class PlayListManager; +class GeneralHandler; +class VisualMenu; +class PositionSlider; +class KeyboardManager; +class QSUiAnalyzer; + + +/** + @author Ilya Kotov +*/ +class MainWindow : public QMainWindow +{ +Q_OBJECT +public: + MainWindow(QWidget *parent = 0); + ~MainWindow(); + +private slots: + void addDir(); + void addFiles(); + void playFiles(); + void addUrl(); + void updatePosition(qint64 pos); + void seek(); + void showState(Qmmp::State); + void updateStatus(); + void updateTabs(); + void removePlaylist(); + void removePlaylistWithIndex(int); + void addTab(int); + void removeTab(int); + void renameTab(); + void aboutUi(); + void about(); + void toggleVisibility(); + void showAndRaise(); + void showSettings(); + void updateVolumeIcon(); + void jumpTo(); + void playPause(); + void readSettings(); + void showTabMenu(QPoint pos); + void savePlayList(); + void loadPlayList(); + void showBuffering(int percent); + void showEqualizer(); + void forward(); + void backward(); + void showMetaData(); + void setTitleBarsVisible(bool visible); + void setToolBarsBlocked(bool blocked); + void editToolBar(); + +private: + void closeEvent(QCloseEvent *); + void hideEvent(QHideEvent *); + bool m_wasMaximized; + void createActions(); + void createButtons(); + void writeSettings(); + QString m_lastDir; + PlayListManager *m_pl_manager; + Ui::MainWindow m_ui; + MediaPlayer *m_player; + QmmpUiSettings *m_ui_settings; + PositionSlider *m_slider; + QLabel *m_timeLabel; + SoundCore *m_core; + QLabel *m_statusLabel; + VisualMenu *m_visMenu; + UiHelper *m_uiHelper; + QMenu *m_pl_menu; + QMenu *m_tab_menu; + QSlider *m_volumeSlider; + QAction *m_volumeAction; + KeyboardManager *m_key_manager; + QSUiAnalyzer *m_analyzer; + QToolButton *m_addListButton, *m_tabListMenuButton; + MetaDataFormatter m_titleFormatter; + int m_balance; + bool m_update; + bool m_hideOnClose; + +}; + +#endif diff --git a/src/plugins/Ui/qsui/playlistbrowser.cpp b/src/plugins/Ui/qsui/playlistbrowser.cpp new file mode 100644 index 000000000..447b723a9 --- /dev/null +++ b/src/plugins/Ui/qsui/playlistbrowser.cpp @@ -0,0 +1,156 @@ +/*************************************************************************** + * Copyright (C) 2009-2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "actionmanager.h" +#include "playlistbrowser.h" + +PlayListBrowser::PlayListBrowser(PlayListManager *manager, QWidget *parent) : QWidget(parent) +{ + m_lineEdit = new QLineEdit(this); + m_lineEdit->installEventFilter(this); + m_lineEdit->setContentsMargins(5,5,5,0); + m_listView = new QListView(this); + m_listView->setFrameStyle(QFrame::NoFrame); + m_listView->setEditTriggers(QAbstractItemView::NoEditTriggers); + m_listView->installEventFilter(this); + + QVBoxLayout *layout = new QVBoxLayout(); + layout->setContentsMargins(0,0,0,0); + layout->addWidget(m_lineEdit); + layout->addWidget(m_listView); + setLayout(layout); + + m_pl_manager = manager; + connect(m_pl_manager, SIGNAL(playListsChanged()), SLOT(updateList())); + //actions + m_listView->setContextMenuPolicy(Qt::ActionsContextMenu); + m_listView->addAction(ACTION(ActionManager::PL_RENAME)); + m_listView->addAction(ACTION(ActionManager::PL_CLOSE)); + + m_listModel = new QStandardItemModel(this); + m_proxyModel = new QSortFilterProxyModel(this); + m_proxyModel->setDynamicSortFilter(true); + m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); + m_proxyModel->setSourceModel(m_listModel); + m_listView->setModel(m_proxyModel); + connect(m_lineEdit, SIGNAL(textChanged(QString)), SLOT(onLineEditTextChanged(QString))); + connect(m_listView, SIGNAL(activated(QModelIndex)), SLOT(onListViewActivated(QModelIndex))); + connect(m_listView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), + SLOT(updateCurrentRow(QModelIndex,QModelIndex))); + updateList(); +} + +PlayListBrowser::~PlayListBrowser() +{} + +void PlayListBrowser::updateList() +{ + m_listView->selectionModel()->blockSignals(true); + m_listModel->clear(); + foreach(PlayListModel *model, m_pl_manager->playLists()) + { + QStandardItem *item = new QStandardItem(model->name()); + if(m_pl_manager->currentPlayList() == model) + { + QFont font = item->font(); + font.setBold(true); + item->setFont(font); + } + m_listModel->appendRow(item); + if(m_pl_manager->selectedPlayList() == model) + { + m_listView->setCurrentIndex(m_proxyModel->mapFromSource(m_listModel->indexFromItem(item))); + } + } + m_listView->selectionModel()->blockSignals(false); +} + +void PlayListBrowser::onLineEditTextChanged(const QString &str) +{ + m_listView->selectionModel()->blockSignals(true); + m_proxyModel->setFilterFixedString(str); + m_listView->selectionModel()->blockSignals(false); +} + +void PlayListBrowser::onListViewActivated(const QModelIndex &index) +{ + int row = m_proxyModel->mapToSource(index).row(); + if(row >= 0) + { + m_pl_manager->activatePlayList(row); + m_pl_manager->selectPlayList(row); + } +} + +void PlayListBrowser::updateCurrentRow(QModelIndex index, QModelIndex) +{ + int row = m_proxyModel->mapToSource(index).row(); + if(row >= 0) + m_pl_manager->selectPlayList(row); +} + +bool PlayListBrowser::eventFilter(QObject *o, QEvent *e) +{ + if((o == m_lineEdit || o == m_listView) && e->type() == QEvent::ShortcutOverride) + { + e->accept(); + return false; + } + + if(o == m_lineEdit && e->type() == QEvent::KeyPress) + { + QKeyEvent *key_event = static_cast(e); + QModelIndex index = m_listView->currentIndex(); + bool select_first = false; + if(!index.isValid() && m_proxyModel->rowCount()) + { + select_first = true; + index = m_proxyModel->index(0,0); + } + + if(key_event->key() == Qt::Key_Up) + { + if(!select_first) + index = m_proxyModel->index(index.row() - 1, index.column()); + if(index.isValid()) + m_listView->setCurrentIndex(index); + return true; + } + else if(key_event->key() == Qt::Key_Down) + { + if(!select_first) + index = m_proxyModel->index(index.row() + 1, index.column()); + if(index.isValid()) + m_listView->setCurrentIndex(index); + return true; + } + } + return QWidget::eventFilter(o, e); +} diff --git a/src/plugins/Ui/qsui/playlistbrowser.h b/src/plugins/Ui/qsui/playlistbrowser.h new file mode 100644 index 000000000..0130fa506 --- /dev/null +++ b/src/plugins/Ui/qsui/playlistbrowser.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (C) 2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef PLAYLISTBROWSER_H +#define PLAYLISTBROWSER_H + +#include +#include + +class PlayListManager; +class QStandardItemModel; +class QSortFilterProxyModel; +class QStandardItem; +class QListView; +class QLineEdit; + +/** + @author Ilya Kotov +*/ +class PlayListBrowser : public QWidget +{ +Q_OBJECT +public: + PlayListBrowser(PlayListManager *manager, QWidget *parent = 0); + ~PlayListBrowser(); + +private slots: + void updateList(); + void onLineEditTextChanged(const QString &str); + void onListViewActivated(const QModelIndex &index); + void updateCurrentRow(QModelIndex index, QModelIndex); + +private: + bool eventFilter(QObject *o, QEvent *e); + QLineEdit *m_lineEdit; + QListView *m_listView; + PlayListManager *m_pl_manager; + QStandardItemModel* m_listModel; + QSortFilterProxyModel* m_proxyModel; +}; + +#endif // PLAYLISTBROWSER_H diff --git a/src/plugins/Ui/qsui/playlistheader.cpp b/src/plugins/Ui/qsui/playlistheader.cpp new file mode 100644 index 000000000..a2bd5a1e5 --- /dev/null +++ b/src/plugins/Ui/qsui/playlistheader.cpp @@ -0,0 +1,768 @@ +/*************************************************************************** + * Copyright (C) 2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "playlistheader.h" + +#define INITAL_SIZE 150 +#define MIN_SIZE 30 +#define MAX_COLUMNS 7 + +PlayListHeader::PlayListHeader(QWidget *parent) : + QWidget(parent) +{ + setMouseTracking(true); + + m_pl_padding = 0; + m_number_width = 0; + m_offset = 0; + m_sorting_column = -1; + m_scrollbar_width = 0; + m_reverted = false; + m_auto_resize = false; + m_metrics = 0; + m_task = NO_TASK; + + m_model = PlayListManager::instance()->headerModel(); + m_menu = new QMenu(this); + m_menu->addAction(QIcon::fromTheme("list-add"), tr("Add Column"), this, SLOT(addColumn())); + m_menu->addAction(QIcon::fromTheme("configure"), tr("Edit Column"), this, SLOT(editColumn())); + m_trackStateAction = m_menu->addAction(tr("Show Queue/Protocol"), this, SLOT(showTrackState(bool))); + m_trackStateAction->setCheckable(true); + m_autoResizeAction = m_menu->addAction(tr("Auto-resize"), this, SLOT(setAutoResize(bool))); + m_autoResizeAction->setCheckable(true); + m_menu->addSeparator(); + m_menu->addAction(QIcon::fromTheme("list-remove"), tr("Remove Column"), this, SLOT(removeColumn())); + + readSettings(); + + connect(m_model, SIGNAL(columnAdded(int)), SLOT(onColumnAdded(int))); + connect(m_model, SIGNAL(columnRemoved(int)), SLOT(onColumnRemoved())); + connect(m_model, SIGNAL(columnMoved(int,int)), SLOT(updateColumns())); + connect(m_model, SIGNAL(columnChanged(int)), SLOT(updateColumns())); +} + +PlayListHeader::~PlayListHeader() +{ + if (m_metrics) + delete m_metrics; + m_metrics = 0; +} + +void PlayListHeader::readSettings() +{ + if (m_metrics) + { + delete m_metrics; + m_metrics = 0; + } + + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + + QFont header_font = qApp->font("QAbstractItemView"); + if(!settings.value("use_system_fonts", true).toBool()) + { + header_font.fromString(settings.value("pl_header_font", header_font.toString()).toString()); + } + m_metrics = new QFontMetrics(header_font); + setFont(header_font); + + QStyleOptionHeader opt; + opt.initFrom(this); + m_size_hint = style()->sizeFromContents(QStyle::CT_HeaderSection, &opt, QSize(), this); + + QFont pl_font; + pl_font.fromString(settings.value("pl_font", qApp->font().toString()).toString()); + m_pl_padding = QFontMetrics(pl_font).width("9")/2; + + if(!m_model->isSettingsLoaded()) //do not load settings several times + { + m_model->restoreSettings(&settings); + QList sizes = settings.value("pl_column_sizes").toList(); + int autoResizeColumn = settings.value("pl_autoresize_column", -1).toInt(); + int trackStateColumn = settings.value("pl_track_state_column", -1).toInt(); + for(int i = 0; i < m_model->count(); ++i) + { + m_model->setData(i, SIZE, INITAL_SIZE); + + if(i < sizes.count()) + m_model->setData(i, SIZE, sizes.at(i).toInt()); + if(i == autoResizeColumn) + { + m_model->setData(i, AUTO_RESIZE, true); + m_auto_resize = true; + } + if(i == trackStateColumn) + m_model->setData(i,TRACK_STATE, true); + } + } + else + { + m_auto_resize = autoResizeColumn() >= 0; + } + + if(isVisible()) + updateColumns(); + + settings.endGroup(); +} + +void PlayListHeader::setNumberWidth(int width) +{ + if(width != m_number_width) + { + m_number_width = width; + if(m_model->count() == 1) + updateColumns(); + } +} + +void PlayListHeader::setScrollBarWidth(int width) +{ + if(!isVisible()) + return; + + if(m_scrollbar_width != width) + { + m_scrollbar_width = width; + + if(m_model->count() == 1) + { + updateColumns(); + return; + } + + int index = autoResizeColumn(); + if(index >= 0) + { + adjustColumn(index); + updateColumns(); + return; + } + } +} + +void PlayListHeader::updateColumns() +{ + if(!isVisible()) + return; + + bool rtl = (layoutDirection() == Qt::RightToLeft); + + int sx = 5; + + if(m_model->count() == 1) + { + if(m_number_width) + sx += m_number_width + 2 * m_pl_padding; + m_model->setData(0, RECT, rtl ? QRect(5 + m_scrollbar_width, 0, width() - sx - 5 - m_scrollbar_width, height()) : + QRect(sx, 0, width() - sx - 5 - m_scrollbar_width, height())); + m_model->setData(0, NAME, m_model->name(0)); + update(); + return; + } + + for(int i = 0; i < m_model->count(); ++i) + { + int size = m_model->data(i, SIZE).toInt(); + + if(rtl) + m_model->setData(i, RECT, QRect(width() - sx - size, 0, size, height())); + else + m_model->setData(i, RECT, QRect(sx, 0, size, height())); + m_model->setData(i, NAME, m_model->name(i)); + sx += size; + } + update(); +} + +int PlayListHeader::requiredHeight() const +{ + return m_size_hint.height(); +} + +QList PlayListHeader::sizes() const +{ + QList sizeList; + for(int i = 0; i < m_model->count(); ++i) + sizeList.append(m_model->data(i, SIZE).toInt()); + return sizeList; +} + +int PlayListHeader::trackStateColumn() const +{ + for(int i = 0; i < m_model->count(); ++i) + { + if(m_model->data(i, TRACK_STATE).toBool()) + { + return i; + } + } + return -1; +} + +int PlayListHeader::maxScrollValue() const +{ + if(m_model->count() == 1) + return 0; + + int row_width = 0; + foreach (int size, sizes()) + { + row_width += size; + } + return qMax(0, row_width - width() + m_scrollbar_width + 10); +} + +int PlayListHeader::offset() const +{ + return m_offset; +} + +bool PlayListHeader::hasAutoResizeColumn() const +{ + return m_auto_resize; +} + +void PlayListHeader::scroll(int offset) +{ + m_offset = offset; + update(); +} + +void PlayListHeader::showSortIndicator(int column, bool reverted) +{ + if(m_sorting_column == column && m_reverted == reverted) + return; + + m_sorting_column = column; + m_reverted = reverted; + updateColumns(); +} + +void PlayListHeader::hideSortIndicator() +{ + if(m_sorting_column != -1) + { + m_sorting_column = -1; + updateColumns(); + } +} + +void PlayListHeader::addColumn() +{ + int column = findColumn(m_pressed_pos); + + if(column < 0) + { + QRect firstRect = m_model->data(0, RECT).toRect(); + QRect lastRect = m_model->data(m_model->count() - 1, RECT).toRect(); + + if(m_pressed_pos.x() > lastRect.right()) + column = m_model->count(); + else if(m_pressed_pos.x() < firstRect.x()) + column = 0; + } + + if(column < 0) + return; + + m_model->execInsert(column); +} + +void PlayListHeader::editColumn() +{ + if(m_pressed_column < 0) + return; + + m_model->execEdit(m_pressed_column); +} + +void PlayListHeader::removeColumn() +{ + if(m_pressed_column < 0) + return; + + m_model->remove(m_pressed_column); +} + +void PlayListHeader::setAutoResize(bool on) +{ + if(m_pressed_column < 0) + return; + + m_auto_resize = on; + + if(on) + { + for(int i = 0; i < m_model->count(); ++i) + m_model->setData(i, AUTO_RESIZE, false); + } + + m_model->setData(m_pressed_column, AUTO_RESIZE, on); + + if(on) + { + m_offset = 0; + adjustColumn(m_pressed_column); + updateColumns(); + } + PlayListManager::instance()->selectedPlayList()->updateMetaData(); +} + +void PlayListHeader::showTrackState(bool yes) +{ + if(m_pressed_column < 0) + return; + + if(yes) + { + for(int i = 0; i < m_model->count(); ++i) + m_model->setData(i, TRACK_STATE, false); + } + + m_model->setData(m_pressed_column, TRACK_STATE, yes); + PlayListManager::instance()->selectedPlayList()->updateMetaData(); +} + +void PlayListHeader::onColumnAdded(int index) +{ + m_model->setData(index, SIZE, INITAL_SIZE); + if(m_auto_resize && isVisible()) + { + adjustColumn(autoResizeColumn()); + } + updateColumns(); +} + +void PlayListHeader::onColumnRemoved() +{ + m_auto_resize = autoResizeColumn() >= 0; + if(m_auto_resize && isVisible()) + { + adjustColumn(autoResizeColumn()); + } + updateColumns(); +} + +void PlayListHeader::mousePressEvent(QMouseEvent *e) +{ + bool rtl = layoutDirection() == Qt::RightToLeft; + + if(e->button() == Qt::LeftButton) + { + m_pressed_column = findColumn(e->pos()); + if(m_pressed_column >= 0) + { + m_pressed_pos = e->pos(); + m_mouse_pos = e->pos(); + m_pressed_pos.rx() += m_offset; + m_mouse_pos.rx() += m_offset; + + if(rtl) + { + if(e->pos().x() < m_model->data(m_pressed_column, RECT).toRect().x() + m_metrics->width("9")) + { + m_old_size = size(m_pressed_column); + m_task = RESIZE; + } + else + { + m_press_offset = e->pos().x() - m_model->data(m_pressed_column, RECT).toRect().x(); + m_task = SORT; + } + } + else + { + if(e->pos().x() > m_model->data(m_pressed_column, RECT).toRect().right() - m_metrics->width("9")) + { + m_old_size = size(m_pressed_column); + m_task = RESIZE; + } + else + { + m_press_offset = e->pos().x() - m_model->data(m_pressed_column, RECT).toRect().x(); + m_task = SORT; + } + } + } + else + { + m_task = NO_TASK; + update(); + } + } +} + +void PlayListHeader::mouseReleaseEvent(QMouseEvent *) +{ + if(m_task == SORT) + PlayListManager::instance()->selectedPlayList()->sortByColumn(m_pressed_column); + + m_task = NO_TASK; + update(); +} + +void PlayListHeader::mouseMoveEvent(QMouseEvent *e) +{ + bool rtl = layoutDirection() == Qt::RightToLeft; + + if(m_task == SORT) + { + m_task = MOVE; + } + + int x = e->pos().x() + m_offset; + + if(m_task == RESIZE && m_model->count() > 1) + { + int index = autoResizeColumn(); + + if(index == -1 || m_pressed_column < m_model->count() - 1) + { + if(rtl) + setSize(m_pressed_column, m_old_size - x + m_pressed_pos.x()); + else + setSize(m_pressed_column, m_old_size + x - m_pressed_pos.x()); + setSize(m_pressed_column, qMax(size(m_pressed_column), MIN_SIZE)); + } + + if(m_pressed_column < index) + { + adjustColumn(index); + } + else if(index != -1 && m_pressed_column < m_model->count() - 1) + { + adjustColumn(m_pressed_column + 1); + } + m_offset = qMin(m_offset, maxScrollValue()); + updateColumns(); + PlayListManager::instance()->selectedPlayList()->updateMetaData(); + } + else if(m_task == MOVE) + { + m_mouse_pos = e->pos(); + m_mouse_pos.rx() += m_offset; + + int dest = -1; + for(int i = 0; i < m_model->count(); ++i) + { + QRect rect = m_model->data(i, RECT).toRect(); + int x_delta = m_mouse_pos.x() - rect.x(); + if(x_delta < 0 || x_delta > rect.width()) + continue; + + if(rtl) + { + if((x_delta > rect.width()/2 && m_pressed_column > i) || + (x_delta < rect.width()/2 && m_pressed_column < i)) + { + dest = i; + break; + } + } + else + { + if((x_delta > rect.width()/2 && m_pressed_column < i) || + (x_delta < rect.width()/2 && m_pressed_column > i)) + { + dest = i; + break; + } + } + } + if(dest == -1 || dest == m_pressed_column) + { + update(); + QWidget::mouseMoveEvent(e); + return; + } + m_model->move(m_pressed_column, dest); + m_pressed_column = dest; + update(); + } + else if(e->button() == Qt::NoButton && m_model->count() > 1) + { + int column = findColumn(e->pos()); + + if(!m_auto_resize || column < m_model->count() - 1) + { + if(rtl) + { + if(column >= 0 && x < m_model->data(column, RECT).toRect().x() + m_metrics->width("9")) + setCursor(Qt::SplitHCursor); + else + setCursor(Qt::ArrowCursor); + } + else + { + if(column >= 0 && x > m_model->data(column, RECT).toRect().right() - m_metrics->width("9")) + setCursor(Qt::SplitHCursor); + else + setCursor(Qt::ArrowCursor); + } + } + else + { + setCursor(Qt::ArrowCursor); + } + } +} + +void PlayListHeader::resizeEvent(QResizeEvent *e) +{ + if(m_model->count() == 1) + { + updateColumns(); + return; + } + + if(!isVisible()) + return; + + if(m_auto_resize) + { + adjustColumn(autoResizeColumn()); + m_offset = qMin(m_offset, maxScrollValue()); + updateColumns(); + return; + } + + if(m_offset > maxScrollValue()) + { + m_offset = maxScrollValue(); + updateColumns(); + return; + } + + + if(layoutDirection() == Qt::RightToLeft || e->oldSize().height() != e->size().height()) + { + updateColumns(); + return; + } +} + +void PlayListHeader::contextMenuEvent(QContextMenuEvent *e) +{ + m_pressed_pos = e->pos(); + m_pressed_column = findColumn(e->pos()); + if(m_pressed_column >= 0) + { + m_trackStateAction->setChecked(m_model->data(m_pressed_column, TRACK_STATE).toBool()); + m_autoResizeAction->setChecked(m_model->data(m_pressed_column, AUTO_RESIZE).toBool()); + + //hide unused actions + foreach (QAction *action, m_menu->actions()) + { + if(m_menu->actions().at(0) == action) + action->setVisible(m_model->count() < MAX_COLUMNS); + else if(m_menu->actions().at(1) == action) + action->setVisible(true); + else + action->setVisible(m_model->count() != 1); //multicolumn mode + } + + } + else + { + foreach (QAction *action, m_menu->actions()) + { + if(action == m_menu->actions().first()) + action->setVisible(m_model->count() < MAX_COLUMNS); + else + action->setVisible(false); + } + } + m_menu->exec(e->globalPos()); +} + +void PlayListHeader::paintEvent(QPaintEvent *) +{ + bool rtl = (layoutDirection() == Qt::RightToLeft); + + QPainter painter(this); + painter.translate(rtl ? m_offset : -m_offset, 0); + + { + QStyleOption opt; + opt.initFrom(this); + opt.state |= QStyle::State_Horizontal; + opt.rect = QRect(0,0,m_model->data(0, RECT).toRect().x(), height()); + style()->drawControl(QStyle::CE_HeaderEmptyArea, &opt, &painter, this); + opt.rect = QRect(m_model->data(m_model->count() - 1, RECT).toRect().right(), 0, + width() - m_model->data(m_model->count() - 1, RECT).toRect().right(), height()); + style()->drawControl(QStyle::CE_HeaderEmptyArea, &opt, &painter, this); + } + + for(int i = 0; i < m_model->count(); ++i) + { + QStyleOptionHeader opt; + initStyleOption(&opt); + opt.rect = m_model->data(i, RECT).toRect(); + opt.text = name(i); + opt.section = i; + opt.state |= QStyle::State_Active; + if(i == 0) + opt.position = QStyleOptionHeader::Beginning; + else if(i < m_model->count() - 1) + opt.position = QStyleOptionHeader::Middle; + else if(i == m_model->count() - 1) + opt.position = QStyleOptionHeader::End; + + if(i == m_sorting_column) + opt.sortIndicator = m_reverted ? QStyleOptionHeader::SortUp : QStyleOptionHeader::SortDown; + + style()->drawControl(QStyle::CE_Header, &opt, &painter, this); + } + + if(m_model->count() == 1) + return; + + if(m_task == MOVE) + { + QStyleOptionHeader opt; + initStyleOption(&opt); + opt.rect = m_model->data(m_pressed_column, RECT).toRect(); + opt.text = name(m_pressed_column); + opt.section = m_pressed_column; + painter.setOpacity(0.75); + opt.rect.moveTo(m_mouse_pos.x() - m_press_offset, opt.rect.y()); + style()->drawControl(QStyle::CE_Header, &opt, &painter, this); + } +} + +int PlayListHeader::findColumn(QPoint pos) +{ + for(int i = 0; i < m_model->count(); ++i) + { + if(m_model->data(i,RECT).toRect().contains(pos)) + return i; + } + return -1; +} + +int PlayListHeader::size(int index) const +{ + return m_model->data(index, SIZE).toInt(); +} + +void PlayListHeader::setSize(int index, int size) +{ + m_model->setData(index, SIZE, size); +} + +const QString PlayListHeader::name(int index) const +{ + return m_model->data(index, NAME).toString(); +} + +void PlayListHeader::adjustColumn(int index) +{ + int w = 0; + + for(int i = 0; i < m_model->count(); ++i) + { + if(i != index) + w += size(i); + } + + setSize(index, qMax(width() - 10 - m_scrollbar_width - w, MIN_SIZE)); +} + +int PlayListHeader::autoResizeColumn() const +{ + int index = -1; + for(int i = 0; i < m_model->count(); ++i) + { + if(m_model->data(i, AUTO_RESIZE).toBool()) + { + index = i; + break; + } + } + return index; +} + +void PlayListHeader::writeSettings() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + m_model->saveSettings(&settings); + QList sizes; + int autoResizeColumn = -1; + int trackStateColumn = -1; + for(int i = 0; i < m_model->count(); ++i) + { + sizes << m_model->data(i, SIZE).toInt(); + if(m_model->data(i, AUTO_RESIZE).toBool()) + autoResizeColumn = i; + if(m_model->data(i, TRACK_STATE).toBool()) + trackStateColumn = i; + } + settings.setValue("pl_column_sizes", sizes); + settings.setValue("pl_autoresize_column", autoResizeColumn); + settings.setValue("pl_track_state_column", trackStateColumn); + settings.endGroup(); +} + +void PlayListHeader::showEvent(QShowEvent *) +{ + if(m_auto_resize) + { + adjustColumn(autoResizeColumn()); + m_offset = qMin(m_offset, maxScrollValue()); + updateColumns(); + PlayListManager::instance()->selectedPlayList()->updateMetaData(); + } + else + updateColumns(); +} + +void PlayListHeader::hideEvent(QHideEvent *) +{ + writeSettings(); +} + +void PlayListHeader::initStyleOption(QStyleOptionHeader *opt) +{ + opt->initFrom(this); + opt->state = QStyle::State_None | QStyle::State_Raised | QStyle::State_Horizontal | QStyle::State_Enabled; + opt->orientation = Qt::Horizontal; + opt->iconAlignment = Qt::AlignVCenter; + opt->textAlignment = Qt::AlignLeft | Qt::AlignVCenter; +} diff --git a/src/plugins/Ui/qsui/playlistheader.h b/src/plugins/Ui/qsui/playlistheader.h new file mode 100644 index 000000000..d9836e7d8 --- /dev/null +++ b/src/plugins/Ui/qsui/playlistheader.h @@ -0,0 +1,129 @@ +/*************************************************************************** + * Copyright (C) 2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef PLAYLISTHEADER_H +#define PLAYLISTHEADER_H + +#include +#include + +class QFontMetrics; +class QFont; +class QMouseEvent; +class QContextMenuEvent; +class QMenu; +class QAction; +class QStyleOptionHeader; +class PlayListHeaderModel; + +/** + @author Ilya Kotov +*/ +class PlayListHeader : public QWidget +{ + Q_OBJECT +public: + explicit PlayListHeader(QWidget *parent = 0); + ~PlayListHeader(); + + void readSettings(); + void setNumberWidth(int width); + void setScrollBarWidth(int width); + int requiredHeight() const; + QList sizes() const; + int trackStateColumn() const; + int maxScrollValue() const; + int offset() const; + bool hasAutoResizeColumn() const; + +public slots: + void scroll(int offset); + void updateColumns(); + void showSortIndicator(int column, bool reverted); + void hideSortIndicator(); + +private slots: + void addColumn(); + void editColumn(); + void removeColumn(); + void setAutoResize(bool on); + void showTrackState(bool yes); + void onColumnAdded(int index); + void onColumnRemoved(); + +private: + void mousePressEvent(QMouseEvent *e); + void mouseReleaseEvent(QMouseEvent *); + void mouseMoveEvent(QMouseEvent *e); + void resizeEvent(QResizeEvent *e); + void contextMenuEvent(QContextMenuEvent *e); + void paintEvent(QPaintEvent *); + int findColumn(QPoint pos); + void initStyleOption(QStyleOptionHeader *opt); + int size(int index) const; + void setSize(int index, int size); + const QString name(int index) const; + void adjustColumn(int index); + int autoResizeColumn() const; + void writeSettings(); + void showEvent(QShowEvent *); + void hideEvent(QHideEvent *); + + enum DataKey + { + NAME = 0, + SIZE, + RECT, //geometry + AUTO_RESIZE, + TRACK_STATE + }; + + QSize m_size_hint; + QFontMetrics *m_metrics; + QMenu *m_menu; + QPoint m_pressed_pos; + QPoint m_mouse_pos; + PlayListHeaderModel *m_model; + QAction *m_trackStateAction; + QAction *m_autoResizeAction; + bool m_reverted; + bool m_auto_resize; + int m_number_width; + int m_scrollbar_width; + int m_pressed_column; + int m_old_size; + int m_press_offset; + int m_pl_padding; + int m_sorting_column; + + int m_offset; + + enum + { + NO_TASK = -1, + RESIZE, + MOVE, + SORT + } m_task; + + +}; + +#endif // PLAYLISTHEADER_H diff --git a/src/plugins/Ui/qsui/popupsettings.cpp b/src/plugins/Ui/qsui/popupsettings.cpp new file mode 100644 index 000000000..3c57cc0ee --- /dev/null +++ b/src/plugins/Ui/qsui/popupsettings.cpp @@ -0,0 +1,89 @@ +/*************************************************************************** + * Copyright (C) 2009-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include "popupwidget.h" +#include "popupsettings.h" + +PopupSettings::PopupSettings(QWidget *parent) + : QDialog(parent) +{ + m_ui.setupUi(this); + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + m_ui.transparencySlider->setValue(100 - settings.value("popup_opacity", 1.0).toDouble()*100); + m_ui.coverSizeSlider->setValue(settings.value ("popup_cover_size", 48).toInt()); + m_ui.textEdit->setPlainText(settings.value ("popup_template", DEFAULT_TEMPLATE).toString()); + m_ui.delaySpinBox->setValue(settings.value("popup_delay", 2500).toInt()); + m_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("Simple"); + settings.setValue("popup_opacity", 1.0 - (double)m_ui.transparencySlider->value()/100); + settings.setValue("popup_cover_size", m_ui.coverSizeSlider->value()); + settings.setValue("popup_template", m_ui.textEdit->toPlainText()); + settings.setValue("popup_delay", m_ui.delaySpinBox->value()); + settings.setValue("popup_show_cover", m_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("Album Artist"))->setData("%aa"); + 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)"); + m_ui.insertButton->setMenu(menu); + connect(menu, SIGNAL(triggered (QAction *)), SLOT(insertExpression(QAction *))); +} + +void PopupSettings::insertExpression(QAction *a) +{ + m_ui.textEdit->insertPlainText(a->data().toString()); +} + +void PopupSettings::on_resetButton_clicked() +{ + m_ui.textEdit->setPlainText(DEFAULT_TEMPLATE); +} diff --git a/src/plugins/Ui/qsui/popupsettings.h b/src/plugins/Ui/qsui/popupsettings.h new file mode 100644 index 000000000..6c5b7f545 --- /dev/null +++ b/src/plugins/Ui/qsui/popupsettings.h @@ -0,0 +1,52 @@ +/*************************************************************************** + * Copyright (C) 2009-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef SETTINGSDIALOG_H +#define SETTINGSDIALOG_H + +#include +#include "ui_popupsettings.h" + +class Action; + +/** + @author Ilya Kotov +*/ +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 m_ui; + QMap m_buttons; +}; + +#endif diff --git a/src/plugins/Ui/qsui/popupwidget.cpp b/src/plugins/Ui/qsui/popupwidget.cpp new file mode 100644 index 000000000..357d6bbaa --- /dev/null +++ b/src/plugins/Ui/qsui/popupwidget.cpp @@ -0,0 +1,132 @@ +/*************************************************************************** + * Copyright (C) 2008-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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); + 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("Simple"); + setWindowOpacity(settings.value("popup_opacity", 1.0).toDouble()); + m_coverSize = settings.value("popup_cover_size", 48).toInt(); + m_formatter.setPattern(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(PlayListTrack *track, QPoint pos) +{ + pos += QPoint(15,10); + + m_url = track->url(); + hide(); + if(!track) + { + m_timer->stop(); + return; + } + + m_label1->setText(m_formatter.format(track)); + 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(); + m_url.clear(); + hide(); +} + +const QString PopupWidget::url() const +{ + return m_url; +} + +void PopupWidget::loadCover() +{ + if(m_url.isEmpty()) + return; + QPixmap pix = MetaDataManager::instance()->getCover(m_url); + if(pix.isNull()) + pix = QPixmap(":/qsui/ui_no_cover.png"); + m_pixlabel->setFixedSize(m_coverSize,m_coverSize); + m_pixlabel->setPixmap(pix.scaled(m_coverSize,m_coverSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + qApp->processEvents(); + updateGeometry (); + resize(sizeHint()); + qApp->processEvents(); +} diff --git a/src/plugins/Ui/qsui/popupwidget.h b/src/plugins/Ui/qsui/popupwidget.h new file mode 100644 index 000000000..ef8c52480 --- /dev/null +++ b/src/plugins/Ui/qsui/popupwidget.h @@ -0,0 +1,68 @@ +/*************************************************************************** + * Copyright (C) 2008-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef POPUPWIDGET_H +#define POPUPWIDGET_H + +#include +#include + +#define DEFAULT_TEMPLATE "%if(%t,%t,%f)\n%if(%p,
%p,)\n%if(%a,
%a,)" + +class QTimer; +class QLabel; +class PlayListTrack; + +namespace PlayListPopup { +/** + @author Ilya Kotov +*/ +class PopupWidget : public QWidget +{ + Q_OBJECT +public: + PopupWidget(QWidget *parent = 0); + + ~PopupWidget(); + + void prepare(PlayListTrack *track, QPoint pos); + void deactivate(); + const QString url() const; + +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; + QString m_url; + MetaDataFormatter m_formatter; + +}; +} + +#endif diff --git a/src/plugins/Ui/qsui/positionslider.cpp b/src/plugins/Ui/qsui/positionslider.cpp new file mode 100644 index 000000000..b2da16a2d --- /dev/null +++ b/src/plugins/Ui/qsui/positionslider.cpp @@ -0,0 +1,67 @@ +/*************************************************************************** + * Copyright (C) 2011-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include "positionslider.h" + +PositionSlider::PositionSlider(QWidget *parent) : QSlider(Qt::Horizontal, parent) +{} + +void PositionSlider::mousePressEvent (QMouseEvent *event) +{ + QStyleOptionSlider opt; + initStyleOption(&opt); + QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this); + + if (event->button() == Qt::LeftButton && + sr.contains(event->pos()) == false) + { + int val; + if (orientation() == Qt::Vertical) + val = minimum() + ((maximum() - minimum()) * (height() - event->y())) / height(); + else if(layoutDirection() == Qt::RightToLeft) + val = maximum() - ((maximum() - minimum()) * event->x()) / width(); + else + val = minimum() + ((maximum() - minimum()) * event->x()) / width(); + + if (invertedAppearance() == true) + setValue(maximum() - val); + else + setValue(val); + + setSliderDown (true); + event->accept(); + } + QSlider::mousePressEvent(event); +} + +void PositionSlider::mouseReleaseEvent (QMouseEvent *) +{ + setSliderDown (false); +} + +void PositionSlider::wheelEvent(QWheelEvent *event) +{ + setValue(value() + event->delta() / 20); + sliderReleased(); +} diff --git a/src/plugins/Ui/qsui/positionslider.h b/src/plugins/Ui/qsui/positionslider.h new file mode 100644 index 000000000..00d66d7d3 --- /dev/null +++ b/src/plugins/Ui/qsui/positionslider.h @@ -0,0 +1,47 @@ +/*************************************************************************** + * Copyright (C) 2011-2014 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef POSITIONSLIDER_H +#define POSITIONSLIDER_H + +#include + +class QWheelEvent; +class QMouseEvent; + +/** + @author Ilya Kotov +*/ +class PositionSlider : public QSlider +{ + Q_OBJECT +public: + explicit PositionSlider(QWidget *parent = 0); + virtual ~PositionSlider(){} + + +protected: + virtual void mousePressEvent (QMouseEvent *event); + virtual void mouseReleaseEvent (QMouseEvent *event); + virtual void wheelEvent(QWheelEvent *event); + +}; + +#endif // POSITIONSLIDER_H diff --git a/src/plugins/Ui/qsui/qsui.pro b/src/plugins/Ui/qsui/qsui.pro new file mode 100644 index 000000000..457e11d8d --- /dev/null +++ b/src/plugins/Ui/qsui/qsui.pro @@ -0,0 +1,117 @@ +include(../../plugins.pri) + +TARGET = $$PLUGINS_PREFIX/Ui/qsui + +CONFIG += warn_on \ + plugin \ + link_pkgconfig + +TEMPLATE = lib + +QT += network + +SOURCES += \ + mainwindow.cpp \ + listwidget.cpp \ + visualmenu.cpp \ + positionslider.cpp \ + actionmanager.cpp \ + shortcutdialog.cpp \ + shortcutitem.cpp \ + popupsettings.cpp \ + popupwidget.cpp \ + equalizer.cpp \ + logo.cpp \ + keyboardmanager.cpp \ + aboutqsuidialog.cpp \ + qsuifactory.cpp \ + qsuisettings.cpp \ + qsuianalyzer.cpp \ + fft.c \ + colorwidget.cpp \ + qsuitabwidget.cpp \ + qsuitabbar.cpp \ + eqpreset.cpp \ + filesystembrowser.cpp \ + elidinglabel.cpp \ + coverwidget.cpp \ + playlistbrowser.cpp \ + toolbareditor.cpp \ + listwidgetdrawer.cpp \ + playlistheader.cpp \ + hotkeyeditor.cpp +HEADERS += mainwindow.h \ + listwidget.h \ + visualmenu.h \ + positionslider.h \ + actionmanager.h \ + shortcutdialog.h \ + shortcutitem.h \ + popupsettings.h \ + popupwidget.h \ + equalizer.h \ + logo.h \ + keyboardmanager.h \ + aboutqsuidialog.h \ + qsuifactory.h \ + qsuisettings.h \ + qsuianalyzer.h \ + fft.h \ + inlines.h \ + colorwidget.h \ + qsuitabwidget.h \ + qsuitabbar.h \ + eqpreset.h \ + filesystembrowser.h \ + elidinglabel.h \ + coverwidget.h \ + playlistbrowser.h \ + toolbareditor.h \ + listwidgetdrawer.h \ + playlistheader.h \ + hotkeyeditor.h +TEMPLATE = lib + +FORMS += forms/mainwindow.ui \ + forms/shortcutdialog.ui \ + forms/popupsettings.ui \ + forms/aboutqsuidialog.ui \ + forms/qsuisettings.ui \ + forms/toolbareditor.ui \ + forms/hotkeyeditor.ui +RESOURCES += translations/translations.qrc resources/qsui_resources.qrc txt/qsui_txt.qrc + +contains(CONFIG, SVN_VERSION){ + DEFINES += QMMP_PLUGIN_PACK_VERSION=\\\"$$QMMP_PLUGIN_PACK_VERSION-dev\\\" +} +else{ + DEFINES += QMMP_PLUGIN_PACK_VERSION=\\\"$$QMMP_PLUGIN_PACK_VERSION\\\" +} + +unix { + isEmpty(LIB_DIR):LIB_DIR = /lib + target.path = $$LIB_DIR/qmmp/Ui + INSTALLS += target + + PKGCONFIG += qmmp qmmpui + QMAKE_CLEAN = $$PLUGINS_PREFIX/Ui/libqsui.so +} + +win32 { + INCLUDEPATH += ../../ ./ + QMAKE_LIBDIR += ../../../../bin + LIBS += -lqmmp0 -lqmmpui0 +} + + + + + + + + + + + + + diff --git a/src/plugins/Ui/qsui/qsuianalyzer.cpp b/src/plugins/Ui/qsui/qsuianalyzer.cpp new file mode 100644 index 000000000..3df0b7935 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuianalyzer.cpp @@ -0,0 +1,404 @@ +/*************************************************************************** + * Copyright (C) 2012-2014 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "fft.h" +#include "inlines.h" +#include "qsuianalyzer.h" + +#define VISUAL_NODE_SIZE 512 //samples +#define VISUAL_BUFFER_SIZE (5*VISUAL_NODE_SIZE) + +QSUiAnalyzer::QSUiAnalyzer (QWidget *parent) : Visual (parent) +{ + m_intern_vis_data = 0; + m_peaks = 0; + m_x_scale = 0; + m_buffer_at = 0; + m_rows = 0; + m_cols = 0; + m_offset = 0; + m_update = false; + m_show_cover = false; + m_pixLabel = new QLabel(this); + createMenu(); + + m_timer = new QTimer (this); + connect(m_timer, SIGNAL (timeout()), this, SLOT (timeout())); + m_left_buffer = new short[VISUAL_BUFFER_SIZE]; + m_right_buffer = new short[VISUAL_BUFFER_SIZE]; + + readSettings(); + clear(); +} + +QSUiAnalyzer::~QSUiAnalyzer() +{ + delete [] m_left_buffer; + delete [] m_right_buffer; + + if(m_peaks) + delete [] m_peaks; + if(m_intern_vis_data) + delete [] m_intern_vis_data; + if(m_x_scale) + delete [] m_x_scale; +} + +void QSUiAnalyzer::clear() +{ + m_buffer_at = 0; + m_rows = 0; + m_cols = 0; + update(); +} + +void QSUiAnalyzer::clearCover() +{ + m_cover = QPixmap(); + updateCover(); + update(); +} + +QSize QSUiAnalyzer::sizeHint() const +{ + return QSize(200, 100); +} + +void QSUiAnalyzer::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 QSUiAnalyzer::setCover(const QPixmap &pixmap) +{ + m_cover = pixmap; + updateCover(); +} + +void QSUiAnalyzer::timeout() +{ + 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); + mutex()->unlock (); + update(); +} + +void QSUiAnalyzer::paintEvent (QPaintEvent * e) +{ + QPainter painter (this); + painter.fillRect(e->rect(),m_bgColor); + draw(&painter); +} + +void QSUiAnalyzer::hideEvent (QHideEvent *) +{ + m_timer->stop(); +} + +void QSUiAnalyzer::showEvent (QShowEvent *) +{ + m_timer->start(); +} + +void QSUiAnalyzer::resizeEvent(QResizeEvent *) +{ + updateCover(); +} + +void QSUiAnalyzer::process (short *left, short *right) +{ + int rows = qMax((height() - 2) / m_cell_size.height(),2); + int cols = qMax((width() - m_offset - 2) / m_cell_size.width(),1); + + if(m_rows != rows || m_cols != cols) + { + m_rows = rows; + m_cols = cols; + if(m_peaks) + delete [] m_peaks; + if(m_intern_vis_data) + delete [] m_intern_vis_data; + if(m_x_scale) + delete [] m_x_scale; + m_peaks = new double[m_cols]; + m_intern_vis_data = new double[m_cols]; + m_x_scale = new int[m_cols + 1]; + + for(int i = 0; i < m_cols; ++i) + { + m_peaks[i] = 0; + m_intern_vis_data[i] = 0; + } + for(int i = 0; i < m_cols + 1; ++i) + m_x_scale[i] = pow(pow(255.0, 1.0 / m_cols), i); + } + short dest[256]; + short y; + int k, magnitude; + short data[512]; + + for(int i = 0; i < VISUAL_NODE_SIZE; ++i) + { + data[i] = (left[i] >> 1) + (right[i] >> 1); + } + calc_freq (dest, data); + + double y_scale = (double) 1.25 * m_rows / log(256); + + for (int i = 0; i < m_cols; i++) + { + y = 0; + magnitude = 0; + + if(m_x_scale[i] == m_x_scale[i + 1]) + { + y = dest[i]; + } + for (k = m_x_scale[i]; k < m_x_scale[i + 1]; k++) + { + y = qMax(dest[k], y); + } + + y >>= 7; //256 + + + if (y) + { + magnitude = int(log (y) * y_scale); + magnitude = qBound(0, magnitude, m_rows); + } + + + m_intern_vis_data[i] -= m_analyzer_falloff * m_rows / 15; + 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_rows / 15; + m_peaks[i] = magnitude > m_peaks[i] ? magnitude : m_peaks[i]; + } + } +} + +void QSUiAnalyzer::draw (QPainter *p) +{ + QBrush brush(Qt::SolidPattern); + int x = 0; + + for (int j = 0; j < m_cols; ++j) + { + x = m_offset + j * m_cell_size.width() + 1; + + for (int i = 0; i <= m_intern_vis_data[j]; ++i) + { + if (i <= m_rows/3) + brush.setColor(m_color1); + else if (i > m_rows/3 && i <= 2 * m_rows / 3) + brush.setColor(m_color2); + else + brush.setColor(m_color3); + + p->fillRect (x, height() - i * m_cell_size.height(), + m_cell_size.width() - 1, m_cell_size.height() - 4, brush); + } + + if (m_show_peaks) + { + p->fillRect (x, height() - int(m_peaks[j]) * m_cell_size.height(), + m_cell_size.width() - 1, m_cell_size.height() - 4, m_peakColor); + } + } +} + +void QSUiAnalyzer::createMenu() +{ + m_menu = new QMenu (this); + connect(m_menu, SIGNAL(triggered (QAction *)),SLOT(writeSettings())); + connect(m_menu, SIGNAL(triggered (QAction *)),SLOT(readSettings())); + + m_coverAction = m_menu->addAction(tr("Cover")); + m_coverAction->setCheckable(true); + + m_peaksAction = m_menu->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.2); + m_analyzerFalloffGroup->addAction(tr("Slow"))->setData(1.8); + m_analyzerFalloffGroup->addAction(tr("Medium"))->setData(2.2); + m_analyzerFalloffGroup->addAction(tr("Fast"))->setData(2.4); + m_analyzerFalloffGroup->addAction(tr("Fastest"))->setData(2.8); + 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(0.05); + m_peaksFalloffGroup->addAction(tr("Slow"))->setData(0.1); + m_peaksFalloffGroup->addAction(tr("Medium"))->setData(0.2); + m_peaksFalloffGroup->addAction(tr("Fast"))->setData(0.4); + m_peaksFalloffGroup->addAction(tr("Fastest"))->setData(0.8); + foreach(QAction *act, m_peaksFalloffGroup->actions ()) + { + act->setCheckable(true); + peaksFalloff->addAction(act); + } + update(); +} + +void QSUiAnalyzer::updateCover() +{ + if(m_show_cover && !m_cover.isNull()) + { + m_offset = height(); + m_pixLabel->setGeometry(10,10, height() - 20, height() - 20); + m_pixLabel->setPixmap(m_cover.scaled(m_pixLabel->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + m_pixLabel->show(); + } + else + { + m_offset = 0; + m_pixLabel->hide(); + } +} + +void QSUiAnalyzer::mousePressEvent (QMouseEvent *e) +{ + if (e->button() == Qt::RightButton) + m_menu->exec(e->globalPos()); +} + +void QSUiAnalyzer::readSettings() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + m_peaks_falloff = settings.value("vis_peaks_falloff", 0.2).toDouble(); + m_analyzer_falloff = settings.value("vis_analyzer_falloff", 2.2).toDouble(); + m_show_peaks = settings.value("vis_show_peaks", true).toBool(); + m_show_cover = settings.value("vis_show_cover", true).toBool(); + m_timer->setInterval(1000 / settings.value("vis_refresh_rate", 25).toInt()); + m_color1.setNamedColor(settings.value("vis_color1", "#BECBFF").toString()); + m_color2.setNamedColor(settings.value("vis_color2", "#BECBFF").toString()); + m_color3.setNamedColor(settings.value("vis_color3", "#BECBFF").toString()); + m_bgColor.setNamedColor(settings.value("vis_bg_color", "Black").toString()); + m_peakColor.setNamedColor(settings.value("vis_peak_color", "#DDDDDD").toString()); + m_cell_size = QSize(14, 8); + if(!m_update) + { + m_update = true; + m_coverAction->setChecked(m_show_cover); + m_peaksAction->setChecked(m_show_peaks); + + foreach(QAction *act, m_fpsGroup->actions ()) + { + if (m_timer->interval() == 1000 / act->data().toInt()) + act->setChecked(true); + } + foreach(QAction *act, m_peaksFalloffGroup->actions ()) + { + if (m_peaks_falloff == act->data().toDouble()) + act->setChecked(true); + } + foreach(QAction *act, m_analyzerFalloffGroup->actions ()) + { + if (m_analyzer_falloff == act->data().toDouble()) + act->setChecked(true); + } + } + updateCover(); + settings.endGroup(); +} + +void QSUiAnalyzer::writeSettings() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + + QAction *act = m_fpsGroup->checkedAction (); + settings.setValue("vis_refresh_rate", act ? act->data().toInt() : 25); + act = m_peaksFalloffGroup->checkedAction (); + settings.setValue("vis_peaks_falloff", act ? act->data().toDouble() : 0.2); + act = m_analyzerFalloffGroup->checkedAction (); + settings.setValue("vis_analyzer_falloff", act ? act->data().toDouble() : 2.2); + settings.setValue("vis_show_peaks", m_peaksAction->isChecked()); + settings.setValue("vis_show_cover", m_coverAction->isChecked()); + settings.endGroup(); +} diff --git a/src/plugins/Ui/qsui/qsuianalyzer.h b/src/plugins/Ui/qsui/qsuianalyzer.h new file mode 100644 index 000000000..c2032f402 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuianalyzer.h @@ -0,0 +1,97 @@ +/*************************************************************************** + * Copyright (C) 2012-2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef QSUIANALYZER_H +#define QSUIANALYZER_H + +#include +#include +#include + +class QTimer; +class QMenu; +class QActionGroup; +class QLabel; + + +class QSUiAnalyzer : public Visual +{ + Q_OBJECT +public: + QSUiAnalyzer( QWidget *parent = 0); + virtual ~QSUiAnalyzer(); + + void add(unsigned char *data, qint64 size, int chan); + void setCover(const QPixmap &pixmap); + void clear(); + void clearCover(); + QSize sizeHint() const; + +public slots: + void readSettings(); + +private slots: + void timeout(); + void writeSettings(); + +private: + void paintEvent(QPaintEvent *); + void mousePressEvent(QMouseEvent *); + void hideEvent(QHideEvent *); + void showEvent(QShowEvent *); + void resizeEvent(QResizeEvent *); + void process(short *l, short *r); + void draw(QPainter *p); + void createMenu(); + void updateCover(); + + QPixmap m_bg; + QPixmap m_cover; + QTimer *m_timer; + double *m_intern_vis_data; + double *m_peaks; + int *m_x_scale; + double m_peaks_falloff; + double m_analyzer_falloff; + bool m_show_peaks; + bool m_show_cover; + short *m_left_buffer; + short *m_right_buffer; + int m_buffer_at; + int m_cols, m_rows; + int m_offset; + bool m_update; + QLabel *m_pixLabel; + //colors + QColor m_color1; + QColor m_color2; + QColor m_color3; + QColor m_bgColor; + QColor m_peakColor; + QSize m_cell_size; + QMenu *m_menu; + QAction *m_peaksAction; + QAction *m_coverAction; + QActionGroup *m_fpsGroup; + QActionGroup *m_analyzerFalloffGroup; + QActionGroup *m_peaksFalloffGroup; +}; + + +#endif //QSUIANALYZER_H diff --git a/src/plugins/Ui/qsui/qsuifactory.cpp b/src/plugins/Ui/qsui/qsuifactory.cpp new file mode 100644 index 000000000..837c3f064 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuifactory.cpp @@ -0,0 +1,57 @@ +/*************************************************************************** + * Copyright (C) 2011-2012 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include "mainwindow.h" +#include "aboutqsuidialog.h" +#include "qsuifactory.h" + +const UiProperties QSUIFactory::properties() const +{ + UiProperties props; + props.hasAbout = true; + props.name = tr("Simple User Interface"); + props.shortName = "qsui"; + return props; +} + +QObject *QSUIFactory::QSUIFactory::create() +{ + QmmpSettings::instance()->readEqSettings(EqSettings::EQ_BANDS_15); + return new MainWindow(); +} + +void QSUIFactory::showAbout(QWidget *parent) +{ + AboutQSUIDialog about(parent); + about.exec(); +} + +QTranslator *QSUIFactory::createTranslator(QObject *parent) +{ + QTranslator *translator = new QTranslator(parent); + QString locale = Qmmp::systemLanguageID(); + translator->load(QString(":/qsui_plugin_") + locale); + return translator; +} + +Q_EXPORT_PLUGIN2(qsui, QSUIFactory) diff --git a/src/plugins/Ui/qsui/qsuifactory.h b/src/plugins/Ui/qsui/qsuifactory.h new file mode 100644 index 000000000..bd56c35f6 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuifactory.h @@ -0,0 +1,41 @@ +/*************************************************************************** + * Copyright (C) 2011-2012 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef QSUIFACTORY_H +#define QSUIFACTORY_H + +#include +#include +#include + +/*! + * @author Ilya Kotov + */ +class QSUIFactory : 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/qsui/qsuisettings.cpp b/src/plugins/Ui/qsui/qsuisettings.cpp new file mode 100644 index 000000000..d64443f24 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuisettings.cpp @@ -0,0 +1,245 @@ +/*************************************************************************** + * Copyright (C) 2011-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include "actionmanager.h" +#include "shortcutitem.h" +#include "shortcutdialog.h" +#include "popupsettings.h" +#include "qsuisettings.h" + +QSUISettings::QSUISettings(QWidget *parent) : QWidget(parent) +{ + m_ui.setupUi(this); + //setup icons + m_ui.popupTemplateButton->setIcon(QIcon::fromTheme("configure")); + //load settings + readSettings(); + loadFonts(); + createActions(); +} + +QSUISettings::~QSUISettings() +{} + +void QSUISettings::on_plFontButton_clicked() +{ + bool ok = false; + QFont font = m_ui.plFontLabel->font(); + font = QFontDialog::getFont (&ok, font, this); + if (ok) + { + m_ui.plFontLabel->setText(font.family () + " " + QString::number(font.pointSize ())); + m_ui.plFontLabel->setFont(font); + } +} + +void QSUISettings::on_columnFontButton_clicked() +{ + bool ok = false; + QFont font = m_ui.columnFontLabel->font(); + font = QFontDialog::getFont (&ok, font, this); + if (ok) + { + m_ui.columnFontLabel->setText(font.family () + " " + QString::number(font.pointSize ())); + m_ui.columnFontLabel->setFont(font); + } +} + +void QSUISettings::on_tabsFontButton_clicked() +{ + bool ok = false; + QFont font = m_ui.tabsFontLabel->font(); + font = QFontDialog::getFont (&ok, font, this); + if (ok) + { + m_ui.tabsFontLabel->setText(font.family () + " " + QString::number(font.pointSize ())); + m_ui.tabsFontLabel->setFont(font); + } +} + +void QSUISettings::showEvent(QShowEvent *) +{ + m_ui.hiddenCheckBox->setEnabled(UiHelper::instance()->visibilityControl()); + m_ui.hideOnCloseCheckBox->setEnabled(UiHelper::instance()->visibilityControl()); +} + +void QSUISettings::loadFonts() +{ + QString fontName; + QFont font; + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + + m_ui.systemFontsCheckBox->setChecked(settings.value("use_system_fonts", true).toBool()); + + fontName = settings.value ("pl_font", qApp->font("QAbstractItemView").toString()).toString(); + font.fromString(fontName); + m_ui.plFontLabel->setText (font.family () + " " + QString::number(font.pointSize ())); + m_ui.plFontLabel->setFont(font); + + fontName = settings.value ("pl_tabs_font", qApp->font("QTabWidget").toString()).toString(); + font.fromString(fontName); + m_ui.tabsFontLabel->setText (font.family () + " " + QString::number(font.pointSize ())); + m_ui.tabsFontLabel->setFont(font); + + fontName = settings.value ("pl_header_font", qApp->font("QAbstractItemView").toString()).toString(); + font.fromString(fontName); + m_ui.columnFontLabel->setText (font.family () + " " + QString::number(font.pointSize ())); + m_ui.columnFontLabel->setFont(font); +} + +void QSUISettings::createActions() +{ + QMenu *menu = new QMenu(this); + menu->addAction(tr("Artist"))->setData("%p"); + menu->addAction(tr("Album"))->setData("%a"); + menu->addAction(tr("Album Artist"))->setData("%aa"); + 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)"); + menu->addAction(tr("Artist - Title"))->setData("%if(%p,%p - %t,%t)"); + + m_ui.windowTitleButton->setMenu(menu); + m_ui.windowTitleButton->setPopupMode(QToolButton::InstantPopup); + connect(menu, SIGNAL(triggered (QAction *)), SLOT(addWindowTitleString(QAction *))); +} + +void QSUISettings::on_popupTemplateButton_clicked() +{ + PopupSettings *p = new PopupSettings(this); + p->exec(); + p->deleteLater(); +} + +void QSUISettings::readSettings() +{ + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + //playlist + m_ui.protocolCheckBox->setChecked(settings.value("pl_show_protocol", false).toBool()); + m_ui.numbersCheckBox->setChecked(settings.value("pl_show_numbers", true).toBool()); + m_ui.lengthsCheckBox->setChecked(settings.value("pl_show_lengths", true).toBool()); + m_ui.alignCheckBox->setChecked(settings.value("pl_align_numbers", false).toBool()); + m_ui.anchorCheckBox->setChecked(settings.value("pl_show_anchor", false).toBool()); + m_ui.popupCheckBox->setChecked(settings.value("pl_show_popup", false).toBool()); + //tabs + m_ui.tabsClosableCheckBox->setChecked(settings.value("pl_tabs_closable", false).toBool()); + m_ui.showNewPLCheckBox->setChecked(settings.value("pl_show_new_pl_button", false).toBool()); + m_ui.showTabListMenuCheckBox->setChecked(settings.value("pl_show_tab_list_menu", false).toBool()); + //view + m_ui.hiddenCheckBox->setChecked(settings.value("start_hidden", false).toBool()); + m_ui.hideOnCloseCheckBox->setChecked(settings.value("hide_on_close", false).toBool()); + m_ui.windowTitleLineEdit->setText(settings.value("window_title_format","%if(%p,%p - %t,%t)").toString()); + //analyzer colors + m_ui.aColor1->setColor(settings.value("vis_color1", "#BECBFF").toString()); + m_ui.aColor2->setColor(settings.value("vis_color2", "#BECBFF").toString()); + m_ui.aColor3->setColor(settings.value("vis_color3", "#BECBFF").toString()); + m_ui.peaksColor->setColor(settings.value("vis_peak_color", "#DDDDDD").toString()); + m_ui.bgColor->setColor(settings.value("vis_bg_color", "Black").toString()); + //playlist colors + QString normal_bg = palette().color(QPalette::Base).name(); + QString alternate = palette().color(QPalette::AlternateBase).name(); + QString selected_bg = palette().color(QPalette::Highlight).name(); + QString normal = palette().color(QPalette::Text).name(); + QString current = palette().color(QPalette::Text).name(); + QString highlighted = palette().color(QPalette::HighlightedText).name(); + QString group_bg = palette().color(QPalette::Base).name(); + QString group_text = palette().color(QPalette::Text).name(); + m_ui.plSystemColorsCheckBox->setChecked(settings.value("pl_system_colors", true).toBool()); + m_ui.plBg1Color->setColor(settings.value("pl_bg1_color", normal_bg).toString()); + m_ui.plBg2Color->setColor(settings.value("pl_bg2_color", alternate).toString()); + m_ui.plHlColor->setColor(settings.value("pl_highlight_color", selected_bg).toString()); + m_ui.plTextNormalColor->setColor(settings.value("pl_normal_text_color", normal).toString()); + m_ui.plTextCurrentColor->setColor(settings.value("pl_current_text_color", current).toString()); + m_ui.plTextHlCurrentColor->setColor(settings.value("pl_hl_text_color", highlighted).toString()); + m_ui.plGrBgColor->setColor(settings.value("pl_group_bg", group_bg).toString()); + m_ui.plGrTextColor->setColor(settings.value("pl_group_text", group_text).toString()); + settings.endGroup(); +} + +void QSUISettings::writeSettings() +{ + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + settings.setValue("pl_show_protocol", m_ui.protocolCheckBox->isChecked()); + settings.setValue("pl_show_numbers", m_ui.numbersCheckBox->isChecked()); + settings.setValue("pl_show_lengths", m_ui.lengthsCheckBox->isChecked()); + settings.setValue("pl_align_numbers", m_ui.alignCheckBox->isChecked()); + settings.setValue("pl_show_anchor", m_ui.anchorCheckBox->isChecked()); + settings.setValue("pl_show_popup", m_ui.popupCheckBox->isChecked()); + settings.setValue("pl_tabs_closable", m_ui.tabsClosableCheckBox->isChecked()); + settings.setValue("pl_show_new_pl_button", m_ui.showNewPLCheckBox->isChecked()); + settings.setValue("pl_show_tab_list_menu", m_ui.showTabListMenuCheckBox->isChecked()); + settings.setValue("start_hidden", m_ui.hiddenCheckBox->isChecked()); + settings.setValue("hide_on_close", m_ui.hideOnCloseCheckBox->isChecked()); + settings.setValue("window_title_format", m_ui.windowTitleLineEdit->text()); + settings.setValue("vis_color1", m_ui.aColor1->colorName()); + settings.setValue("vis_color2", m_ui.aColor2->colorName()); + settings.setValue("vis_color3", m_ui.aColor3->colorName()); + settings.setValue("vis_peak_color", m_ui.peaksColor->colorName()); + settings.setValue("vis_bg_color", m_ui.bgColor->colorName()); + settings.setValue("pl_system_colors", m_ui.plSystemColorsCheckBox->isChecked()); + settings.setValue("pl_bg1_color", m_ui.plBg1Color->colorName()); + settings.setValue("pl_bg2_color", m_ui.plBg2Color->colorName()); + settings.setValue("pl_highlight_color", m_ui.plHlColor->colorName()); + settings.setValue("pl_normal_text_color", m_ui.plTextNormalColor->colorName()); + settings.setValue("pl_current_text_color", m_ui.plTextCurrentColor->colorName()); + settings.setValue("pl_hl_text_color", m_ui.plTextHlCurrentColor->colorName()); + settings.setValue("pl_group_bg", m_ui.plGrBgColor->colorName()); + settings.setValue("pl_group_text", m_ui.plGrTextColor->colorName()); + settings.setValue("pl_font", m_ui.plFontLabel->font().toString()); + settings.setValue("pl_tabs_font", m_ui.tabsFontLabel->font().toString()); + settings.setValue("pl_header_font", m_ui.columnFontLabel->font().toString()); + settings.setValue("use_system_fonts", m_ui.systemFontsCheckBox->isChecked()); + settings.endGroup(); +} + +void QSUISettings::on_resetFontsButton_clicked() +{ + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.remove("Simple/pl_font"); + settings.remove("Simple/pl_tabs_font"); + settings.remove("Simple/pl_header_font"); + loadFonts(); +} + +void QSUISettings::addWindowTitleString(QAction *a) +{ + if (m_ui.windowTitleLineEdit->cursorPosition () < 1) + m_ui.windowTitleLineEdit->insert(a->data().toString()); + else + m_ui.windowTitleLineEdit->insert(" - "+a->data().toString()); +} diff --git a/src/plugins/Ui/qsui/qsuisettings.h b/src/plugins/Ui/qsui/qsuisettings.h new file mode 100644 index 000000000..a6396a5c8 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuisettings.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (C) 2011-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef QSUISETTINGS_H +#define QSUISETTINGS_H + +#include +#include +#include "ui_qsuisettings.h" + +class QAction; + +/** + @author Ilya Kotov +*/ +class QSUISettings : public QWidget +{ + Q_OBJECT +public: + explicit QSUISettings(QWidget *parent = 0); + virtual ~QSUISettings(); + void writeSettings(); + + +private slots: + void on_plFontButton_clicked(); + void on_columnFontButton_clicked(); + void on_tabsFontButton_clicked(); + void on_popupTemplateButton_clicked(); + void on_resetFontsButton_clicked(); + void addWindowTitleString(QAction *a); + +private: + void showEvent(QShowEvent *); + void loadFonts(); + void createActions(); + void readSettings(); + + Ui::QSUISettings m_ui; +}; + +#endif // QSUISETTINGS_H diff --git a/src/plugins/Ui/qsui/qsuitabbar.cpp b/src/plugins/Ui/qsui/qsuitabbar.cpp new file mode 100644 index 000000000..2909f6187 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuitabbar.cpp @@ -0,0 +1,39 @@ +/*************************************************************************** + * Copyright (C) 2012 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include "qsuitabbar.h" + +QSUiTabBar::QSUiTabBar(QWidget *parent) : QTabBar(parent) +{} + +void QSUiTabBar::mouseReleaseEvent(QMouseEvent *e) +{ + if(e->button() == Qt::MidButton) + { + int i = tabAt(e->pos()); + if(i >= 0) + { + e->accept(); + emit tabCloseRequested(i); + } + } + QTabBar::mouseReleaseEvent(e); +} diff --git a/src/plugins/Ui/qsui/qsuitabbar.h b/src/plugins/Ui/qsui/qsuitabbar.h new file mode 100644 index 000000000..133ccb3f9 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuitabbar.h @@ -0,0 +1,40 @@ +/*************************************************************************** + * Copyright (C) 2012 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef QSUITABBAR_H +#define QSUITABBAR_H + +#include + +/** + @author Ilya Kotov +*/ +class QSUiTabBar : public QTabBar +{ + Q_OBJECT +public: + explicit QSUiTabBar(QWidget *parent = 0); + +private: + void mouseReleaseEvent(QMouseEvent *e); + +}; + +#endif // QSUITABBAR_H diff --git a/src/plugins/Ui/qsui/qsuitabwidget.cpp b/src/plugins/Ui/qsui/qsuitabwidget.cpp new file mode 100644 index 000000000..6dfad0433 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuitabwidget.cpp @@ -0,0 +1,148 @@ +/*************************************************************************** + * Copyright (C) 2012-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include "qsuitabbar.h" +#include "qsuitabwidget.h" + +QSUiTabWidget::QSUiTabWidget(QWidget *parent) : QTabWidget(parent) +{ + setTabBar(new QSUiTabBar(this)); + setMovable(true); + m_menu = new QMenu(this); + m_group = new QActionGroup(this); + m_group->setExclusive(true); + connect(tabBar(), SIGNAL(tabMoved(int,int)), SIGNAL(tabMoved(int,int))); + connect(tabBar(), SIGNAL(tabMoved(int,int)), SLOT(updateActions())); + connect(tabBar(), SIGNAL(tabCloseRequested(int)), SLOT(onTabCloseRequest(int))); + connect(this, SIGNAL(currentChanged(int)), SLOT(onCurrentChanged(int))); + connect(m_menu, SIGNAL(triggered(QAction*)), SLOT(onActionTriggered(QAction*))); + readSettings(); +} + +QMenu *QSUiTabWidget::menu() +{ + return m_menu; +} + +void QSUiTabWidget::onTabCloseRequest(int i) +{ + if(!tabsClosable()) + emit tabCloseRequested(i); +} + +void QSUiTabWidget::onCurrentChanged(int index) +{ + if(index >= m_menu->actions().count()) + return; + m_menu->actions().at(index)->setChecked(true); +} + +void QSUiTabWidget::onActionTriggered(QAction *action) +{ + setCurrentIndex(m_menu->actions().indexOf(action)); +} + +void QSUiTabWidget::updateActions() +{ + for(int i = 0; i < m_menu->actions().size(); ++i) + { + m_menu->actions().at(i)->setText(tabText(i)); + } + m_menu->actions().at(currentIndex())->setChecked(true); +} + +void QSUiTabWidget::tabInserted(int index) +{ + QAction *action = new QAction(m_menu); + action->setCheckable(true); + action->setActionGroup(m_group); + action->setText(tabText(index)); + + if(m_menu->actions().isEmpty() || index == m_menu->actions().count()) + { + m_menu->addAction(action); + } + else + { + QAction *before = m_menu->actions().at(index); + m_menu->insertAction(before, action); + } + if(currentIndex() == index) + action->setChecked(true); + QTabWidget::tabInserted(index); +} + +void QSUiTabWidget::tabRemoved(int index) +{ + QAction *a = m_menu->actions().at(index); + m_menu->removeAction(a); + delete a; + QTabWidget::tabRemoved(index); +} + +void QSUiTabWidget::setTabText(int index, const QString &text) +{ + QTabWidget::setTabText(index, text); + m_menu->actions().at(index)->setText(text); +} + +void QSUiTabWidget::readSettings() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("Simple"); + QFont tab_font = qApp->font(tabBar()); + if(!settings.value("use_system_fonts", true).toBool()) + { + tab_font.fromString(settings.value("pl_tabs_font", tab_font.toString()).toString()); + } + tabBar()->setFont(tab_font); +} + +void QSUiTabWidget::setTabsVisible(bool visible) +{ + tabBar()->setVisible(visible); +} + +void QSUiTabWidget::mousePressEvent(QMouseEvent *e) +{ + if((e->button() == Qt::MidButton) && + (childAt(e->pos()) == 0)) + { + e->accept(); + emit createPlayListRequested(); + } + QTabWidget::mousePressEvent(e); +} + +void QSUiTabWidget::mouseDoubleClickEvent(QMouseEvent *e) +{ + if((e->button() == Qt::LeftButton) && + (childAt(e->pos()) == 0)) + { + e->accept(); + emit createPlayListRequested(); + } + QTabWidget::mouseDoubleClickEvent(e); +} diff --git a/src/plugins/Ui/qsui/qsuitabwidget.h b/src/plugins/Ui/qsui/qsuitabwidget.h new file mode 100644 index 000000000..8bf4f6968 --- /dev/null +++ b/src/plugins/Ui/qsui/qsuitabwidget.h @@ -0,0 +1,65 @@ +/*************************************************************************** + * Copyright (C) 2012-2015 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef QSUITABWIDGET_H +#define QSUITABWIDGET_H + +#include +#include + +class QActionGroup; + +/** + @author Ilya Kotov +*/ +class QSUiTabWidget : public QTabWidget +{ + Q_OBJECT +public: + explicit QSUiTabWidget(QWidget *parent = 0); + + QMenu *menu(); + void setTabText(int index, const QString &text); + void readSettings(); + +signals: + void tabMoved(int from, int to); + void createPlayListRequested(); + +public slots: + void setTabsVisible(bool visible); + +private slots: + void onTabCloseRequest(int i); + void onCurrentChanged(int index); + void onActionTriggered(QAction *action); + void updateActions(); + +private: + void tabInserted(int index); + void tabRemoved(int index); + void mousePressEvent(QMouseEvent *e); + void mouseDoubleClickEvent(QMouseEvent *e); + QMenu *m_menu; + QActionGroup *m_group; + +}; + +#endif // QSUITABWIDGET_H diff --git a/src/plugins/Ui/qsui/resources/audio-volume-high.png b/src/plugins/Ui/qsui/resources/audio-volume-high.png new file mode 100644 index 000000000..e1b2563aa Binary files /dev/null and b/src/plugins/Ui/qsui/resources/audio-volume-high.png differ diff --git a/src/plugins/Ui/qsui/resources/audio-volume-low.png b/src/plugins/Ui/qsui/resources/audio-volume-low.png new file mode 100644 index 000000000..bb3aeaff6 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/audio-volume-low.png differ diff --git a/src/plugins/Ui/qsui/resources/audio-volume-medium.png b/src/plugins/Ui/qsui/resources/audio-volume-medium.png new file mode 100644 index 000000000..779fe1751 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/audio-volume-medium.png differ diff --git a/src/plugins/Ui/qsui/resources/audio-volume-muted.png b/src/plugins/Ui/qsui/resources/audio-volume-muted.png new file mode 100644 index 000000000..76fd50781 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/audio-volume-muted.png differ diff --git a/src/plugins/Ui/qsui/resources/eq16.preset b/src/plugins/Ui/qsui/resources/eq16.preset new file mode 100644 index 000000000..6ed69c2f5 --- /dev/null +++ b/src/plugins/Ui/qsui/resources/eq16.preset @@ -0,0 +1,324 @@ +[Presets] +Preset1=Club +Preset2=Dance +Preset3=Full Bass +Preset4=Full Treble +Preset5=Full Bass + Treble +Preset6=Headphones +Preset7=Large Hall +Preset8=Live +Preset9=Party +Preset10=Pop +Preset11=Reggae +Preset12=Rock +Preset13=Soft +Preset14=Ska +Preset15=Soft Rock +Preset16=Techno +Preset17=Default + +[Club] +Band0=0 +Band1=0 +Band2=0 +Band3=4 +Band4=5 +Band5=6 +Band6=6 +Band7=6 +Band8=6 +Band9=5 +Band10=5 +Band11=4 +Band12=0 +Band13=0 +Band14=0 +Preamp=0 + +[Dance] +Band0=10 +Band1=8 +Band2=7 +Band3=2 +Band4=1 +Band5=0 +Band6=0 +Band7=-3 +Band8=-6 +Band9=-8 +Band10=-8 +Band11=-8 +Band12=0 +Band13=0 +Band14=0 +Preamp=0 + +[Full%20Bass] +Band0=14 +Band1=14 +Band2=14 +Band3=14 +Band4=11 +Band5=8 +Band6=4 +Band7=0 +Band8=-4 +Band9=-9 +Band10=-9 +Band11=-10 +Band12=-11 +Band13=-11 +Band14=-11 +Preamp=0 + +[Full%20Treble] +Band0=-10 +Band1=-10 +Band2=-10 +Band3=-10 +Band4=-7 +Band5=-5 +Band6=3 +Band7=7 +Band8=11 +Band9=16 +Band10=16 +Band11=16 +Band12=16 +Band13=17 +Band14=17 +Preamp=0 + +[Full%20Bass%20%2B%20Treble] +Band0=7 +Band1=7 +Band2=6 +Band3=0 +Band4=-4 +Band5=-8 +Band6=-5 +Band7=-1 +Band8=2 +Band9=9 +Band10=10 +Band11=11 +Band12=12 +Band13=12 +Band14=12 +Preamp=0 + +[Headphones] +Band0=5 +Band1=7 +Band2=10 +Band3=5 +Band4=0 +Band5=-4 +Band6=0 +Band7=-3 +Band8=-6 +Band9=-8 +Band10=-8 +Band11=-8 +Band12=0 +Band13=0 +Band14=0 +Preamp=0 + +[Large%20Hall] +Band0=10 +Band1=10 +Band2=10 +Band3=6 +Band4=6 +Band5=6 +Band6=0 +Band7=-3 +Band8=-5 +Band9=-5 +Band10=-5 +Band11=-5 +Band12=0 +Band13=0 +Band14=0 +Preamp=0 + +[Live] +Band0=-5 +Band1=-2 +Band2=0 +Band3=2 +Band4=4 +Band5=5 +Band6=6 +Band7=6 +Band8=6 +Band9=4 +Band10=4 +Band11=3 +Band12=3 +Band13=2 +Band14=2 +Preamp=0 + +[Party] +Band0=7 +Band1=7 +Band2=7 +Band3=3 +Band4=0 +Band5=0 +Band6=0 +Band7=0 +Band8=0 +Band9=0 +Band10=0 +Band11=3 +Band12=7 +Band13=7 +Band14=7 +Preamp=0 + +[Pop] +Band0=-2 +Band1=1 +Band2=5 +Band3=7 +Band4=8 +Band5=8 +Band6=5 +Band7=2 +Band8=-1 +Band9=-3 +Band10=-3 +Band11=-3 +Band12=-2 +Band13=-2 +Band14=-2 +Preamp=0 + +[Reggae] +Band0=0 +Band1=0 +Band2=0 +Band3=-1 +Band4=-4 +Band5=-6 +Band6=0 +Band7=-4 +Band8=-7 +Band9=-7 +Band10=-4 +Band11=0 +Band12=0 +Band13=0 +Band14=0 +Preamp=0 + +[Rock] +Band0=8 +Band1=7 +Band2=5 +Band3=-6 +Band4=-7 +Band5=-8 +Band6=-4 +Band7=0 +Band8=4 +Band9=9 +Band10=10 +Band11=11 +Band12=11 +Band13=11 +Band14=11 +Preamp=0 + +[Soft] +Band0=5 +Band1=3 +Band2=2 +Band3=-1 +Band4=-2 +Band5=-3 +Band6=-1 +Band7=2 +Band8=4 +Band9=7 +Band10=9 +Band11=10 +Band12=11 +Band13=11 +Band14=12 +Preamp=0 + +[Ska] +Band0=-3 +Band1=-4 +Band2=-5 +Band3=-5 +Band4=-2 +Band5=-1 +Band6=4 +Band7=6 +Band8=6 +Band9=9 +Band10=9 +Band11=10 +Band12=11 +Band13=11 +Band14=10 +Preamp=0 + +[Soft%20Rock] +Band0=4 +Band1=4 +Band2=4 +Band3=2 +Band4=0 +Band5=-1 +Band6=-5 +Band7=-5 +Band8=-6 +Band9=-4 +Band10=-2 +Band11=-1 +Band12=3 +Band13=6 +Band14=9 +Preamp=0 + +[Techno] +Band0=8 +Band1=7 +Band2=6 +Band3=0 +Band4=-3 +Band5=-6 +Band6=-5 +Band7=-2 +Band8=0 +Band9=8 +Band10=9 +Band11=10 +Band12=10 +Band13=10 +Band14=9 +Preamp=0 + +[Default] +Band0=0 +Band1=0 +Band2=0 +Band3=0 +Band4=0 +Band5=0 +Band6=0 +Band7=0 +Band8=0 +Band9=0 +Band10=0 +Band11=0 +Band12=0 +Band13=0 +Band14=0 +Preamp=0 diff --git a/src/plugins/Ui/qsui/resources/media-eject.png b/src/plugins/Ui/qsui/resources/media-eject.png new file mode 100644 index 000000000..a6367adc0 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/media-eject.png differ diff --git a/src/plugins/Ui/qsui/resources/media-playback-pause.png b/src/plugins/Ui/qsui/resources/media-playback-pause.png new file mode 100644 index 000000000..17627c96b Binary files /dev/null and b/src/plugins/Ui/qsui/resources/media-playback-pause.png differ diff --git a/src/plugins/Ui/qsui/resources/media-playback-start.png b/src/plugins/Ui/qsui/resources/media-playback-start.png new file mode 100644 index 000000000..c4ddd34f5 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/media-playback-start.png differ diff --git a/src/plugins/Ui/qsui/resources/media-playback-stop.png b/src/plugins/Ui/qsui/resources/media-playback-stop.png new file mode 100644 index 000000000..f2f616c20 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/media-playback-stop.png differ diff --git a/src/plugins/Ui/qsui/resources/media-skip-backward.png b/src/plugins/Ui/qsui/resources/media-skip-backward.png new file mode 100644 index 000000000..34a35c623 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/media-skip-backward.png differ diff --git a/src/plugins/Ui/qsui/resources/media-skip-forward.png b/src/plugins/Ui/qsui/resources/media-skip-forward.png new file mode 100644 index 000000000..45edeb10e Binary files /dev/null and b/src/plugins/Ui/qsui/resources/media-skip-forward.png differ diff --git a/src/plugins/Ui/qsui/resources/qsui_resources.qrc b/src/plugins/Ui/qsui/resources/qsui_resources.qrc new file mode 100644 index 000000000..732b18229 --- /dev/null +++ b/src/plugins/Ui/qsui/resources/qsui_resources.qrc @@ -0,0 +1,19 @@ + + + terminus.png + qsui_settings.png + ui_no_cover.png + media-eject.png + media-playback-pause.png + media-playback-start.png + media-playback-stop.png + media-skip-backward.png + media-skip-forward.png + audio-volume-high.png + audio-volume-low.png + audio-volume-medium.png + audio-volume-muted.png + eq16.preset + qsui_shortcuts.png + + diff --git a/src/plugins/Ui/qsui/resources/qsui_settings.png b/src/plugins/Ui/qsui/resources/qsui_settings.png new file mode 100644 index 000000000..a6479df07 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/qsui_settings.png differ diff --git a/src/plugins/Ui/qsui/resources/qsui_shortcuts.png b/src/plugins/Ui/qsui/resources/qsui_shortcuts.png new file mode 100644 index 000000000..45d917220 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/qsui_shortcuts.png differ diff --git a/src/plugins/Ui/qsui/resources/terminus.png b/src/plugins/Ui/qsui/resources/terminus.png new file mode 100644 index 000000000..2da094f69 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/terminus.png differ diff --git a/src/plugins/Ui/qsui/resources/ui_no_cover.png b/src/plugins/Ui/qsui/resources/ui_no_cover.png new file mode 100644 index 000000000..ac8c587e3 Binary files /dev/null and b/src/plugins/Ui/qsui/resources/ui_no_cover.png differ diff --git a/src/plugins/Ui/qsui/shortcutdialog.cpp b/src/plugins/Ui/qsui/shortcutdialog.cpp new file mode 100644 index 000000000..e3df5d8ac --- /dev/null +++ b/src/plugins/Ui/qsui/shortcutdialog.cpp @@ -0,0 +1,67 @@ +/*************************************************************************** + * Copyright (C) 2010-2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include "shortcutdialog.h" + +ShortcutDialog::ShortcutDialog(const QString &key, QWidget *parent) + : QDialog(parent) +{ + m_ui.setupUi(this); + m_ui.keyLineEdit->setText(key); + + //buttons should not catch keys + foreach(QAbstractButton *button, m_ui.buttonBox->buttons()) + button->setFocusPolicy(Qt::NoFocus); +} + +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; + m_ui.keyLineEdit->clear(); + QWidget::keyPressEvent(event); + return; + } + QKeySequence seq(event->modifiers() + event->key()); + m_ui.keyLineEdit->setText(seq.toString()); + QWidget::keyPressEvent(event); +} + +const QString ShortcutDialog::key() +{ + return m_ui.keyLineEdit->text(); +} diff --git a/src/plugins/Ui/qsui/shortcutdialog.h b/src/plugins/Ui/qsui/shortcutdialog.h new file mode 100644 index 000000000..e581f9c8a --- /dev/null +++ b/src/plugins/Ui/qsui/shortcutdialog.h @@ -0,0 +1,49 @@ +/*************************************************************************** + * Copyright (C) 2010-2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef SHORTCUTDIALOG_H +#define SHORTCUTDIALOG_H + +#include +#include "ui_shortcutdialog.h" + +class QKeyEvent; + +/** + @author Ilya Kotov +*/ +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 m_ui; + +}; + +#endif diff --git a/src/plugins/Ui/qsui/shortcutitem.cpp b/src/plugins/Ui/qsui/shortcutitem.cpp new file mode 100644 index 000000000..058136391 --- /dev/null +++ b/src/plugins/Ui/qsui/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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#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/qsui/shortcutitem.h b/src/plugins/Ui/qsui/shortcutitem.h new file mode 100644 index 000000000..d3474baec --- /dev/null +++ b/src/plugins/Ui/qsui/shortcutitem.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef SHORTCUTITEM_H +#define SHORTCUTITEM_H + +#include + +class QWidget; +class QAction; + +/** + @author Ilya Kotov +*/ +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/qsui/toolbareditor.cpp b/src/plugins/Ui/qsui/toolbareditor.cpp new file mode 100644 index 000000000..7abfc6710 --- /dev/null +++ b/src/plugins/Ui/qsui/toolbareditor.cpp @@ -0,0 +1,185 @@ +/*************************************************************************** + * Copyright (C) 2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include +#include +#include +#include "toolbareditor.h" +#include "ui_toolbareditor.h" + +ToolBarEditor::ToolBarEditor(QWidget *parent) : + QDialog(parent), + m_ui(new Ui::ToolBarEditor) +{ + m_ui->setupUi(this); + m_ui->upToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowUp)); + m_ui->downToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowDown)); + m_ui->addToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowRight)); + m_ui->removeToolButton->setIcon(qApp->style()->standardIcon(QStyle::SP_ArrowLeft)); + connect(m_ui->actionsListWidget->model(), SIGNAL(rowsAboutToBeRemoved(const QModelIndex &,int,int)), + SLOT(onRowsAboutToBeRemoved(const QModelIndex &, int, int))); + connect(m_ui->activeActionsListWidget->model(), SIGNAL(rowsAboutToBeRemoved(const QModelIndex &,int,int)), + SLOT(onRowsAboutToBeRemoved(const QModelIndex &, int, int))); + populateActionList(); +} + +ToolBarEditor::~ToolBarEditor() +{ + delete m_ui; +} + +void ToolBarEditor::accept() +{ + QStringList names; + for(int row = 0; row < m_ui->activeActionsListWidget->count(); ++row) + names.append(m_ui->activeActionsListWidget->item(row)->data(Qt::UserRole).toString()); + + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("Simple/toolbar_actions", names); + QDialog::accept(); +} + +void ToolBarEditor::populateActionList(bool reset) +{ + QStringList names = ActionManager::instance()->toolBarActionNames(); + if(!reset) + { + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + names = settings.value("Simple/toolbar_actions", names).toStringList(); + } + + for(int id = ActionManager::PLAY; id <= ActionManager::QUIT; ++id) + { + QAction *action = ACTION(id); + if(action->icon().isNull()) + continue; + QListWidgetItem *item = new QListWidgetItem(); + item->setIcon(action->icon()); + item->setText(action->text().replace("&", "")); + item->setData(Qt::UserRole, action->objectName()); + if(!names.contains(action->objectName())) + m_ui->actionsListWidget->addItem(item); + } + + { + QListWidgetItem *item = new QListWidgetItem(); + item->setText("-- " + tr("Separator") + " --"); + item->setData(Qt::UserRole, "separator"); + m_ui->actionsListWidget->addItem(item); + } + + foreach (QString name, names) + { + QAction *action = ActionManager::instance()->findChild(name); + if(action) + { + QListWidgetItem *item = new QListWidgetItem(); + item->setIcon(action->icon()); + item->setText(action->text().replace("&", "")); + item->setData(Qt::UserRole, action->objectName()); + m_ui->activeActionsListWidget->addItem(item); + } + else if(name == "separator") + { + QListWidgetItem *item = new QListWidgetItem(); + item->setText("-- " + tr("Separator") + " --"); + item->setData(Qt::UserRole, "separator"); + m_ui->activeActionsListWidget->addItem(item); + } + } +} + +void ToolBarEditor::on_addToolButton_clicked() +{ + int row = m_ui->actionsListWidget->currentRow(); + if(row > -1) + { + QListWidgetItem *item = m_ui->actionsListWidget->takeItem(row); + m_ui->activeActionsListWidget->addItem(item); + } +} + +void ToolBarEditor::on_removeToolButton_clicked() +{ + int row = m_ui->activeActionsListWidget->currentRow(); + if(row > -1) + { + QListWidgetItem *item = m_ui->activeActionsListWidget->takeItem(row); + m_ui->actionsListWidget->addItem(item); + } +} + +void ToolBarEditor::on_upToolButton_clicked() +{ + int row = m_ui->activeActionsListWidget->currentRow(); + if(row > 0) + { + QListWidgetItem *item = m_ui->activeActionsListWidget->takeItem(row); + m_ui->activeActionsListWidget->insertItem(row - 1, item); + m_ui->activeActionsListWidget->setCurrentItem(item); + } +} + +void ToolBarEditor::on_downToolButton_clicked() +{ + int row = m_ui->activeActionsListWidget->currentRow(); + if(row > -1 && row < m_ui->activeActionsListWidget->count()) + { + QListWidgetItem *item = m_ui->activeActionsListWidget->takeItem(row); + m_ui->activeActionsListWidget->insertItem(row + 1, item); + m_ui->activeActionsListWidget->setCurrentItem(item); + } +} + +void ToolBarEditor::on_resetPushButton_clicked() +{ + m_ui->actionsListWidget->clear(); + m_ui->activeActionsListWidget->clear(); + populateActionList(true); +} + +void ToolBarEditor::onRowsAboutToBeRemoved(const QModelIndex &, int start, int) +{ + if(sender() == m_ui->actionsListWidget->model()) + { + //recreate separator + QListWidgetItem *item = m_ui->actionsListWidget->item(start); + if(item && item->data(Qt::UserRole).toString() == "separator") + m_ui->actionsListWidget->addItem(item->clone()); + } + else if(sender() == m_ui->activeActionsListWidget->model()) + { + //remove separator + QListWidgetItem *item = m_ui->activeActionsListWidget->item(start); + if(item && item->data(Qt::UserRole).toString() == "separator") + { + for(int i = 0; i < m_ui->actionsListWidget->count(); ++i) + { + if(m_ui->actionsListWidget->item(i)->data(Qt::UserRole).toString() == "separator") + { + m_ui->actionsListWidget->model()->blockSignals(true); + delete m_ui->actionsListWidget->takeItem(i); + m_ui->actionsListWidget->model()->blockSignals(false); + break; + } + } + } + } +} diff --git a/src/plugins/Ui/qsui/toolbareditor.h b/src/plugins/Ui/qsui/toolbareditor.h new file mode 100644 index 000000000..ba9d34216 --- /dev/null +++ b/src/plugins/Ui/qsui/toolbareditor.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (C) 2013 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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef TOOLBAREDITOR_H +#define TOOLBAREDITOR_H + +#include +#include +#include "actionmanager.h" + +namespace Ui { +class ToolBarEditor; +} + +/** + @author Ilya Kotov +*/ +class ToolBarEditor : public QDialog +{ + Q_OBJECT + +public: + explicit ToolBarEditor(QWidget *parent = 0); + ~ToolBarEditor(); + +public slots: + void accept(); + +private slots: + void on_addToolButton_clicked(); + void on_removeToolButton_clicked(); + void on_upToolButton_clicked(); + void on_downToolButton_clicked(); + void on_resetPushButton_clicked(); + void onRowsAboutToBeRemoved(const QModelIndex &, int start, int); + +private: + void populateActionList(bool reset = false); + Ui::ToolBarEditor *m_ui; +}; + +#endif // TOOLBAREDITOR_H diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_bg.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_bg.ts new file mode 100644 index 000000000..7ffeca259 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_bg.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + + + + + X + + + + + &Pause + + + + + C + + + + + &Stop + + + + + V + + + + + &Previous + + + + + Z + + + + + &Next + + + + + B + + + + + &Play/Pause + + + + + Space + + + + + &Jump to Track + + + + + J + + + + + &Play Files + + + + + E + + + + + &Repeat Playlist + + + + + R + + + + + &Repeat Track + + + + + Ctrl+R + + + + + &Shuffle + + + + + S + + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + &Add File + + + + + F + + + + + &Add Directory + + + + + D + + + + + &Add Url + + + + + U + + + + + &Remove Selected + + + + + Del + + + + + &Remove All + + + + + &Remove Unselected + + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + + + + + Invert Selection + + + + + &Select None + + + + + &Select All + + + + + Ctrl+A + + + + + &View Track Details + + + + + Alt+I + + + + + &New List + + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + + + + + O + + + + + &Save List + + + + + Shift+S + + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + + + + + Ctrl+P + + + + + &About Ui + + + + + &About + + + + + &About Qt + + + + + &Exit + + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Change Directory + + + + + Select Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + + + + + Misc + + + + + MainWindow + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + + + + + Play + + + + + Pause + + + + + Next + + + + + Stop + + + + + &Add File + + + + + &Remove All + + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + + + + + &Exit + + + + + About + + + + + About Qt + + + + + &Select All + + + + + &Remove Selected + + + + + &Remove Unselected + + + + + Visualization + + + + + Settings + + + + + + Rename Playlist + + + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + + + + + + By Title + + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + + + + + + By Path + Filename + + + + + + By Date + + + + + + By Track Number + + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + + + + + Randomize List + + + + + Reverse List + + + + + + Actions + + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + + + + + Start hidden + + + + + Fonts + + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + + + + + + + + ... + + + + + Main Window + + + + + Window title format: + + + + + Song Display + + + + + Show protocol + + + + + Show song numbers + + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Miscellaneous + + + + + Analyzer Colors + + + + + Single Column Mode + + + + + Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Use system colors + + + + + Group background: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_cs.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_cs.ts new file mode 100644 index 000000000..01d2a8538 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_cs.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + O QSUI + + + + Qmmp Simple User Interface (QSUI) + Jednoduché uživatelské rozhraní pro Qmmp (QSUI) + + + + Qmmp version: <b>%1</b> + Verze Qmmp: <b>%1</b> + + + + QSUI version: <b>%1</b> + Verze QSUI: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Jednoduché uživatelské rozhraní založené na standardní sadě prvků. + + + + ActionManager + + + &Play + Pře&hrát + + + + X + X + + + + &Pause + Pau&za + + + + C + C + + + + &Stop + Za&stavit + + + + V + V + + + + &Previous + &Předchozí + + + + Z + Z + + + + &Next + &Následující + + + + B + B + + + + &Play/Pause + &Přehrát/Pauza + + + + Space + Mezerník + + + + &Jump to Track + &Skok na stopu + + + + J + J + + + + &Play Files + + + + + E + E + + + + &Repeat Playlist + &Opakovat seznam skladeb + + + + R + O + + + + &Repeat Track + &Opakovat stopu + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + Za&míchat + + + + S + M + + + + &No Playlist Advance + &Nepostupovat v seznamu skladeb + + + + Ctrl+N + Ctrl+N + + + + &Stop After Selected + Za&stavit po výběru + + + + Ctrl+S + Ctrl+S + + + + &Clear Queue + &Vyčistit frontu + + + + Alt+Q + Alt+Q + + + + Always on Top + Vždy na vrchu + + + + Put on All Workspaces + Na všechny pracovní plochy + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + &Add File + Přidat &soubor + + + + F + F + + + + &Add Directory + Přidat &adresář + + + + D + D + + + + &Add Url + Přidat &URL + + + + U + U + + + + &Remove Selected + &Odstranit vybrané + + + + Del + Del + + + + &Remove All + Odstranit &vše + + + + &Remove Unselected + Odstranit &nevybrané + + + + Remove unavailable files + Odstranit nedostupné soubory + + + + Remove duplicates + Odstranit duplicity + + + + &Queue Toggle + Do/z &fronty + + + + Q + Q + + + + Invert Selection + Invertovat výběr + + + + &Select None + &Zrušit výběr + + + + &Select All + &Vybrat vše + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + Zobrazit &informace o skladbě + + + + Alt+I + Alt+I + + + + &New List + &Nový seznam + + + + Ctrl+T + Ctrl+T + + + + &Delete List + O&dstranit seznam + + + + Ctrl+W + Ctrl+W + + + + &Load List + Načíst &seznam + + + + O + O + + + + &Save List + &Uložit seznam + + + + Shift+S + Shift+S + + + + &Rename List + &Přejmenovat seznam + + + + F2 + + + + + &Select Next Playlist + Vybrat další &seznam skladeb + + + + Ctrl+PgDown + Ctrl+PageDown + + + + &Select Previous Playlist + Vybrat předchozí &seznam skladeb + + + + Ctrl+PgUp + Ctrl+PageUp + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + &Ekvalizér + + + + Ctrl+E + Ctrl+E + + + + &Settings + &Nastavení + + + + Ctrl+P + Ctrl+P + + + + &About Ui + &O modulu Ui + + + + &About + O &aplikaci + + + + &About Qt + O knihovně &Qt + + + + &Exit + U&končit + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + Vyberte barvu + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + Ekvalizér + + + + Enable equalizer + Povolit ekvalizér + + + + Preset: + Předvolba: + + + + Save + Uložit + + + + Delete + Smazat + + + + Reset + Obnovit + + + + Preamp + Předzesílení + + + + + %1dB + %1 dB + + + + + +%1dB + +%1 dB + + + + preset + předvolba + + + + Overwrite Request + Žádost o přepsání + + + + Preset '%1' already exists. Overwrite? + Předvolba ‚%1‘ již existuje. Přepsat? + + + + FileSystemBrowser + + + Add to Playlist + + + + + Change Directory + + + + + Select Directory + + + + + HotkeyEditor + + + Reset + Obnovit + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + Přehrávání + + + + View + Zobrazení + + + + Volume + Hlasitost + + + + Playlist + + + + + Misc + + + + + MainWindow + + + Qmmp + Qmmp + + + + &File + &Soubor + + + + &Tools + Nás&troje + + + + &Help + &Nápověda + + + + &Edit + Ú&pravy + + + + &Playback + &Přehrávání + + + + &View + Po&hled + + + + Playback + Přehrávání + + + + Progress + Postup + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + Obal + + + + Playlists + + + + + Previous + Předchozí + + + + Play + Přehrát + + + + Pause + Pozastavit + + + + Next + Další + + + + Stop + Zastavit + + + + &Add File + Přidat &soubor + + + + &Remove All + Odstranit &vše + + + + New Playlist + Nový seznam skladeb + + + + Remove Playlist + Odstranit seznam skladeb + + + + &Add Directory + Přidat &adresář + + + + &Exit + U&končit + + + + About + O programu + + + + About Qt + O Qt + + + + &Select All + &Vybrat vše + + + + &Remove Selected + &Odstranit vybrané + + + + &Remove Unselected + Odstranit &nevybrané + + + + Visualization + Vizualizace + + + + Settings + Nastavení + + + + + Rename Playlist + Přejmenovat seznam skladeb + + + + Volume + Hlasitost + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + Pozastaveno + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + Zastaveno + + + + Playlist name: + Název seznamu skladeb: + + + + Appearance + Vzhled + + + + Shortcuts + + + + + Playing + Přehrává se + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Seřadit seznam + + + + + By Title + Podle názvu skladby + + + + + By Album + Podle alba + + + + + By Artist + Podle umělce + + + + + By Album Artist + + + + + + By Filename + Podle názvu souboru + + + + + By Path + Filename + Podle cesty a názvu souboru + + + + + By Date + Podle data + + + + + By Track Number + Podle čísla skladby + + + + + By Disc Number + Podle čísla disku + + + + + By File Creation Date + Podle data vytvoření souboru + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Seřadit výběr + + + + Randomize List + Zamíchat seznam + + + + Reverse List + Obrátit pořadí seznamu + + + + + Actions + Činnosti + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + Načítám: %1 % + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + Nastavení vyskakovacích informací + + + + Template + Šablona + + + + Reset + Obnovit + + + + Insert + Vložit + + + + Show cover + Zobrazit obal + + + + Cover size: + Velikost obalu: + + + + Transparency: + Průhlednost: + + + + Delay: + Prodleva: + + + + ms + ms + + + + Artist + Umělec + + + + Album + Album + + + + Album Artist + + + + + Title + Název + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + Žánr + + + + Comment + Poznámka + + + + Composer + Skladatel + + + + Duration + Délka + + + + Year + Rok + + + + Condition + Stav + + + + QSUIFactory + + + Simple User Interface + Jednoduché uživatelské rozhraní + + + + QSUISettings + + + View + Zobrazení + + + + Hide on close + Skrýt při zavření + + + + Start hidden + Spustit skryté + + + + Fonts + Písma + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Zobrazení skladby + + + + Show protocol + Zobrazit protokol + + + + Show song numbers + Zobrazit čísla skladeb + + + + Show song lengths + + + + + Align song numbers + Zarovnat čísla skladeb + + + + Show anchor + Zobrazit kotvu + + + + Show popup information + Zobrazit informace ve vyskakovacím okně + + + + Edit template + Upravit šablonu + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Miscellaneous + Různé + + + + Analyzer Colors + Barvy analyzéru + + + + Single Column Mode + + + + + Colors + + + + + Analyzer #1: + Analyzér #1: + + + + Peaks: + Špičky: + + + + Analyzer #2: + Analyzér #2: + + + + Background: + Pozadí: + + + + Analyzer #3: + Analyzér #3: + + + + Playlist Colors + Barvy seznamu skladeb + + + + Background #1: + Pozadí #1: + + + + Normal text: + Normální text: + + + + Background #2: + Pozadí #2: + + + + Current text: + Aktuální text: + + + + Highlighted background: + Zvýrazněné pozadí: + + + + Hightlighted text: + Zvýrazněný text: + + + + Use system colors + Použít systémové barvy + + + + Group background: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Artist + Umělec + + + + Album + Album + + + + Album Artist + + + + + Title + Název + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + Žánr + + + + Comment + Poznámka + + + + Composer + Skladatel + + + + Duration + Délka + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + Rok + + + + Condition + Stav + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + Obal + + + + Peaks + Špičky + + + + Refresh Rate + Obnovovací frekvence + + + + 50 fps + 50 s/s + + + + 25 fps + 25 s/s + + + + 10 fps + 10 s/s + + + + 5 fps + 5 s/s + + + + Analyzer Falloff + Pokles analyzéru + + + + + Slowest + Nejpomalejší + + + + + Slow + Pomalý + + + + + Medium + Střední + + + + + Fast + Rychlý + + + + + Fastest + Nejrychlejší + + + + Peaks Falloff + Pokles špiček + + + + ShortcutDialog + + + Change Shortcut + Změnit zkratku + + + + Press the key combination you want to assign + Stlačte kombinaci kláves, kterou chcete přiřadit + + + + Clear + Vymazat + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + Obnovit + + + + + Separator + + + + + VisualMenu + + + Visualization + Vizualizace + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_de.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_de.ts new file mode 100644 index 000000000..26e964e61 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_de.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + Über QSUI + + + + Qmmp Simple User Interface (QSUI) + Qmmp Einfache Benutzeroberfläche (QSUI) + + + + Qmmp version: <b>%1</b> + Qmmp-Version: <b>%1</b> + + + + QSUI version: <b>%1</b> + QSUI-Version: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Einfache Benutzeroberfläche basiert auf einem Standard-Steuerelementsatz. + + + + ActionManager + + + &Play + &Wiedergabe + + + + X + X + + + + &Pause + &Pause + + + + C + C + + + + &Stop + &Stopp + + + + V + V + + + + &Previous + &Vorheriger Titel + + + + Z + Z + + + + &Next + &Nächster Titel + + + + B + B + + + + &Play/Pause + Wieder&gabe/Pause + + + + Space + Leertaste + + + + &Jump to Track + &Zu Titel springen + + + + J + J + + + + &Play Files + Dateien &wiedergeben + + + + E + E + + + + &Repeat Playlist + W&iedergabeliste wiederholen + + + + R + R + + + + &Repeat Track + Tite&l wiederholen + + + + Ctrl+R + Strg+R + + + + &Shuffle + &Zufallswiedergabe + + + + S + S + + + + &No Playlist Advance + Kei&n voranschreiten in der Wiedergabeliste + + + + Ctrl+N + Strg+N + + + + &Stop After Selected + Wiedergabe nach dem ausgewählten Titel &stoppen + + + + Ctrl+S + Strg+S + + + + &Clear Queue + Wartes&chlange löschen + + + + Alt+Q + Alt+Q + + + + Always on Top + Immer im Vordergrund + + + + Put on All Workspaces + Auf allen Arbeitsflächen anzeigen + + + + Show Tabs + Reiter anzeigen + + + + Show Title Bars + Titelleisten anzeigen + + + + Block Toolbars + Werkzeugleisten sperren + + + + Volume &+ + Lautstärke &+ + + + + 0 + 0 + + + + Volume &- + Lautstärke &- + + + + 9 + 9 + + + + &Mute + Stu&mm + + + + M + M + + + + &Add File + &Datei hinzufügen + + + + F + F + + + + &Add Directory + &Verzeichnis hinzufügen + + + + D + D + + + + &Add Url + &URL hinzufügen + + + + U + U + + + + &Remove Selected + &Ausgewählte entfernen + + + + Del + Entf + + + + &Remove All + Alle &entfernen + + + + &Remove Unselected + &Nicht ausgewählte entfernen + + + + Remove unavailable files + Nichtverfügbare Dateien entfernen + + + + Remove duplicates + Duplikate entfernen + + + + &Queue Toggle + Zur &Warteschlange hinzufügen/Aus der Warteschlange entfernen + + + + Q + Q + + + + Invert Selection + Auswahl umkehren + + + + &Select None + &Auswahl aufheben + + + + &Select All + Alle aus&wählen + + + + Ctrl+A + Strg+A + + + + &View Track Details + &Titeldetails anzeigen + + + + Alt+I + Alt+I + + + + &New List + &Neue Wiedergabeliste + + + + Ctrl+T + Strg+T + + + + &Delete List + Wie&dergabeliste löschen + + + + Ctrl+W + Strg+W + + + + &Load List + Wiedergabeliste &laden + + + + O + O + + + + &Save List + Wiedergabeliste &speichern + + + + Shift+S + Umschalt+S + + + + &Rename List + Wiede&rgabeliste umbenennen + + + + F2 + F2 + + + + &Select Next Playlist + Näch&ste Wiedergabeliste auswählen + + + + Ctrl+PgDown + Strg+Bild ab + + + + &Select Previous Playlist + Vorherige Wiedergabeli&ste auswählen + + + + Ctrl+PgUp + Strg+Bild auf + + + + Ctrl+G + Strg+G + + + + &Group Tracks + Titel &gruppieren + + + + Ctrl+H + Strg+H + + + + &Show Column Headers + &Spaltenüberschriften anzeigen + + + + &Equalizer + &Equalizer + + + + Ctrl+E + Strg+E + + + + &Settings + Ein&stellungen + + + + Ctrl+P + Strg+P + + + + &About Ui + &Über Ui + + + + &About + Ü&ber + + + + &About Qt + Übe&r Qt + + + + &Exit + Be&enden + + + + Ctrl+Q + Strg+Q + + + + ColorWidget + + + Select Color + Farbe auswählen + + + + CoverWidget + + + &Save As... + &Speichern als... + + + + Save Cover As + Hülle speichern als + + + + Images + Bilder + + + + Equalizer + + + Equalizer + Equalizer + + + + Enable equalizer + Equalizer aktivieren + + + + Preset: + Voreinstellung: + + + + Save + Speichern + + + + Delete + Löschen + + + + Reset + Zurücksetzen + + + + Preamp + Vorverstärker + + + + + %1dB + %1dB + + + + + +%1dB + +%1dB + + + + preset + Voreinstellung + + + + Overwrite Request + Überschreiben nachfragen + + + + Preset '%1' already exists. Overwrite? + Voreinstellung '%1' ist bereits vorhanden. Überschreiben? + + + + FileSystemBrowser + + + Add to Playlist + Zur Wiedergabeliste hinzufügen + + + + Change Directory + Verzeichnis wechseln + + + + Select Directory + Verzeichnis auswählen + + + + HotkeyEditor + + + Reset + Zurücksetzen + + + + Action + Aktion + + + + Shortcut + Kurzbefehl + + + + Change shortcut... + Kurzbefehl ändern … + + + + Reset Shortcuts + Kurzbefehle zurücksetzen + + + + Do you want to restore default shortcuts? + Möchten Sie die Standard-Kurzbefehle wiederherstellen? + + + + Playback + Wiedergabe + + + + View + Ansicht + + + + Volume + Lautstärke + + + + Playlist + Wiedergabeliste + + + + Misc + Verschiedenes + + + + MainWindow + + + Qmmp + Qmmp + + + + &File + &Datei + + + + &Tools + We&rkzeuge + + + + &Help + &Hilfe + + + + &Edit + &Bearbeiten + + + + &Playback + &Wiedergabe + + + + &View + &Ansicht + + + + Playback + Wiedergabe + + + + Progress + Fortschritt + + + + Spectrum Analyzer + Spektrumanalysator + + + + Files + Dateien + + + + Cover + Hülle + + + + Playlists + Wiedergabelisten + + + + Previous + Vorheriger Titel + + + + Play + Wiedergabe + + + + Pause + Pause + + + + Next + Nächster Titel + + + + Stop + Stopp + + + + &Add File + &Datei hinzufügen + + + + &Remove All + Alle &entfernen + + + + New Playlist + Neue Wiedergabeliste + + + + Remove Playlist + Wiedergabeliste entfernen + + + + &Add Directory + &Verzeichnis hinzufügen + + + + &Exit + Be&enden + + + + About + Über + + + + About Qt + Über Qt + + + + &Select All + Alle aus&wählen + + + + &Remove Selected + &Ausgewählte entfernen + + + + &Remove Unselected + &Nicht ausgewählte entfernen + + + + Visualization + Visualisierung + + + + Settings + Einstellungen + + + + + Rename Playlist + Wiedergabeliste umbenennen + + + + Volume + Lautstärke + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + <b>%1</b>|%2 Bit|%3 Kan.|%4 Hz|Titel: %5|Gesamtzeit: %6|%7 kbit/s| + + + + Paused + Pausiert + + + + <b>%1</b>|tracks: %2|total time: %3| + <b>%1</b>|Titel: %2|Gesamtzeit: %3| + + + + Stopped + Gestoppt + + + + Playlist name: + Wiedergabelistenname: + + + + Appearance + Erscheinungsbild + + + + Shortcuts + Kurzbefehle + + + + Playing + Wiedergabe + + + + Ctrl+0 + Strg+0 + + + + P + P + + + + Edit Toolbar + Werkzeugleiste bearbeiten + + + + Sort List + Wiedergabeliste sortieren + + + + + By Title + Nach Titel + + + + + By Album + Nach Album + + + + + By Artist + Nach Interpret + + + + + By Album Artist + Nach Albuminterpret + + + + + By Filename + Nach Dateinamen + + + + + By Path + Filename + Nach Pfad & Dateinamen + + + + + By Date + Nach Datum + + + + + By Track Number + Nach Titelnummer + + + + + By Disc Number + Nach Disc-Nummer + + + + + By File Creation Date + Nach Dateierstellungsdatum + + + + + By File Modification Date + Nach Dateiänderungsdatum + + + + By Group + Nach Gruppe + + + + Sort Selection + Auswahl sortieren + + + + Randomize List + Wiedergabeliste mischen + + + + Reverse List + Wiedergabeliste umkehren + + + + + Actions + Aktionen + + + + Add new playlist + Neue Wiedergabeliste hinzufügen + + + + Show all tabs + Alle Reiter anzeigen + + + + Buffering: %1% + Pufferung: %1 % + + + + PlayListHeader + + + Add Column + Spalte hinzufügen + + + + Edit Column + Spalte bearbeiten + + + + Show Queue/Protocol + Warteschlange/Protokoll anzeigen + + + + Auto-resize + Automatische Größenänderung + + + + Remove Column + Spalte entfernen + + + + PopupSettings + + + Popup Information Settings + Einstellungen Aufklapp-Informationen + + + + Template + Vorlage + + + + Reset + Zurücksetzen + + + + Insert + Einfügen + + + + Show cover + Hülle anzeigen + + + + Cover size: + Hüllengröße: + + + + Transparency: + Transparenz: + + + + Delay: + Verzögerung: + + + + ms + ms + + + + Artist + Interpret + + + + Album + Album + + + + Album Artist + Albuminterpret + + + + Title + Titel + + + + Track Number + Titelnummer + + + + Two-digit Track Number + Zweistellige Titelnummer + + + + Disc Number + Disc-Nummer + + + + File Name + Dateiname + + + + File Path + Dateipfad + + + + Genre + Genre + + + + Comment + Kommentar + + + + Composer + Komponist + + + + Duration + Abspieldauer + + + + Year + Jahr + + + + Condition + Zustand + + + + QSUIFactory + + + Simple User Interface + Einfache Benutzeroberfläche + + + + QSUISettings + + + View + Ansicht + + + + Hide on close + Beim Schließen in den Systemabschnitt der Kontrollleiste minimieren + + + + Start hidden + Minimiert starten + + + + Fonts + Schriftarten + + + + Use system fonts + Systemschriftarten verwenden + + + + Playlist: + Wiedergabeliste: + + + + + + ??? + ??? + + + + + + + ... + + + + + Main Window + Hauptfenster + + + + Window title format: + Fenstertitelformat: + + + + Song Display + Titelanzeige + + + + Show protocol + Protokoll anzeigen + + + + Show song numbers + Titelnummern anzeigen + + + + Show song lengths + Titellängen anzeigen + + + + Align song numbers + Titelnummern ausrichten + + + + Show anchor + Anker anzeigen + + + + Show popup information + Informationen in einem Aufklapp-Fenster anzeigen + + + + Edit template + Vorlage bearbeiten + + + + Reset fonts + Schriftarten zurücksetzen + + + + Column headers: + Spaltenüberschriften: + + + + Tab names: + Reiternamen: + + + + Miscellaneous + Verschiedenes + + + + Analyzer Colors + Analysatorfarben + + + + Single Column Mode + Einzelspaltenmodus + + + + Colors + Farben + + + + Analyzer #1: + Analysator #1: + + + + Peaks: + Spitzenwerte: + + + + Analyzer #2: + Analysator #2: + + + + Background: + Hintergrund: + + + + Analyzer #3: + Analysator #3: + + + + Playlist Colors + Wiedergabelistenfarben + + + + Background #1: + Hintergrund #1: + + + + Normal text: + Normaler Text: + + + + Background #2: + Hintergrund #2: + + + + Current text: + Aktueller Text: + + + + Highlighted background: + Hervorgehobener Hintergrund: + + + + Hightlighted text: + Hervorgehobener Text: + + + + Use system colors + Systemfarben verwenden + + + + Group background: + Gruppenhintergrund: + + + + Group text: + Gruppentext: + + + + Tabs + Reiter + + + + Show close buttons + Schließen-Schaltflächen anzeigen + + + + Show tab list menu + Reiterlistenmenü anzeigen + + + + Show 'New Playlist' button + Schaltfläche 'Neue Wiedergabeliste' anzeigen + + + + Artist + Interpret + + + + Album + Album + + + + Album Artist + Albuminterpret + + + + Title + Titel + + + + Track Number + Titelnummer + + + + Two-digit Track Number + Zweistellige Titelnummer + + + + Genre + Genre + + + + Comment + Kommentar + + + + Composer + Komponist + + + + Duration + Abspieldauer + + + + Disc Number + Disc-Nummer + + + + File Name + Dateiname + + + + File Path + Dateipfad + + + + Year + Jahr + + + + Condition + Zustand + + + + Artist - Title + Interpret - Titel + + + + QSUiAnalyzer + + + Cover + Hülle + + + + Peaks + Spitzenwerte + + + + Refresh Rate + Aktualisierungsrate + + + + 50 fps + 50 fps + + + + 25 fps + 25 fps + + + + 10 fps + 10 fps + + + + 5 fps + 5 fps + + + + Analyzer Falloff + Analysator-Abfall + + + + + Slowest + Langsamste + + + + + Slow + Langsam + + + + + Medium + Mittel + + + + + Fast + Schnell + + + + + Fastest + Schnellste + + + + Peaks Falloff + Abfallen der Spitzenwerte + + + + ShortcutDialog + + + Change Shortcut + Kurzbefehl ändern + + + + Press the key combination you want to assign + Drücken Sie die Tastenkombination, die Sie verwenden möchten + + + + Clear + Löschen + + + + ToolBarEditor + + + ToolBar Editor + Werkzeugleisteneditor + + + + Reset + Zurücksetzen + + + + + Separator + Trennzeichen + + + + VisualMenu + + + Visualization + Visualisierung + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_el.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_el.ts new file mode 100644 index 000000000..21b7357e7 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_el.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + + + + + X + + + + + &Pause + + + + + C + + + + + &Stop + + + + + V + + + + + &Previous + + + + + Z + + + + + &Next + + + + + B + + + + + &Play/Pause + + + + + Space + + + + + &Jump to Track + + + + + J + + + + + &Play Files + + + + + E + + + + + &Repeat Playlist + + + + + R + + + + + &Repeat Track + + + + + Ctrl+R + + + + + &Shuffle + + + + + S + + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + &Add File + + + + + F + + + + + &Add Directory + + + + + D + + + + + &Add Url + + + + + U + + + + + &Remove Selected + + + + + Del + + + + + &Remove All + + + + + &Remove Unselected + + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + + + + + Invert Selection + + + + + &Select None + + + + + &Select All + + + + + Ctrl+A + + + + + &View Track Details + + + + + Alt+I + + + + + &New List + + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + + + + + O + + + + + &Save List + + + + + Shift+S + + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + &Group Tracks + + + + + Ctrl+G + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + + + + + Ctrl+P + + + + + &About Ui + + + + + &About + + + + + &About Qt + + + + + &Exit + + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Change Directory + + + + + Select Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + + + + + Misc + + + + + MainWindow + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + + + + + Play + + + + + Pause + + + + + Next + + + + + Stop + + + + + &Add File + + + + + &Remove All + + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + + + + + &Exit + + + + + About + + + + + About Qt + + + + + &Select All + + + + + &Remove Selected + + + + + &Remove Unselected + + + + + Visualization + + + + + Settings + + + + + + Rename Playlist + + + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + + + + + + By Title + + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + + + + + + By Path + Filename + + + + + + By Date + + + + + + By Track Number + + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + + + + + Randomize List + + + + + Reverse List + + + + + + Actions + + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Main Window + + + + + Hide on close + + + + + Start hidden + + + + + Window title format: + + + + + + + + ... + + + + + Song Display + + + + + Show protocol + + + + + Show song numbers + + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Single Column Mode + + + + + Colors + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Background #1: + + + + + Hightlighted text: + + + + + Current text: + + + + + Group text: + + + + + Use system colors + + + + + Highlighted background: + + + + + Background #2: + + + + + Normal text: + + + + + Group background: + + + + + Fonts + + + + + Use system fonts + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + + + ??? + + + + + Playlist: + + + + + Miscellaneous + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_en.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_en.ts new file mode 100644 index 000000000..df03ac12d --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_en.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + + + + + X + + + + + &Pause + + + + + C + + + + + &Stop + + + + + V + + + + + &Previous + + + + + Z + + + + + &Next + + + + + B + + + + + &Play/Pause + + + + + Space + + + + + &Jump to Track + + + + + J + + + + + &Play Files + + + + + E + + + + + &Repeat Playlist + + + + + R + + + + + &Repeat Track + + + + + Ctrl+R + + + + + &Shuffle + + + + + S + + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + &Add File + + + + + F + + + + + &Add Directory + + + + + D + + + + + &Add Url + + + + + U + + + + + &Remove Selected + + + + + Del + + + + + &Remove All + + + + + &Remove Unselected + + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + + + + + Invert Selection + + + + + &Select None + + + + + &Select All + + + + + Ctrl+A + + + + + &View Track Details + + + + + Alt+I + + + + + &New List + + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + + + + + O + + + + + &Save List + + + + + Shift+S + + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + + + + + Ctrl+P + + + + + &About Ui + + + + + &About + + + + + &About Qt + + + + + &Exit + + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Change Directory + + + + + Select Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + + + + + Misc + + + + + MainWindow + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + + + + + Play + + + + + Pause + + + + + Next + + + + + Stop + + + + + &Add File + + + + + &Remove All + + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + + + + + &Exit + + + + + About + + + + + About Qt + + + + + &Select All + + + + + &Remove Selected + + + + + &Remove Unselected + + + + + Visualization + + + + + Settings + + + + + + Rename Playlist + + + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + + + + + + By Title + + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + + + + + + By Path + Filename + + + + + + By Date + + + + + + By Track Number + + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + + + + + Randomize List + + + + + Reverse List + + + + + + Actions + + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + + + + + Start hidden + + + + + Fonts + + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + + + + + + + + ... + + + + + Main Window + + + + + Window title format: + + + + + Song Display + + + + + Show protocol + + + + + Show song numbers + + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Miscellaneous + + + + + Analyzer Colors + + + + + Single Column Mode + + + + + Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Use system colors + + + + + Group background: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_es.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_es.ts new file mode 100644 index 000000000..66b4d5402 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_es.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + &Reproducir + + + + X + X + + + + &Pause + &Pausar + + + + C + C + + + + &Stop + &Detener + + + + V + V + + + + &Previous + &Anterior + + + + Z + Z + + + + &Next + &Siguiente + + + + B + B + + + + &Play/Pause + &Reproducir/Pausar + + + + Space + Espacio + + + + J + J + + + + &Jump to Track + + + + + &Play Files + + + + + &Repeat Playlist + &Repetir la lista + + + + R + R + + + + &Repeat Track + &Repetir pista + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + &Revolver + + + + S + S + + + + &No Playlist Advance + &No avanzar en la lista + + + + Ctrl+N + Ctrl+N + + + + &Stop After Selected + &Parar tras los seleccionados + + + + Ctrl+S + Ctrl+S + + + + &Clear Queue + &Limpiar la Cola + + + + Alt+Q + Alt+Q + + + + Always on Top + Siempre encima + + + + Put on All Workspaces + Ver en todos los escritorios + + + + &Add File + &Añadir archivo + + + + E + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + F + + + + &Add Directory + &Añadir directorio + + + + D + D + + + + &Add Url + &Añadir URL + + + + U + U + + + + &Remove Selected + &Eliminar los seleccionados + + + + Del + Supr + + + + &Remove All + &Eliminar todo + + + + &Remove Unselected + &Eliminar los no seleccionados + + + + Remove unavailable files + Eliminar los archivos no disponibles + + + + Remove duplicates + Eliminar los duplicados + + + + &Queue Toggle + &Cambiar de cola + + + + Q + Q + + + + Invert Selection + Invertir la selección + + + + &Select None + &No seleccionar nada + + + + &Select All + &Seleccionar todo + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Ver detalles de la pista + + + + Alt+I + Alt+I + + + + &New List + &Lista nueva + + + + Ctrl+T + Ctrl+T + + + + &Delete List + &Borrar la lista + + + + Ctrl+W + Ctrl+W + + + + &Load List + &Cargar una lista + + + + O + O + + + + &Save List + &Guardar la lista + + + + Shift+S + Shift+S + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + &Seleccionar la lista siguiente + + + + Ctrl+PgDown + Ctrl+AvPág + + + + &Select Previous Playlist + &Seleccionar la lista anterior + + + + Ctrl+PgUp + Ctrl+RePág + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + &Configuración + + + + Ctrl+P + Ctrl+P + + + + &About Ui + + + + + &About + &Acerca de + + + + &About Qt + &Acerca de Qt + + + + &Exit + &Salir + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + Ver + + + + Volume + + + + + Playlist + Lista de reproducción + + + + Misc + + + + + MainWindow + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + Aspecto + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Ordenar la lista + + + + + By Title + Por título + + + + + By Album + Por album + + + + + By Artist + Por intérprete + + + + + By Album Artist + + + + + + By Filename + Por nombre de archivo + + + + + By Path + Filename + Por ruta + nombre + + + + + By Date + Por fecha + + + + + By Track Number + Por número de pista + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Ordenar la selección + + + + Randomize List + Lista aleatoria + + + + Reverse List + Invertir la lista + + + + + Actions + Acciones + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + Anterior + + + + Play + Reproducir + + + + Pause + Pausar + + + + Next + Siguiente + + + + Stop + Detener + + + + &Add File + &Añadir archivo + + + + &Remove All + &Eliminar todo + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + &Añadir directorio + + + + &Exit + &Salir + + + + About + + + + + About Qt + + + + + &Select All + &Seleccionar todo + + + + &Remove Selected + &Eliminar los seleccionados + + + + &Remove Unselected + &Eliminar los no seleccionados + + + + Visualization + Visualización + + + + Settings + + + + + + Rename Playlist + Renombrar lista + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + Ver + + + + Hide on close + Esconder al cerrar + + + + Start hidden + Iniciar oculto + + + + Fonts + Fuentes + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Mostrar la canción + + + + Show protocol + Motrar protocolo + + + + Show song numbers + Mostrar los números de canción + + + + Show song lengths + + + + + Align song numbers + Alinear los números de canción + + + + Show anchor + Mostrar ancla + + + + Show popup information + Mostrar información emergente + + + + Edit template + Editar la plantilla + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + Visualización + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_fr.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_fr.ts new file mode 100644 index 000000000..6b3257253 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_fr.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + &Jouer + + + + X + X + + + + &Pause + &Pause + + + + C + C + + + + &Stop + &Arrêter + + + + V + V + + + + &Previous + &Précédent + + + + Z + Z + + + + &Next + &Suivant + + + + B + B + + + + &Play/Pause + &Jouer / Pause + + + + Space + Espace + + + + &Jump to Track + + + + + J + J + + + + &Play Files + + + + + &Add File + &Ajouter un fichier + + + + E + + + + + &Repeat Playlist + + + + + R + + + + + &Repeat Track + + + + + Ctrl+R + + + + + &Shuffle + + + + + S + + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + F + + + + &Add Directory + &Ajouter un dossier + + + + D + D + + + + &Add Url + &Ajouter un flux internet + + + + U + U + + + + &Remove Selected + &Supprimer la sélection + + + + Del + Suppr + + + + &Remove All + &Tout supprimer + + + + &Remove Unselected + &Ne garder que la sélection + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + Q + + + + Invert Selection + Inverser la sélection + + + + &Select None + &Ne rien sélectionner + + + + &Select All + &Tout sélectionner + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Afficher les détails du morceau + + + + Alt+I + Alt+I + + + + &New List + &Nouvelle liste + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + &Charger une liste + + + + O + O + + + + &Save List + &Enregistrer une liste + + + + Shift+S + Shift+S + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + &Configuration + + + + Ctrl+P + Ctrl+P + + + + &About Ui + + + + + &About + &À propos + + + + &About Qt + &À propos de Qt + + + + &Exit + &Quitter + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + Liste de lecture + + + + Misc + + + + + MainWindow + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + + + + + Play + + + + + Pause + + + + + Next + + + + + Stop + + + + + &Add File + &Ajouter un fichier + + + + &Remove All + &Tout supprimer + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + &Ajouter un dossier + + + + &Exit + &Quitter + + + + About + À propos + + + + About Qt + + + + + &Select All + &Tout sélectionner + + + + &Remove Selected + &Supprimer la sélection + + + + &Remove Unselected + &Ne garder que la sélection + + + + Visualization + Visualisation + + + + Settings + + + + + + Rename Playlist + + + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + Apparence + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Trier la liste + + + + + By Title + Par titre + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + Par nom de fichier + + + + + By Path + Filename + Par emplacement + nom de fichier + + + + + By Date + Par date + + + + + By Track Number + Par numéro de piste + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Trier la sélection + + + + Randomize List + Mélanger la liste + + + + Reverse List + Inverser la liste + + + + + Actions + + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + Artiste + + + + Album + Album + + + + Album Artist + + + + + Title + Titre + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + Genre + + + + Comment + Commentaire + + + + Composer + + + + + Duration + + + + + Year + Année + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + Masquer à la fermeture + + + + Start hidden + Démarrer masqué + + + + Fonts + Polices + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Affichage du morceau + + + + Show protocol + + + + + Show song numbers + + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + Artiste + + + + Album + Album + + + + Album Artist + + + + + Title + Titre + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + Genre + + + + Comment + Commentaire + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + Année + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + Visualisation + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_gl_ES.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_gl_ES.ts new file mode 100644 index 000000000..ee264b528 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_gl_ES.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + + + + + X + + + + + &Pause + + + + + C + + + + + &Stop + + + + + V + + + + + &Previous + + + + + Z + + + + + &Next + + + + + B + + + + + &Play/Pause + + + + + Space + + + + + &Jump to Track + + + + + J + + + + + &Play Files + + + + + &Add File + + + + + E + + + + + &Repeat Playlist + + + + + R + + + + + &Repeat Track + + + + + Ctrl+R + + + + + &Shuffle + + + + + S + + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + + + + + &Add Directory + + + + + D + + + + + &Add Url + + + + + U + + + + + &Remove Selected + + + + + Del + + + + + &Remove All + + + + + &Remove Unselected + + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + + + + + Invert Selection + + + + + &Select None + + + + + &Select All + + + + + Ctrl+A + + + + + &View Track Details + + + + + Alt+I + + + + + &New List + + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + + + + + O + + + + + &Save List + + + + + Shift+S + + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + + + + + Ctrl+P + + + + + &About Ui + + + + + &About + + + + + &About Qt + + + + + &Exit + + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + + + + + Misc + + + + + MainWindow + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + + + + + Play + + + + + Pause + + + + + Next + + + + + Stop + + + + + &Add File + + + + + &Remove All + + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + + + + + &Exit + + + + + About + + + + + About Qt + + + + + &Select All + + + + + &Remove Selected + + + + + &Remove Unselected + + + + + Visualization + + + + + Settings + + + + + + Rename Playlist + + + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + + + + + + By Title + + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + + + + + + By Path + Filename + + + + + + By Date + + + + + + By Track Number + + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + + + + + Randomize List + + + + + Reverse List + + + + + + Actions + + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + + + + + Start hidden + + + + + Fonts + + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + + + + + + + + ... + + + + + Main Window + + + + + Window title format: + + + + + Song Display + + + + + Show protocol + + + + + Show song numbers + + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Miscellaneous + + + + + Analyzer Colors + + + + + Single Column Mode + + + + + Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Use system colors + + + + + Group background: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_he.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_he.ts new file mode 100644 index 000000000..fb5fecc41 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_he.ts @@ -0,0 +1,1559 @@ + + + + + AboutQSUIDialog + + + About QSUI + אודות QSUI + + + + Qmmp Simple User Interface (QSUI) + ממשק משתמש פשוט של Qmmp ‏(QSUI) + + + + Qmmp version: <b>%1</b> + גירסת Qmmp:‏ <b>%1</b> + + + + QSUI version: <b>%1</b> + גירסת QSUI:‏ <b>%1</b> + + + + Simple user interface based on standard widgets set. + ממשק משתמש פשוט מבוסס על מערך וידג׳טים סטנדרטי. + + + + ActionManager + + + &Play + &נגן + + + + X + + + + + &Pause + ה&שהה + + + + C + + + + + &Stop + ה&פסק + + + + V + + + + + &Previous + ה&קודם + + + + Z + + + + + &Next + ה&בא + + + + B + + + + + &Play/Pause + נ&גן/השהה + + + + Space + רווח + + + + &Jump to Track + קפוץ אל &רצועה + + + + J + + + + + &Play Files + &נגן קבצים + + + + &Add File + הוס&ף קובץ + + + + E + + + + + &Repeat Playlist + חזור על ר&שימת נגינה + + + + R + + + + + &Repeat Track + חזור על ר&צועה + + + + Ctrl+R + + + + + &Shuffle + &ערבב + + + + S + + + + + &No Playlist Advance + &אל תחיש רשימת נגינה + + + + Ctrl+N + + + + + &Stop After Selected + ה&פסק עובר נבחרת + + + + Ctrl+S + + + + + &Clear Queue + &טהר תור + + + + Alt+Q + + + + + Always on Top + תמיד עליון + + + + Put on All Workspaces + חללי + השם בכל מרחב עבודה + + + + Show Tabs + הצג כרטיסיות + + + + Show Title Bars + הצג שורות כותרת + + + + Block Toolbars + + + + + Volume &+ + עוצמת קול &+ + + + + 0 + + + + + Volume &- + עוצמת קול &- + + + + 9 + + + + + &Mute + ה&שתק + + + + M + + + + + F + + + + + &Add Directory + הוסף &מדור + + + + D + + + + + &Add Url + הוסף &Url + + + + U + + + + + &Remove Selected + הסר &נבחרות + + + + Del + + + + + &Remove All + הסר ה&כל + + + + &Remove Unselected + הסר את שלא נ&בחרו + + + + Remove unavailable files + הסר קבצים לא זמינים + + + + Remove duplicates + הסר כפילויות + + + + &Queue Toggle + &תור + + + + Q + + + + + Invert Selection + הפוך בחירה + + + + &Select None + &בחר כלום + + + + &Select All + &בחר הכל + + + + Ctrl+A + + + + + &View Track Details + &צפה בפרטי רצועה + + + + Alt+I + + + + + &New List + רשימה &חדשה + + + + Ctrl+T + + + + + &Delete List + &מחק רשימה + + + + Ctrl+W + + + + + &Load List + &טען רשימה + + + + O + + + + + &Save List + &שמור רשימה + + + + Shift+S + + + + + &Rename List + &שנה שם רשימה + + + + F2 + + + + + &Select Next Playlist + בחר רשימת נגינה &באה + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + בחר רשימת נגינה &קודמת + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + &אקולייזר + + + + Ctrl+E + + + + + &Settings + &הגדרות + + + + Ctrl+P + + + + + &About Ui + אודות &Ui + + + + &About + &אודות + + + + &About Qt + אודות &Qt + + + + &Exit + י&ציאה + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + בחר צבע + + + + CoverWidget + + + &Save As... + &שמירה בשם... + + + + Save Cover As + שמירת כיסוי בתור + + + + Images + תמונות + + + + Equalizer + + + Equalizer + אקולייזר + + + + Enable equalizer + אפשר אקולייזר + + + + Preset: + קבוע מראש: + + + + Save + שמור + + + + Delete + מחק + + + + Reset + אפס + + + + Preamp + מגבר קדמי + + + + + %1dB + %1דציבל + + + + + +%1dB + +%1דציבל + + + + preset + קבוע מראש + + + + Overwrite Request + החלף בקשה + + + + Preset '%1' already exists. Overwrite? + קבוע מראש '%1' כבר קיים. להחליף? + + + + FileSystemBrowser + + + Add to Playlist + הוסף אל רשימת נגינה + + + + Select Directory + בחר מדור + + + + Change Directory + שנה מדור + + + + HotkeyEditor + + + Reset + אפס + + + + Action + פעולה + + + + Shortcut + קיצור דרך + + + + Change shortcut... + שנוי קיצור דרך... + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + פס קול + + + + View + תצוגה + + + + Volume + עוצמת קול + + + + Playlist + רשימת נגינה + + + + Misc + שונות + + + + MainWindow + + + Qmmp + + + + + &File + &קובץ + + + + &Tools + &כלים + + + + &Help + &עזרה + + + + &Edit + ע&ריכה + + + + &Playback + &פס קול + + + + &View + &תצוגה + + + + Playback + פס קול + + + + Progress + התקדמות + + + + Spectrum Analyzer + מאבחן ספקטרום + + + + Files + קבצים + + + + Cover + כיסוי + + + + Playlists + רשימות נגינה + + + + Previous + הקודם + + + + Play + נגן + + + + Pause + השהה + + + + Next + הבא + + + + Stop + הפסק + + + + &Add File + הוסף &קובץ + + + + &Remove All + &הסר הכל + + + + New Playlist + רשימת נגינה חדשה + + + + Remove Playlist + הסר רשימת נגינה + + + + &Add Directory + הוסף &מדור + + + + &Exit + י&ציאה + + + + About + אודות + + + + About Qt + אודות Qt + + + + &Select All + &בחר הכל + + + + &Remove Selected + הסר &נבחרות + + + + &Remove Unselected + הסר את שלא נ&בחרו + + + + Visualization + חיזוי + + + + Settings + הגדרות + + + + + Rename Playlist + שנה שם רשימת נגינה + + + + Volume + עוצמת קול + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + השהה + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + הופסקה + + + + Playlist name: + שם רשימת נגינה: + + + + Appearance + הופעה + + + + Shortcuts + קיצורי דרך + + + + Playing + מנגן + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + עורך סרגל כלים + + + + Sort List + מיין רשימה + + + + + By Title + לפי כותרת + + + + + By Album + לפי אלבום + + + + + By Artist + לפי אמן + + + + + By Album Artist + + + + + + By Filename + לפי שם קובץ + + + + + By Path + Filename + לפי נתיב + שם קובץ + + + + + By Date + לפי תאריך + + + + + By Track Number + לפי מספר רצועה + + + + + By Disc Number + לפי מספר תקליטור + + + + + By File Creation Date + לפי תאריך יצירת קובץ + + + + + By File Modification Date + + + + + By Group + לפי קבוצה + + + + Sort Selection + מיין נבחרות + + + + Randomize List + הפוך רשימה לאקראית + + + + Reverse List + הפוך רשימה + + + + + Actions + פעולות + + + + Add new playlist + הוסף רשימת נגינה חדשה + + + + Show all tabs + הצג את כל הכרטיסיות + + + + Buffering: %1% + אוגר כעת: %1% + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + הגדרות מידע מוקפץ + + + + Template + תבנית + + + + Reset + אפס + + + + Insert + שבץ + + + + Show cover + הצגת כיסוי + + + + Cover size: + מידת כיסוי: + + + + Transparency: + שקיפות: + + + + Delay: + שיהוי: + + + + ms + מ״ש + + + + Artist + אמן + + + + Album + אלבום + + + + Album Artist + + + + + Title + כותרת + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + ז'אנר + + + + Comment + הערה + + + + Composer + מלחין + + + + Duration + משך + + + + Year + שנה + + + + Condition + תנאי + + + + QSUIFactory + + + Simple User Interface + ממשק משתמש פשוט + + + + QSUISettings + + + View + תצוגה + + + + Hide on close + הסתר בעת סגירה + + + + Start hidden + התחל מוסתר + + + + Fonts + גופנים + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + + + + + + + + ... + + + + + Main Window + + + + + Window title format: + + + + + Song Display + תצוגת שיר + + + + Show protocol + הצג פרוטוקול + + + + Show song numbers + הצג מספרי שיר + + + + Show song lengths + + + + + Align song numbers + ישר מספרי שורות + + + + Show anchor + הצג עוגן + + + + Show popup information + הצג מידע מוקפץ + + + + Edit template + ערוך תבנית + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + כרטיסיות + + + + Show close buttons + הצג לחצני סגירה + + + + Show tab list menu + הצג תפריט רשימת כרטיסייה + + + + Show 'New Playlist' button + הצג לחתן 'רשימת נגינה חדשה' + + + + Miscellaneous + שונות + + + + Single Column Mode + + + + + Analyzer Colors + צבעי מאבחן + + + + Analyzer #1: + מאבחן ראשון: + + + + Peaks: + שיאים: + + + + Analyzer #2: + מאבחן שני: + + + + Background: + רקע אחורי: + + + + Analyzer #3: + מאבחן שלישי: + + + + Playlist Colors + צבעי רשימת נגינה + + + + Use system colors + השתמש בצבעי מערכת + + + + Background #1: + רקע ראשון: + + + + Normal text: + טקסט רגיל: + + + + Background #2: + רקע שני: + + + + Current text: + טקסט נוכחי: + + + + Highlighted background: + רקע אחורי מודגש: + + + + Hightlighted text: + טקסט מודגש: + + + + Artist + אמן + + + + Album + אלבום + + + + Album Artist + + + + + Title + כותרת + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + ז'אנר + + + + Comment + הערה + + + + Composer + מלחין + + + + Duration + משך + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + שנה + + + + Condition + תנאי + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + כיסוי + + + + Peaks + שיאים + + + + Refresh Rate + שיעור רענון + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + נפילת מאבחן + + + + + Slowest + הכי איטי + + + + + Slow + איטי + + + + + Medium + רגיל + + + + + Fast + מהיר + + + + + Fastest + הכי מהיר + + + + Peaks Falloff + נפילת שיאים + + + + ShortcutDialog + + + Change Shortcut + שנה קיצור דרך + + + + Press the key combination you want to assign + הזן את צירוף המקשים שברצונך להקצות + + + + Clear + טהר + + + + ToolBarEditor + + + ToolBar Editor + עורך סרגל כלים + + + + Reset + אפס + + + + + Separator + חוצץ + + + + VisualMenu + + + Visualization + חיזוי + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_hu.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_hu.ts new file mode 100644 index 000000000..960d8fa01 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_hu.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + &Lejátszás + + + + X + X + + + + &Pause + &Szünet + + + + C + C + + + + &Stop + &Megállítás + + + + V + V + + + + &Previous + &Előző + + + + Z + Z + + + + &Next + &Következő + + + + B + B + + + + &Play/Pause + &Lejátszás/Szünet + + + + Space + Szóköz + + + + J + J + + + + &Jump to Track + + + + + &Play Files + + + + + &Repeat Playlist + Lista &ismétlése + + + + R + + + + + &Repeat Track + Számok i&smétlése + + + + Ctrl+R + Crtl+R + + + + &Shuffle + &Véletlenszerű + + + + S + S + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + &Add File + &Fájl hozzáadása + + + + E + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + F + + + + &Add Directory + &Könyvtár hazááadása + + + + D + D + + + + &Add Url + &Url hozzáadása + + + + U + U + + + + &Remove Selected + &Megjelöltek eltávolítása + + + + Del + Del + + + + &Remove All + &Összes eltávolítása + + + + &Remove Unselected + &Jelöletlenek eltávolítása + + + + Remove unavailable files + Elérhetetlen fájlok eltávolítása + + + + Remove duplicates + Duplikációk eltávolítása + + + + &Queue Toggle + + + + + Q + Q + + + + Invert Selection + Fordított kijelölés + + + + &Select None + &Kijelölés megszűntetése + + + + &Select All + &Összes kijelölése + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + Szám adatainak &megnézése + + + + Alt+I + Alt+I + + + + &New List + &Új lista + + + + Ctrl+T + Ctrl+T + + + + &Delete List + &Lista törlése + + + + Ctrl+W + Ctrl+W + + + + &Load List + &Lista betöltése + + + + O + O + + + + &Save List + Lista &mentése + + + + Shift+S + Shift+S + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + &Következő lista választása + + + + Ctrl+PgDown + Ctrl+PgDown + + + + &Select Previous Playlist + &Előző lista választása + + + + Ctrl+PgUp + Ctrl+PgUp + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + &Beállítások + + + + Ctrl+P + Ctrl+P + + + + &About Ui + + + + + &About + &Névjegy + + + + &About Qt + N&évjegy: Qt + + + + &Exit + &Kilépés + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + Megnéz + + + + Volume + + + + + Playlist + Lejátszási lista + + + + Misc + + + + + MainWindow + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + Megjelenés + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Lista rendezése + + + + + By Title + Cím szerint + + + + + By Album + Album szerint + + + + + By Artist + Előadó szerint + + + + + By Album Artist + + + + + + By Filename + Fájlnév szerint + + + + + By Path + Filename + Elérési út és fájlnév szerint + + + + + By Date + Dátum szerint + + + + + By Track Number + Zene sorszáma szerint + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Jelöltek rendezése + + + + Randomize List + Lista összekeverése + + + + Reverse List + Fordított lista + + + + + Actions + Tevékenységek + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + Előző + + + + Play + Lejátszás + + + + Pause + Szünet + + + + Next + Következő + + + + Stop + Megállít + + + + &Add File + &Fájl hozzáadása + + + + &Remove All + &Összes eltávolítása + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + &Könyvtár hazááadása + + + + &Exit + &Kilépés + + + + About + + + + + About Qt + + + + + &Select All + &Összes kijelölése + + + + &Remove Selected + &Megjelöltek eltávolítása + + + + &Remove Unselected + &Jelöletlenek eltávolítása + + + + Visualization + Vizualizáció + + + + Settings + + + + + + Rename Playlist + Lista átnevezése + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + Megnéz + + + + Hide on close + Elrejtés bezáráskor + + + + Start hidden + Rejtve induljon + + + + Fonts + Betűtípus + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Szám kijelző + + + + Show protocol + Protokol mutatása + + + + Show song numbers + Zene sorszámának mutatása + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + Felugró információk mutatása + + + + Edit template + + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + Vizualizáció + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_it.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_it.ts new file mode 100644 index 000000000..676b0d7de --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_it.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + &Esegui + + + + X + X + + + + &Pause + &Pausa + + + + C + C + + + + &Stop + &Arresta + + + + V + V + + + + &Previous + &Precedente + + + + Z + Z + + + + &Next + &Successivo + + + + B + B + + + + &Play/Pause + &Esegui / Pausa + + + + Space + Spazio + + + + J + J + + + + &Jump to Track + + + + + &Play Files + + + + + &Repeat Playlist + &Ripeti lista brani + + + + R + R + + + + &Repeat Track + &Ripeti brano + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + &Ordine casuale + + + + S + S + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + &Add File + &Aggiungi brani + + + + E + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + F + + + + &Add Directory + &Aggiungi cartelle + + + + D + D + + + + &Add Url + &Aggiungi URL + + + + U + U + + + + &Remove Selected + &Elimina la selezione + + + + Del + Canc + + + + &Remove All + &Elimina tutto + + + + &Remove Unselected + &Elimina i non selezionati + + + + Remove unavailable files + Rimuovi files non disponibili + + + + Remove duplicates + Rimuovi duplicati + + + + &Queue Toggle + + + + + Q + Q + + + + Invert Selection + Inverti la selezione + + + + &Select None + &Non scegliere alcun brano + + + + &Select All + &Seleziona tutto + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Dettagli della traccia + + + + Alt+I + Alt+I + + + + &New List + &Nuova lista + + + + Ctrl+T + Ctrl+T + + + + &Delete List + &Cancella lista + + + + Ctrl+W + Ctrl+W + + + + &Load List + &Carica lista + + + + O + O + + + + &Save List + &Salva lista + + + + Shift+S + Shift+S + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + &Seleziona la successiva lista esecuzione brani + + + + Ctrl+PgDown + Ctrl+PgDown + + + + &Select Previous Playlist + &Seleziona la rpecedente lista esecuzione brani + + + + Ctrl+PgUp + Ctrl+PgUp + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + &Configurazione + + + + Ctrl+P + Ctrl+P + + + + &About Ui + + + + + &About + &Informazioni + + + + &About Qt + &Informazioni su Qt + + + + &Exit + &Esci + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + Lista brani + + + + Misc + + + + + MainWindow + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + Aspetto + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Riordina la lista + + + + + By Title + Per titolo + + + + + By Album + Per album + + + + + By Artist + PEr interprete + + + + + By Album Artist + + + + + + By Filename + Per titolo del brano + + + + + By Path + Filename + per percorso più titolo del brano + + + + + By Date + Per data + + + + + By Track Number + Per numero di traccia + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Riordina la selezione + + + + Randomize List + Mescola i brnai della lista + + + + Reverse List + Inverti la lista + + + + + Actions + Azioni + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + Brano precedente + + + + Play + Esegui + + + + Pause + Sospendi + + + + Next + Brano successivo + + + + Stop + Ferma + + + + &Add File + &Aggiungi brani + + + + &Remove All + &Elimina tutto + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + &Aggiungi cartelle + + + + &Exit + &Esci + + + + About + + + + + About Qt + + + + + &Select All + &Seleziona tutto + + + + &Remove Selected + &Elimina la selezione + + + + &Remove Unselected + &Elimina i non selezionati + + + + Visualization + Visualizzazione + + + + Settings + + + + + + Rename Playlist + Rinomina lista brani + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + Nascondi alla chiusura + + + + Start hidden + Avvia nascosto + + + + Fonts + Caratteri + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Mostra il brano + + + + Show protocol + Motra protocollo + + + + Show song numbers + Mostra numero brani + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + Mostra informazioni popup + + + + Edit template + + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + Visualizzazione + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_ja.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_ja.ts new file mode 100644 index 000000000..cc101490e --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_ja.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + QSUI について + + + + Qmmp Simple User Interface (QSUI) + QMMP 簡易ユーザーインターフェイス (QSUI) + + + + Qmmp version: <b>%1</b> + QMMP のバージョン: <b>%1</b> + + + + QSUI version: <b>%1</b> + QSUI のバージョン: <b>%1</b> + + + + Simple user interface based on standard widgets set. + 簡易ユーザーインターフェイスは標準ウィジェットをもとに作られています。 + + + + ActionManager + + + &Play + 再生(&Y) + + + + X + X + + + + &Pause + 一時停止(&P) + + + + C + C + + + + &Stop + 終止(&S) + + + + V + V + + + + &Previous + 前の曲(&R) + + + + Z + Z + + + + &Next + 次の曲(&N) + + + + B + B + + + + &Play/Pause + 再生/停止(&A) + + + + Space + Space + + + + J + J + + + + &Jump to Track + 指定のトラックまで移動(&J) + + + + &Play Files + ファイルより再生(&H) + + + + &Repeat Playlist + プレイリストを繰り返す(&L) + + + + R + R + + + + &Repeat Track + トラックを繰り返す(&T) + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + シャッフル(&F) + + + + S + S + + + + &No Playlist Advance + 次の曲に進まず終止(&N) + + + + Ctrl+N + Ctrl+N + + + + &Stop After Selected + 選んだ曲を再生後に終止(&S) + + + + Ctrl+S + Ctrl+S + + + + &Clear Queue + キューを消去(&C) + + + + Alt+Q + Alt+Q + + + + Always on Top + 常に前面へ + + + + Put on All Workspaces + 常に表示中のワークスペースに置く + + + + &Add File + ファイルを追加(&F) + + + + E + E + + + + Show Tabs + タブを表示 + + + + Show Title Bars + タイトルバーを表示 + + + + Block Toolbars + ツールバーを固定 + + + + Volume &+ + 音量増加(&+) + + + + 0 + 0 + + + + Volume &- + 音量減少(&-) + + + + 9 + 9 + + + + &Mute + 消音(&M) + + + + M + M + + + + F + F + + + + &Add Directory + ディレクトリを追加(&D) + + + + D + D + + + + &Add Url + URLを追加(&U) + + + + U + U + + + + &Remove Selected + 選択したものを除去(&V) + + + + Del + Delele + + + + &Remove All + すべて除去(&M) + + + + &Remove Unselected + 選択外のものを除去(&N) + + + + Remove unavailable files + 無効なファイルを除去 + + + + Remove duplicates + 重複分を除去 + + + + &Queue Toggle + 選んだ曲をキューに追加/キューから撤去 + + + + Q + Q + + + + Invert Selection + 選択範囲を反転 + + + + &Select None + 選択を解除(&N) + + + + &Select All + すべて選択(&E) + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + トラックの詳細を表示(&D) + + + + Alt+I + Alt+I + + + + &New List + 新規リスト(&W) + + + + Ctrl+T + Ctrl+T + + + + &Delete List + リストを削除(&D) + + + + Ctrl+W + Ctrl+W + + + + &Load List + リストを読込(&L) + + + + O + O + + + + &Save List + リストを保存(&S) + + + + Shift+S + Shift+S + + + + &Rename List + リストの名前を変更(&R) + + + + F2 + F2 + + + + &Select Next Playlist + 次のプレイリストを選択(&N) + + + + Ctrl+PgDown + Ctrl+PgDown + + + + &Select Previous Playlist + 前のプレイリストを選択(&P) + + + + Ctrl+PgUp + Ctrl+PgUp + + + + Ctrl+G + Ctrl+G + + + + &Group Tracks + トラックをグループ化(&G) + + + + Ctrl+H + Ctrl+H + + + + &Show Column Headers + プレイリストにカラム表題を表示(&S) + + + + &Equalizer + イコライザー(&E) + + + + Ctrl+E + Ctrl+E + + + + &Settings + 設定(&S) + + + + Ctrl+P + Ctrl+P + + + + &About Ui + ユーザーインターフェイスについて(&U) + + + + &About + QMMP について(&A) + + + + &About Qt + Qt について(&Q) + + + + &Exit + 終了(&X) + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + 色を選択 + + + + CoverWidget + + + &Save As... + 名前を付けて保存(&S)... + + + + Save Cover As + 名前を付けて表紙画像を保存 + + + + Images + 画像 + + + + Equalizer + + + Equalizer + イコライザー + + + + Enable equalizer + イコライザー稼動 + + + + Preset: + プリセット: + + + + Save + 保存 + + + + Delete + 削除 + + + + Reset + リセット + + + + Preamp + プリアンプ + + + + + %1dB + %1dB + + + + + +%1dB + +%1dB + + + + preset + プリセット + + + + Overwrite Request + 上書き警告 + + + + Preset '%1' already exists. Overwrite? + 既にプリセット「%1」があります。 これを上書きしますか? + + + + FileSystemBrowser + + + Add to Playlist + プレイリストに追加 + + + + Select Directory + ディレクトリーを選択 + + + + Change Directory + ディレクトリーを変更 + + + + HotkeyEditor + + + Reset + リセット + + + + Action + 動作 + + + + Shortcut + ショートカット + + + + Change shortcut... + ショートカットを変更... + + + + Reset Shortcuts + ショートカットをリセット + + + + Do you want to restore default shortcuts? + ショートカットの設定をデフォルトに戻しますが、間違いありませんか。 + + + + Playback + 再生 + + + + View + 観容 + + + + Volume + 音量 + + + + Playlist + プレイリスト + + + + Misc + その他いろいろ + + + + MainWindow + + + Volume + 音量 + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + <b>%1</b>|%2 bit|%3 ch|%4 Hz|全 %5 曲|総演奏時間: %6|%7 kbps| + + + + Paused + 一時停止中断 + + + + <b>%1</b>|tracks: %2|total time: %3| + <b>%1</b>|全 %2 曲|総演奏時間: %3| + + + + Stopped + 終演 + + + + Playlist name: + プレイリスト名: + + + + Appearance + 外観 + + + + Shortcuts + ショートカット + + + + Playing + 演奏中 + + + + Ctrl+0 + Ctrl+0 + + + + P + P + + + + Edit Toolbar + ツールバーの設定変更 + + + + Sort List + リストを並べ換え + + + + + By Title + タイトル名順に + + + + + By Album + アルバム名順に + + + + + By Artist + アーティスト名順に + + + + + By Album Artist + アルバムのアーティスト名順に + + + + + By Filename + ファイル名順に + + + + + By Path + Filename + パスとファイル名の順に + + + + + By Date + 日付順に + + + + + By Track Number + トラック番号順に + + + + + By Disc Number + ディスク番号順に + + + + + By File Creation Date + ファイルの作成日順に + + + + + By File Modification Date + ファイルの加工日時順に + + + + By Group + グループ名順に + + + + Sort Selection + 選択範囲内で並び換え + + + + Randomize List + リストを順不同に + + + + Reverse List + リストを逆順に + + + + + Actions + 動作 + + + + Add new playlist + 新しいプレイリストを追加 + + + + Show all tabs + すべてのタブを表示 + + + + Buffering: %1% + バッファーへ先読み: %1% + + + + Qmmp + QMMP + + + + &File + ファイル(&F) + + + + &Tools + ツール(&T) + + + + &Help + ヘルプ(&H) + + + + &Edit + 編集(&E) + + + + &Playback + 再生(&P) + + + + &View + 表示(&V) + + + + Playback + 再生 + + + + Progress + 進捗 + + + + Spectrum Analyzer + スペクトルアナライザー + + + + Files + ファイル + + + + Cover + 表紙画像 + + + + Playlists + プレイリスト + + + + Previous + 前の曲 + + + + Play + 再生 + + + + Pause + 一時停止 + + + + Next + 次の曲 + + + + Stop + 終止 + + + + &Add File + ファイルを追加(&F) + + + + &Remove All + すべて除去(&M) + + + + New Playlist + 新しいプレイリスト + + + + Remove Playlist + プレイリストを削除 + + + + &Add Directory + ディレクトリを追加(&D) + + + + &Exit + 終了(&X) + + + + About + QMMP について + + + + About Qt + Qt について + + + + &Select All + すべて選択(&E) + + + + &Remove Selected + 選択したものを除去(&V) + + + + &Remove Unselected + 選択外のものを除去(&N) + + + + Visualization + 視覚効果 + + + + Settings + 設定 + + + + + Rename Playlist + プレイリスト名を変更 + + + + PlayListHeader + + + Add Column + カラムを追加 + + + + Edit Column + カラムを編集 + + + + Show Queue/Protocol + キューやプロトコルを表示 + + + + Auto-resize + 自動適正幅調整 + + + + Remove Column + カラムを撤去 + + + + PopupSettings + + + Popup Information Settings + 情報吹き出しの設定 + + + + Template + ひな型 + + + + Reset + リセット + + + + Insert + 挿入 + + + + Show cover + 表紙画像を表示 + + + + Cover size: + 表紙画像の大きさ: + + + + Transparency: + 透明度: + + + + Delay: + 残映時間: + + + + ms + ミリ秒 + + + + Artist + アーティスト + + + + Album + アルバム + + + + Album Artist + アルバムアーティスト + + + + Title + タイトル + + + + Track Number + トラック番号 + + + + Two-digit Track Number + トラック番号 数字2桁 + + + + Disc Number + ディスク番号 + + + + File Name + ファイル名 + + + + File Path + ファイルパス + + + + Genre + ジャンル + + + + Comment + コメント + + + + Composer + 作曲者 + + + + Duration + 演奏時間 + + + + Year + + + + + Condition + 定番 + + + + QSUIFactory + + + Simple User Interface + 簡易ユーザーインターフェイス + + + + QSUISettings + + + View + 観容 + + + + Hide on close + 「閉じる」で隠す + + + + Start hidden + 開始時に隠す + + + + Fonts + 書体 + + + + Use system fonts + システム共通フォントに拠る + + + + Playlist: + プレイリスト: + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + メインウィンドウ + + + + Window title format: + ウィンドウタイトルの書式: + + + + Song Display + 演題表示 + + + + Show protocol + プロトコルを表示 + + + + Show song numbers + 曲番号つきで表示 + + + + Show song lengths + 曲の長さを表示 + + + + Align song numbers + 曲番号のみを表示 + + + + Show anchor + アンカーを表示 + + + + Show popup information + 情報吹き出しを表示 + + + + Edit template + ひな型を編集 + + + + Colors + + + + + Group background: + グループの背景色: + + + + Reset fonts + フォントをリセット + + + + Column headers: + カラム表題: + + + + Tab names: + タブ名: + + + + Group text: + グループの文字色: + + + + Tabs + タブ + + + + Show close buttons + 閉じる[×]ボタンを表示 + + + + Show tab list menu + タブリストメニュー[▼]を表示 + + + + Show 'New Playlist' button + 新しいプレイリスト[+]ボタンを表示 + + + + Miscellaneous + その他いろいろ + + + + Single Column Mode + 単一カラムのとき + + + + Analyzer Colors + アナライザーの配色 + + + + Analyzer #1: + 第一アナライザー: + + + + Peaks: + 峰: + + + + Analyzer #2: + 第二アナライザー: + + + + Background: + 背景: + + + + Analyzer #3: + 第三アナライザー: + + + + Playlist Colors + プレイリストの配色 + + + + Use system colors + システム標準の配色を使用 + + + + Background #1: + 第一背景: + + + + Normal text: + 通常のテキスト: + + + + Background #2: + 第二背景: + + + + Current text: + 現在位置のテキスト: + + + + Highlighted background: + ハイライトした背景: + + + + Hightlighted text: + ハイライトしたテキスト: + + + + Artist + アーティスト + + + + Album + アルバム + + + + Album Artist + アルバムアーティスト + + + + Title + タイトル + + + + Track Number + トラック番号 + + + + Two-digit Track Number + トラック番号 数字2桁 + + + + Genre + ジャンル + + + + Comment + コメント + + + + Composer + 作曲者 + + + + Duration + 演奏時間 + + + + Disc Number + ディスク番号 + + + + File Name + ファイル名 + + + + File Path + ファイルパス + + + + Year + + + + + Condition + 定番 + + + + Artist - Title + アーティスト - タイトル + + + + QSUiAnalyzer + + + Cover + 表紙画像 + + + + Peaks + + + + + Refresh Rate + 再描画の頻度 + + + + 50 fps + 50 フレーム毎秒 + + + + 25 fps + 25 フレーム毎秒 + + + + 10 fps + 10 フレーム毎秒 + + + + 5 fps + 5 フレーム毎秒 + + + + Analyzer Falloff + アナライザー減衰速度 + + + + + Slowest + さらに遅く + + + + + Slow + 遅く + + + + + Medium + 適度 + + + + + Fast + 速く + + + + + Fastest + さらに速く + + + + Peaks Falloff + ピーク減衰速度 + + + + ShortcutDialog + + + Change Shortcut + ショートカットを変更 + + + + Press the key combination you want to assign + 割り当てたいキーの組み合わせを押します + + + + Clear + 消去 + + + + ToolBarEditor + + + ToolBar Editor + ツールバーエディター + + + + Reset + リセット + + + + + Separator + セパレーター + + + + VisualMenu + + + Visualization + 視覚効果 + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_kk.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_kk.ts new file mode 100644 index 000000000..0ea88fdb4 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_kk.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + &Ойнату + + + + X + + + + + &Pause + &Аялдату + + + + C + + + + + &Stop + &Тоқтату + + + + V + + + + + &Previous + Ал&дыңғысы + + + + Z + + + + + &Next + &Келесісі + + + + B + + + + + &Play/Pause + О&йнат/аялдат + + + + Space + + + + + &Jump to Track + + + + + J + + + + + &Play Files + + + + + &Add File + Фа&йлды қосу + + + + E + + + + + &Repeat Playlist + Тізі&мді қайталау + + + + R + + + + + &Repeat Track + Т&ректі қайталау + + + + Ctrl+R + + + + + &Shuffle + Ке&з-келген ретпен + + + + S + + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + + + + + &Add Directory + Бу&маны қосу + + + + D + + + + + &Add Url + URL-д&ы қосу + + + + U + + + + + &Remove Selected + Таңда&лғанды өшіру + + + + Del + + + + + &Remove All + &Барлығын өшіру + + + + &Remove Unselected + Таң&далмағанды өшіру + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + + + + + Invert Selection + Таңдауды кері айналдыру + + + + &Select None + Т&аңдауды алу + + + + &Select All + &Барлығын таңдау + + + + Ctrl+A + + + + + &View Track Details + &Ақпараты + + + + Alt+I + + + + + &New List + &Жаңа тізім + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + Ті&зімді жүктеу + + + + O + + + + + &Save List + Тізімді &сақтау + + + + Shift+S + + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + &Баптаулары + + + + Ctrl+P + + + + + &About Ui + + + + + &About + &Осы туралы + + + + &About Qt + Qt т&уралы + + + + &Exit + &Шығу + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + Эквалайзер + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + Даусы + + + + Playlist + Тізім + + + + Misc + + + + + MainWindow + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + Алдыңғысы + + + + Play + Ойнату + + + + Pause + Аялдату + + + + Next + Келесіге өту + + + + Stop + Тоқтату + + + + &Add File + Фа&йлды қосу + + + + &Remove All + &Барлығын өшіру + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + Бу&маны қосу + + + + &Exit + &Шығу + + + + About + О программе + + + + About Qt + + + + + &Select All + &Барлығын таңдау + + + + &Remove Selected + Таңда&лғанды өшіру + + + + &Remove Unselected + Таң&далмағанды өшіру + + + + Visualization + Визуализация + + + + Settings + + + + + + Rename Playlist + + + + + Volume + Даусы + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + Сыртқы түрі + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Сұрыптау + + + + + By Title + Аты бойынша + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + Файл аты бойынша + + + + + By Path + Filename + Жолы мен файл аты бойынша + + + + + By Date + Уақыты бойынша + + + + + By Track Number + Трек нөмірі бойынша + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Таңдалғанды сұрыптау + + + + Randomize List + Тізімді араластыру + + + + Reverse List + Тізімді кері айналдыру + + + + + Actions + Әрекеттер + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + Орындаушы + + + + Album + Альбом + + + + Album Artist + + + + + Title + Аты + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + Жанры + + + + Comment + Қосымша + + + + Composer + + + + + Duration + + + + + Year + Жылы + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + Жабылғанда жасыру + + + + Start hidden + Жасырын түрінде қосылу + + + + Fonts + Қаріптер + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Өлендер тізімі + + + + Show protocol + Хаттаманы көрсету + + + + Show song numbers + + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + Орындаушы + + + + Album + Альбом + + + + Album Artist + + + + + Title + Аты + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + Жанры + + + + Comment + Қосымша + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + Жылы + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + Визуализация + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_lt.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_lt.ts new file mode 100644 index 000000000..d35bbe3d7 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_lt.ts @@ -0,0 +1,1560 @@ + + + + + AboutQSUIDialog + + + About QSUI + Apie QSUI + + + + Qmmp Simple User Interface (QSUI) + Qmmp paprasta vartotojo sąsaja (QSUI) + + + + Qmmp version: <b>%1</b> + Qmmp versija: <b>%1</b> + + + + QSUI version: <b>%1</b> + QSUI versija: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Paprasta vartotojo sąsaja . + + + + ActionManager + + + &Play + &Groti + + + + X + X + + + + &Pause + &Pristabdyti + + + + C + C + + + + &Stop + &Sustabdyti + + + + V + V + + + + &Previous + &Ankstesnis + + + + Z + Z + + + + &Next + &Sekantis + + + + B + B + + + + &Play/Pause + &Groti/Pristabdyti + + + + Space + Tarpas + + + + J + J + + + + &Jump to Track + &Šokti į takelį + + + + &Play Files + &Groti failus + + + + &Repeat Playlist + &Kartoti grojaraštį + + + + R + R + + + + &Repeat Track + &Kartoti takelį + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + &Sumaišyti + + + + S + S + + + + &No Playlist Advance + ????? + &Nesislinkti grojaraščiu + + + + Ctrl+N + Ctrl+N + + + + &Stop After Selected + &Stabdyti po pasirinkto + + + + Ctrl+S + Ctrl+S + + + + &Clear Queue + &Išvalyti eilę + + + + Alt+Q + Alt+Q + + + + Always on Top + Visada viršuje + + + + Put on All Workspaces + Įkelti į visus darbastalius + + + + &Add File + &Pridėti bylą + + + + E + E + + + + Show Tabs + Rodyti korteles + + + + Show Title Bars + Rodyti pavadinimo juostas + + + + Block Toolbars + Blokuoti įrankių juotas + + + + Volume &+ + Volume &+ + + + + 0 + 0 + + + + Volume &- + Volume &- + + + + 9 + 9 + + + + &Mute + &Nutildyti + + + + M + M + + + + F + F + + + + &Add Directory + &Pridėti aplanką + + + + D + D + + + + &Add Url + &Pridėti interneto adresą + + + + U + U + + + + &Remove Selected + &Pašalinti pasirinktus + + + + Del + Del + + + + &Remove All + &Pašalinti visus + + + + &Remove Unselected + &Pašalinti NEpasirinktus + + + + Remove unavailable files + Pašalinti neesamas bylas + + + + Remove duplicates + Pašalinti besidubliuojančius pavadinimus + + + + &Queue Toggle + &Įtraukti į eilę + + + + Q + Q + + + + Invert Selection + Apverstinis pasirinkimas + + + + &Select None + &Nepasirinkti nei vieno + + + + &Select All + &Pasirinkti visus + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Takelio informacija + + + + Alt+I + Alt+I + + + + &New List + &Naujas sąrašas + + + + Ctrl+T + Ctrl+T + + + + &Delete List + &Pašalinti sąrašą + + + + Ctrl+W + Ctrl+W + + + + &Load List + &Įkelti sąrašą + + + + O + O + + + + &Save List + &Išsaugoti sąrašą + + + + Shift+S + Shift+S + + + + &Rename List + &Pervadinti sąrašą + + + + F2 + + + + + &Select Next Playlist + &Pasirinkti sekantį grojaraštį + + + + Ctrl+PgDown + Ctrl+PgDown + + + + &Select Previous Playlist + &Pasirinkti ankstesnį grojaraštį + + + + Ctrl+PgUp + Ctrl+PgUp + + + + Ctrl+G + Ctrl+G + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + &Glotintuvas + + + + Ctrl+E + Ctrl+E + + + + &Settings + &Nustatymai + + + + Ctrl+P + Ctrl+P + + + + &About Ui + &Apie Ui + + + + &About + &Apie + + + + &About Qt + &Apie Qt + + + + &Exit + &Išeiti + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + Pasirinkti Spalvą + + + + CoverWidget + + + &Save As... + &Išsaugoti kaip... + + + + Save Cover As + Išsaugoti viršelį kaip + + + + Images + Paveikslėliai + + + + Equalizer + + + Equalizer + Glotintuvas + + + + Enable equalizer + Įjungti glotintuvą + + + + Preset: + Išankstinis nustatymas: + + + + Save + išsaugoti + + + + Delete + Ištrinti + + + + Reset + Ištrinti + + + + Preamp + Stiprinimas + + + + + %1dB + %1dB + + + + + +%1dB + +%1dB + + + + preset + išankstinis nustatymas + + + + Overwrite Request + Prerrašyti užklausą + + + + Preset '%1' already exists. Overwrite? + išankstinis nustatymas '%1' jau yra. Perrašyti? + + + + FileSystemBrowser + + + Add to Playlist + Įkelti į grojąraštį + + + + Select Directory + Pasirinkti aplanką + + + + Change Directory + Pakeisti aplanką + + + + HotkeyEditor + + + Reset + Ištrinti + + + + Action + Veiksmas + + + + Shortcut + Trumpinys + + + + Change shortcut... + Keisti trumpinį... + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + Grojimas + + + + View + Rodyti + + + + Volume + Garsumas + + + + Playlist + Grojaraštis + + + + Misc + Kiti + + + + MainWindow + + + Volume + Garsumas + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + Pristabdyta + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + Sustabdyta + + + + Playlist name: + Grojąraščio pavadinimas: + + + + Appearance + Išvaizda + + + + Shortcuts + Trumpiniai + + + + Playing + Grojama + + + + Ctrl+0 + Ctrl+0 + + + + P + P + + + + Edit Toolbar + Taisyti įrankių juostą + + + + Sort List + Rūšiuoti sąrašą + + + + + By Title + Pagal dainos pavadinimą + + + + + By Album + Pagal albumą + + + + + By Artist + Pagal atlikėją + + + + + By Album Artist + + + + + + By Filename + Pagal bylos pavadinimą + + + + + By Path + Filename + Pagal kelią iki bylos ir pavadinimą + + + + + By Date + Pagal datą + + + + + By Track Number + Pagal takelio numerį + + + + + By Disc Number + Pagal disko numerį + + + + + By File Creation Date + Pagal bylos sukūrimo laiką + + + + + By File Modification Date + + + + + By Group + Pagal grupę + + + + Sort Selection + Rūšiuoti pasirinktus + + + + Randomize List + Sumaišyti sąrašą + + + + Reverse List + Apversti + + + + + Actions + Veiksmai + + + + Add new playlist + Pridėti naują grojąraštį + + + + Show all tabs + Rodyti visas korteles + + + + Buffering: %1% + Buferis: %1% + + + + Qmmp + Qmmp + + + + &File + &Byla + + + + &Tools + &Įrankiai + + + + &Help + &Pagalba + + + + &Edit + &Taisa + + + + &Playback + &Grojimas + + + + &View + &Rodyti + + + + Playback + Grojimas + + + + Progress + Progresas + + + + Spectrum Analyzer + Spektro analizatorius + + + + Files + Bylos + + + + Cover + Viršelis + + + + Playlists + Grojaraščiai + + + + Previous + Ankstesnis + + + + Play + Groti + + + + Pause + Pristabdyti + + + + Next + Sekantis + + + + Stop + Sustoti + + + + &Add File + &Pridėti bylą + + + + &Remove All + &Pašalinti visus + + + + New Playlist + Naujas grojaraštis + + + + Remove Playlist + Pašalinti grojaraštį + + + + &Add Directory + &Pridėti aplanką + + + + &Exit + &Išeiti + + + + About + Apie + + + + About Qt + Apie Qt + + + + &Select All + &Pasirinkti visus + + + + &Remove Selected + &Pašalinti pasirinktus + + + + &Remove Unselected + &Pašalinti NEpasirinktus + + + + Visualization + Vizualizacija + + + + Settings + Nustatymai + + + + + Rename Playlist + Pervadinti grojaraštį + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + Iššokančios informacijos nustatymai + + + + Template + Šablonas + + + + Reset + Ištrinti + + + + Insert + Įterpti + + + + Show cover + Rodyti viršelį + + + + Cover size: + Viršelio dydis: + + + + Transparency: + Permatomumas: + + + + Delay: + Uždelsimas: + + + + ms + ms + + + + Artist + Atlikėjas + + + + Album + Albumas + + + + Album Artist + + + + + Title + Pavadinimas + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + Žanras + + + + Comment + Komentaras + + + + Composer + Kompozitorius + + + + Duration + Trukmė + + + + Year + Metai + + + + Condition + Būklė + + + + QSUIFactory + + + Simple User Interface + Paprasta vartotojo sąsaja + + + + QSUISettings + + + View + Rodyti + + + + Hide on close + Paslėpti išjungus + + + + Start hidden + Įjungti paslėptą + + + + Fonts + Šriftai + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Dainų sąrašas + + + + Show protocol + Rodyti bylos galūnę + + + + Show song numbers + Rodyti takelių numerius + + + + Show song lengths + + + + + Align song numbers + Lygiuoti dainų numerius + + + + Show anchor + ??????????? + Rodyti inkarą + + + + Show popup information + Rodyti iššokančią informaciją + + + + Edit template + Taisyti šabloną + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + Kortelės + + + + Show close buttons + Rodyti užvėrimo mygtukus + + + + Show tab list menu + Rodyti kortelių sąrašo meniu + + + + Show 'New Playlist' button + Rodyti mygtuką "Naujas grojaraštis" + + + + Miscellaneous + Kiti + + + + Single Column Mode + + + + + Analyzer Colors + Analizatoriaus spalvos + + + + Analyzer #1: + Analizatorius #1: + + + + Peaks: + Pikai: + + + + Analyzer #2: + Analizatorius #2: + + + + Background: + Fonas: + + + + Analyzer #3: + ASnalizatorius #3: + + + + Playlist Colors + Grojaraščio spalvos + + + + Use system colors + Naudoti sistemos spalvas + + + + Background #1: + Fonas #1: + + + + Normal text: + Normalus textas: + + + + Background #2: + Fonas #2: + + + + Current text: + Dabartinis textas: + + + + Highlighted background: + Paryškintas fonas: + + + + Hightlighted text: + Paryškintas textas: + + + + Artist + Atlikėjas + + + + Album + Albumas + + + + Album Artist + + + + + Title + Pavadinimas + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + Žanras + + + + Comment + Komentaras + + + + Composer + Kompozitorius + + + + Duration + Trukmė + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + Metai + + + + Condition + Būklė + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + Viršelis + + + + Peaks + Pikai + + + + Refresh Rate + Atnaujinimo dažnis + + + + 50 fps + 50 kps + + + + 25 fps + 25 kps + + + + 10 fps + 10 kps + + + + 5 fps + 5 kps + + + + Analyzer Falloff + Analizatoriaus nukritimas + + + + + Slowest + Lėčiausias + + + + + Slow + Lėtas + + + + + Medium + Vidutinis + + + + + Fast + Freitas + + + + + Fastest + Greičiausias + + + + Peaks Falloff + Pikų nukritimas + + + + ShortcutDialog + + + Change Shortcut + Keisti trumpinį + + + + Press the key combination you want to assign + Paspausk klavišų kombinaciją, kurią nori priskirt + + + + Clear + Išvalyti + + + + ToolBarEditor + + + ToolBar Editor + įrankių juostos redaktorius + + + + Reset + Ištrinti + + + + + Separator + Skirtukas + + + + VisualMenu + + + Visualization + Vizualizacija + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_nl.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_nl.ts new file mode 100644 index 000000000..fbb2179c8 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_nl.ts @@ -0,0 +1,1560 @@ + + + + + AboutQSUIDialog + + + About QSUI + Over QSUI + + + + Qmmp Simple User Interface (QSUI) + Qmmp Simpele Gebruikersinterface (QSUI) + + + + Qmmp version: <b>%1</b> + Qmmp versie: <b>%1</b> + + + + QSUI version: <b>%1</b> + QSUI versie: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Simpele gebruikersinterface gebasseerd op de set van standaard widgets. + + + + ActionManager + + + &Play + &Afspelen + + + + X + + + + + &Pause + &Pauze + + + + C + + + + + &Stop + + + + + V + + + + + &Previous + &Vorige + + + + Z + + + + + &Next + &Volgende + + + + B + + + + + &Play/Pause + &Afspelen/Pauze + + + + Space + Spatie + + + + J + + + + + &Jump to Track + &Ga naar Nummer + + + + &Play Files + + + + + &Repeat Playlist + &Herhaal Afspeellijst + + + + R + + + + + &Repeat Track + &Herhaal Nummer + + + + Ctrl+R + + + + + &Shuffle + &Willekeurig + + + + S + + + + + &No Playlist Advance + &Niet verschuiven in afspellinsg + + + + Ctrl+N + + + + + &Stop After Selected + &Stop na Geselecteerde + + + + Ctrl+S + + + + + &Clear Queue + &Afspeellijst leeghalen + + + + Alt+Q + + + + + Always on Top + Altijd bovenaan + + + + Put on All Workspaces + Plaats op alle werkbladen + + + + &Add File + &Voeg Bestand Toe + + + + E + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + + + + + &Add Directory + &Voeg Map toe + + + + D + + + + + &Add Url + &Voeg URL toe + + + + U + + + + + &Remove Selected + &Verwijder Geselecteerd + + + + Del + + + + + &Remove All + &Verwijder Alles + + + + &Remove Unselected + &Verwijder Gedeselecteerde + + + + Remove unavailable files + Verwijder afwezige bestanden + + + + Remove duplicates + Verwijder duplicaten + + + + &Queue Toggle + &Rij schakelaar + + + + Q + + + + + Invert Selection + Draai Selectie Om + + + + &Select None + &Selecteer Niets + + + + &Select All + &Selecteer Alles + + + + Ctrl+A + + + + + &View Track Details + &Bekijk Nummer Details + + + + Alt+I + + + + + &New List + &Nieuwe Lijst + + + + Ctrl+T + + + + + &Delete List + &Verwijder Lijst + + + + Ctrl+W + + + + + &Load List + &Laad Lijst + + + + O + + + + + &Save List + &Bewaar Lijst + + + + Shift+S + + + + + &Rename List + &Hernoem Lijst + + + + F2 + + + + + &Select Next Playlist + &Selecteer Volgende Afspeellijst + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + &Selecteer Vorige Afspeellijst + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + &Instellingen + + + + Ctrl+P + + + + + &About Ui + &Over Ui + + + + &About + &Over + + + + &About Qt + &Over Qt + + + + &Exit + &Sluit + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + Schakel equalizer in + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + Terugzetten + + + + Preamp + Voorversterken + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + Terugzetten + + + + Action + Actie + + + + Shortcut + Sneltoets + + + + Change shortcut... + Verander sneltoets... + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + Afspelen + + + + View + Weergave + + + + Volume + + + + + Playlist + +Afspeellijst + + + + Misc + Overig + + + + MainWindow + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + Gepauzeerd + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + Gestopt + + + + Playlist name: + + + + + Appearance + Vertoning + + + + Shortcuts + Sneltoetsen + + + + Playing + Spelen + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Sorteer Lijst + + + + + By Title + Op Titel + + + + + By Album + Op Album + + + + + By Artist + Op Artiest + + + + + By Album Artist + + + + + + By Filename + Op Bestandsnaam + + + + + By Path + Filename + Op Pad + Bestandsnaam + + + + + By Date + Op Datum + + + + + By Track Number + Op Lied Nummer + + + + + By Disc Number + Op CD Nummer + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Sorteer Selectie + + + + Randomize List + Schud Lijst + + + + Reverse List + Draai Lijst Om + + + + + Actions + Acties + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + Bufferen: %1% + + + + Qmmp + Qmmp + + + + &File + &Bestand + + + + &Tools + &Gereedschappen + + + + &Help + + + + + &Edit + &Bewerk + + + + &Playback + &Afspelen + + + + &View + &Weergave + + + + Playback + Afspelen + + + + Progress + Voortgang + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + Vorige + + + + Play + Afspelen + + + + Pause + Pauze + + + + Next + Volgende + + + + Stop + + + + + &Add File + &Voeg Bestand Toe + + + + &Remove All + &Verwijder Alles + + + + New Playlist + Nieuwe Afspeellijst + + + + Remove Playlist + Verwijder Afspeellijst + + + + &Add Directory + &Voeg Map toe + + + + &Exit + &Sluit + + + + About + Over + + + + About Qt + Over Qt + + + + &Select All + &Selecteer Alles + + + + &Remove Selected + &Verwijder Geselecteerd + + + + &Remove Unselected + &Verwijder Gedeselecteerde + + + + Visualization + Visualisatie + + + + Settings + +Instellingen + + + + + Rename Playlist + Hernoem Afspeellijst + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + Popup Informatie Instellingen + + + + Template + Layout + + + + Reset + Terugzetten + + + + Insert + Invoegen + + + + Show cover + Toon albumhoes + + + + Cover size: + Albumhoesgrootte: + + + + Transparency: + Transparantie: + + + + Delay: + Vertraging: + + + + ms + + + + + Artist + Artiest + + + + Album + + + + + Album Artist + + + + + Title + Titel + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + Commentaar + + + + Composer + Componist + + + + Duration + Duur + + + + Year + Jaar + + + + Condition + Staat + + + + QSUIFactory + + + Simple User Interface + Simpele Gebruikersinterface + + + + QSUISettings + + + View + Weergave + + + + Hide on close + Verberg bij sluit + + + + Start hidden + Start verborgen + + + + Fonts + Lettertypen + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + + + + + + + + ... + + + + + Main Window + + + + + Window title format: + + + + + Song Display + Nummer Weergave + + + + Show protocol + Laad protocol + + + + Show song numbers + Toon liednummers + + + + Show song lengths + + + + + Align song numbers + Liednummers uitlijnen + + + + Show anchor + Toon verankering + + + + Show popup information + Toon popup informatie + + + + Edit template + Bewerk layout + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + Overig + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + Artiest + + + + Album + + + + + Album Artist + + + + + Title + Titel + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + Commentaar + + + + Composer + Componist + + + + Duration + Duur + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + Jaar + + + + Condition + Staat + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + Verander sneltoets + + + + Press the key combination you want to assign + Druk de gewenste sneltoetscombinatie + + + + Clear + Leeghalen + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + Terugzetten + + + + + Separator + + + + + VisualMenu + + + Visualization + Visualisatie + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_pl_PL.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_pl_PL.ts new file mode 100644 index 000000000..c84ff3a25 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_pl_PL.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + O programie QSUI + + + + Qmmp Simple User Interface (QSUI) + Prosty interfejs użytkownika Qmmp (QSUI) + + + + Qmmp version: <b>%1</b> + Wersja Qmmp: <b>%1</b> + + + + QSUI version: <b>%1</b> + Wersja QSUI: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Prosty interfejs użytkownika oparty na standardowych widżetach. + + + + ActionManager + + + &Play + &Odtwarzaj + + + + X + X + + + + &Pause + &Wstrzymaj + + + + C + C + + + + &Stop + &Zatrzymaj + + + + V + V + + + + &Previous + &Poprzedni + + + + Z + Z + + + + &Next + &Następny + + + + B + B + + + + &Play/Pause + &Odtwarzaj/Wstrzymaj + + + + Space + Spacja + + + + J + J + + + + &Jump to Track + &Skocz do utworu + + + + &Play Files + Odtwarzaj &Pliki + + + + &Repeat Playlist + Powtó&rz listę odtwarzania + + + + R + + + + + &Repeat Track + &Powtórz utwór + + + + Ctrl+R + + + + + &Shuffle + &Losowo + + + + S + + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + Zatrzymaj po aktualnie odtwarzanym utworze + + + + Ctrl+S + + + + + &Clear Queue + Wy&czyść kolejkę + + + + Alt+Q + + + + + Always on Top + Zawsze na wierzchu + + + + Put on All Workspaces + Na wszystkie pulpity + + + + &Add File + &Dodaj plik + + + + E + + + + + Show Tabs + Pokaż Karty + + + + Show Title Bars + Pokaż Pasek tytułowy + + + + Block Toolbars + Zablokuj Pasek narzędziowy + + + + Volume &+ + Głośność &+ + + + + 0 + + + + + Volume &- + Głośność &- + + + + 9 + + + + + &Mute + Wycisz + + + + M + + + + + F + F + + + + &Add Directory + Dodaj &katalog + + + + D + D + + + + &Add Url + Dod&aj Url + + + + U + U + + + + &Remove Selected + &Usuń zaznaczone + + + + Del + Del + + + + &Remove All + Usuń &wszystkie + + + + &Remove Unselected + Usuń &niezaznaczone + + + + Remove unavailable files + Usuń niedostępne pliki + + + + Remove duplicates + Usuń duplikaty + + + + &Queue Toggle + Dodaj do/Usuń z kolejki + + + + Q + Q + + + + Invert Selection + Odwróć zaznaczenie + + + + &Select None + &Odznacz wszystkie + + + + &Select All + &Zaznacz wszystkie + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Pokaż informacje o pliku + + + + Alt+I + Alt+I + + + + &New List + &Nowa lista + + + + Ctrl+T + + + + + &Delete List + Usuń listę o&dtwarzania + + + + Ctrl+W + + + + + &Load List + &Ładuj listę + + + + O + O + + + + &Save List + &Zapisz listę + + + + Shift+S + Shift+S + + + + &Rename List + &Zmień nazwę listy + + + + F2 + + + + + &Select Next Playlist + Wybierz na&stępną listę + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + Wybierz poprzednią li&stę + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + &Korektor + + + + Ctrl+E + + + + + &Settings + &Ustawienia + + + + Ctrl+P + Ctrl+P + + + + &About Ui + &O UI + + + + &About + &O programie + + + + &About Qt + &O Qt + + + + &Exit + &Wyjście + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + Wybierz kolor + + + + CoverWidget + + + &Save As... + Zapisz jako... + + + + Save Cover As + Zapisz okładkę jako + + + + Images + Obrazy + + + + Equalizer + + + Equalizer + Korektor + + + + Enable equalizer + Włącz korektor + + + + Preset: + Profil: + + + + Save + Zapisz + + + + Delete + Usuń + + + + Reset + Reset + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + profil + + + + Overwrite Request + Nadpisz Żądanie + + + + Preset '%1' already exists. Overwrite? + Profil '%1' już istnieje. Nadpisać? + + + + FileSystemBrowser + + + Add to Playlist + Dodaj do listy odtwarzania + + + + Select Directory + Wybierz Katalog + + + + Change Directory + Zmień Katalog + + + + HotkeyEditor + + + Reset + + + + + Action + Akcja + + + + Shortcut + Skrót klawiszowy + + + + Change shortcut... + Zmień skrót... + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + Odtwarzanie + + + + View + Wygląd + + + + Volume + Głośność + + + + Playlist + Lista odtwarzania + + + + Misc + Różne + + + + MainWindow + + + Volume + Głośność + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + Wstrzymane + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + Zatrzymane + + + + Playlist name: + Nazwa listy odtwarzania: + + + + Appearance + Wygląd + + + + Shortcuts + Skróty klawiszowe + + + + Playing + Odtwarzanie + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + Edytuj Pasek narzędziowy + + + + Sort List + Sortuj listę + + + + + By Title + Według nazwy + + + + + By Album + Według nazwy albumu + + + + + By Artist + Według artysty + + + + + By Album Artist + + + + + + By Filename + Według nazwy pliku + + + + + By Path + Filename + Według Ścieżki + Nazwy pliku + + + + + By Date + Wg Daty + + + + + By Track Number + Wg numeru utworu + + + + + By Disc Number + Wg Numeru płyty + + + + + By File Creation Date + Wg Daty Utworzenia pliku + + + + + By File Modification Date + + + + + By Group + Wg Grupy + + + + Sort Selection + Sortuj zaznaczone + + + + Randomize List + Tasuj listę + + + + Reverse List + Odwróć listę + + + + + Actions + Akcje + + + + Add new playlist + Dodaj nową listę odtwarzania + + + + Show all tabs + Pokaż wszystkie karty + + + + Buffering: %1% + Buforowanie: %1% + + + + Qmmp + + + + + &File + &Plik + + + + &Tools + &Narzędzia + + + + &Help + &Pomoc + + + + &Edit + &Edycja + + + + &Playback + &Odtwarzanie + + + + &View + &Wygląd + + + + Playback + Odtwarzanie + + + + Progress + Postęp + + + + Spectrum Analyzer + Analizator Widma + + + + Files + Pliki + + + + Cover + Okładka + + + + Playlists + Listy odtwarzania + + + + Previous + Poprzedni + + + + Play + Odtwarzaj + + + + Pause + Pauza + + + + Next + Następny + + + + Stop + Zatrzymaj + + + + &Add File + &Dodaj plik + + + + &Remove All + Usuń &wszystkie + + + + New Playlist + Nowa lista odtwarzania + + + + Remove Playlist + Usuń listę odtwarzania + + + + &Add Directory + Dodaj &katalog + + + + &Exit + &Wyjście + + + + About + O programie + + + + About Qt + O programie QT + + + + &Select All + &Zaznacz wszystkie + + + + &Remove Selected + &Usuń zaznaczone + + + + &Remove Unselected + Usuń &niezaznaczone + + + + Visualization + Wizualizacja + + + + Settings + Ustawienia + + + + + Rename Playlist + Zmień nazwę listy + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + UStawienia inforamcji Popup + + + + Template + Szablon + + + + Reset + Przywróć + + + + Insert + Wstaw + + + + Show cover + Pokaż okładkę + + + + Cover size: + Rozmiar okładki: + + + + Transparency: + Przezroczystość: + + + + Delay: + Opóźnienie: + + + + ms + + + + + Artist + Artysta + + + + Album + + + + + Album Artist + + + + + Title + Tytuł + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + Gatunek + + + + Comment + Komentarz + + + + Composer + Kompozytor + + + + Duration + Długość + + + + Year + Rok + + + + Condition + Warunek + + + + QSUIFactory + + + Simple User Interface + Prosty interfejs użytkownika + + + + QSUISettings + + + View + Wygląd + + + + Hide on close + Zminimalizuj przy zamykaniu + + + + Start hidden + Uruchom zminimalizowany + + + + Fonts + Czcionki + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Wyświetlanie utworu + + + + Show protocol + Pokaż protokół + + + + Show song numbers + Wyświetl numery utworów na liście odtwarzania + + + + Show song lengths + + + + + Align song numbers + Wyrównaj w pionie numery utworów + + + + Show anchor + Pokaż kotwicę + + + + Show popup information + Pokaż informację popup + + + + Edit template + Edytuj szablon + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + Karty + + + + Show close buttons + Pokaż przyciski zamykania + + + + Show tab list menu + Pokaż menu listy kart + + + + Show 'New Playlist' button + Pokaż przycisk 'Nowa lista odtwarzania' + + + + Miscellaneous + Inne + + + + Single Column Mode + + + + + Analyzer Colors + Kolor Analizatora + + + + Analyzer #1: + Analizator #1: + + + + Peaks: + Piki: + + + + Analyzer #2: + Analizator #2: + + + + Background: + Tło: + + + + Analyzer #3: + Analizator #3: + + + + Playlist Colors + Kolory Listy Utworzenia + + + + Use system colors + Użyj systemowych kolorów + + + + Background #1: + Tło #1: + + + + Normal text: + Normalny tekst: + + + + Background #2: + Tło #2: + + + + Current text: + Aktualny tekst: + + + + Highlighted background: + Uwydatnione tło: + + + + Hightlighted text: + Uwydatniony tekst: + + + + Artist + Artysta + + + + Album + + + + + Album Artist + + + + + Title + Tytuł + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + Gatunek + + + + Comment + Komentarz + + + + Composer + Kompozytor + + + + Duration + Długość + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + Rok + + + + Condition + Warunek + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + Okładka + + + + Peaks + Piki + + + + Refresh Rate + Odświeżanie + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + Analizator opadanie + + + + + Slowest + Najwolniej + + + + + Slow + Wolno + + + + + Medium + Średnio + + + + + Fast + Szybko + + + + + Fastest + Najszybciej + + + + Peaks Falloff + Opadanie pików + + + + ShortcutDialog + + + Change Shortcut + Zmień skrót klawiszowy + + + + Press the key combination you want to assign + Wciśnij kombinację klawiszy, które chcesz przypisać + + + + Clear + Wyczyść + + + + ToolBarEditor + + + ToolBar Editor + Edytor Paska narzędziowego + + + + Reset + Resetuj + + + + + Separator + + + + + VisualMenu + + + Visualization + Wizualizacja + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_pt.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_pt.ts new file mode 100644 index 000000000..9a5fddbdb --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_pt.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + Sobre QSUI + + + + Qmmp Simple User Interface (QSUI) + Interface de utilizador Qmmp (QSUI) + + + + Qmmp version: <b>%1</b> + Versão Qmmp: <b>%1</b> + + + + QSUI version: <b>%1</b> + Versão QSUI: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Interface de utilizador baseada nos widgets padrão. + + + + ActionManager + + + &Play + Re&produzir + + + + X + X + + + + &Pause + P&ausa + + + + C + C + + + + &Stop + Pa&rar + + + + V + V + + + + &Previous + An&terior + + + + Z + Z + + + + &Next + Segui&nte + + + + B + B + + + + &Play/Pause + Re&produzir/pausa + + + + Space + Espaço + + + + &Jump to Track + &Ir para faixa + + + + J + J + + + + &Play Files + Re&produzir ficheiros + + + + E + E + + + + &Repeat Playlist + Repetir &lista de reprodução + + + + R + R + + + + &Repeat Track + &Repetir faixa + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + &Baralhar + + + + S + S + + + + &No Playlist Advance + Sem avanço &na lista de reprodução + + + + Ctrl+N + Ctrl+N + + + + &Stop After Selected + Parar após a &seleção + + + + Ctrl+S + Ctrl+S + + + + &Clear Queue + Limpar fila de reproduçã&o + + + + Alt+Q + Alt+Q + + + + Always on Top + Sempre na frente + + + + Put on All Workspaces + Mostrar em todas as áreas de trabalho + + + + Show Tabs + Mostrar separadores + + + + Show Title Bars + Mostrar barra de título + + + + Block Toolbars + Bloquear barra de ferramentas + + + + Volume &+ + Volume &+ + + + + 0 + 0 + + + + Volume &- + Volume &- + + + + 9 + 9 + + + + &Mute + &Silenciar + + + + M + M + + + + &Add File + &Adicionar ficheiro + + + + F + F + + + + &Add Directory + A&dicionar diretório + + + + D + D + + + + &Add Url + Adicionar &URL + + + + U + U + + + + &Remove Selected + &Remover seleção + + + + Del + Del + + + + &Remove All + &Remover tudo + + + + &Remove Unselected + Remover &não selecionados + + + + Remove unavailable files + Remover ficheiros indisponíveis + + + + Remove duplicates + Remover duplicados + + + + &Queue Toggle + A&lternar fila de reprodução + + + + Q + Q + + + + Invert Selection + Inverter seleção + + + + &Select None + De&smarcar tudo + + + + &Select All + &Marcar tudo + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Ver detalhes da faixa + + + + Alt+I + Alt+I + + + + &New List + &Nova lista + + + + Ctrl+T + Ctrl+T + + + + &Delete List + &Eliminar lista + + + + Ctrl+W + Ctrl+W + + + + &Load List + Carregar &lista + + + + O + O + + + + &Save List + Guardar li&sta + + + + Shift+S + Shift+S + + + + &Rename List + Muda&r nome da lista + + + + F2 + F2 + + + + &Select Next Playlist + &Selecionar próxima lista + + + + Ctrl+PgDown + Ctrl+PgDown + + + + &Select Previous Playlist + S&elecionar lista anterior + + + + Ctrl+PgUp + Ctrl+PgUp + + + + Ctrl+G + Ctrl+G + + + + &Group Tracks + A&grupar faixas + + + + Ctrl+H + Ctrl+H + + + + &Show Column Headers + Mo&strar cabeçalhos de colunas + + + + &Equalizer + &Equalizador + + + + Ctrl+E + Ctrl+E + + + + &Settings + Definiçõe&s + + + + Ctrl+P + Ctrl+P + + + + &About Ui + Sobre &UI + + + + &About + &Sobre + + + + &About Qt + Sobre &Qt + + + + &Exit + S&air + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + Selecionar cor + + + + CoverWidget + + + &Save As... + Guardar &como... + + + + Save Cover As + Guardar capa como + + + + Images + Imagens + + + + Equalizer + + + Equalizer + Equalizador + + + + Enable equalizer + Ativar equalizador + + + + Preset: + Pré-ajuste: + + + + Save + Guardar + + + + Delete + Eliminar + + + + Reset + Restaurar + + + + Preamp + Amplificador + + + + + %1dB + %1dB + + + + + +%1dB + +%1dB + + + + preset + pré-ajuste + + + + Overwrite Request + Substituição + + + + Preset '%1' already exists. Overwrite? + O pré-ajuste %1 já existe. Substituir? + + + + FileSystemBrowser + + + Add to Playlist + Adicionar à lista de reprodução + + + + Change Directory + Mudar diretório + + + + Select Directory + Selecionar diretório + + + + HotkeyEditor + + + Reset + Restaurar + + + + Action + Ação + + + + Shortcut + Atalho + + + + Change shortcut... + Mudar atalho... + + + + Reset Shortcuts + Restaurar atalhos + + + + Do you want to restore default shortcuts? + Gostaria de restaurar os atalhos originais? + + + + Playback + Reprodução + + + + View + Ver + + + + Volume + Volume + + + + Playlist + Lista de reprodução + + + + Misc + Diversos + + + + MainWindow + + + Qmmp + Qmmp + + + + &File + &Ficheiro + + + + &Tools + Ferramen&tas + + + + &Help + Aj&uda + + + + &Edit + &Editar + + + + &Playback + Re&produção + + + + &View + &Ver + + + + Playback + Reprodução + + + + Progress + Progresso + + + + Spectrum Analyzer + Analisador de espetro + + + + Files + Ficheiros + + + + Cover + Capa de álbum + + + + Playlists + Listas de reprodução + + + + Previous + Anterior + + + + Play + Reproduzir + + + + Pause + Pausa + + + + Next + Seguinte + + + + Stop + Parar + + + + &Add File + &Adicionar ficheiro + + + + &Remove All + &Remover tudo + + + + New Playlist + Nova lista de reprodução + + + + Remove Playlist + Remover lista de reprodução + + + + &Add Directory + A&dicionar diretório + + + + &Exit + S&air + + + + About + Sobre + + + + About Qt + Sobre Qt + + + + &Select All + &Marcar tudo + + + + &Remove Selected + &Remover seleção + + + + &Remove Unselected + Remover &não selecionados + + + + Visualization + Visualização + + + + Settings + Definições + + + + + Rename Playlist + Mudar nome da lista de reprodução + + + + Volume + Volume + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + <b>%1</b>|%2 bit|%3 ca|%4 Hz|faixas: %5|duração total: %6|%7 kbps| + + + + Paused + Pausa + + + + <b>%1</b>|tracks: %2|total time: %3| + <b>%1</b>|faixas: %2|duração total: %3| + + + + Stopped + Parado + + + + Playlist name: + Nome da lista de reprodução: + + + + Appearance + Aparência + + + + Shortcuts + Atalhos + + + + Playing + Reprodução + + + + Ctrl+0 + Ctrl+0 + + + + P + P + + + + Edit Toolbar + Editar barra de ferramentas + + + + Sort List + Organizar lista + + + + + By Title + Por título + + + + + By Album + Por álbum + + + + + By Artist + Por artista + + + + + By Album Artist + Por artista do álbum + + + + + By Filename + Por nome de ficheiro + + + + + By Path + Filename + Por caminho e nome de ficheiro + + + + + By Date + Por data + + + + + By Track Number + Por número de faixa + + + + + By Disc Number + Por número de disco + + + + + By File Creation Date + Por data de criação do ficheiro + + + + + By File Modification Date + Por data de modificação do ficheiro + + + + By Group + Por grupo + + + + Sort Selection + Organizar seleção + + + + Randomize List + Lista aleatória + + + + Reverse List + Inverter lista + + + + + Actions + Ações + + + + Add new playlist + Adicionar nova lista de reprodução + + + + Show all tabs + Mostrar todos separadores + + + + Buffering: %1% + Processamento: %1% + + + + PlayListHeader + + + Add Column + Adicionar coluna + + + + Edit Column + Editar coluna + + + + Show Queue/Protocol + Mostrar fila/protocolo + + + + Auto-resize + Ajuste automático + + + + Remove Column + Remover coluna + + + + PopupSettings + + + Popup Information Settings + Definições do alerta de informações + + + + Template + Modelo + + + + Reset + Restaurar + + + + Insert + Inserir + + + + Show cover + Mostrar capa de álbum + + + + Cover size: + Tamanho: + + + + Transparency: + Transparência: + + + + Delay: + Atraso: + + + + ms + ms + + + + Artist + Artista + + + + Album + Álbum + + + + Album Artist + Artista do álbum + + + + Title + Título + + + + Track Number + Número da faixa + + + + Two-digit Track Number + Número da faixa com dois dígitos + + + + Disc Number + Número do disco + + + + File Name + Nome do ficheiro + + + + File Path + Caminho do ficheiro + + + + Genre + Género + + + + Comment + Comentário + + + + Composer + Compositor + + + + Duration + Duração + + + + Year + Ano + + + + Condition + Condição + + + + QSUIFactory + + + Simple User Interface + Interface de utilizador + + + + QSUISettings + + + View + Ver + + + + Hide on close + Ocultar ao fechar + + + + Start hidden + Iniciar oculto + + + + Fonts + Tipo de letra + + + + Use system fonts + Utilizar tipo de letra do sistema + + + + Playlist: + Lista de reprodução: + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + Janela principal + + + + Window title format: + Formato de título da janela: + + + + Song Display + Exibição de faixas + + + + Show protocol + Mostrar protocolo + + + + Show song numbers + Mostrar número da faixa + + + + Show song lengths + Mostrar duração da faixa + + + + Align song numbers + Alinhar número das faixas + + + + Show anchor + Mostrar âncora + + + + Show popup information + Mostrar alerta de informações + + + + Edit template + Editar modelo + + + + Reset fonts + Restaurar tipo de letra + + + + Column headers: + Cabeçalhos de colunas: + + + + Tab names: + Nome dos separadores: + + + + Miscellaneous + Diversos + + + + Analyzer Colors + Cores do analisador + + + + Single Column Mode + Modo de uma coluna + + + + Colors + Cores + + + + Analyzer #1: + Analisador #1: + + + + Peaks: + Picos: + + + + Analyzer #2: + Analisador #2: + + + + Background: + Fundo: + + + + Analyzer #3: + Analisador #3: + + + + Playlist Colors + Cores da lista de reprodução + + + + Background #1: + Fundo #1: + + + + Normal text: + Texto normal: + + + + Background #2: + Fundo #2: + + + + Current text: + Texto atual: + + + + Highlighted background: + Destaque de fundo: + + + + Hightlighted text: + Destaque de texto: + + + + Use system colors + Usar cores do sistema + + + + Group background: + Fundo do grupo: + + + + Group text: + Texto do grupo: + + + + Tabs + Separadores + + + + Show close buttons + Mostrar botão de fecho + + + + Show tab list menu + Mostrar menu de lista de separadores + + + + Show 'New Playlist' button + Mostrar botão 'Nova lista de reprodução' + + + + Artist + Artista + + + + Album + Álbum + + + + Album Artist + Artista do álbum + + + + Title + Título + + + + Track Number + Número da faixa + + + + Two-digit Track Number + Número da faixa com dois dígitos + + + + Genre + Género + + + + Comment + Comentário + + + + Composer + Compositor + + + + Duration + Duração + + + + Disc Number + Número do disco + + + + File Name + Nome do ficheiro + + + + File Path + Caminho do ficheiro + + + + Year + Ano + + + + Condition + Condição + + + + Artist - Title + Artista - Título + + + + QSUiAnalyzer + + + Cover + Capa de álbum + + + + Peaks + Picos + + + + Refresh Rate + Taxa de atualização + + + + 50 fps + 50 fps + + + + 25 fps + 25 fps + + + + 10 fps + 10 fps + + + + 5 fps + 5 fps + + + + Analyzer Falloff + Solução para analisador + + + + + Slowest + Mais lenta + + + + + Slow + Lenta + + + + + Medium + Média + + + + + Fast + Rápida + + + + + Fastest + Mais rápida + + + + Peaks Falloff + Solução para picos + + + + ShortcutDialog + + + Change Shortcut + Mudar atalho + + + + Press the key combination you want to assign + Prima a combinação de teclas que pretende atribuir + + + + Clear + Limpar + + + + ToolBarEditor + + + ToolBar Editor + Editor da barra de ferramentas + + + + Reset + Restaurar + + + + + Separator + Separador + + + + VisualMenu + + + Visualization + Visualização + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_pt_BR.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_pt_BR.ts new file mode 100644 index 000000000..1cdd696b4 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_pt_BR.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + Tocar + + + + X + + + + + &Pause + Pausar + + + + C + + + + + &Stop + Parar + + + + V + + + + + &Previous + Anterior + + + + Z + + + + + &Next + Próximo + + + + B + + + + + &Play/Pause + + + + + Space + + + + + J + + + + + &Jump to Track + + + + + &Play Files + + + + + &Repeat Playlist + + + + + R + + + + + &Repeat Track + + + + + Ctrl+R + + + + + &Shuffle + + + + + S + + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + &Add File + &Adicionar arquivo + + + + E + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + + + + + &Add Directory + &Adicionar Diretorio + + + + D + + + + + &Add Url + + + + + U + + + + + &Remove Selected + &Remover selecionadas + + + + Del + + + + + &Remove All + &Remover tudo + + + + &Remove Unselected + &Remover não selecionadas + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + + + + + Invert Selection + Inverter Seleção + + + + &Select None + &Nenhum selecionado + + + + &Select All + &Selecionar tudo + + + + Ctrl+A + + + + + &View Track Details + &Ver detalhes da Faixa + + + + Alt+I + + + + + &New List + &Nova lista + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + &Carregar lista + + + + O + + + + + &Save List + &Salvar lista + + + + Shift+S + + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + Configurações + + + + Ctrl+P + + + + + &About Ui + + + + + &About + &Sobre + + + + &About Qt + + + + + &Exit + Sair + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + Lista de músicas + + + + Misc + + + + + MainWindow + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + Aparência + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Classificar lista + + + + + By Title + Por Título + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + Por Nome + + + + + By Path + Filename + Por Dirertório + Nome + + + + + By Date + Por Data + + + + + By Track Number + + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Classificar por Seleção + + + + Randomize List + Lista Eleatória + + + + Reverse List + Lista Revertida + + + + + Actions + + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + + + + + Play + + + + + Pause + + + + + Next + + + + + Stop + + + + + &Add File + &Adicionar arquivo + + + + &Remove All + &Remover tudo + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + &Adicionar Diretorio + + + + &Exit + Sair + + + + About + + + + + About Qt + + + + + &Select All + &Selecionar tudo + + + + &Remove Selected + &Remover selecionadas + + + + &Remove Unselected + &Remover não selecionadas + + + + Visualization + + + + + Settings + + + + + + Rename Playlist + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + + + + + Start hidden + + + + + Fonts + Fontes + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Mostrar música + + + + Show protocol + + + + + Show song numbers + + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_ru.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_ru.ts new file mode 100644 index 000000000..0ea20bee3 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_ru.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + О QSUI + + + + Qmmp Simple User Interface (QSUI) + QSUI - простой пользовательский интерфейс для Qmmp + + + + Qmmp version: <b>%1</b> + Версия Qmmp: <b>%1</b> + + + + QSUI version: <b>%1</b> + Версия QSUI: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Простой интерфейс пользователя, постороенный с использованием стандартных элементов. + + + + ActionManager + + + &Play + &Воспроизвести + + + + X + + + + + &Pause + &Приостановить + + + + C + + + + + &Stop + &Стоп + + + + V + + + + + &Previous + &Предыдущий фрагмент + + + + Z + + + + + &Next + &Следующий фрагмент + + + + B + + + + + &Play/Pause + &Воспр/приост + + + + Space + + + + + J + + + + + &Jump to Track + &Перейти к треку + + + + &Play Files + &Воспроизвести файлы + + + + &Repeat Playlist + &Повторять список + + + + R + + + + + &Repeat Track + &Повторять трек + + + + Ctrl+R + + + + + &Shuffle + &В случайном порядке + + + + S + + + + + &No Playlist Advance + &Не продвигаться по списку + + + + Ctrl+N + + + + + &Stop After Selected + &Остановить после выделенного + + + + Ctrl+S + + + + + &Clear Queue + &Очистить очередь + + + + Alt+Q + + + + + Always on Top + Поверх всех окон + + + + Put on All Workspaces + Разместить на всех рабочих столах + + + + &Add File + &Добавить файл + + + + E + + + + + Show Tabs + Показывать вкладки + + + + Show Title Bars + Показывать заголовки + + + + Block Toolbars + Заблокировать панели инструментов + + + + Volume &+ + Громкость &+ + + + + 0 + + + + + Volume &- + Громкость &- + + + + 9 + + + + + &Mute + &Выключить звук + + + + M + + + + + F + + + + + &Add Directory + &Добавить директорию + + + + D + + + + + &Add Url + &Добавить URL + + + + U + + + + + &Remove Selected + &Удалить выделенное + + + + Del + + + + + &Remove All + &Удалить всё + + + + &Remove Unselected + &Удалить невыделенное + + + + Remove unavailable files + Удалить недоступные файлы + + + + Remove duplicates + Удалить дубликаты + + + + &Queue Toggle + &В очередь + + + + Q + + + + + Invert Selection + Инвертировать выделение + + + + &Select None + &Снять выделение + + + + &Select All + &Выделить всё + + + + Ctrl+A + + + + + &View Track Details + &Информация + + + + Alt+I + + + + + &New List + &Новый список + + + + Ctrl+T + + + + + &Delete List + &Удалить список + + + + Ctrl+W + + + + + &Load List + &Загрузить список + + + + O + + + + + &Save List + &Сохранить список + + + + Shift+S + + + + + &Rename List + &Переименовать список + + + + F2 + + + + + &Select Next Playlist + &Следующий список + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + &Предыдущий список + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + &Группировать треки + + + + Ctrl+H + + + + + &Show Column Headers + &Показывать названия колонок + + + + &Equalizer + &Эквалайзер + + + + Ctrl+E + + + + + &Settings + &Настройки + + + + Ctrl+P + + + + + &About Ui + &Об интерфейсе + + + + &About + &О программе + + + + &About Qt + &О библиотеке Qt + + + + &Exit + &Выход + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + Выберите цвет + + + + CoverWidget + + + &Save As... + &Сохранить как... + + + + Save Cover As + Сохранить обложку как + + + + Images + Изображения + + + + Equalizer + + + Equalizer + Эквалайзер + + + + Enable equalizer + Включить эквалайзер + + + + Preset: + Предустановка: + + + + Save + Сохранить + + + + Delete + Удалить + + + + Reset + Сбросить + + + + Preamp + Усиление + + + + + %1dB + %1дБ + + + + + +%1dB + +%1дБ + + + + preset + предустановка + + + + Overwrite Request + Запрос на перезапись + + + + Preset '%1' already exists. Overwrite? + Предустановка '%1' уже существует. Перезаписать? + + + + FileSystemBrowser + + + Add to Playlist + Добавить к списку воспроизведения + + + + Select Directory + Выберите директорию + + + + Change Directory + Сменить директорию + + + + HotkeyEditor + + + Reset + Сбросить + + + + Action + Действие + + + + Shortcut + Сочетание клавиш + + + + Change shortcut... + Изменить сочетание клавиш... + + + + Reset Shortcuts + Сбросить сочетания клавиш + + + + Do you want to restore default shortcuts? + Восстановить сочетания клавиш поумолчанию? + + + + Playback + Воспроизведение + + + + View + Вид + + + + Volume + Громкость + + + + Playlist + Список + + + + Misc + Другие + + + + MainWindow + + + Volume + Громкость + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + <b>%1</b>|%2 бит|%3 к.|%4 Гц|треков: %5|обшее время: %6|%7 кбит/с| + + + + Paused + Пауза + + + + <b>%1</b>|tracks: %2|total time: %3| + <b>%1</b>|треков: %2|общее время: %3| + + + + Stopped + Стоп + + + + Playlist name: + Имя списка: + + + + Appearance + Внешний вид + + + + Shortcuts + Сочетания клавиш + + + + Playing + Воспр. + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + Редактировать панель инструментов + + + + Sort List + Сортировать + + + + + By Title + По названию + + + + + By Album + По альбому + + + + + By Artist + По исполнителю + + + + + By Album Artist + По исполнителю альбома + + + + + By Filename + По имени файла + + + + + By Path + Filename + По пути и файлу + + + + + By Date + По дате + + + + + By Track Number + По номеру трека + + + + + By Disc Number + По номеру диска + + + + + By File Creation Date + По дате создания файла + + + + + By File Modification Date + По дате изменения файла + + + + By Group + По группе + + + + Sort Selection + Сортировать выделенное + + + + Randomize List + Перемешать + + + + Reverse List + Перевернуть + + + + + Actions + Действия + + + + Add new playlist + Добавить новый список воспроизведения + + + + Show all tabs + Показать все вкладки + + + + Buffering: %1% + Буферизация: %1% + + + + Qmmp + + + + + &File + &Файл + + + + &Tools + &Инструменты + + + + &Help + &Справка + + + + &Edit + &Правка + + + + &Playback + &Воспроизведение + + + + &View + &Вид + + + + Playback + Воспроизведение + + + + Progress + Прогресс + + + + Spectrum Analyzer + Анализатор спектра + + + + Files + Файлы + + + + Cover + Обложка + + + + Playlists + Списки + + + + Previous + Предыдущий фрагмент + + + + Play + Воспроизвести + + + + Pause + Приостановить + + + + Next + Следующий фрагмент + + + + Stop + Остановить + + + + &Add File + &Добавить файл + + + + &Remove All + &Удалить всё + + + + New Playlist + Создать список + + + + Remove Playlist + Удалить список + + + + &Add Directory + &Добавить директорию + + + + &Exit + &Выход + + + + About + О программе + + + + About Qt + О Qt + + + + &Select All + &Выделить всё + + + + &Remove Selected + &Удалить выделенное + + + + &Remove Unselected + &Удалить невыделенное + + + + Visualization + Визуализация + + + + Settings + Настройки + + + + + Rename Playlist + Переименовать список + + + + PlayListHeader + + + Add Column + Добавить колонку + + + + Edit Column + Изменить колонку + + + + Show Queue/Protocol + Показывать очередь/протокол + + + + Auto-resize + Авто-размер + + + + Remove Column + Удалить колонку + + + + PopupSettings + + + Popup Information Settings + Настройки всплывающей информации + + + + Show cover + Показывать обложку + + + + Transparency: + Прозрачность: + + + + Delay: + Задержка: + + + + ms + мс + + + + Cover size: + Размер обложки: + + + + Template + Шаблон + + + + Reset + Сброс + + + + Insert + Вставить + + + + Artist + Исполнитель + + + + Album + Альбом + + + + Album Artist + Исполнитель альбома + + + + Title + Название + + + + Track Number + Номер трека + + + + Two-digit Track Number + 2-х разрядный номер диска + + + + Disc Number + Номер диска + + + + File Name + Имя файла + + + + File Path + Путь к файлу + + + + Genre + Жанр + + + + Comment + Комментарий + + + + Composer + Композитор + + + + Duration + Длительность + + + + Year + Год + + + + Condition + Условие + + + + QSUIFactory + + + Simple User Interface + Простой интерфейс пользователя + + + + QSUISettings + + + View + Вид + + + + Hide on close + Скрывать при закрытии + + + + Start hidden + Запускать скрытым + + + + Fonts + Шрифты + + + + Use system fonts + Использовать системные шрифты + + + + Playlist: + Список: + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + Главное окно + + + + Window title format: + Формат имени окна: + + + + Song Display + Список песен + + + + Show protocol + Показывать протокол + + + + Show song numbers + Показывать номера фрагментов + + + + Show song lengths + Показывать длительности фрагментов + + + + Align song numbers + Выравнивать номера фрагментов + + + + Show anchor + Показывать "якорь" + + + + Show popup information + Показывать всплывающее окно с информацией + + + + Edit template + Редактировать шаблон + + + + Colors + Цвета + + + + Group background: + Фон группы: + + + + Reset fonts + Сбросить шрифты + + + + Column headers: + Названия колонок: + + + + Tab names: + Названия вкладок: + + + + Group text: + Текст группы: + + + + Tabs + Вкладки + + + + Show close buttons + Показывать кнопки закрытия + + + + Show tab list menu + Показывать меню со списком вкладок + + + + Show 'New Playlist' button + Показывать кнопку "Новый список" + + + + Miscellaneous + Разное + + + + Single Column Mode + Режим одной колонки + + + + Analyzer Colors + Цвета анализатора + + + + Analyzer #1: + Анализатор #1: + + + + Peaks: + Пики: + + + + Analyzer #2: + Анализатор #2: + + + + Background: + Фон: + + + + Analyzer #3: + Анализатор #3: + + + + Playlist Colors + Цвета списка воспроиведения + + + + Use system colors + Использовать системные цвета + + + + Background #1: + Фон #1: + + + + Normal text: + Обычный текст: + + + + Background #2: + Фон #2: + + + + Current text: + Текущий текст: + + + + Highlighted background: + Выделенный фон: + + + + Hightlighted text: + Выделенный текст: + + + + Artist + Исполнитель + + + + Album + Альбом + + + + Album Artist + Исполнитель альбома + + + + Title + Название + + + + Track Number + Номер трека + + + + Two-digit Track Number + 2-х разрядный номер диска + + + + Genre + Жанр + + + + Comment + Комментарий + + + + Composer + Композитор + + + + Duration + Длительность + + + + Disc Number + Номер диска + + + + File Name + Имя файла + + + + File Path + Путь к файлу + + + + Year + Год + + + + Condition + Условие + + + + Artist - Title + Исполнитель - название + + + + QSUiAnalyzer + + + Cover + Обложка + + + + Peaks + Пики + + + + Refresh Rate + Частота обновления + + + + 50 fps + 50 кадр/с + + + + 25 fps + 25 кадр/с + + + + 10 fps + 10 кадр/с + + + + 5 fps + 5 кадр/с + + + + Analyzer Falloff + Падение анализатора + + + + + Slowest + Самое медленное + + + + + Slow + Медленное + + + + + Medium + Среднее + + + + + Fast + Быстрое + + + + + Fastest + Самое быстрое + + + + Peaks Falloff + Падение пиков + + + + ShortcutDialog + + + Change Shortcut + Изменить сочетание клавиш + + + + Press the key combination you want to assign + Нажмите клавиши, сочетание которых вы хотите использовать + + + + Clear + Очистить + + + + ToolBarEditor + + + ToolBar Editor + Редактор панели инструментов + + + + Reset + Сброс + + + + + Separator + Разделитель + + + + VisualMenu + + + Visualization + Визуализация + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_sk.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_sk.ts new file mode 100644 index 000000000..02fe5e9ab --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_sk.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + &Hrať + + + + X + X + + + + &Pause + &Pozastaviť + + + + C + C + + + + &Stop + Za&staviť + + + + V + V + + + + &Previous + &Predchádzajúca + + + + Z + Z + + + + &Next + &Nasledujúca + + + + B + B + + + + &Play/Pause + &Hrať/Pozastaviť + + + + Space + Medzerník + + + + J + J + + + + &Jump to Track + + + + + &Play Files + + + + + &Repeat Playlist + &Opakovať playlist + + + + R + R + + + + &Repeat Track + &Opakovať skladbu + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + &Zamiešať + + + + S + S + + + + &No Playlist Advance + &Nepokročilý playlist + + + + Ctrl+N + Ctrl+N + + + + &Stop After Selected + &Zastaviť po vybranej + + + + Ctrl+S + Ctrl+S + + + + &Clear Queue + &Vyčistiť rad + + + + Alt+Q + Alt+Q + + + + Always on Top + Vždy na vrchu + + + + Put on All Workspaces + Dať na všetky plochy + + + + &Add File + &Pridať súbor + + + + E + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + F + + + + &Add Directory + &Pridať priečinok + + + + D + D + + + + &Add Url + &Pridať URL + + + + U + U + + + + &Remove Selected + Odst&rániť vybraté + + + + Del + Del + + + + &Remove All + Odst&rániť všetko + + + + &Remove Unselected + Odst&rániť nevybraté + + + + Remove unavailable files + Odstrániť nedostupné súbory + + + + Remove duplicates + Odstrániť duplikáty + + + + &Queue Toggle + &Zaradiť prepínanie + + + + Q + Q + + + + Invert Selection + Invertovať výber + + + + &Select None + Zrušiť &výber + + + + &Select All + &Vybrať všetko + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Zobraziť detaily o skladbe + + + + Alt+I + Alt+I + + + + &New List + &Nový zoznam + + + + Ctrl+T + Ctrl+T + + + + &Delete List + &Vymazať zoznam + + + + Ctrl+W + Ctrl+W + + + + &Load List + &Načítať zoznam + + + + O + O + + + + &Save List + &Uložiť zoznam + + + + Shift+S + Shift+S + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + &Vybrať nasledujúci playlist + + + + Ctrl+PgDown + Ctrl+Page Down + + + + &Select Previous Playlist + &Vybrať predchádzajúci playlist + + + + Ctrl+PgUp + Ctrl+Page Up + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + Na&stavenia + + + + Ctrl+P + Ctrl+P + + + + &About Ui + + + + + &About + O progr&ame + + + + &About Qt + &O Qt + + + + &Exit + &Ukončiť + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + Zobraziť + + + + Volume + + + + + Playlist + Playlist + + + + Misc + + + + + MainWindow + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + Vzhľad + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Triediť zoznam + + + + + By Title + Podľa názvu + + + + + By Album + Podľa albumu + + + + + By Artist + Podľa interpréta + + + + + By Album Artist + + + + + + By Filename + Podľa názvu súboru + + + + + By Path + Filename + Podľa cesty a názvu súboru + + + + + By Date + Podľa dátumu + + + + + By Track Number + Podľa čísla skladby + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Potriediť výber + + + + Randomize List + Zamiešať zoznam + + + + Reverse List + Otočiť zoznam + + + + + Actions + Činnosti + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + Predchádzajúca + + + + Play + Hrať + + + + Pause + Pozastaviť + + + + Next + Nasledujúca + + + + Stop + Zastaviť + + + + &Add File + &Pridať súbor + + + + &Remove All + Odst&rániť všetko + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + &Pridať priečinok + + + + &Exit + &Ukončiť + + + + About + + + + + About Qt + + + + + &Select All + &Vybrať všetko + + + + &Remove Selected + Odst&rániť vybraté + + + + &Remove Unselected + Odst&rániť nevybraté + + + + Visualization + Vizualizácie + + + + Settings + + + + + + Rename Playlist + Premenovať playlist + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + Zobraziť + + + + Hide on close + Skryť pri zatvorení + + + + Start hidden + Spustiť skryté + + + + Fonts + Písma + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Zobrazenie skladby + + + + Show protocol + Zobraziť protokol + + + + Show song numbers + Zobrazovať čísla piesní + + + + Show song lengths + + + + + Align song numbers + Zarovnať čísla piesní + + + + Show anchor + Zobrazovať ukotvenie + + + + Show popup information + Zobrazovať upozornenia s informáciami + + + + Edit template + Upraviť šablónu + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + Vizualizácie + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_sr_BA.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_sr_BA.ts new file mode 100644 index 000000000..e10052c46 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_sr_BA.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + О КСУИ-ију + + + + Qmmp Simple User Interface (QSUI) + Кумп једноставно корисничко сучеље (КСУИ) + + + + Qmmp version: <b>%1</b> + Издање Кумпа: <b>%1</b> + + + + QSUI version: <b>%1</b> + Издање КСУИ-ија: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Једноставно корисничко сучеље базирано на основном сету виџета. + + + + ActionManager + + + &Play + &Пусти + + + + X + X + + + + &Pause + П&аузирај + + + + C + C + + + + &Stop + &Заустави + + + + V + V + + + + &Previous + П&ретходна + + + + Z + Z + + + + &Next + &Сљедећа + + + + B + B + + + + &Play/Pause + П&усти/паузирај + + + + Space + Размак + + + + &Jump to Track + С&кочи на нумеру + + + + J + J + + + + &Play Files + Пусти &фајлове + + + + E + E + + + + &Repeat Playlist + Понављај &листу + + + + R + R + + + + &Repeat Track + Понављај &нумеру + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + На&сумично + + + + S + S + + + + &No Playlist Advance + &Без напредовања листе + + + + Ctrl+N + Ctrl+N + + + + &Stop After Selected + &Заустави након избора + + + + Ctrl+S + Ctrl+S + + + + &Clear Queue + &Очисти ред + + + + Alt+Q + Alt+Q + + + + Always on Top + Увијек на врху + + + + Put on All Workspaces + На свим површима + + + + Show Tabs + Прикажи језичке + + + + Show Title Bars + Прикажи имена трака алатки + + + + Block Toolbars + Закључај траке алатки + + + + Volume &+ + Јачина &+ + + + + 0 + 0 + + + + Volume &- + Јачина &- + + + + 9 + 9 + + + + &Mute + Утиша&ј + + + + M + M + + + + &Add File + Додај &фајл + + + + F + F + + + + &Add Directory + Додај фас&циклу + + + + D + D + + + + &Add Url + Додај Ур&л + + + + U + U + + + + &Remove Selected + Уклони &избор + + + + Del + Del + + + + &Remove All + Уклони &све + + + + &Remove Unselected + Уклони &неизабрано + + + + Remove unavailable files + Уклони недоступне фајлове + + + + Remove duplicates + Уклони дупликате + + + + &Queue Toggle + Стави у &ред + + + + Q + Q + + + + Invert Selection + Обрни избор + + + + &Select None + &Очисти избор + + + + &Select All + Изабери &све + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Види детаље нумере + + + + Alt+I + Alt+I + + + + &New List + &Нова листа нумера + + + + Ctrl+T + Ctrl+T + + + + &Delete List + &Обриши листу нумера + + + + Ctrl+W + Ctrl+W + + + + &Load List + &Учитај листу нумера + + + + O + O + + + + &Save List + &Сачувај листу нумера + + + + Shift+S + Shift+S + + + + &Rename List + Пре&именуј листу нумера + + + + F2 + + + + + &Select Next Playlist + Изабери сље&дећу + + + + Ctrl+PgDown + Ctrl+PgDown + + + + &Select Previous Playlist + Изабери &претходну + + + + Ctrl+PgUp + Ctrl+PgUp + + + + Ctrl+G + Ctrl+G + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + &Еквилајзер + + + + Ctrl+E + Ctrl+E + + + + &Settings + По&дешавање + + + + Ctrl+P + Ctrl+P + + + + &About Ui + О &сучељу + + + + &About + &О програму + + + + &About Qt + О &Куту + + + + &Exit + &Напусти + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + Избор боје + + + + CoverWidget + + + &Save As... + &Сачувај као... + + + + Save Cover As + Сачувај омот + + + + Images + Слике + + + + Equalizer + + + Equalizer + Еквилајзер + + + + Enable equalizer + Омоући еквилајзер + + + + Preset: + Поставка: + + + + Save + Сачувај + + + + Delete + Обриши + + + + Reset + Ресетуј + + + + Preamp + Претпојачање + + + + + %1dB + %1dB + + + + + +%1dB + +%1dB + + + + preset + поставка + + + + Overwrite Request + Захтјев за пребрисавање + + + + Preset '%1' already exists. Overwrite? + Поставка „%1“ већ постоји. Желите ли да је пребришете? + + + + FileSystemBrowser + + + Add to Playlist + Додај на листу + + + + Change Directory + Промијени фасциклу + + + + Select Directory + Избор фасцикле + + + + HotkeyEditor + + + Reset + Ресетуј + + + + Action + радња + + + + Shortcut + пречица + + + + Change shortcut... + Измијени пречицу... + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + Контроле + + + + View + Приказ + + + + Volume + Јачина + + + + Playlist + Листа нумера + + + + Misc + Разно + + + + MainWindow + + + Qmmp + Кумп + + + + &File + &Фајл + + + + &Tools + &Алатке + + + + &Help + По&моћ + + + + &Edit + &Уређивање + + + + &Playback + &Контроле + + + + &View + &Приказ + + + + Playback + Контроле + + + + Progress + Трака напретка + + + + Spectrum Analyzer + Анализатор спектра + + + + Files + Фајлови + + + + Cover + Омот + + + + Playlists + Листе нумера + + + + Previous + Претходна + + + + Play + Пусти + + + + Pause + Паузирај + + + + Next + Сљедећа + + + + Stop + Заустави + + + + &Add File + Додај &фајл + + + + &Remove All + &Очисти избор + + + + New Playlist + Нова листа + + + + Remove Playlist + Уклони листу + + + + &Add Directory + Додај фас&циклу + + + + &Exit + &Напусти + + + + About + О програму + + + + About Qt + О Куту + + + + &Select All + Изабери &све + + + + &Remove Selected + Уклони &избор + + + + &Remove Unselected + Уклони &неизабрано + + + + Visualization + Визуелизација + + + + Settings + Подешавања + + + + + Rename Playlist + Преименуј листу нумера + + + + Volume + Јачина + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + Паузирано + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + Заустављено + + + + Playlist name: + Име листе нумера: + + + + Appearance + Изглед + + + + Shortcuts + Пречице + + + + Playing + Пуштање + + + + Ctrl+0 + Ctrl+0 + + + + P + P + + + + Edit Toolbar + Уреди траку алатки + + + + Sort List + Поређај + + + + + By Title + по наслову + + + + + By Album + по албуму + + + + + By Artist + по извођачу + + + + + By Album Artist + + + + + + By Filename + по имену фајла + + + + + By Path + Filename + по путањи и имену + + + + + By Date + по датуму + + + + + By Track Number + по броју нумере + + + + + By Disc Number + по броју диска + + + + + By File Creation Date + по датуму фајла + + + + + By File Modification Date + + + + + By Group + по групи + + + + Sort Selection + Поређај избор + + + + Randomize List + Претумбај + + + + Reverse List + Обрни + + + + + Actions + Радње + + + + Add new playlist + Додај нову листу + + + + Show all tabs + Прикажи све језичке + + + + Buffering: %1% + Баферујем: %1% + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + Поставке облачића података + + + + Template + Шаблон + + + + Reset + Ресетуј + + + + Insert + Уметни + + + + Show cover + Прикажи омот + + + + Cover size: + Величина омота: + + + + Transparency: + Прозирност: + + + + Delay: + Застој: + + + + ms + ms + + + + Artist + извођача + + + + Album + албум + + + + Album Artist + + + + + Title + наслов + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + жанр + + + + Comment + коментар + + + + Composer + композитора + + + + Duration + дужину + + + + Year + годину + + + + Condition + услов + + + + QSUIFactory + + + Simple User Interface + Једноставно корисничко сучеље + + + + QSUISettings + + + View + Приказ + + + + Hide on close + Сакриј по затварању + + + + Start hidden + Покрени скривено + + + + Fonts + Фонтови + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Приказ нумере + + + + Show protocol + Протокол + + + + Show song numbers + Број нумере + + + + Show song lengths + + + + + Align song numbers + Уравнај бројеве нумера + + + + Show anchor + Сидро + + + + Show popup information + Облачић с подацима + + + + Edit template + Уреди шаблон + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Miscellaneous + Разно + + + + Analyzer Colors + Боје анализатора + + + + Single Column Mode + + + + + Colors + + + + + Analyzer #1: + Анализатор #1: + + + + Peaks: + Врхови: + + + + Analyzer #2: + Анализатор #2: + + + + Background: + Позадина: + + + + Analyzer #3: + Анализатор #3: + + + + Playlist Colors + Боје листи нумера + + + + Background #1: + Позадина #1: + + + + Normal text: + Обични текст: + + + + Background #2: + Позадина #2: + + + + Current text: + Текући текст: + + + + Highlighted background: + Означена позадина: + + + + Hightlighted text: + Означени текст: + + + + Use system colors + Системске боје + + + + Group background: + + + + + Group text: + + + + + Tabs + Језичци + + + + Show close buttons + Дугмад за затварање + + + + Show tab list menu + Мени списка језичака + + + + Show 'New Playlist' button + Дугме „Нова листа нумера“ + + + + Artist + извођача + + + + Album + албум + + + + Album Artist + + + + + Title + наслов + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + жанр + + + + Comment + коментар + + + + Composer + композитора + + + + Duration + дужину + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + годину + + + + Condition + услов + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + Омот + + + + Peaks + Врхови + + + + Refresh Rate + Фреквенција + + + + 50 fps + 50 fps + + + + 25 fps + 25 fps + + + + 10 fps + 10 fps + + + + 5 fps + 5 fps + + + + Analyzer Falloff + Падање анализатора + + + + + Slowest + Најспорије + + + + + Slow + Споро + + + + + Medium + Умјерено + + + + + Fast + Брзо + + + + + Fastest + Најбрже + + + + Peaks Falloff + Падање врхова + + + + ShortcutDialog + + + Change Shortcut + Измјена пречице + + + + Press the key combination you want to assign + Притисните комбинацију тастера коју желите да додијелите + + + + Clear + Очисти + + + + ToolBarEditor + + + ToolBar Editor + Уређивач траке алатки + + + + Reset + Ресетуј + + + + + Separator + Раздвајач + + + + VisualMenu + + + Visualization + Визуелизација + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_sr_RS.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_sr_RS.ts new file mode 100644 index 000000000..263c6e2b7 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_sr_RS.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + О КСУИ-ију + + + + Qmmp Simple User Interface (QSUI) + Кумп једноставно корисничко сучеље (КСУИ) + + + + Qmmp version: <b>%1</b> + Издање Кумпа: <b>%1</b> + + + + QSUI version: <b>%1</b> + Издање КСУИ-ија: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Једноставно корисничко сучеље базирано на основном сету виџета. + + + + ActionManager + + + &Play + &Пусти + + + + X + X + + + + &Pause + П&аузирај + + + + C + C + + + + &Stop + &Заустави + + + + V + V + + + + &Previous + П&ретходна + + + + Z + Z + + + + &Next + &Следећа + + + + B + B + + + + &Play/Pause + П&усти/паузирај + + + + Space + Размак + + + + &Jump to Track + С&кочи на нумеру + + + + J + J + + + + &Play Files + Пусти &фајлове + + + + E + E + + + + &Repeat Playlist + Понављај &листу + + + + R + R + + + + &Repeat Track + Понављај &нумеру + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + На&сумично + + + + S + S + + + + &No Playlist Advance + &Без напредовања листе + + + + Ctrl+N + Ctrl+N + + + + &Stop After Selected + &Заустави након избора + + + + Ctrl+S + Ctrl+S + + + + &Clear Queue + &Очисти ред + + + + Alt+Q + Alt+Q + + + + Always on Top + Увијек на врху + + + + Put on All Workspaces + На свим површима + + + + Show Tabs + Прикажи језичке + + + + Show Title Bars + Прикажи имена трака алатки + + + + Block Toolbars + Закључај траке алатки + + + + Volume &+ + Јачина &+ + + + + 0 + 0 + + + + Volume &- + Јачина &- + + + + 9 + 9 + + + + &Mute + Утиша&ј + + + + M + M + + + + &Add File + Додај &фајл + + + + F + F + + + + &Add Directory + Додај фас&циклу + + + + D + D + + + + &Add Url + Додај Ур&л + + + + U + U + + + + &Remove Selected + Уклони &избор + + + + Del + Del + + + + &Remove All + Уклони &све + + + + &Remove Unselected + Уклони &неизабрано + + + + Remove unavailable files + Уклони недоступне фајлове + + + + Remove duplicates + Уклони дупликате + + + + &Queue Toggle + Стави у &ред + + + + Q + Q + + + + Invert Selection + Обрни избор + + + + &Select None + &Очисти избор + + + + &Select All + Изабери &све + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Види детаље нумере + + + + Alt+I + Alt+I + + + + &New List + &Нова листа нумера + + + + Ctrl+T + Ctrl+T + + + + &Delete List + &Обриши листу нумера + + + + Ctrl+W + Ctrl+W + + + + &Load List + &Учитај листу нумера + + + + O + O + + + + &Save List + &Сачувај листу нумера + + + + Shift+S + Shift+S + + + + &Rename List + Пре&именуј листу нумера + + + + F2 + + + + + &Select Next Playlist + Изабери сле&дећу + + + + Ctrl+PgDown + Ctrl+PgDown + + + + &Select Previous Playlist + Изабери &претходну + + + + Ctrl+PgUp + Ctrl+PgUp + + + + Ctrl+G + Ctrl+G + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + &Еквилајзер + + + + Ctrl+E + Ctrl+E + + + + &Settings + По&дешавање + + + + Ctrl+P + Ctrl+P + + + + &About Ui + О &сучељу + + + + &About + &О програму + + + + &About Qt + О &Куту + + + + &Exit + &Напусти + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + Избор боје + + + + CoverWidget + + + &Save As... + &Сачувај као... + + + + Save Cover As + Сачувај омот + + + + Images + Слике + + + + Equalizer + + + Equalizer + Еквилајзер + + + + Enable equalizer + Омоући еквилајзер + + + + Preset: + Поставка: + + + + Save + Сачувај + + + + Delete + Обриши + + + + Reset + Ресетуј + + + + Preamp + Претпојачање + + + + + %1dB + %1dB + + + + + +%1dB + +%1dB + + + + preset + поставка + + + + Overwrite Request + Захтев за пребрисавање + + + + Preset '%1' already exists. Overwrite? + Поставка „%1“ већ постоји. Желите ли да је пребришете? + + + + FileSystemBrowser + + + Add to Playlist + Додај на листу + + + + Change Directory + Промени фасциклу + + + + Select Directory + Избор фасцикле + + + + HotkeyEditor + + + Reset + Ресетуј + + + + Action + радња + + + + Shortcut + пречица + + + + Change shortcut... + Измени пречицу... + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + Контроле + + + + View + Приказ + + + + Volume + Јачина + + + + Playlist + Листа нумера + + + + Misc + Разно + + + + MainWindow + + + Qmmp + Кумп + + + + &File + &Фајл + + + + &Tools + &Алатке + + + + &Help + По&моћ + + + + &Edit + &Уређивање + + + + &Playback + &Контроле + + + + &View + &Приказ + + + + Playback + Контроле + + + + Progress + Трака напретка + + + + Spectrum Analyzer + Анализатор спектра + + + + Files + Фајлови + + + + Cover + Омот + + + + Playlists + Листе нумера + + + + Previous + Претходна + + + + Play + Пусти + + + + Pause + Паузирај + + + + Next + Следећа + + + + Stop + Заустави + + + + &Add File + Додај &фајл + + + + &Remove All + &Очисти избор + + + + New Playlist + Нова листа + + + + Remove Playlist + Уклони листу + + + + &Add Directory + Додај фас&циклу + + + + &Exit + &Напусти + + + + About + О програму + + + + About Qt + О Куту + + + + &Select All + Изабери &све + + + + &Remove Selected + Уклони &избор + + + + &Remove Unselected + Уклони &неизабрано + + + + Visualization + Визуелизација + + + + Settings + Подешавања + + + + + Rename Playlist + Преименуј листу нумера + + + + Volume + Јачина + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + Паузирано + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + Заустављено + + + + Playlist name: + Име листе нумера: + + + + Appearance + Изглед + + + + Shortcuts + Пречице + + + + Playing + Пуштање + + + + Ctrl+0 + Ctrl+0 + + + + P + P + + + + Edit Toolbar + Уреди траку алатки + + + + Sort List + Поређај + + + + + By Title + по наслову + + + + + By Album + по албуму + + + + + By Artist + по извођачу + + + + + By Album Artist + + + + + + By Filename + по имену фајла + + + + + By Path + Filename + по путањи и имену + + + + + By Date + по датуму + + + + + By Track Number + по броју нумере + + + + + By Disc Number + по броју диска + + + + + By File Creation Date + по датуму фајла + + + + + By File Modification Date + + + + + By Group + по групи + + + + Sort Selection + Поређај избор + + + + Randomize List + Претумбај + + + + Reverse List + Обрни + + + + + Actions + Радње + + + + Add new playlist + Додај нову листу + + + + Show all tabs + Прикажи све језичке + + + + Buffering: %1% + Баферујем: %1% + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + Поставке облачића података + + + + Template + Шаблон + + + + Reset + Ресетуј + + + + Insert + Уметни + + + + Show cover + Прикажи омот + + + + Cover size: + Величина омота: + + + + Transparency: + Прозирност: + + + + Delay: + Застој: + + + + ms + ms + + + + Artist + извођача + + + + Album + албум + + + + Album Artist + + + + + Title + наслов + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + жанр + + + + Comment + коментар + + + + Composer + композитора + + + + Duration + дужину + + + + Year + годину + + + + Condition + услов + + + + QSUIFactory + + + Simple User Interface + Једноставно корисничко сучеље + + + + QSUISettings + + + View + Приказ + + + + Hide on close + Сакриј по затварању + + + + Start hidden + Покрени скривено + + + + Fonts + Фонтови + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Приказ нумере + + + + Show protocol + Протокол + + + + Show song numbers + Број нумере + + + + Show song lengths + + + + + Align song numbers + Уравнај бројеве нумера + + + + Show anchor + Сидро + + + + Show popup information + Облачић с подацима + + + + Edit template + Уреди шаблон + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Miscellaneous + Разно + + + + Analyzer Colors + Боје анализатора + + + + Single Column Mode + + + + + Colors + + + + + Analyzer #1: + Анализатор #1: + + + + Peaks: + Врхови: + + + + Analyzer #2: + Анализатор #2: + + + + Background: + Позадина: + + + + Analyzer #3: + Анализатор #3: + + + + Playlist Colors + Боје листи нумера + + + + Background #1: + Позадина #1: + + + + Normal text: + Обични текст: + + + + Background #2: + Позадина #2: + + + + Current text: + Текући текст: + + + + Highlighted background: + Означена позадина: + + + + Hightlighted text: + Означени текст: + + + + Use system colors + Системске боје + + + + Group background: + + + + + Group text: + + + + + Tabs + Језичци + + + + Show close buttons + Дугмад за затварање + + + + Show tab list menu + Мени списка језичака + + + + Show 'New Playlist' button + Дугме „Нова листа нумера“ + + + + Artist + извођача + + + + Album + албум + + + + Album Artist + + + + + Title + наслов + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + жанр + + + + Comment + коментар + + + + Composer + композитора + + + + Duration + дужину + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + годину + + + + Condition + услов + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + Омот + + + + Peaks + Врхови + + + + Refresh Rate + Фреквенција + + + + 50 fps + 50 fps + + + + 25 fps + 25 fps + + + + 10 fps + 10 fps + + + + 5 fps + 5 fps + + + + Analyzer Falloff + Падање анализатора + + + + + Slowest + Најспорије + + + + + Slow + Споро + + + + + Medium + Умерено + + + + + Fast + Брзо + + + + + Fastest + Најбрже + + + + Peaks Falloff + Падање врхова + + + + ShortcutDialog + + + Change Shortcut + Измена пречице + + + + Press the key combination you want to assign + Притисните комбинацију тастера коју желите да доделите + + + + Clear + Очисти + + + + ToolBarEditor + + + ToolBar Editor + Уређивач траке алатки + + + + Reset + Ресетуј + + + + + Separator + Раздвајач + + + + VisualMenu + + + Visualization + Визуелизација + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_tr.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_tr.ts new file mode 100644 index 000000000..320e6c013 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_tr.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + &Çal + + + + X + X + + + + &Pause + &Duraklat + + + + C + C + + + + &Stop + &Durdur + + + + V + V + + + + &Previous + &Önceki + + + + Z + Z + + + + &Next + &Sonraki + + + + B + B + + + + &Play/Pause + &Oynat/Duraklat + + + + Space + Boşluk + + + + J + J + + + + &Jump to Track + + + + + &Play Files + + + + + &Repeat Playlist + &Çalma Listesini Yinele + + + + R + R + + + + &Repeat Track + &Parçayı Yinele + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + &Rastgele + + + + S + S + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + &Add File + &Dosya Ekle + + + + E + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + F + + + + &Add Directory + &Dizin Ekle + + + + D + D + + + + &Add Url + &Url Ekle + + + + U + U + + + + &Remove Selected + &Seçileni Kaldır + + + + Del + Del + + + + &Remove All + &Hepsini Kaldır + + + + &Remove Unselected + &Seçilmemişleri Kaldır + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + Q + + + + Invert Selection + Seçimi Tersine Çevir + + + + &Select None + &Hiçbirini Seçme + + + + &Select All + &Tümünü Seç + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + &Parça Detaylarını Göster + + + + Alt+I + Alt+I + + + + &New List + &Yeni Liste + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + &Liste Yükle + + + + O + O + + + + &Save List + &Listeyi Kaydet + + + + Shift+S + Shift+S + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + &Ayarlar + + + + Ctrl+P + Ctrl+P + + + + &About Ui + + + + + &About + &Hakkında + + + + &About Qt + &Qt Hakkında + + + + &Exit + &Çıkış + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + Çalma Listesi + + + + Misc + + + + + MainWindow + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + Görünüm + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + Listeyi Sınıflandır + + + + + By Title + Başlığa Göre + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + Dosya Adına Göre + + + + + By Path + Filename + Dosya Yolu + Dosya Adına Göre + + + + + By Date + Tarihe Göre + + + + + By Track Number + Parça Numarasına Göre + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + Seçilenleri Sınıflandır + + + + Randomize List + Rastgele Listele + + + + Reverse List + Listeyi Ters Çevir + + + + + Actions + Eylemler + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + Önceki + + + + Play + Oynat + + + + Pause + Duraklat + + + + Next + Sonraki + + + + Stop + Durdur + + + + &Add File + &Dosya Ekle + + + + &Remove All + &Hepsini Kaldır + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + &Dizin Ekle + + + + &Exit + &Çıkış + + + + About + + + + + About Qt + + + + + &Select All + &Tümünü Seç + + + + &Remove Selected + &Seçileni Kaldır + + + + &Remove Unselected + &Seçilmemişleri Kaldır + + + + Visualization + Görüntüleme + + + + Settings + + + + + + Rename Playlist + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + Kapatınca saklan + + + + Start hidden + Gizli başlat + + + + Fonts + Fontlar + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + Şarkı Göstergesi + + + + Show protocol + Protokolü göster + + + + Show song numbers + Şarkı numaralarını göster + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + Görüntüleme + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_uk_UA.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_uk_UA.ts new file mode 100644 index 000000000..f9b58d45b --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_uk_UA.ts @@ -0,0 +1,1560 @@ + + + + + AboutQSUIDialog + + + About QSUI + Про QSUI + + + + Qmmp Simple User Interface (QSUI) + QSUI - простий інтерфейс користувача для Qmmp + + + + Qmmp version: <b>%1</b> + Версія Qmmp: <b>%1</b> + + + + QSUI version: <b>%1</b> + Версія QSUI: <b>%1</b> + + + + Simple user interface based on standard widgets set. + Простий інтерфейс користувача, побудований з використанням стандартних елементів. + + + + ActionManager + + + &Play + &Відтворити + + + + X + + + + + &Pause + &Пауза + + + + C + + + + + &Stop + &Стоп + + + + V + + + + + &Previous + &Назад + + + + Z + + + + + &Next + &Вперед + + + + B + + + + + &Play/Pause + &Відтворення/Пауза + + + + Space + + + + + J + + + + + &Jump to Track + &Перейти до треку + + + + &Play Files + &Відтворити файли + + + + &Repeat Playlist + &Повторити список + + + + R + + + + + &Repeat Track + &Повторити трек + + + + Ctrl+R + + + + + &Shuffle + &Перемішати + + + + S + + + + + &No Playlist Advance + &Не пересуватися по списку + + + + Ctrl+N + + + + + &Stop After Selected + &Зупинити після вибраного + + + + Ctrl+S + + + + + &Clear Queue + &Очистити чергу + + + + Alt+Q + + + + + Always on Top + Завжди зверху + + + + Put on All Workspaces + Розмістити на усіх робочих столах + + + + &Add File + &Додати файл + + + + E + + + + + Show Tabs + Показати вкладки + + + + Show Title Bars + Показати заголовки + + + + Block Toolbars + Заблокувати панелі інструментів + + + + Volume &+ + Гучність &+ + + + + 0 + + + + + Volume &- + Гучність &- + + + + 9 + + + + + &Mute + &Вимкнути звук + + + + M + + + + + F + + + + + &Add Directory + &Додати теку + + + + D + + + + + &Add Url + &Додати адресу + + + + U + + + + + &Remove Selected + &Видалити вибране + + + + Del + + + + + &Remove All + &Видалити все + + + + &Remove Unselected + &Видалити не вибране + + + + Remove unavailable files + Видалити недоступні файли + + + + Remove duplicates + Видалити дублікати + + + + &Queue Toggle + &В чергу + + + + Q + + + + + Invert Selection + Інвертувати вибране + + + + &Select None + &Зняти виділення + + + + &Select All + &Вибрати все + + + + Ctrl+A + + + + + &View Track Details + &Інформація + + + + Alt+I + + + + + &New List + &Новий список + + + + Ctrl+T + + + + + &Delete List + &Видалити список + + + + Ctrl+W + + + + + &Load List + &Завантажити список + + + + O + + + + + &Save List + &Зберегти список + + + + Shift+S + + + + + &Rename List + &Переіменувати список + + + + F2 + + + + + &Select Next Playlist + Вибрати &наступний список + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + Вибрати &попередній список + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + &Група треків + + + + Ctrl+H + + + + + &Show Column Headers + &Показувати назву стовпців + + + + &Equalizer + &Еквалайзер + + + + Ctrl+E + + + + + &Settings + &Налаштування + + + + Ctrl+P + + + + + &About Ui + &Про інтерфейс + + + + &About + &Про програму + + + + &About Qt + &Про Qt + + + + &Exit + &Вихід + + + + Ctrl+Q + + + + + ColorWidget + + + Select Color + Виберіть колір + + + + CoverWidget + + + &Save As... + &Зберегти як... + + + + Save Cover As + Зберегти обкладинку як + + + + Images + Зображення + + + + Equalizer + + + Equalizer + Еквалайзер + + + + Enable equalizer + Увімкнути еквалайзер + + + + Preset: + Предвстановлення: + + + + Save + Зберегти + + + + Delete + Видалити + + + + Reset + Скинути + + + + Preamp + Підсилення + + + + + %1dB + %1дБ + + + + + +%1dB + +%1дБ + + + + + preset + предвстановлення + + + + Overwrite Request + Запит на перезапис + + + + Preset '%1' already exists. Overwrite? + Предвстановлення '%1' вже існує. Замінити? + + + + FileSystemBrowser + + + Add to Playlist + Додати до списку відтворення + + + + Select Directory + Виберіть теку + + + + Change Directory + Змінити теку + + + + HotkeyEditor + + + Reset + Скинути + + + + Action + Дія + + + + Shortcut + Комбінація + + + + Change shortcut... + Змінити комбінацію клавіш... + + + + Reset Shortcuts + Скинути комбінації клавіш + + + + Do you want to restore default shortcuts? + Скинути комбінації клавіш за замовчанням? + + + + Playback + Відтворення + + + + View + Вигляд + + + + Volume + Гучність + + + + Playlist + Список + + + + Misc + Інші + + + + MainWindow + + + Volume + Гучність + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + <b>%1</b>|%2 біт|%3 к.|%4 Гц|треків: %5|загальний час: %6|%7 кбіт/с| + + + + Paused + Призупинено + + + + <b>%1</b>|tracks: %2|total time: %3| + <b>%1</b>|треків: %2|загальний час: %3| + + + + Stopped + Зупинено + + + + Playlist name: + Назва списку: + + + + Appearance + Зовнішній вигляд + + + + Shortcuts + Комбінації клавіш + + + + Playing + Відтворюється + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + Редагувати панель інструментів + + + + Sort List + Сортувати + + + + + By Title + За назвою + + + + + By Album + За альбомом + + + + + By Artist + За виконавцем + + + + + By Album Artist + За альбомом виконавця + + + + + By Filename + За ім'ям файлу + + + + + By Path + Filename + За шляхом та файлом + + + + + By Date + За датою + + + + + By Track Number + За номером треку + + + + + By Disc Number + За номером диску + + + + + By File Creation Date + За датою створення файлу + + + + + By File Modification Date + За датою модифікації файлу + + + + By Group + За групою + + + + Sort Selection + Сортувати вибране + + + + Randomize List + Перемішати + + + + Reverse List + Перевернути + + + + + Actions + Дії + + + + Add new playlist + Додати новий список + + + + Show all tabs + Показати всі вкладки + + + + Buffering: %1% + Буферизація: %1% + + + + Qmmp + + + + + &File + &Файл + + + + &Tools + &Інструменти + + + + &Help + &Довідка + + + + &Edit + &Правка + + + + &Playback + &Відтворення + + + + &View + &Вигляд + + + + Playback + Відтворення + + + + Progress + Прогрес + + + + Spectrum Analyzer + Аналізатор спектру + + + + Files + Файли + + + + Cover + Обкладинка + + + + Playlists + Списки + + + + Previous + Назад + + + + Play + Відтворити + + + + Pause + Пауза + + + + Next + Вперед + + + + Stop + Стоп + + + + &Add File + &Додати файл + + + + &Remove All + &Видалити все + + + + New Playlist + Новий список + + + + Remove Playlist + Видалити список + + + + &Add Directory + &Додати теку + + + + &Exit + &Вихід + + + + About + Про програму + + + + About Qt + Про Qt + + + + &Select All + &Вибрати все + + + + &Remove Selected + &Видалити вибране + + + + &Remove Unselected + &Видалити не вибране + + + + Visualization + Візуалізація + + + + Settings + Налаштування + + + + + Rename Playlist + Переіменувати список + + + + PlayListHeader + + + Add Column + Додати стовпчик + + + + Edit Column + Редагувати стовпчик + + + + Show Queue/Protocol + Показати чергу/протокол + + + + Auto-resize + Авто-розмір + + + + Remove Column + Видалити стовпчик + + + + PopupSettings + + + Popup Information Settings + Налаштування спливаючої інформації + + + + Show cover + Показати обкладинку + + + + Transparency: + Прозорість: + + + + Delay: + Затримка: + + + + ms + мс + + + + Cover size: + Розмір обкладинки: + + + + Template + Шаблон + + + + Reset + Скинути + + + + Insert + Вставити + + + + Artist + Виконавець + + + + Album + Альбом + + + + Album Artist + Альбом Виконавець + + + + Title + Назва + + + + Track Number + Номер трека + + + + Two-digit Track Number + Подвійний номер трека + + + + Disc Number + Номер диска + + + + File Name + Ім'я файла + + + + File Path + Шлях файла + + + + Genre + Жанр + + + + Comment + Коментар + + + + Composer + Композитор + + + + Duration + Тривалість + + + + Year + Рік + + + + Condition + Умова + + + + QSUIFactory + + + Simple User Interface + Простий інтерфейс користувача + + + + QSUISettings + + + View + Вигляд + + + + Hide on close + Ховати при закритті + + + + Start hidden + Запускати схованим + + + + Fonts + Шрифти + + + + Use system fonts + Використовувати системні шрифти + + + + Playlist: + Список: + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + Головне вікно + + + + + Window title format: + Формат назви вікна: + + + + Song Display + Список пісень + + + + Show protocol + Показати протокол + + + + Show song numbers + Відображати номери пісень + + + + Show song lengths + Відображати довжину пісні + + + + Align song numbers + Вирівнювати номери фрагментів + + + + Show anchor + Показувати "якір" + + + + Show popup information + Показувати спливаюче вікно з інформацією + + + + Edit template + Редагувати шаблон + + + + Colors + Кольори + + + + Group background: + Тло групи: + + + + Reset fonts + Скинути шрифти + + + + Column headers: + Назви стовпців: + + + + Tab names: + Назва закладки: + + + + Group text: + Текст групи: + + + + Tabs + Вкладки + + + + Show close buttons + Показати кнопки закриття + + + + Show tab list menu + Відображати меню зі списоком вкладок + + + + Show 'New Playlist' button + Показувати кнопку "Новий список" + + + + Miscellaneous + Різне + + + + Single Column Mode + Одностовпчиковий режим + + + + Analyzer Colors + Колір аналізатора + + + + Analyzer #1: + Аналізатор #1: + + + + Peaks: + Піки: + + + + Analyzer #2: + Аналізатор #2: + + + + Background: + Тло: + + + + Analyzer #3: + Аналізатор #3: + + + + Playlist Colors + Кольори списку відтворення + + + + Use system colors + Використовувати системні кольори + + + + Background #1: + Тло #1: + + + + Normal text: + Звичайний текст: + + + + Background #2: + Тло #2: + + + + Current text: + Поточний текст: + + + + Highlighted background: + Виділене тло: + + + + Hightlighted text: + Виділений текст: + + + + Artist + Виконавець + + + + Album + Альбом + + + + Album Artist + Альбом Виконавець + + + + Title + Назва + + + + Track Number + Номер трека + + + + Two-digit Track Number + Подвійний номер трека + + + + Genre + Жанр + + + + Comment + Коментар + + + + Composer + Композитор + + + + Duration + Тривалість + + + + Disc Number + Номер диска + + + + File Name + Ім'я файла + + + + File Path + Шлях файла + + + + Year + Рік + + + + Condition + Умова + + + + Artist - Title + Артист - Назва + + + + QSUiAnalyzer + + + Cover + Обкладинка + + + + Peaks + Піки + + + + Refresh Rate + Частота оновлення + + + + 50 fps + 50 кадр/с + + + + 25 fps + 25 кадр/с + + + + 10 fps + 10 кадр/с + + + + 5 fps + 5 кадр/с + + + + Analyzer Falloff + Падіння аналізатора + + + + + Slowest + Найповільніше + + + + + Slow + Повільне + + + + + Medium + Середнє + + + + + Fast + Швидке + + + + + Fastest + Найшвидше + + + + Peaks Falloff + Падіння піків + + + + ShortcutDialog + + + Change Shortcut + Змінити комбінації клавіш + + + + Press the key combination you want to assign + Натисніть клавіші, комбінації яких ви бажаєте використовувати + + + + Clear + Очистити + + + + ToolBarEditor + + + ToolBar Editor + Редактор панелі інструментів + + + + Reset + Скинути + + + + + Separator + Розділювач + + + + VisualMenu + + + Visualization + Візуалізація + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_zh_CN.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_zh_CN.ts new file mode 100644 index 000000000..2cbbed24e --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_zh_CN.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + 播放(&P) + + + + X + X + + + + &Pause + 暂停(&P) + + + + C + C + + + + &Stop + 停止(&S) + + + + V + V + + + + &Previous + 上一曲(&P) + + + + Z + Z + + + + &Next + 下一曲(&N) + + + + B + B + + + + &Play/Pause + 播放/暂停(&P) + + + + Space + 空格 + + + + J + J + + + + &Jump to Track + + + + + &Play Files + + + + + &Repeat Playlist + 重复播放列表(&R) + + + + R + R + + + + &Repeat Track + 重复音轨(&R) + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + 乱序(&S) + + + + S + S + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + &Add File + 添加文件(&A) + + + + E + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + F + + + + &Add Directory + 添加文件夹(&A) + + + + D + D + + + + &Add Url + 添加 URL (&A) + + + + U + U + + + + &Remove Selected + 删除所选(&R) + + + + Del + Del + + + + &Remove All + 删除全部(&R) + + + + &Remove Unselected + 删除未选(&R) + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + Q + + + + Invert Selection + 反选 + + + + &Select None + 无选择(&S) + + + + &Select All + 选择全部(&S) + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + 查看音轨详细信息(&V) + + + + Alt+I + Alt+I + + + + &New List + 新建列表(&N) + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + 载入列表(&L) + + + + O + O + + + + &Save List + 保存列表(&S) + + + + Shift+S + Shift+S + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + 设置(&S) + + + + Ctrl+P + Ctrl+P + + + + &About Ui + + + + + &About + 关于(&A) + + + + &About Qt + 关于 Qt (&A) + + + + &Exit + 退出(&E) + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + 播放列表 + + + + Misc + + + + + MainWindow + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + 外观 + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + 列表排序 + + + + + By Title + 按标题 + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + 按文件名 + + + + + By Path + Filename + 按路径+文件名 + + + + + By Date + 按日期 + + + + + By Track Number + 按音轨 + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + 选择排序 + + + + Randomize List + 随机产生列表 + + + + Reverse List + 逆序列表 + + + + + Actions + 动作 + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + 上一曲 + + + + Play + 播放 + + + + Pause + 暂停 + + + + Next + 下一曲 + + + + Stop + 停止 + + + + &Add File + 添加文件(&A) + + + + &Remove All + 删除全部(&R) + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + 添加文件夹(&A) + + + + &Exit + 退出(&E) + + + + About + + + + + About Qt + + + + + &Select All + 选择全部(&S) + + + + &Remove Selected + 删除所选(&R) + + + + &Remove Unselected + 删除未选(&R) + + + + Visualization + 可视化 + + + + Settings + + + + + + Rename Playlist + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + 关闭时隐藏 + + + + Start hidden + 启动时隐藏 + + + + Fonts + 字体 + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + 显示歌曲 + + + + Show protocol + 显示协议 + + + + Show song numbers + 显示曲目编号 + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + 可视化 + + + diff --git a/src/plugins/Ui/qsui/translations/qsui_plugin_zh_TW.ts b/src/plugins/Ui/qsui/translations/qsui_plugin_zh_TW.ts new file mode 100644 index 000000000..5ccb0d167 --- /dev/null +++ b/src/plugins/Ui/qsui/translations/qsui_plugin_zh_TW.ts @@ -0,0 +1,1558 @@ + + + + + AboutQSUIDialog + + + About QSUI + + + + + Qmmp Simple User Interface (QSUI) + + + + + Qmmp version: <b>%1</b> + + + + + QSUI version: <b>%1</b> + + + + + Simple user interface based on standard widgets set. + + + + + ActionManager + + + &Play + 播放(&P) + + + + X + X + + + + &Pause + 暫停(&P) + + + + C + C + + + + &Stop + 停止(&S) + + + + V + V + + + + &Previous + 上一曲(&P) + + + + Z + Z + + + + &Next + 下一曲(&N) + + + + B + B + + + + &Play/Pause + 播放/暫停(&P) + + + + Space + 空格 + + + + J + J + + + + &Jump to Track + + + + + &Play Files + + + + + &Repeat Playlist + 重復播放清單(&R) + + + + R + R + + + + &Repeat Track + 重復音軌(&R) + + + + Ctrl+R + Ctrl+R + + + + &Shuffle + 亂序(&S) + + + + S + S + + + + &No Playlist Advance + + + + + Ctrl+N + + + + + &Stop After Selected + + + + + Ctrl+S + + + + + &Clear Queue + + + + + Alt+Q + + + + + Always on Top + + + + + Put on All Workspaces + + + + + &Add File + 添加檔案(&A) + + + + E + + + + + Show Tabs + + + + + Show Title Bars + + + + + Block Toolbars + + + + + Volume &+ + + + + + 0 + + + + + Volume &- + + + + + 9 + + + + + &Mute + + + + + M + + + + + F + F + + + + &Add Directory + 添加檔案夾(&A) + + + + D + D + + + + &Add Url + 添加 URL (&A) + + + + U + U + + + + &Remove Selected + 移除所選(&R) + + + + Del + Del + + + + &Remove All + 移除全部(&R) + + + + &Remove Unselected + 移除未選(&R) + + + + Remove unavailable files + + + + + Remove duplicates + + + + + &Queue Toggle + + + + + Q + Q + + + + Invert Selection + 反選 + + + + &Select None + 無選取(&S) + + + + &Select All + 選取全部(&S) + + + + Ctrl+A + Ctrl+A + + + + &View Track Details + 檢視音軌詳細資訊(&V) + + + + Alt+I + Alt+I + + + + &New List + 新建清單(&N) + + + + Ctrl+T + + + + + &Delete List + + + + + Ctrl+W + + + + + &Load List + 載入清單(&L) + + + + O + O + + + + &Save List + 儲存清單(&S) + + + + Shift+S + Shift+S + + + + &Rename List + + + + + F2 + + + + + &Select Next Playlist + + + + + Ctrl+PgDown + + + + + &Select Previous Playlist + + + + + Ctrl+PgUp + + + + + Ctrl+G + + + + + &Group Tracks + + + + + Ctrl+H + + + + + &Show Column Headers + + + + + &Equalizer + + + + + Ctrl+E + + + + + &Settings + 設定(&S) + + + + Ctrl+P + Ctrl+P + + + + &About Ui + + + + + &About + 關於(&A) + + + + &About Qt + 關於 Qt (&A) + + + + &Exit + 結束(&E) + + + + Ctrl+Q + Ctrl+Q + + + + ColorWidget + + + Select Color + + + + + CoverWidget + + + &Save As... + + + + + Save Cover As + + + + + Images + + + + + Equalizer + + + Equalizer + + + + + Enable equalizer + + + + + Preset: + + + + + Save + + + + + Delete + + + + + Reset + + + + + Preamp + + + + + + %1dB + + + + + + +%1dB + + + + + preset + + + + + Overwrite Request + + + + + Preset '%1' already exists. Overwrite? + + + + + FileSystemBrowser + + + Add to Playlist + + + + + Select Directory + + + + + Change Directory + + + + + HotkeyEditor + + + Reset + + + + + Action + + + + + Shortcut + + + + + Change shortcut... + + + + + Reset Shortcuts + + + + + Do you want to restore default shortcuts? + + + + + Playback + + + + + View + + + + + Volume + + + + + Playlist + 播放清單 + + + + Misc + + + + + MainWindow + + + Volume + + + + + <b>%1</b>|%2 bit|%3 ch|%4 Hz|tracks: %5|total time: %6|%7 kbps| + + + + + Paused + + + + + <b>%1</b>|tracks: %2|total time: %3| + + + + + Stopped + + + + + Playlist name: + + + + + Appearance + 外觀 + + + + Shortcuts + + + + + Playing + + + + + Ctrl+0 + + + + + P + + + + + Edit Toolbar + + + + + Sort List + 清單排序 + + + + + By Title + 按標題 + + + + + By Album + + + + + + By Artist + + + + + + By Album Artist + + + + + + By Filename + 按檔名 + + + + + By Path + Filename + 按路徑+檔名 + + + + + By Date + 按日期 + + + + + By Track Number + 按音軌 + + + + + By Disc Number + + + + + + By File Creation Date + + + + + + By File Modification Date + + + + + By Group + + + + + Sort Selection + 選取排序 + + + + Randomize List + 隨機產生清單 + + + + Reverse List + 逆串列表 + + + + + Actions + 動作 + + + + Add new playlist + + + + + Show all tabs + + + + + Buffering: %1% + + + + + Qmmp + + + + + &File + + + + + &Tools + + + + + &Help + + + + + &Edit + + + + + &Playback + + + + + &View + + + + + Playback + + + + + Progress + + + + + Spectrum Analyzer + + + + + Files + + + + + Cover + + + + + Playlists + + + + + Previous + 上一曲 + + + + Play + 播放 + + + + Pause + 暫停 + + + + Next + 下一曲 + + + + Stop + 停止 + + + + &Add File + 添加檔案(&A) + + + + &Remove All + 移除全部(&R) + + + + New Playlist + + + + + Remove Playlist + + + + + &Add Directory + 添加檔案夾(&A) + + + + &Exit + 結束(&E) + + + + About + + + + + About Qt + + + + + &Select All + 選取全部(&S) + + + + &Remove Selected + 移除所選(&R) + + + + &Remove Unselected + 移除未選(&R) + + + + Visualization + 可視化 + + + + Settings + + + + + + Rename Playlist + + + + + PlayListHeader + + + Add Column + + + + + Edit Column + + + + + Show Queue/Protocol + + + + + Auto-resize + + + + + Remove Column + + + + + PopupSettings + + + Popup Information Settings + + + + + Template + + + + + Reset + + + + + Insert + + + + + Show cover + + + + + Cover size: + + + + + Transparency: + + + + + Delay: + + + + + ms + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Year + + + + + Condition + + + + + QSUIFactory + + + Simple User Interface + + + + + QSUISettings + + + View + + + + + Hide on close + 關閉時隱藏 + + + + Start hidden + 啟動時隱藏 + + + + Fonts + 字型 + + + + Use system fonts + + + + + Playlist: + + + + + + + ??? + ??? + + + + + + + ... + ... + + + + Main Window + + + + + Window title format: + + + + + Song Display + 察看歌曲 + + + + Show protocol + 顯示協議 + + + + Show song numbers + 顯示曲目編號 + + + + Show song lengths + + + + + Align song numbers + + + + + Show anchor + + + + + Show popup information + + + + + Edit template + + + + + Colors + + + + + Group background: + + + + + Reset fonts + + + + + Column headers: + + + + + Tab names: + + + + + Group text: + + + + + Tabs + + + + + Show close buttons + + + + + Show tab list menu + + + + + Show 'New Playlist' button + + + + + Miscellaneous + + + + + Single Column Mode + + + + + Analyzer Colors + + + + + Analyzer #1: + + + + + Peaks: + + + + + Analyzer #2: + + + + + Background: + + + + + Analyzer #3: + + + + + Playlist Colors + + + + + Use system colors + + + + + Background #1: + + + + + Normal text: + + + + + Background #2: + + + + + Current text: + + + + + Highlighted background: + + + + + Hightlighted text: + + + + + Artist + + + + + Album + + + + + Album Artist + + + + + Title + + + + + Track Number + + + + + Two-digit Track Number + + + + + Genre + + + + + Comment + + + + + Composer + + + + + Duration + + + + + Disc Number + + + + + File Name + + + + + File Path + + + + + Year + + + + + Condition + + + + + Artist - Title + + + + + QSUiAnalyzer + + + Cover + + + + + Peaks + + + + + Refresh Rate + + + + + 50 fps + + + + + 25 fps + + + + + 10 fps + + + + + 5 fps + + + + + Analyzer Falloff + + + + + + Slowest + + + + + + Slow + + + + + + Medium + + + + + + Fast + + + + + + Fastest + + + + + Peaks Falloff + + + + + ShortcutDialog + + + Change Shortcut + + + + + Press the key combination you want to assign + + + + + Clear + + + + + ToolBarEditor + + + ToolBar Editor + + + + + Reset + + + + + + Separator + + + + + VisualMenu + + + Visualization + 可視化 + + + diff --git a/src/plugins/Ui/qsui/translations/translations.qrc b/src/plugins/Ui/qsui/translations/translations.qrc new file mode 100644 index 000000000..e1060293b --- /dev/null +++ b/src/plugins/Ui/qsui/translations/translations.qrc @@ -0,0 +1,30 @@ + + + + qsui_plugin_ru.qm + qsui_plugin_uk_UA.qm + qsui_plugin_zh_CN.qm + qsui_plugin_zh_TW.qm + qsui_plugin_tr.qm + qsui_plugin_cs.qm + qsui_plugin_pt_BR.qm + qsui_plugin_pt.qm + qsui_plugin_de.qm + qsui_plugin_pl_PL.qm + qsui_plugin_fr.qm + qsui_plugin_it.qm + qsui_plugin_kk.qm + qsui_plugin_lt.qm + qsui_plugin_hu.qm + qsui_plugin_nl.qm + qsui_plugin_ja.qm + qsui_plugin_sk.qm + qsui_plugin_es.qm + qsui_plugin_he.qm + qsui_plugin_gl_ES.qm + qsui_plugin_sr_BA.qm + qsui_plugin_sr_RS.qm + qsui_plugin_bg.qm + qsui_plugin_el.qm + + diff --git a/src/plugins/Ui/qsui/txt/ascii_logo.txt b/src/plugins/Ui/qsui/txt/ascii_logo.txt new file mode 100644 index 000000000..b533d97ac --- /dev/null +++ b/src/plugins/Ui/qsui/txt/ascii_logo.txt @@ -0,0 +1,18 @@ + + \ / + ____________ \_/ ____________ + _/XXXXXXXXXXXX\_/X\_/XXXXXXXXXXXX\_ + /XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\ + |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| + \_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_/ + \XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/ + \_XXXXXXXXXXXXXXXXXXXXXXXXX_/ + |_XXXXXXXXXXXXXXXXXXXXX_| + |XXXXXXXXXXXXXXXXXXX| + /XXXXXXXXXXXXXXXXXXX\ + |__XXXXXXXXXXXXXXX__| + \XXXXXXXXXXXXX/ + |XXXX___XXXX| + |XXX/ \XXX| + |XX| |XX| + |__| |__| diff --git a/src/plugins/Ui/qsui/txt/qsui_authors.txt b/src/plugins/Ui/qsui/txt/qsui_authors.txt new file mode 100644 index 000000000..03f800b43 --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors.txt @@ -0,0 +1,63 @@ +Developers: + + Ilya Kotov + +Translators: + +Chinese Traditional: + lon + +Chinese Simplified: + lon + +Czech: + Karel Volný + +French: + Stanislas Zeller + +German: + Panagiotis Papadopoulos + +Hebrew: + Genghis Khan + +Hungarian: + Németh Gábor + +Italian: + Gian Paolo Renello + +Japanese: + Ryota Shimamoto + +Kazakh: + Baurzhan Muftakhidinov + +Lithuanian: + Algirdas Butkus + +Polish: + Grzegorz Gibas + +Portuguese: + Sérgio Marques + +Russian: + Ilya Kotov + +Serbian: + Mladen Pejaković + +Slovak: + Ján Ďanovský + +Spanish: + Félix Medrano + +Turkish: + Mustafa GUNAY + Bilgesu Güngör + +Ukrainian: + Gennadi Motsyo diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_cs.txt b/src/plugins/Ui/qsui/txt/qsui_authors_cs.txt new file mode 100644 index 000000000..6e0c26452 --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_cs.txt @@ -0,0 +1,57 @@ +Vývojáři: + + Ilya Kotov + +Překladatelé: + +Tradiční čínština: + lon + +Zjednodušená čínština: + lon + +Čeština: + Karel Volný + +Francouzština: + Stanislas Zeller + +Němčina: + Panagiotis Papadopoulos + +Hebrejština: + Genghis Khan + +Maďarština: + Németh Gábor + +Italština: + Gian Paolo Renello + +Japonština: + Ryota Shimamoto + +Kazaština: + Baurzhan Muftakhidinov + +Litevština: + Algirdas Butkus + +Polština: + Grzegorz Gibas + +Ručtina: + Ilya Kotov + +Slovenština: + Ján Ďanovský + +Španělština: + Félix Medrano + +Turečtina: + Mustafa GUNAY + Bilgesu Güngör + +Ukrajinština: + Gennadi Motsyo diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_de.txt b/src/plugins/Ui/qsui/txt/qsui_authors_de.txt new file mode 100644 index 000000000..a5b968116 --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_de.txt @@ -0,0 +1,63 @@ +Entwickler: + + Ilya Kotov + +Übersetzer: + +Chinesisch traditionell: + lon + +Chinesisch vereinfacht: + lon + +Tschechisch: + Karel Volný + +Französisch: + Stanislas Zeller + +Deutsch: + Panagiotis Papadopoulos + +Hebräisch: + Genghis Khan + +Ungarisch: + Németh Gábor + +Italienisch: + Gian Paolo Renello + +Japanisch: + Ryota Shimamoto + +Kasachisch: + Baurzhan Muftakhidinov + +Litauisch: + Algirdas Butkus + +Polnisch: + Grzegorz Gibas + +Portugiesisch: + Sérgio Marques + +Russisch: + Ilya Kotov + +Serbisch: + Mladen Pejaković + +Slowakisch: + Ján Ďanovský + +Spanisch: + Félix Medrano + +Türkisch: + Mustafa GUNAY + Bilgesu Güngör + +Ukrainisch: + Gennadi Motsyo \ No newline at end of file diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_he.txt b/src/plugins/Ui/qsui/txt/qsui_authors_he.txt new file mode 100644 index 000000000..a4978eacc --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_he.txt @@ -0,0 +1,54 @@ +מפתחים: + + Ilya Kotov + +מתרגמים: + +סינית מסורתית: + lon + +סינית מפושטת: + lon + +צ׳כית: + Karel Volný + +צרפתית: + Stanislas Zeller + +גרמנית: + Panagiotis Papadopoulos + +הונגרית: + Németh Gábor + +איטלקית: + Gian Paolo Renello + +יפנית: + Ryota Shimamoto + +קזכית: + Baurzhan Muftakhidinov + +ליטאית: + Algirdas Butkus + +פולנית: + Grzegorz Gibas + +רוסית: + Ilya Kotov + +סלובקית: + Ján Ďanovský + +ספרדית: + Félix Medrano + +טורקית: + Mustafa GUNAY + Bilgesu Güngör + +אוקראינית: + Gennadi Motsyo diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_ja.txt b/src/plugins/Ui/qsui/txt/qsui_authors_ja.txt new file mode 100644 index 000000000..3e55dce24 --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_ja.txt @@ -0,0 +1,58 @@ +開発者: + Илья Котов (Ilya Kotov) + +翻訳者: +イタリア語 + Gian Paolo Renello + +ウクライナ語 + Геннадий Моцьо (Gennadi Motsyo) + +オランダ語 + Ronald Uitermark + +カザフ語 + Бауржан Муфтахидинов (Baurzhan Muftakhidinov) + +スペイン語 + Félix Medrano + +スロバキア語 + Ján Ďanovský + +チェコ語 + Karel Volný + +ドイツ語 + Stefan Koelling + Panagiotis Papadopoulos + +トルコ語 + Mustafa GUNAY + Bilgesu Güngör + +ブラジル ポルトガル語 + Klaos Lacerda + Bruno Gonçalves + +フランス語 + Stanislas Zeller + +ポーランド語 + Grzegorz Gibas + +マジャール語 + Németh Gábor + +リトアニア語 + Algirdas Butkus + +ロシア語 + Илья Котов (Ilya Kotov) + +簡体字中国語 +繁体字中国語 + 李红昆 (lon) + +日本語 + 島本良太 diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_lt_LT.txt b/src/plugins/Ui/qsui/txt/qsui_authors_lt_LT.txt new file mode 100644 index 000000000..d30bd8df8 --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_lt_LT.txt @@ -0,0 +1,54 @@ +Kūrėjai: + + Ilya Kotov + +Vertėjai: + +Kinų tradicinis: + lon + +Kinų supaprastintas: + lon + +Čekų: + Karel Volný + +Prancūzų: + Stanislas Zeller + +Vokiečių: + Panagiotis Papadopoulos + +Olandų: + Németh Gábor + +Italų: + Gian Paolo Renello + +Japonų: + Ryota Shimamoto + +Kazachų: + Baurzhan Muftakhidinov + +Lietuvių: + Algirdas Butkus + +Lenkų: + Grzegorz Gibas + +Rusų: + Ilya Kotov + +Slovakų: + Ján Ďanovský + +Ispanų: + Félix Medrano + +Turkų: + Mustafa GUNAY + Bilgesu Güngör + +Ukrainiečių: + Gennadi Motsyo diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_nl.txt b/src/plugins/Ui/qsui/txt/qsui_authors_nl.txt new file mode 100644 index 000000000..0f1cb3dfb --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_nl.txt @@ -0,0 +1,54 @@ +Ontwikkelaars: + + Ilya Kotov + +Vertalers: + +Traditioneel Chinees: + lon + +Gesimplificeerd Chinees: + lon + +Tjechisch: + Karel Volný + +Frans: + Stanislas Zeller + +Duits: + Panagiotis Papadopoulos + +Hongaars: + Németh Gábor + +Italiaans: + Gian Paolo Renello + +Japans: + Ryota Shimamoto + +Kazachstaans: + Baurzhan Muftakhidinov + +Litouws: + Algirdas Butkus + +Pools: + Grzegorz Gibas + +Russisch: + Ilya Kotov + +Slowaaks: + Ján Ďanovský + +Spaans: + Félix Medrano + +Turks: + Mustafa GUNAY + Bilgesu Güngör + +Oekraïens: + Gennadi Motsyo diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_pl_PL.txt b/src/plugins/Ui/qsui/txt/qsui_authors_pl_PL.txt new file mode 100644 index 000000000..497ae2817 --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_pl_PL.txt @@ -0,0 +1,60 @@ +Główni programiści: + + Ilya Kotov (pomysł i właściwy kod) + +Tłumaczenie: + +Chiński Tradycyjny: + lon + +Chiński Uproszczony: + lon + +Czeski: + Karel Volný + +Francuski: + Stanislas Zeller + +Niemiecki: + Panagiotis Papadopoulos + +Hebrajski: + Genghis Khan + +Węgierski: + Németh Gábor + +Włoski: + Gian Paolo Renello + +Japoński: + Rjota Šimamoto + +Kazachski: + Baurzhan Muftakhidinov + +Litewski: + Algirdas Butkus + +Polski: + Grzegorz Gibas + +Rosyjski: + Ilya Kotov + +Serbski: + Mladen Pejaković + +Słowacki: + Ján Ďanovský + +Hiszpański: + Félix Medrano + +Turecki: + Mustafa GUNAY + Bilgesu Güngör + +Ukraiński: + Gennadi Motsyo diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_pt.txt b/src/plugins/Ui/qsui/txt/qsui_authors_pt.txt new file mode 100644 index 000000000..98e911bd1 --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_pt.txt @@ -0,0 +1,63 @@ +Programadores: + + Ilya Kotov + +Tradutores: + +Mandarim tradicional: + lon + +Mandarim simplificado: + lon + +Checo: + Karel Volný + +Francês: + Stanislas Zeller + +Alemão: + Panagiotis Papadopoulos + +Hebraico: + Genghis Khan + +Húngaro: + Németh Gábor + +Italiano: + Gian Paolo Renello + +Japonês: + Ryota Shimamoto + +Cazaque: + Baurzhan Muftakhidinov + +Lituano: + Algirdas Butkus + +Polaco: + Grzegorz Gibas + +Português: + Sérgio Marques + +Russo: + Ilya Kotov + +Sérvio: + Mladen Pejaković + +Eslovaco: + Ján Ďanovský + +Espanhol: + Félix Medrano + +Turco: + Mustafa GUNAY + Bilgesu Güngör + +Ucraniano: + Gennadi Motsyo \ No newline at end of file diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_ru.txt b/src/plugins/Ui/qsui/txt/qsui_authors_ru.txt new file mode 100644 index 000000000..6d29e95c8 --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_ru.txt @@ -0,0 +1,71 @@ +Разработчики: + + Илья Котов + +Переводчики: + +Бразильский португальский: + Klaos Lacerda + Bruno Gonçalves + +Венгерский: + Németh Gábor + +Голландский: + Ronald Uitermark + +Итальянский: + Gian Paolo Renello + +Японский: + Рёта Симамото + +Казахский: + Бауржан Муфтахидинов + +Китайский традиционный: + lon + +Китайский упрощённый: + lon + +Литовский: + Algirdas Butkus + +Польский: + Grzegorz Gibas + +Португальский: + Sérgio Marques + +Чешский: + Karel Volný + +Немецкий: + Stefan Koelling + Panagiotis Papadopoulos + +Иврит: + Genghis Khan + +Русский: + Илья Котов + +Сербский: + Mladen Pejaković + +Словацкий: + Ján Ďanovský + +Испанский: + Félix Medrano + +Турецкий: + Mustafa GUNAY + Bilgesu Güngör + +Украинский: + Геннадий Моцьо + +Французский: + Stanislas Zeller diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_sr_BA.txt b/src/plugins/Ui/qsui/txt/qsui_authors_sr_BA.txt new file mode 100644 index 000000000..eb9fac8f2 --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_sr_BA.txt @@ -0,0 +1,60 @@ +Програмери: + + Ilya Kotov + +Преводиоци: + +Традиционални кинески: + lon + +Поједностављени кинески: + lon + +Чешки: + Karel Volný + +Француски: + Stanislas Zeller + +Њемачки: + Panagiotis Papadopoulos + +Хебрејски: + Genghis Khan + +Мађарски: + Németh Gábor + +Италијански: + Gian Paolo Renello + +Јапански: + Ryota Shimamoto + +Казашки: + Baurzhan Muftakhidinov + +Литвански: + Algirdas Butkus + +Пољски: + Grzegorz Gibas + +Руски: + Ilya Kotov + +Српски: + Mladen Pejaković + +Словачки: + Ján Ďanovský + +Шпански: + Félix Medrano + +Турски: + Mustafa GUNAY + Bilgesu Güngör + +Украјински: + Gennadi Motsyo diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_sr_RS.txt b/src/plugins/Ui/qsui/txt/qsui_authors_sr_RS.txt new file mode 100644 index 000000000..2434a763a --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_sr_RS.txt @@ -0,0 +1,60 @@ +Програмери: + + Ilya Kotov + +Преводиоци: + +Традиционални кинески: + lon + +Поједностављени кинески: + lon + +Чешки: + Karel Volný + +Француски: + Stanislas Zeller + +Немачки: + Panagiotis Papadopoulos + +Хебрејски: + Genghis Khan + +Мађарски: + Németh Gábor + +Италијански: + Gian Paolo Renello + +Јапански: + Ryota Shimamoto + +Казашки: + Baurzhan Muftakhidinov + +Литвански: + Algirdas Butkus + +Пољски: + Grzegorz Gibas + +Руски: + Ilya Kotov + +Српски: + Mladen Pejaković + +Словачки: + Ján Ďanovský + +Шпански: + Félix Medrano + +Турски: + Mustafa GUNAY + Bilgesu Güngör + +Украјински: + Gennadi Motsyo diff --git a/src/plugins/Ui/qsui/txt/qsui_authors_uk_UA.txt b/src/plugins/Ui/qsui/txt/qsui_authors_uk_UA.txt new file mode 100644 index 000000000..a2da5449b --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_authors_uk_UA.txt @@ -0,0 +1,62 @@ +розробники: + + Ілля Котов + +перекладачі: + +Бразильська португальська: + Klaos Lacerda + Bruno Gonçalves + +Угорська: + Németh Gábor + +Голландська: + Ronald Uitermark + +Італійська: + Gian Paolo Renello + +Японська: + Рьота Сімамото + +Казахська: + Бауржан Муфтахідінов + +Китайська традиційна: + lon + +Китайська спрощена: + lon + +Литовська: + Algirdas Butkus + +Польська: + Grzegorz Gibas + +Чеська: + Karel Volný + +Німецька: + Stefan Koelling + Panagiotis Papadopoulos + +Російська: + Ілля Котов + +Словацька: + Ján Ďanovský + +Іспанська: + Félix Medrano + +Турецька: + Mustafa GUNAY + Bilgesu Güngör + +Українська: + Геннадій Моцьо + +Французька: + Stanislas Zeller diff --git a/src/plugins/Ui/qsui/txt/qsui_txt.qrc b/src/plugins/Ui/qsui/txt/qsui_txt.qrc new file mode 100644 index 000000000..38960e5fb --- /dev/null +++ b/src/plugins/Ui/qsui/txt/qsui_txt.qrc @@ -0,0 +1,19 @@ + + + + ascii_logo.txt + qsui_authors.txt + qsui_authors_ja.txt + qsui_authors_nl.txt + qsui_authors_pl_PL.txt + qsui_authors_ru.txt + qsui_authors_uk_UA.txt + qsui_authors_lt_LT.txt + qsui_authors_he.txt + qsui_authors_cs.txt + qsui_authors_sr_BA.txt + qsui_authors_sr_RS.txt + qsui_authors_pt.txt + qsui_authors_de.txt + + diff --git a/src/plugins/Ui/qsui/visualmenu.cpp b/src/plugins/Ui/qsui/visualmenu.cpp new file mode 100644 index 000000000..b9a863469 --- /dev/null +++ b/src/plugins/Ui/qsui/visualmenu.cpp @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright (C) 2007-2012 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include + +#include +#include +#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/qsui/visualmenu.h b/src/plugins/Ui/qsui/visualmenu.h new file mode 100644 index 000000000..198fb4b71 --- /dev/null +++ b/src/plugins/Ui/qsui/visualmenu.h @@ -0,0 +1,57 @@ +/*************************************************************************** + * Copyright (C) 2007-2012 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef VISUALMENU_H +#define VISUALMENU_H + +#include +#include + +class VisualFactory; + +/** + @author Ilya Kotov +*/ +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 -- cgit v1.2.3-13-gbd6f