diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-12-26 22:41:24 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-12-26 22:41:24 +0000 |
| commit | db21f3b3428d88b19d2f82ae933830153310a1f1 (patch) | |
| tree | 76da52ae3cace5b6030f1967cba61302f09e420f | |
| parent | 2d1d2a4a807fced7d2b5e56998da67149bc2010e (diff) | |
| download | qmmp-db21f3b3428d88b19d2f82ae933830153310a1f1.tar.gz qmmp-db21f3b3428d88b19d2f82ae933830153310a1f1.tar.bz2 qmmp-db21f3b3428d88b19d2f82ae933830153310a1f1.zip | |
enabled replaygain support (for mp3 file with ape tags only)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1453 90c681e8-e032-0410-971d-27865f9a5e38
38 files changed, 452 insertions, 244 deletions
diff --git a/src/plugins/Input/mad/CMakeLists.txt b/src/plugins/Input/mad/CMakeLists.txt index 174f4f696..e4e0d8130 100644 --- a/src/plugins/Input/mad/CMakeLists.txt +++ b/src/plugins/Input/mad/CMakeLists.txt @@ -38,6 +38,7 @@ SET(libmad_SRCS settingsdialog.cpp tagextractor.cpp mpegmetadatamodel.cpp + replaygainreader.cpp ) SET(libmad_MOC_HDRS @@ -46,6 +47,7 @@ SET(libmad_MOC_HDRS decoder_mad.h tagextractor.h mpegmetadatamodel.h + replaygainreader.h ) SET(libmad_RCCS translations/translations.qrc) diff --git a/src/plugins/Input/mad/decoder_mad.cpp b/src/plugins/Input/mad/decoder_mad.cpp index 3707abcbc..f76ff9350 100644 --- a/src/plugins/Input/mad/decoder_mad.cpp +++ b/src/plugins/Input/mad/decoder_mad.cpp @@ -8,21 +8,18 @@ #include <QtGui> #include <taglib/id3v2header.h> #include <taglib/tbytevector.h> - -#include "decoder_mad.h" -#include "tagextractor.h" #include <qmmp/buffer.h> #include <qmmp/output.h> - #include <math.h> #include <stdio.h> +#include "tagextractor.h" +#include "replaygainreader.h" +#include "decoder_mad.h" #define XING_MAGIC (('X' << 24) | ('i' << 16) | ('n' << 8) | 'g') #define INPUT_BUFFER_SIZE (32*1024) - -DecoderMAD::DecoderMAD(QIODevice *i) - : Decoder(i) +DecoderMAD::DecoderMAD(const QString &url, QIODevice *i) : Decoder(i) { m_inited = false; m_totalTime = 0; @@ -36,6 +33,7 @@ DecoderMAD::DecoderMAD(QIODevice *i) m_output_at = 0; m_skip_frames = 0; m_eof = false; + m_url = url; } DecoderMAD::~DecoderMAD() @@ -100,7 +98,14 @@ bool DecoderMAD::initialize() mad_frame_mute (&frame); stream.next_frame = 0; stream.sync = 0; - configure(m_freq, m_channels, 16); + + if(!m_url.contains("://")) + { + ReplayGainReader rg(m_url); + configure(m_freq, m_channels, 16, rg.replayGainInfo()); + } + else + configure(m_freq, m_channels, 16); m_inited = TRUE; return TRUE; diff --git a/src/plugins/Input/mad/decoder_mad.h b/src/plugins/Input/mad/decoder_mad.h index c78e3f8c8..a98f7fbf7 100644 --- a/src/plugins/Input/mad/decoder_mad.h +++ b/src/plugins/Input/mad/decoder_mad.h @@ -22,7 +22,7 @@ extern "C" class DecoderMAD : public Decoder { public: - DecoderMAD(QIODevice *i); + DecoderMAD(const QString &url, QIODevice *i); virtual ~DecoderMAD(); // standard decoder API @@ -46,6 +46,7 @@ private: uint m_bitrate; long m_freq, m_len; qint64 m_output_bytes, m_output_at; + QString m_url; // file input buffer char *m_input_buf; diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp index fa89e5f5d..2ec86e011 100644 --- a/src/plugins/Input/mad/decodermadfactory.cpp +++ b/src/plugins/Input/mad/decodermadfactory.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008 by Ilya Kotov * + * Copyright (C) 2008-2009 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -30,7 +30,6 @@ #include <taglib/apetag.h> #include <taglib/tfile.h> #include <taglib/mpegfile.h> - #include "mpegmetadatamodel.h" #include "settingsdialog.h" #include "decoder_mad.h" @@ -94,9 +93,9 @@ const DecoderProperties DecoderMADFactory::properties() const return properties; } -Decoder *DecoderMADFactory::create(const QString&, QIODevice *input) +Decoder *DecoderMADFactory::create(const QString &url, QIODevice *input) { - return new DecoderMAD(input); + return new DecoderMAD(url, input); } QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, bool useMetaData) @@ -117,21 +116,17 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo tag_array[1] = settings.value("tag_2", SettingsDialog::Disabled).toInt(); tag_array[2] = settings.value("tag_3", SettingsDialog::Disabled).toInt(); - + QByteArray name; for (int i = 0; i < 3; ++i) { switch ((uint) tag_array[i]) { case SettingsDialog::ID3v1: - { codec = QTextCodec::codecForName(settings.value("ID3v1_encoding","ISO-8859-1") .toByteArray ()); tag = fileRef.ID3v1Tag(); break; - } case SettingsDialog::ID3v2: - { - QByteArray name; name = settings.value("ID3v2_encoding","UTF-8").toByteArray (); if (name.contains("UTF")) codec = QTextCodec::codecForName ("UTF-8"); @@ -139,18 +134,13 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo codec = QTextCodec::codecForName(name); tag = fileRef.ID3v2Tag(); break; - } case SettingsDialog::APE: - { codec = QTextCodec::codecForName ("UTF-8"); tag = fileRef.APETag(); break; - } case SettingsDialog::Disabled: - { break; } - } if (tag && !tag->isEmpty()) break; } diff --git a/src/plugins/Input/mad/decodermadfactory.h b/src/plugins/Input/mad/decodermadfactory.h index a4e18c8f4..a9831cd08 100644 --- a/src/plugins/Input/mad/decodermadfactory.h +++ b/src/plugins/Input/mad/decodermadfactory.h @@ -30,9 +30,6 @@ #include <qmmp/decoderfactory.h> #include <qmmp/metadatamodel.h> - - - class DecoderMADFactory : public QObject, DecoderFactory { diff --git a/src/plugins/Input/mad/mad.pro b/src/plugins/Input/mad/mad.pro index db7bab22a..d83092b77 100644 --- a/src/plugins/Input/mad/mad.pro +++ b/src/plugins/Input/mad/mad.pro @@ -4,12 +4,14 @@ HEADERS += decodermadfactory.h \ decoder_mad.h \ settingsdialog.h \ tagextractor.h \ - mpegmetadatamodel.h + mpegmetadatamodel.h \ + replaygainreader.h SOURCES += decoder_mad.cpp \ decodermadfactory.cpp \ settingsdialog.cpp \ tagextractor.cpp \ - mpegmetadatamodel.cpp + mpegmetadatamodel.cpp \ + replaygainreader.cpp TARGET = $$PLUGINS_PREFIX/Input/mad unix:QMAKE_CLEAN = $$PLUGINS_PREFIX/Input/libmad.so INCLUDEPATH += ../../../ \ @@ -47,6 +49,5 @@ unix { target.path = $$LIB_DIR/qmmp/Input INSTALLS += target } - win32:HEADERS += ../../../../src/qmmp/metadatamodel.h \ - ../../../../src/qmmp/decoderfactory.h + ../../../../src/qmmp/decoderfactory.h diff --git a/src/plugins/Input/mad/replaygainreader.cpp b/src/plugins/Input/mad/replaygainreader.cpp new file mode 100644 index 000000000..88f3dc974 --- /dev/null +++ b/src/plugins/Input/mad/replaygainreader.cpp @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include <QtGlobal> +#include <taglib/mpegfile.h> +#include <taglib/id3v2tag.h> +#include <taglib/tag.h> +#include <taglib/id3v1tag.h> +#include <taglib/id3v2header.h> +#include "replaygainreader.h" + +ReplayGainReader::ReplayGainReader(const QString &path) +{ + TagLib::MPEG::File fileRef(path.toLocal8Bit ().constData()); + if(fileRef.APETag()) + readAPE(fileRef.APETag()); +} + +QMap <Qmmp::ReplayGainKey, double> ReplayGainReader::replayGainInfo() const +{ + return m_values; +} + +void ReplayGainReader::readAPE(TagLib::APE::Tag *tag) +{ + TagLib::APE::ItemListMap items = tag->itemListMap(); + if (items.contains("REPLAYGAIN_TRACK_GAIN")) + setValue(Qmmp::REPLAYGAIN_TRACK_GAIN,TStringToQString(items["REPLAYGAIN_TRACK_GAIN"].values()[0])); + if (items.contains("REPLAYGAIN_TRACK_PEAK")) + setValue(Qmmp::REPLAYGAIN_TRACK_PEAK,TStringToQString(items["REPLAYGAIN_TRACK_PEAK"].values()[0])); + if (items.contains("REPLAYGAIN_ALBUM_GAIN")) + setValue(Qmmp::REPLAYGAIN_ALBUM_GAIN,TStringToQString(items["REPLAYGAIN_ALBUM_GAIN"].values()[0])); + if (items.contains("REPLAYGAIN_ALBUM_PEAK")) + setValue(Qmmp::REPLAYGAIN_ALBUM_PEAK,TStringToQString(items["REPLAYGAIN_ALBUM_PEAK"].values()[0])); +} + +void ReplayGainReader::setValue(Qmmp::ReplayGainKey key, QString value) +{ + value.remove(" dB"); + if(value.isEmpty()) + return; + bool ok; + double v = value.toDouble(&ok); + if(ok) + m_values[key] = v; +} diff --git a/src/plugins/Input/mad/replaygainreader.h b/src/plugins/Input/mad/replaygainreader.h new file mode 100644 index 000000000..2129a69d6 --- /dev/null +++ b/src/plugins/Input/mad/replaygainreader.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef REPLAYGAINREADER_H +#define REPLAYGAINREADER_H + +#include <QMap> +#include <QString> +#include <taglib/apetag.h> +#include <qmmp/qmmp.h> + +/** + @author Ilya Kotov <forkotov02@hotmail.ru> +*/ +class ReplayGainReader +{ +public: + ReplayGainReader(const QString &path); + QMap <Qmmp::ReplayGainKey, double> replayGainInfo() const; + +private: + void readAPE(TagLib::APE::Tag *tag); + void setValue(Qmmp::ReplayGainKey key, QString value); + QMap <Qmmp::ReplayGainKey, double> m_values; +}; + +#endif // REPLAYGAINREADER_H diff --git a/src/plugins/Input/mad/translations/mad_plugin_cs.ts b/src/plugins/Input/mad/translations/mad_plugin_cs.ts index ff4cb3afe..ac90ee91e 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_cs.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_cs.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>Modul MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>Soubory MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>O modulu MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Vstupní modul Qmmp MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>Zkompilováno s libmad verze:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autor: Ilja Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>Zdrojový kód je založen na projektu mq3</translation> </message> diff --git a/src/plugins/Input/mad/translations/mad_plugin_de.ts b/src/plugins/Input/mad/translations/mad_plugin_de.ts index 4b5280861..091f7a4aa 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_de.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_de.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>MPEG-Modul</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>MPEG-Dateien</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>Über MPEG-Audio-Modul</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Qmmp MPEG-Audio-Modul</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>Kompiliert gegen libmad-Version:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autor: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>Quellcode basiert auf dem mq3-Projekt</translation> </message> diff --git a/src/plugins/Input/mad/translations/mad_plugin_it.ts b/src/plugins/Input/mad/translations/mad_plugin_it.ts index cdd9f1316..df9f0126e 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_it.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_it.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>Modulo MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>Brani MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>Info sul modulo audio MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Modulo audio MPEG per Qmmp</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>Compilato con libmad-Version:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autore: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>Codice sorgente basato sul progetto mq3</translation> </message> diff --git a/src/plugins/Input/mad/translations/mad_plugin_lt.ts b/src/plugins/Input/mad/translations/mad_plugin_lt.ts index ec3ceeb58..9e6851995 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_lt.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_lt.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>MPEG įskiepis</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>MPEG bylos</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>Apie MPEG audio įskiepį</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Qmmp MPEG įskiepis</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>Sukurta libmad pagrindu:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Sukūrė: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>Išvesties kodas sukurtas mq3 pagrindu</translation> </message> diff --git a/src/plugins/Input/mad/translations/mad_plugin_pl.ts b/src/plugins/Input/mad/translations/mad_plugin_pl.ts index ca98436b4..209d3303d 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_pl.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_pl.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>Wtyczka MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>Pliki MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>O wtyczce Audio MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Wtyczka MPEG Audio dla Qmmp</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>Skompilowane przy użyciu biblioteki libmad w wersji:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autor: Ilja Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>Kod źródłowy oparty na projekcie mq3</translation> </message> diff --git a/src/plugins/Input/mad/translations/mad_plugin_ru.ts b/src/plugins/Input/mad/translations/mad_plugin_ru.ts index 2999140bd..a913f51d7 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_ru.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_ru.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>Модуль MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>Файлы MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>Об аудио-модуле MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Аудио-модуль MPEG для Qmmp</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>Собрано с версией libmad:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Разработчик: Илья Котов <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>Исходный код основан на проекте mq3</translation> </message> diff --git a/src/plugins/Input/mad/translations/mad_plugin_tr.ts b/src/plugins/Input/mad/translations/mad_plugin_tr.ts index 8ddeece6f..731fefe6d 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_tr.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_tr.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>MPEG Eklentisi</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>MPEG Dosyaları</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>MPEG Ses Eklentisi Hakkında</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Qmmp MPEG Ses Eklentisi</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>Derlendiği libmad sürümü:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Yazan: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>Kaynak kodu mq3 projesi temellidir</translation> </message> diff --git a/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts b/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts index 5a47cc2cb..c509c85ca 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>Модуль MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>Файли MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>Про аудіо-модуль MPEG</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Аудіо-модуль MPEG для Qmmp</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>Зібрано з версією libmad:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Розробник: Ілля Котов <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>Вихідний код базується на проекті mq3</translation> </message> diff --git a/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts b/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts index c6ed93ab4..5b7aef659 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>MPEG 插件</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>MPEG 文件</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>关于 MPEG 音频插件</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Qmmp MPEG 音频插件</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>编译基于 libmad 的版本:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>源代码基于 mq3 项目</translation> </message> diff --git a/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts b/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts index 05b2c760b..db84455c7 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts @@ -4,37 +4,37 @@ <context> <name>DecoderMADFactory</name> <message> - <location filename="../decodermadfactory.cpp" line="87"/> + <location filename="../decodermadfactory.cpp" line="86"/> <source>MPEG Plugin</source> <translation>MPEG 插件</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="90"/> + <location filename="../decodermadfactory.cpp" line="89"/> <source>MPEG Files</source> <translation>MPEG 檔案</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="223"/> + <location filename="../decodermadfactory.cpp" line="213"/> <source>About MPEG Audio Plugin</source> <translation>關於 MPEG 聲訊插件</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="224"/> + <location filename="../decodermadfactory.cpp" line="214"/> <source>Qmmp MPEG Audio Plugin</source> <translation>Qmmp MPEG 聲訊插件</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="225"/> + <location filename="../decodermadfactory.cpp" line="215"/> <source>Compiled against libmad version:</source> <translation>編譯基於 libmad 的版本:</translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="229"/> + <location filename="../decodermadfactory.cpp" line="219"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></translation> </message> <message> - <location filename="../decodermadfactory.cpp" line="230"/> + <location filename="../decodermadfactory.cpp" line="220"/> <source>Source code based on mq3 progect</source> <translation>源碼基於 mq3 項目</translation> </message> diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp index 4d9cad319..d68939843 100644 --- a/src/qmmp/decoder.cpp +++ b/src/qmmp/decoder.cpp @@ -32,9 +32,15 @@ Decoder::Decoder(QIODevice *input) : m_input(input) Decoder::~Decoder() {} -void Decoder::configure(quint32 srate, int chan, int bps) +void Decoder::configure(quint32 srate, int chan, int bps, const QMap<Qmmp::ReplayGainKey, double> &rg) { m_parameters = AudioParameters(srate, chan, bps); + m_rg = rg; +} + +void Decoder::configure(quint32 srate, int chan, int bps) +{ + configure(srate, chan, bps, QMap<Qmmp::ReplayGainKey, double>()); } void Decoder::next() @@ -45,11 +51,16 @@ const QString Decoder::nextURL() return QString(); } -const AudioParameters Decoder::audioParameters() +AudioParameters Decoder::audioParameters() const { return m_parameters; } +QMap<Qmmp::ReplayGainKey, double> Decoder::replayGainInfo() const +{ + return m_rg; +} + QIODevice *Decoder::input() { return m_input; diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h index e5cb647d9..30fe76465 100644 --- a/src/qmmp/decoder.h +++ b/src/qmmp/decoder.h @@ -7,13 +7,14 @@ #ifndef DECODER_H #define DECODER_H - #include <QList> #include <QStringList> #include <QUrl> #include <QList> #include <QPixmap> +#include <QMap> #include "fileinfo.h" +#include "qmmp.h" #include "audioparameters.h" class Decoder; @@ -63,7 +64,8 @@ public: virtual void next(); virtual const QString nextURL(); - const AudioParameters audioParameters(); + AudioParameters audioParameters() const; + QMap<Qmmp::ReplayGainKey, double> replayGainInfo() const; QIODevice *input(); /*! * Returns DecoderFactory pointer which supports file \b path or 0 if file \b path is unsupported @@ -108,6 +110,14 @@ protected: * @param srate Sample rate. * @param chan Number of channels. * @param bps Bits per sample. + * @param rg ReplayGaing information. + */ + void configure(quint32 srate, int chan, int bps, const QMap<Qmmp::ReplayGainKey,double> &rg); + /*! + * Use this function inside initialize() reimplementation to tell other plugins about audio parameters. + * @param srate Sample rate. + * @param chan Number of channels. + * @param bps Bits per sample. */ void configure(quint32 srate, int chan, int bps); @@ -118,6 +128,7 @@ private: static QStringList m_files; AudioParameters m_parameters; QIODevice *m_input; + QMap <Qmmp::ReplayGainKey, double> m_rg; //replay gain information }; #endif // DECODER_H diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp index 3485064fe..1f3b8b2f8 100644 --- a/src/qmmp/qmmpaudioengine.cpp +++ b/src/qmmp/qmmpaudioengine.cpp @@ -32,7 +32,6 @@ #include "qmmpaudioengine.h" #include "metadatamanager.h" - extern "C" { #include "equ/iir.h" @@ -311,9 +310,7 @@ void QmmpAudioEngine::stop() qint64 QmmpAudioEngine::produceSound(char *data, qint64 size, quint32 brate, int chan) { ulong sz = size < _blksize ? size : _blksize; - - //m_replayGain->applyReplayGain(data, sz); - + m_replayGain->applyReplayGain(data, sz); if (m_useEQ) { if (!m_eqInited) @@ -388,6 +385,7 @@ void QmmpAudioEngine::run() } m_decoder = m_decoders.dequeue(); + m_replayGain->setReplayGainInfo(m_decoder->replayGainInfo()); mutex()->unlock(); m_output->start(); sendMetaData(); @@ -437,6 +435,7 @@ void QmmpAudioEngine::run() m_inputs.take(m_decoder)->deleteLater (); delete m_decoder; m_decoder = m_decoders.dequeue(); + m_replayGain->setReplayGainInfo(m_decoder->replayGainInfo()); //use current output if possible if(m_decoder->audioParameters() == m_ap) { diff --git a/src/qmmp/replaygain.cpp b/src/qmmp/replaygain.cpp index cdfb47e60..5d7db77ad 100644 --- a/src/qmmp/replaygain.cpp +++ b/src/qmmp/replaygain.cpp @@ -37,12 +37,23 @@ void ReplayGain::setReplayGainInfo(const QMap<Qmmp::ReplayGainKey, double> &info { m_info = info; updateScale(); + if(m_settings.mode() != ReplayGainSettings::DISABLED) + { + qDebug("ReplayGain: track: gain=%f dB, peak=%f; album: gain=%f dB, peak=%f", + m_info[Qmmp::REPLAYGAIN_TRACK_GAIN], + m_info[Qmmp::REPLAYGAIN_TRACK_PEAK], + m_info[Qmmp::REPLAYGAIN_ALBUM_GAIN], + m_info[Qmmp::REPLAYGAIN_ALBUM_PEAK]); + qDebug("ReplayGain: scale=%f", m_scale); + } + else + qDebug("ReplayGain: disabled"); } void ReplayGain::setReplayGainSettings(const ReplayGainSettings &settings) { m_settings = settings; - updateScale(); + setReplayGainInfo(m_info); } void ReplayGain::applyReplayGain(char *data, qint64 size) @@ -71,7 +82,7 @@ void ReplayGain::applyReplayGain(char *data, qint64 size) void ReplayGain::updateScale() { double peak = 0.0; - m_scale = 0.0; + m_scale = 1.0; switch((int) m_settings.mode()) { case ReplayGainSettings::TRACK: @@ -84,16 +95,13 @@ void ReplayGain::updateScale() break; case ReplayGainSettings::DISABLED: m_scale = 1.0; + return; } - if(m_scale == 0.0) + if(m_scale == 1.0) m_scale = pow(10.0, m_settings.defaultGain()/20); - if(peak > 0.0 && m_scale != 1.0 && m_scale > 0.0) - { - m_scale *= pow(10.0, m_settings.preamp()/20); - if(m_settings.preventClipping()) - m_scale = m_scale*peak > 1.0 ? 1.0 / peak : m_scale; - } - if(m_scale < 0.0) - m_scale = 1.0; - m_scale = qMin(m_scale, 15.0); + m_scale *= pow(10.0, m_settings.preamp()/20); + if(peak > 0.0 && m_settings.preventClipping()) + m_scale = m_scale*peak > 1.0 ? 1.0 / peak : m_scale; + m_scale = qMin(m_scale, 5.6234); // +15 dB + m_scale = qMax(m_scale, 0.1778); // -15 dB } diff --git a/src/qmmp/replaygainsettings.cpp b/src/qmmp/replaygainsettings.cpp index 081620ab4..3a02b8e73 100644 --- a/src/qmmp/replaygainsettings.cpp +++ b/src/qmmp/replaygainsettings.cpp @@ -22,9 +22,9 @@ ReplayGainSettings::ReplayGainSettings() { - m_mode = TRACK; - m_preamp = 1.0; - m_defaultGain = 0.0; + m_mode = DISABLED; + m_preamp = 0.0; + m_defaultGain = -8.0; m_preventClipping = false; } diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index 10809c1c6..d212a6ae3 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -23,7 +23,6 @@ #include <QApplication> #include <QSettings> #include <QDir> - #include "qmmpaudioengine.h" #include "decoderfactory.h" #include "effect.h" @@ -65,6 +64,14 @@ SoundCore::SoundCore(QObject *parent) connect(m_handler, SIGNAL(bufferingProgress(int)), SIGNAL(bufferingProgress(int))); m_volumeControl = VolumeControl::create(this); connect(m_volumeControl, SIGNAL(volumeChanged(int, int)), SIGNAL(volumeChanged(int, int))); + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + //replaygain settings + settings.beginGroup("ReplayGain"); + m_rgs = ReplayGainSettings(settings.value("mode", m_rgs.mode()).toInt(), + settings.value("preamp", m_rgs.preamp()).toDouble(), + settings.value("default_gain", m_rgs.defaultGain()).toDouble(), + settings.value("prevent_clipping",m_rgs.preventClipping()).toBool()); + settings.endGroup(); } @@ -243,7 +250,7 @@ bool SoundCore::enqueue(InputSource *s) setEQ(m_bands, m_preamp); setEQEnabled(m_useEQ); - setReplayGainSettings(m_replayGainSettings); + setReplayGainSettings(m_rgs); if(m_engine->enqueue(s)) { m_source = s->url(); @@ -282,7 +289,7 @@ bool SoundCore::enqueue(InputSource *s) connect(engine, SIGNAL(playbackFinished()), SIGNAL(finished())); engine->setEQ(m_bands, m_preamp); engine->setEQEnabled(m_useEQ); - engine->setReplayGainSettings(m_replayGainSettings); + engine->setReplayGainSettings(m_rgs); if (m_handler->state() == Qmmp::Playing || m_handler->state() == Qmmp::Paused) { if(m_pendingEngine) @@ -314,14 +321,23 @@ void SoundCore::startPendingEngine() ReplayGainSettings SoundCore::replayGainSettings() const { - return m_replayGainSettings; + return m_rgs; } -void SoundCore::setReplayGainSettings(const ReplayGainSettings &settings) +void SoundCore::setReplayGainSettings(const ReplayGainSettings &rgs) { - m_replayGainSettings = settings; + m_rgs = rgs; + //save replaygain settings + QSettings settings (Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("ReplayGain"); + settings.setValue("mode", m_rgs.mode()); + settings.setValue("preamp", m_rgs.preamp()); + settings.setValue("default_gain", m_rgs.defaultGain()); + settings.setValue("prevent_clipping",m_rgs.preventClipping()); + settings.endGroup(); + //apply replaygain settings if(m_engine) - m_engine->setReplayGainSettings(settings); + m_engine->setReplayGainSettings(rgs); } SoundCore* SoundCore::instance() diff --git a/src/qmmp/soundcore.h b/src/qmmp/soundcore.h index 092cef3a0..a0860957d 100644 --- a/src/qmmp/soundcore.h +++ b/src/qmmp/soundcore.h @@ -108,7 +108,7 @@ public: QString metaData(Qmmp::MetaData key); ReplayGainSettings replayGainSettings() const; - void setReplayGainSettings(const ReplayGainSettings &settings); + void setReplayGainSettings(const ReplayGainSettings &rgs); /*! * Returns a pointer to the SoundCore instance. */ @@ -227,7 +227,7 @@ private: AbstractEngine *m_engine; AbstractEngine *m_pendingEngine; QList<InputSource *> m_pendingSources; - ReplayGainSettings m_replayGainSettings; + ReplayGainSettings m_rgs; //ReplayGain settings }; #endif diff --git a/src/ui/configdialog.cpp b/src/ui/configdialog.cpp index dc7ea8b7f..9acdbe73c 100644 --- a/src/ui/configdialog.cpp +++ b/src/ui/configdialog.cpp @@ -78,15 +78,15 @@ ConfigDialog::ConfigDialog (QWidget *parent) connect (ui.listWidget, SIGNAL (itemClicked (QListWidgetItem *)), this, SLOT (changeSkin())); ui.listWidget->setIconSize (QSize (105,34)); m_skin = Skin::instance(); + ui.replayGainModeComboBox->addItem (tr("Track"), ReplayGainSettings::TRACK); + ui.replayGainModeComboBox->addItem (tr("Album"), ReplayGainSettings::ALBUM); + ui.replayGainModeComboBox->addItem (tr("Disabled"), ReplayGainSettings::DISABLED); readSettings(); m_reader = new SkinReader(this); loadSkins(); loadPluginsInfo(); loadFonts(); - createMenus(); - ui.replayGainModeComboBox->addItem (tr("Track"), ReplayGainSettings::TRACK); - ui.replayGainModeComboBox->addItem (tr("Album"), ReplayGainSettings::ALBUM); - ui.replayGainModeComboBox->addItem (tr("Disabled"), ReplayGainSettings::DISABLED); + createMenus(); } ConfigDialog::~ConfigDialog() diff --git a/src/ui/forms/configdialog.ui b/src/ui/forms/configdialog.ui index c6d80dfbb..1f3ec19f9 100644 --- a/src/ui/forms/configdialog.ui +++ b/src/ui/forms/configdialog.ui @@ -1076,6 +1076,15 @@ <verstretch>0</verstretch> </sizepolicy> </property> + <property name="minimum"> + <double>-15.000000000000000</double> + </property> + <property name="maximum"> + <double>15.000000000000000</double> + </property> + <property name="singleStep"> + <double>0.010000000000000</double> + </property> </widget> </item> <item row="2" column="2"> @@ -1112,6 +1121,15 @@ <verstretch>0</verstretch> </sizepolicy> </property> + <property name="minimum"> + <double>-15.000000000000000</double> + </property> + <property name="maximum"> + <double>15.000000000000000</double> + </property> + <property name="singleStep"> + <double>0.010000000000000</double> + </property> </widget> </item> <item row="3" column="2"> diff --git a/src/ui/translations/qmmp_cs.ts b/src/ui/translations/qmmp_cs.ts index 13da193d8..1e2004a88 100644 --- a/src/ui/translations/qmmp_cs.ts +++ b/src/ui/translations/qmmp_cs.ts @@ -205,18 +205,18 @@ <translation>Umělec</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>Album</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -471,23 +471,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>Zavřít</translation> </message> @@ -563,12 +563,12 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>Zvuk</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>Používat softwarové ovládání hlasitosti</translation> </message> diff --git a/src/ui/translations/qmmp_de.ts b/src/ui/translations/qmmp_de.ts index a872ee3d3..5af7d64c7 100644 --- a/src/ui/translations/qmmp_de.ts +++ b/src/ui/translations/qmmp_de.ts @@ -205,18 +205,18 @@ <translation>Interpret</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>Album</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -471,23 +471,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>Schließen</translation> </message> @@ -563,12 +563,12 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>Audio</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>Softwaregesteuerte Lautstärkeregelung</translation> </message> diff --git a/src/ui/translations/qmmp_it.ts b/src/ui/translations/qmmp_it.ts index 1fb7ddbfa..cc446ed57 100644 --- a/src/ui/translations/qmmp_it.ts +++ b/src/ui/translations/qmmp_it.ts @@ -205,18 +205,18 @@ <translation>Interprete</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>Album</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -376,7 +376,7 @@ <translation>Avanzato</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>Chiudi</translation> </message> @@ -417,7 +417,7 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>Audio</translation> </message> @@ -482,23 +482,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>Utilizza il controllo volume del programma</translation> </message> diff --git a/src/ui/translations/qmmp_lt.ts b/src/ui/translations/qmmp_lt.ts index 46cab600d..de63d8d3a 100644 --- a/src/ui/translations/qmmp_lt.ts +++ b/src/ui/translations/qmmp_lt.ts @@ -205,18 +205,18 @@ <translation>Atlikėjas</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>Albumas</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -376,7 +376,7 @@ <translation>Papildomi</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>Užverti</translation> </message> @@ -417,7 +417,7 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>Audio</translation> </message> @@ -483,23 +483,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>Naudoti programinį garso valdymą</translation> </message> diff --git a/src/ui/translations/qmmp_pl_PL.ts b/src/ui/translations/qmmp_pl_PL.ts index 612d306e6..f84c9765a 100644 --- a/src/ui/translations/qmmp_pl_PL.ts +++ b/src/ui/translations/qmmp_pl_PL.ts @@ -205,18 +205,18 @@ <translation>Artysta</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>Album</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -376,7 +376,7 @@ <translation>Zaawansowane</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>Zamknij</translation> </message> @@ -417,7 +417,7 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>Dźwięk</translation> </message> @@ -482,23 +482,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>Użyj programowej regulacji głośności</translation> </message> diff --git a/src/ui/translations/qmmp_pt_BR.ts b/src/ui/translations/qmmp_pt_BR.ts index 73102fc97..9f9191aca 100644 --- a/src/ui/translations/qmmp_pt_BR.ts +++ b/src/ui/translations/qmmp_pt_BR.ts @@ -205,18 +205,18 @@ <translation type="unfinished">Artista</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation type="unfinished">Álbum</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -376,7 +376,7 @@ <translation type="unfinished">Avançado</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation type="unfinished">Fechar</translation> </message> @@ -417,7 +417,7 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation type="unfinished"></translation> </message> @@ -482,23 +482,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation type="unfinished"></translation> </message> diff --git a/src/ui/translations/qmmp_ru.ts b/src/ui/translations/qmmp_ru.ts index 7ce763a2e..52af46efd 100644 --- a/src/ui/translations/qmmp_ru.ts +++ b/src/ui/translations/qmmp_ru.ts @@ -205,18 +205,18 @@ <translation>Исполнитель</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>Альбом</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -376,7 +376,7 @@ <translation>Дополнительно</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>Закрыть</translation> </message> @@ -417,7 +417,7 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>Аудио</translation> </message> @@ -482,23 +482,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>Использовать программную регулировку громкости</translation> </message> diff --git a/src/ui/translations/qmmp_tr.ts b/src/ui/translations/qmmp_tr.ts index 443a53f0b..efad72251 100644 --- a/src/ui/translations/qmmp_tr.ts +++ b/src/ui/translations/qmmp_tr.ts @@ -205,18 +205,18 @@ <translation>Sanatçı</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>Albüm</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -376,7 +376,7 @@ <translation>Gelişmiş</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>Kapat</translation> </message> @@ -417,7 +417,7 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>Ses</translation> </message> @@ -482,23 +482,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>Yazılımsal ses kontrolünü kullan</translation> </message> diff --git a/src/ui/translations/qmmp_uk_UA.ts b/src/ui/translations/qmmp_uk_UA.ts index f337dcd63..bb650259a 100644 --- a/src/ui/translations/qmmp_uk_UA.ts +++ b/src/ui/translations/qmmp_uk_UA.ts @@ -173,16 +173,28 @@ <context> <name>ConfigDialog</name> <message> + <location filename="../configdialog.cpp" line="245"/> + <location filename="../configdialog.cpp" line="298"/> + <location filename="../configdialog.cpp" line="330"/> + <location filename="../configdialog.cpp" line="363"/> <location filename="../configdialog.cpp" line="396"/> <source>Enabled</source> <translation>Увімкнено</translation> </message> <message> + <location filename="../configdialog.cpp" line="245"/> + <location filename="../configdialog.cpp" line="298"/> + <location filename="../configdialog.cpp" line="330"/> + <location filename="../configdialog.cpp" line="363"/> <location filename="../configdialog.cpp" line="396"/> <source>Description</source> <translation>Пояснення</translation> </message> <message> + <location filename="../configdialog.cpp" line="245"/> + <location filename="../configdialog.cpp" line="298"/> + <location filename="../configdialog.cpp" line="330"/> + <location filename="../configdialog.cpp" line="363"/> <location filename="../configdialog.cpp" line="396"/> <source>Filename</source> <translation>Ім'я файлу</translation> @@ -193,17 +205,18 @@ <translation>Виконавець</translation> </message> <message> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>Альбом</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation>Трек</translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation>Вимкнено</translation> </message> @@ -288,11 +301,14 @@ <translation>Список:</translation> </message> <message> + <location filename="../forms/configdialog.ui" line="286"/> <location filename="../forms/configdialog.ui" line="334"/> <source>???</source> <translation>???</translation> </message> <message> + <location filename="../forms/configdialog.ui" line="293"/> + <location filename="../forms/configdialog.ui" line="341"/> <location filename="../forms/configdialog.ui" line="517"/> <source>...</source> <translation>...</translation> @@ -333,6 +349,7 @@ <translation>Налаштування</translation> </message> <message> + <location filename="../forms/configdialog.ui" line="647"/> <location filename="../forms/configdialog.ui" line="830"/> <source>Information</source> <translation>Інформація</translation> @@ -343,6 +360,7 @@ <translation>Зовнішній вигляд</translation> </message> <message> + <location filename="../forms/configdialog.ui" line="101"/> <location filename="../forms/configdialog.ui" line="441"/> <source>Playlist</source> <translation>Список</translation> @@ -358,7 +376,7 @@ <translation>Додатково</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>Закрити</translation> </message> @@ -398,7 +416,8 @@ <translation>Файловий діалог</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="137"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>Звук</translation> </message> @@ -463,22 +482,23 @@ <translation>Преамплітуда:</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation>Нормалізація за умовчанням:</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation>Використовувати інформацію піків для запобігання відсікання</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>Використовувати програмний контроль гучності</translation> </message> @@ -613,6 +633,8 @@ <translation>Головне вікно</translation> </message> <message> + <location filename="../forms/configdialog.ui" line="410"/> + <location filename="../forms/configdialog.ui" line="434"/> <location filename="../forms/configdialog.ui" line="458"/> <source>0</source> <translation></translation> @@ -626,6 +648,7 @@ <context> <name>EqWidget</name> <message> + <location filename="../eqwidget.cpp" line="169"/> <location filename="../eqwidget.cpp" line="192"/> <source>preset</source> <translation>предвстановлення</translation> @@ -679,11 +702,14 @@ <context> <name>JumpToTrackDialog</name> <message> + <location filename="../jumptotrackdialog.cpp" line="81"/> <location filename="../jumptotrackdialog.cpp" line="132"/> <source>Unqueue</source> <translation>Зняти з черги</translation> </message> <message> + <location filename="../forms/jumptotrackdialog.ui" line="79"/> + <location filename="../jumptotrackdialog.cpp" line="83"/> <location filename="../jumptotrackdialog.cpp" line="134"/> <source>Queue</source> <translation>В чергу</translation> @@ -865,26 +891,31 @@ <translation>Падіння аналізатора</translation> </message> <message> + <location filename="../mainvisual.cpp" line="345"/> <location filename="../mainvisual.cpp" line="359"/> <source>Slowest</source> <translation>Найповільніше</translation> </message> <message> + <location filename="../mainvisual.cpp" line="346"/> <location filename="../mainvisual.cpp" line="360"/> <source>Slow</source> <translation>Повільне</translation> </message> <message> + <location filename="../mainvisual.cpp" line="347"/> <location filename="../mainvisual.cpp" line="361"/> <source>Medium</source> <translation>Середнє</translation> </message> <message> + <location filename="../mainvisual.cpp" line="348"/> <location filename="../mainvisual.cpp" line="362"/> <source>Fast</source> <translation>Швидке</translation> </message> <message> + <location filename="../mainvisual.cpp" line="349"/> <location filename="../mainvisual.cpp" line="363"/> <source>Fastest</source> <translation>Найшвидше</translation> @@ -1013,6 +1044,7 @@ <translation>&Про програму</translation> </message> <message> + <location filename="../mainwindow.cpp" line="459"/> <location filename="../mainwindow.cpp" line="485"/> <source>Playlist Files</source> <translation>Файли списків</translation> @@ -1151,31 +1183,37 @@ <translation>Сортувати</translation> </message> <message> + <location filename="../playlist.cpp" line="225"/> <location filename="../playlist.cpp" line="259"/> <source>By Title</source> <translation>За назвою</translation> </message> <message> + <location filename="../playlist.cpp" line="229"/> <location filename="../playlist.cpp" line="263"/> <source>By Album</source> <translation>За альбомом</translation> </message> <message> + <location filename="../playlist.cpp" line="233"/> <location filename="../playlist.cpp" line="267"/> <source>By Artist</source> <translation>За артистом</translation> </message> <message> + <location filename="../playlist.cpp" line="237"/> <location filename="../playlist.cpp" line="271"/> <source>By Filename</source> <translation>За ім'ям файлу</translation> </message> <message> + <location filename="../playlist.cpp" line="241"/> <location filename="../playlist.cpp" line="275"/> <source>By Path + Filename</source> <translation>За шляхом та файлом</translation> </message> <message> + <location filename="../playlist.cpp" line="245"/> <location filename="../playlist.cpp" line="279"/> <source>By Date</source> <translation>За датою</translation> @@ -1286,6 +1324,7 @@ <translation></translation> </message> <message> + <location filename="../playlist.cpp" line="249"/> <location filename="../playlist.cpp" line="283"/> <source>By Track Number</source> <translation></translation> @@ -1319,11 +1358,13 @@ <translation>Новий</translation> </message> <message> + <location filename="../forms/playlistbrowser.ui" line="52"/> <location filename="../playlistbrowser.cpp" line="38"/> <source>Delete</source> <translation>Видалити</translation> </message> <message> + <location filename="../forms/playlistbrowser.ui" line="69"/> <location filename="../forms/playlistbrowser.ui" line="76"/> <source>...</source> <translation>...</translation> @@ -1342,6 +1383,7 @@ <translation>Налаштування спливаючої інформації</translation> </message> <message> + <location filename="../forms/popupsettings.ui" line="48"/> <location filename="../forms/popupsettings.ui" line="78"/> <source>0</source> <translation></translation> diff --git a/src/ui/translations/qmmp_zh_CN.ts b/src/ui/translations/qmmp_zh_CN.ts index e2492252d..cbcc7d63b 100644 --- a/src/ui/translations/qmmp_zh_CN.ts +++ b/src/ui/translations/qmmp_zh_CN.ts @@ -205,18 +205,18 @@ <translation>艺术家</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>专辑</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -376,7 +376,7 @@ <translation>高级</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>关闭</translation> </message> @@ -417,7 +417,7 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>音频</translation> </message> @@ -482,23 +482,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>使用软设备音量控制</translation> </message> diff --git a/src/ui/translations/qmmp_zh_TW.ts b/src/ui/translations/qmmp_zh_TW.ts index b6a9c405b..c83e8ad6d 100644 --- a/src/ui/translations/qmmp_zh_TW.ts +++ b/src/ui/translations/qmmp_zh_TW.ts @@ -205,18 +205,18 @@ <translation>藝術家</translation> </message> <message> - <location filename="../configdialog.cpp" line="88"/> + <location filename="../configdialog.cpp" line="82"/> <location filename="../configdialog.cpp" line="596"/> <source>Album</source> <translation>專輯</translation> </message> <message> - <location filename="../configdialog.cpp" line="87"/> + <location filename="../configdialog.cpp" line="81"/> <source>Track</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../configdialog.cpp" line="89"/> + <location filename="../configdialog.cpp" line="83"/> <source>Disabled</source> <translation type="unfinished"></translation> </message> @@ -376,7 +376,7 @@ <translation>進階</translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1219"/> + <location filename="../forms/configdialog.ui" line="1237"/> <source>Close</source> <translation>關閉</translation> </message> @@ -417,7 +417,7 @@ </message> <message> <location filename="../forms/configdialog.ui" line="137"/> - <location filename="../forms/configdialog.ui" line="1156"/> + <location filename="../forms/configdialog.ui" line="1174"/> <source>Audio</source> <translation>聲訊</translation> </message> @@ -482,23 +482,23 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1090"/> - <location filename="../forms/configdialog.ui" line="1126"/> + <location filename="../forms/configdialog.ui" line="1099"/> + <location filename="../forms/configdialog.ui" line="1144"/> <source>dB</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1103"/> + <location filename="../forms/configdialog.ui" line="1112"/> <source>Default gain:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1146"/> + <location filename="../forms/configdialog.ui" line="1164"/> <source>Use peak info to prevent clipping</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../forms/configdialog.ui" line="1162"/> + <location filename="../forms/configdialog.ui" line="1180"/> <source>Use software volume control</source> <translation>使用軟裝置音量控制</translation> </message> |
