diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-09-22 18:45:40 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-09-22 18:45:40 +0000 |
| commit | e235adde49d24b6d034ef2b74b28ad2a6cea2fee (patch) | |
| tree | 052f594f2a861149b95098e80f6ec0dd34664362 /src/plugins/Input | |
| parent | 7f084cab97cf3ad20b24e0fd1ddc58829b6c07bd (diff) | |
| download | qmmp-e235adde49d24b6d034ef2b74b28ad2a6cea2fee.tar.gz qmmp-e235adde49d24b6d034ef2b74b28ad2a6cea2fee.tar.bz2 qmmp-e235adde49d24b6d034ef2b74b28ad2a6cea2fee.zip | |
enabled mpc plugin, fixed some bugs
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1250 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input')
28 files changed, 536 insertions, 428 deletions
diff --git a/src/plugins/Input/CMakeLists.txt b/src/plugins/Input/CMakeLists.txt index efcc4774f..66a2f46fa 100644 --- a/src/plugins/Input/CMakeLists.txt +++ b/src/plugins/Input/CMakeLists.txt @@ -5,7 +5,7 @@ SET(USE_MAD TRUE CACHE BOOL "enable/disable mad plugin") SET(USE_FLAC TRUE CACHE BOOL "enable/disable flac plugin") SET(USE_VORBIS TRUE CACHE BOOL "enable/disable ogg vorbis plugin") #SET(USE_FFMPEG TRUE CACHE BOOL "enable/disable ffmpeg plugin") -#SET(USE_MPC TRUE CACHE BOOL "enable/disable mpc plugin") +SET(USE_MPC TRUE CACHE BOOL "enable/disable mpc plugin") SET(USE_SNDFILE TRUE CACHE BOOL "enable/disable sndfile plugin") #SET(USE_WAVPACK TRUE CACHE BOOL "enable/disable wavpack plugin") #SET(USE_MODPLUG TRUE CACHE BOOL "enable/disable modplug plugin") diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro index 0962c76f9..6ba4f6719 100644 --- a/src/plugins/Input/Input.pro +++ b/src/plugins/Input/Input.pro @@ -13,7 +13,7 @@ contains(CONFIG, MODPLUG_PLUGIN){ } contains(CONFIG, MUSEPACK_PLUGIN){ -# SUBDIRS += mpc + SUBDIRS += mpc message(***************************) message(* Musepack plugin enabled *) message(***************************) diff --git a/src/plugins/Input/aac/translations/aac_plugin_ru.ts b/src/plugins/Input/aac/translations/aac_plugin_ru.ts index 095a3ae1a..e925ffd1c 100644 --- a/src/plugins/Input/aac/translations/aac_plugin_ru.ts +++ b/src/plugins/Input/aac/translations/aac_plugin_ru.ts @@ -127,7 +127,7 @@ <message> <location filename="../detailsdialog.cpp" line="69"/> <source>KB</source> - <translation>Кб</translation> + <translation>КБ</translation> </message> <message> <location filename="../detailsdialog.ui" line="14"/> diff --git a/src/plugins/Input/ffmpeg/translations/ffmpeg_plugin_ru.ts b/src/plugins/Input/ffmpeg/translations/ffmpeg_plugin_ru.ts index 7aee87b75..7434cdf86 100644 --- a/src/plugins/Input/ffmpeg/translations/ffmpeg_plugin_ru.ts +++ b/src/plugins/Input/ffmpeg/translations/ffmpeg_plugin_ru.ts @@ -44,7 +44,7 @@ <message> <location filename="../detailsdialog.cpp" line="80"/> <source>KB</source> - <translation>Кб</translation> + <translation>КБ</translation> </message> <message> <location filename="../detailsdialog.cpp" line="80"/> diff --git a/src/plugins/Input/mad/mpegmetadatamodel.cpp b/src/plugins/Input/mad/mpegmetadatamodel.cpp index 7880f64fb..85a3d88f4 100644 --- a/src/plugins/Input/mad/mpegmetadatamodel.cpp +++ b/src/plugins/Input/mad/mpegmetadatamodel.cpp @@ -36,25 +36,25 @@ MPEGMetaDataModel::MPEGMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent) { - m_path = path; - m_tags << new MpegFileTagModel(path, TagLib::MPEG::File::ID3v1); - m_tags << new MpegFileTagModel(path, TagLib::MPEG::File::ID3v2); - m_tags << new MpegFileTagModel(path, TagLib::MPEG::File::APE); + m_file = new TagLib::MPEG::File(path.toLocal8Bit().constData()); + m_tags << new MpegFileTagModel(m_file, TagLib::MPEG::File::ID3v1); + m_tags << new MpegFileTagModel(m_file, TagLib::MPEG::File::ID3v2); + m_tags << new MpegFileTagModel(m_file, TagLib::MPEG::File::APE); } MPEGMetaDataModel::~MPEGMetaDataModel() { while(!m_tags.isEmpty()) delete m_tags.takeFirst(); + delete m_file; } QHash<QString, QString> MPEGMetaDataModel::audioProperties() { QHash<QString, QString> ap; - TagLib::MPEG::File f (m_path.toLocal8Bit().constData()); QString text; QString v; - switch((int)f.audioProperties()->version()) + switch((int)m_file->audioProperties()->version()) { case TagLib::MPEG::Header::Version1: v = "1"; @@ -65,13 +65,13 @@ QHash<QString, QString> MPEGMetaDataModel::audioProperties() case TagLib::MPEG::Header::Version2_5: v = "2.5"; } - text = QString("MPEG-%1 layer %2").arg(v).arg(f.audioProperties()->layer()); + text = QString("MPEG-%1 layer %2").arg(v).arg(m_file->audioProperties()->layer()); ap.insert(tr("Format"), text); - text = QString("%1").arg(f.audioProperties()->bitrate()); + text = QString("%1").arg(m_file->audioProperties()->bitrate()); ap.insert(tr("Bitrate"), text+" "+tr("kbps")); - text = QString("%1").arg(f.audioProperties()->sampleRate()); + text = QString("%1").arg(m_file->audioProperties()->sampleRate()); ap.insert(tr("Samplerate"), text+" "+tr("Hz")); - switch (f.audioProperties()->channelMode()) + switch (m_file->audioProperties()->channelMode()) { case TagLib::MPEG::Header::Stereo: ap.insert(tr("Mode"), "Stereo"); @@ -86,17 +86,17 @@ QHash<QString, QString> MPEGMetaDataModel::audioProperties() ap.insert(tr("Mode"), "Single channel"); break; } - text = QString("%1 "+tr("KB")).arg(f.length()/1024); + text = QString("%1 "+tr("KB")).arg(m_file->length()/1024); ap.insert(tr("File size"), text); - if (f.audioProperties()->protectionEnabled()) + if (m_file->audioProperties()->protectionEnabled()) ap.insert(tr("Protection"), tr("Yes")); else ap.insert(tr("Protection"), tr("No")); - if (f.audioProperties()->isCopyrighted()) + if (m_file->audioProperties()->isCopyrighted()) ap.insert(tr("Copyright"), tr("Yes")); else ap.insert(tr("Copyright"), tr("No")); - if (f.audioProperties()->isOriginal()) + if (m_file->audioProperties()->isOriginal()) ap.insert(tr("Original"), tr("Yes")); else ap.insert(tr("Original"), tr("No")); @@ -108,10 +108,11 @@ QList<TagModel* > MPEGMetaDataModel::tags() return m_tags; } -MpegFileTagModel::MpegFileTagModel(const QString &path, TagLib::MPEG::File::TagTypes tagType) : TagModel() +MpegFileTagModel::MpegFileTagModel(TagLib::MPEG::File *file, TagLib::MPEG::File::TagTypes tagType) + : TagModel() { m_tagType = tagType; - m_file = new TagLib::MPEG::File (path.toLocal8Bit().constData()); + m_file = file; QSettings settings(Qmmp::configFile(), QSettings::IniFormat); settings.beginGroup("MAD"); if (m_tagType == TagLib::MPEG::File::ID3v1) @@ -137,9 +138,7 @@ MpegFileTagModel::MpegFileTagModel(const QString &path, TagLib::MPEG::File::TagT } MpegFileTagModel::~MpegFileTagModel() -{ - delete m_file; -} +{} const QString MpegFileTagModel::name() { @@ -316,10 +315,7 @@ void MpegFileTagModel::remove() void MpegFileTagModel::save() { if(m_tag) - { - m_file->save(m_tagType, FALSE); //?? m_file->save(m_tagType, FALSE); - } else m_file->strip(m_tagType); } diff --git a/src/plugins/Input/mad/mpegmetadatamodel.h b/src/plugins/Input/mad/mpegmetadatamodel.h index 06ba24735..2ed2a86f9 100644 --- a/src/plugins/Input/mad/mpegmetadatamodel.h +++ b/src/plugins/Input/mad/mpegmetadatamodel.h @@ -36,14 +36,14 @@ public: QList<TagModel* > tags(); private: - QString m_path; QList<TagModel* > m_tags; + TagLib::MPEG::File *m_file; }; class MpegFileTagModel : public TagModel { public: - MpegFileTagModel(const QString &path, TagLib::MPEG::File::TagTypes tagType); + MpegFileTagModel(TagLib::MPEG::File *file, TagLib::MPEG::File::TagTypes tagType); ~MpegFileTagModel(); const QString name(); QList<Qmmp::MetaData> keys(); diff --git a/src/plugins/Input/mad/translations/mad_plugin_ru.ts b/src/plugins/Input/mad/translations/mad_plugin_ru.ts index d471fea15..35a39d3a4 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_ru.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_ru.ts @@ -77,7 +77,7 @@ <message> <location filename="../mpegmetadatamodel.cpp" line="89"/> <source>KB</source> - <translation>Кб</translation> + <translation>КБ</translation> </message> <message> <location filename="../mpegmetadatamodel.cpp" line="90"/> diff --git a/src/plugins/Input/mpc/CMakeLists.txt b/src/plugins/Input/mpc/CMakeLists.txt index b8f387fc9..825daf9b9 100644 --- a/src/plugins/Input/mpc/CMakeLists.txt +++ b/src/plugins/Input/mpc/CMakeLists.txt @@ -45,13 +45,13 @@ link_directories(${TAGLIB_LIBRARY_DIRS}) SET(libmpc_SRCS decoder_mpc.cpp decodermpcfactory.cpp - detailsdialog.cpp + mpcmetadatamodel.cpp ) SET(libmpc_MOC_HDRS decodermpcfactory.h decoder_mpc.h - detailsdialog.h + mpcmetadatamodel.h ) SET(libmpc_RCCS translations/translations.qrc) diff --git a/src/plugins/Input/mpc/decoder_mpc.cpp b/src/plugins/Input/mpc/decoder_mpc.cpp index b859d6ebd..0cf6c1c59 100644 --- a/src/plugins/Input/mpc/decoder_mpc.cpp +++ b/src/plugins/Input/mpc/decoder_mpc.cpp @@ -121,8 +121,8 @@ static mpc_int32_t mpc_callback_get_size (mpc_reader *reader) // Decoder class -DecoderMPC::DecoderMPC(QObject *parent, DecoderFactory *d, QIODevice *i, Output *o) - : Decoder(parent, d, i, o) +DecoderMPC::DecoderMPC(QIODevice *i) + : Decoder(i) { m_len = 0; m_bitrate = 0; @@ -208,7 +208,6 @@ bool DecoderMPC::initialize() return TRUE; } - qint64 DecoderMPC::totalTime() { return m_totalTime; @@ -219,7 +218,7 @@ int DecoderMPC::bitrate() return m_bitrate; } -qint64 DecoderMPC::readAudio(char *audio, qint64 maxSize) +qint64 DecoderMPC::read(char *audio, qint64 maxSize) { #ifdef MPC_OLD_API mpc_uint32_t vbrAcc = 0; @@ -256,7 +255,7 @@ qint64 DecoderMPC::readAudio(char *audio, qint64 maxSize) return m_len; } -void DecoderMPC::seekAudio(qint64 pos) +void DecoderMPC::seek(qint64 pos) { #ifdef MPC_OLD_API mpc_decoder_seek_seconds(&data()->decoder, pos/1000); @@ -264,4 +263,3 @@ void DecoderMPC::seekAudio(qint64 pos) mpc_demux_seek_second(data()->demuxer, (double)pos/1000); #endif } - diff --git a/src/plugins/Input/mpc/decoder_mpc.h b/src/plugins/Input/mpc/decoder_mpc.h index b4e148706..7a8d3260a 100644 --- a/src/plugins/Input/mpc/decoder_mpc.h +++ b/src/plugins/Input/mpc/decoder_mpc.h @@ -43,7 +43,7 @@ struct mpc_data class DecoderMPC : public Decoder { public: - DecoderMPC(QObject *, DecoderFactory *, QIODevice *, Output *); + DecoderMPC(QIODevice *i); virtual ~DecoderMPC(); struct mpc_data *data() @@ -55,10 +55,10 @@ public: bool initialize(); qint64 totalTime(); int bitrate(); + qint64 read(char *audio, qint64 maxSize); + void seek(qint64 time); private: - virtual qint64 readAudio(char *audio, qint64 maxSize); - void seekAudio(qint64 time); struct mpc_data *m_data; long m_len; diff --git a/src/plugins/Input/mpc/decodermpcfactory.cpp b/src/plugins/Input/mpc/decodermpcfactory.cpp index 323637c8b..000015b6f 100644 --- a/src/plugins/Input/mpc/decodermpcfactory.cpp +++ b/src/plugins/Input/mpc/decodermpcfactory.cpp @@ -23,8 +23,7 @@ #include <taglib/fileref.h> #include <taglib/mpcfile.h> #include <taglib/apetag.h> - -#include "detailsdialog.h" +#include "mpcmetadatamodel.h" #include "decoder_mpc.h" #include "decodermpcfactory.h" @@ -55,10 +54,9 @@ const DecoderProperties DecoderMPCFactory::properties() const return properties; } -Decoder *DecoderMPCFactory::create(QObject *parent, QIODevice *input, - Output *output, const QString &) +Decoder *DecoderMPCFactory::create(const QString &, QIODevice *i) { - return new DecoderMPC(parent, this, input, output); + return new DecoderMPC(i); } QList<FileInfo *> DecoderMPCFactory::createPlayList(const QString &fileName, bool useMetaData) @@ -98,11 +96,9 @@ QList<FileInfo *> DecoderMPCFactory::createPlayList(const QString &fileName, boo return list; } -QObject* DecoderMPCFactory::showDetails(QWidget *parent, const QString &path) +MetaDataModel* DecoderMPCFactory::createMetaDataModel(const QString &path, QObject *parent) { - DetailsDialog *d = new DetailsDialog(parent, path); - d -> show(); - return d; + return new MPCMetaDataModel(path, parent); } void DecoderMPCFactory::showSettings(QWidget *) @@ -123,4 +119,4 @@ QTranslator *DecoderMPCFactory::createTranslator(QObject *parent) return translator; } -Q_EXPORT_PLUGIN(DecoderMPCFactory) +Q_EXPORT_PLUGIN2(mpc,DecoderMPCFactory) diff --git a/src/plugins/Input/mpc/decodermpcfactory.h b/src/plugins/Input/mpc/decodermpcfactory.h index 76ca2b0f4..c617dd0fd 100644 --- a/src/plugins/Input/mpc/decodermpcfactory.h +++ b/src/plugins/Input/mpc/decodermpcfactory.h @@ -43,9 +43,9 @@ public: bool supports(const QString &source) const; bool canDecode(QIODevice *input) const; const DecoderProperties properties() const; - Decoder *create(QObject *, QIODevice *, Output *, const QString &); + Decoder *create(const QString &url, QIODevice *i); QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData); - QObject* showDetails(QWidget *parent, const QString &path); + MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0); void showSettings(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/plugins/Input/mpc/detailsdialog.cpp b/src/plugins/Input/mpc/detailsdialog.cpp deleted file mode 100644 index 80a7fd108..000000000 --- a/src/plugins/Input/mpc/detailsdialog.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2007 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 <taglib/tag.h> -#include <taglib/fileref.h> -#include <taglib/mpcfile.h> -#include <taglib/apetag.h> - -#include <QFile> -#include <QFileInfo> - -#include "detailsdialog.h" - -#define QStringToTString_qt4(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8) -#define TStringToQString_qt4(s) QString::fromUtf8(s.toCString(TRUE)).trimmed() - -DetailsDialog::DetailsDialog(QWidget *parent, const QString &path) - : AbstractDetailsDialog(parent) -{ - m_path = path; - if (QFile::exists(m_path)) - { - loadMPCInfo(); - loadTags(); - blockSaveButton(!QFileInfo(m_path).isWritable()); - } - else - blockSaveButton(); -} - -DetailsDialog::~DetailsDialog() -{} - -void DetailsDialog::loadMPCInfo() -{ - TagLib::MPC::File f (m_path.toLocal8Bit()); - QMap <QString, QString> ap; - QString text = QString("%1").arg(f.audioProperties()->length()/60); - text +=":"+QString("%1").arg(f.audioProperties()->length()%60,2,10,QChar('0')); - ap.insert(tr("Length"), text); - ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(f.audioProperties()->sampleRate())); - ap.insert(tr("Channels"), QString("%1").arg(f.audioProperties()->channels())); - ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(f.audioProperties()->bitrate())); - ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(f.length()/1024)); - setAudioProperties(ap); -} - -void DetailsDialog::loadTags() -{ - TagLib::FileRef f (m_path.toLocal8Bit()); - setMetaData(Qmmp::TITLE, TStringToQString_qt4(f.tag()->title())); - setMetaData(Qmmp::ARTIST, TStringToQString_qt4(f.tag()->artist())); - setMetaData(Qmmp::ALBUM, TStringToQString_qt4(f.tag()->album())); - setMetaData(Qmmp::COMMENT, TStringToQString_qt4(f.tag()->comment())); - setMetaData(Qmmp::GENRE, TStringToQString_qt4(f.tag()->genre())); - setMetaData(Qmmp::YEAR, f.tag()->year()); - setMetaData(Qmmp::TRACK, f.tag()->track()); - setMetaData(Qmmp::URL, m_path); - TagLib::MPC::File *file = dynamic_cast<TagLib::MPC::File *>(f.file()); - TagLib::APE::Item fld; - if(file->APETag() && !(fld = file->APETag()->itemListMap()["COMPOSER"]).isEmpty()) - setMetaData(Qmmp::COMPOSER, TStringToQString_qt4(fld.toString())); -} - -void DetailsDialog::writeTags() -{ - TagLib::FileRef f (m_path.toLocal8Bit()); - f.tag()->setTitle(QStringToTString_qt4(strMetaData(Qmmp::TITLE))); - f.tag()->setArtist(QStringToTString_qt4(strMetaData(Qmmp::ARTIST))); - f.tag()->setAlbum(QStringToTString_qt4(strMetaData(Qmmp::ALBUM))); - f.tag()->setComment(QStringToTString_qt4(strMetaData(Qmmp::COMMENT))); - f.tag()->setGenre(QStringToTString_qt4(strMetaData(Qmmp::GENRE))); - f.tag()->setYear(intMetaData(Qmmp::YEAR)); - f.tag()->setTrack(intMetaData(Qmmp::TRACK)); - TagLib::MPC::File *file = dynamic_cast<TagLib::MPC::File *>(f.file()); - strMetaData(Qmmp::COMPOSER).isEmpty() ? - file->APETag()->removeItem("COMPOSER"): - file->APETag()->addValue("COMPOSER", QStringToTString_qt4(strMetaData(Qmmp::COMPOSER)), TRUE); - f.save(); -} diff --git a/src/plugins/Input/mpc/mpc.pro b/src/plugins/Input/mpc/mpc.pro index df97117c8..8ca63a6c6 100644 --- a/src/plugins/Input/mpc/mpc.pro +++ b/src/plugins/Input/mpc/mpc.pro @@ -2,10 +2,10 @@ include(../../plugins.pri) FORMS += HEADERS += decodermpcfactory.h \ decoder_mpc.h \ - detailsdialog.h + mpcmetadatamodel.h SOURCES += decoder_mpc.cpp \ decodermpcfactory.cpp \ - detailsdialog.cpp + mpcmetadatamodel.cpp TARGET = $$PLUGINS_PREFIX/Input/mpc QMAKE_CLEAN = $$PLUGINS_PREFIX/Input/libmpc.so INCLUDEPATH += ../../../ diff --git a/src/plugins/Input/mpc/mpcmetadatamodel.cpp b/src/plugins/Input/mpc/mpcmetadatamodel.cpp new file mode 100644 index 000000000..5ae31eeac --- /dev/null +++ b/src/plugins/Input/mpc/mpcmetadatamodel.cpp @@ -0,0 +1,193 @@ +/*************************************************************************** + * 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 <QTextCodec> +#include <taglib/tag.h> +#include <taglib/id3v1tag.h> +#include <taglib/apetag.h> +#include "mpcmetadatamodel.h" + +MPCMetaDataModel::MPCMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent) +{ + m_file = new TagLib::MPC::File (path.toLocal8Bit().constData()); + m_tags << new MPCFileTagModel(m_file, TagLib::MPC::File::ID3v1); + m_tags << new MPCFileTagModel(m_file, TagLib::MPC::File::APE); +} + +MPCMetaDataModel::~MPCMetaDataModel() +{ + while(!m_tags.isEmpty()) + delete m_tags.takeFirst(); + delete m_file; +} + +QHash<QString, QString> MPCMetaDataModel::audioProperties() +{ + QHash<QString, QString> ap; + QString text = QString("%1").arg(m_file->audioProperties()->length()/60); + text +=":"+QString("%1").arg(m_file->audioProperties()->length()%60,2,10,QChar('0')); + ap.insert(tr("Length"), text); + ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(m_file->audioProperties()->sampleRate())); + ap.insert(tr("Channels"), QString("%1").arg(m_file->audioProperties()->channels())); + ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(m_file->audioProperties()->bitrate())); + ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(m_file->length()/1024)); + return ap; +} + +QList<TagModel* > MPCMetaDataModel::tags() +{ + return m_tags; +} + +MPCFileTagModel::MPCFileTagModel(TagLib::MPC::File *file, TagLib::MPC::File::TagTypes tagType) + : TagModel() +{ + m_tagType = tagType; + m_file = file; + if (m_tagType == TagLib::MPC::File::ID3v1) + { + m_tag = m_file->ID3v1Tag(); + m_codec = QTextCodec::codecForName("ISO-8859-1"); + } + else + { + m_tag = m_file->APETag(); + m_codec = QTextCodec::codecForName ("UTF-8"); + } +} + +MPCFileTagModel::~MPCFileTagModel() +{} + +const QString MPCFileTagModel::name() +{ + if (m_tagType == TagLib::MPC::File::ID3v1) + return "ID3v1"; + return "APE"; +} + +QList<Qmmp::MetaData> MPCFileTagModel::keys() +{ + QList<Qmmp::MetaData> list = TagModel::keys(); + list.removeAll(Qmmp::COMPOSER); + list.removeAll(Qmmp::DISCNUMBER); + return list; +} + +const QString MPCFileTagModel::value(Qmmp::MetaData key) +{ + if (m_tag) + { + bool utf = m_codec->name().contains("UTF"); + TagLib::String str; + switch((int) key) + { + case Qmmp::TITLE: + str = m_tag->title(); + break; + case Qmmp::ARTIST: + str = m_tag->artist(); + break; + case Qmmp::ALBUM: + str = m_tag->album(); + break; + case Qmmp::COMMENT: + str = m_tag->comment(); + break; + case Qmmp::GENRE: + str = m_tag->genre(); + break; + case Qmmp::YEAR: + return QString::number(m_tag->year()); + case Qmmp::TRACK: + return QString::number(m_tag->track()); + } + return m_codec->toUnicode(str.toCString(utf)).trimmed(); + } + return QString(); +} + +void MPCFileTagModel::setValue(Qmmp::MetaData key, const QString &value) +{ + if(!m_tag) + return; + TagLib::String::Type type = TagLib::String::Latin1; + + if (m_tagType == TagLib::MPC::File::ID3v1) + { + if(m_codec->name().contains("UTF")) //utf is unsupported + return; + } + else if(m_tagType == TagLib::MPC::File::APE) + type = TagLib::String::UTF8; + + TagLib::String str = TagLib::String(m_codec->fromUnicode(value).constData(), type); + + switch((int) key) + { + case Qmmp::TITLE: + m_tag->setTitle(str); + break; + case Qmmp::ARTIST: + m_tag->setArtist(str); + break; + case Qmmp::ALBUM: + m_tag->setAlbum(str); + break; + case Qmmp::COMMENT: + m_tag->setComment(str); + break; + case Qmmp::GENRE: + m_tag->setGenre(str); + break; + case Qmmp::YEAR: + m_tag->setYear(value.toInt()); + break; + case Qmmp::TRACK: + m_tag->setTrack(value.toInt()); + } +} + +bool MPCFileTagModel::exists() +{ + return (m_tag != 0); +} + +void MPCFileTagModel::create() +{ + if (m_tag) + return; + if (m_tagType == TagLib::MPC::File::ID3v1) + m_tag = m_file->ID3v1Tag(TRUE); + else + m_tag = m_file->APETag(TRUE); +} + +void MPCFileTagModel::remove() +{ + m_tag = 0; +} + +void MPCFileTagModel::save() +{ + if(!m_tag) + m_file->strip(m_tagType); + m_file->save(); +} diff --git a/src/plugins/Input/mpc/detailsdialog.h b/src/plugins/Input/mpc/mpcmetadatamodel.h index 089daca1f..5bab8b00e 100644 --- a/src/plugins/Input/mpc/detailsdialog.h +++ b/src/plugins/Input/mpc/mpcmetadatamodel.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Ilya Kotov * + * Copyright (C) 2009 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -17,28 +17,49 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef DETAILSDIALOG_H -#define DETAILSDIALOG_H -#include <qmmp/abstractdetailsdialog.h> +#ifndef MPCMETADATAMODEL_H +#define MPCMETADATAMODEL_H -/** - @author Ilya Kotov <forkotov02@hotmail.ru> -*/ -class DetailsDialog : public AbstractDetailsDialog +#include <qmmp/metadatamodel.h> +#include <taglib/tag.h> +#include <taglib/mpcfile.h> + +class QTextCodec; + +class MPCMetaDataModel : public MetaDataModel { Q_OBJECT public: - DetailsDialog(QWidget *parent = 0, const QString &path = 0); - - ~DetailsDialog(); + MPCMetaDataModel(const QString &path, QObject *parent); + ~MPCMetaDataModel(); + QHash<QString, QString> audioProperties(); + QList<TagModel* > tags(); private: - void loadMPCInfo(); - void loadTags(); - void writeTags(); - QString m_path; + QList<TagModel* > m_tags; + TagLib::MPC::File *m_file; +}; +class MPCFileTagModel : public TagModel +{ +public: + MPCFileTagModel(TagLib::MPC::File *file, TagLib::MPC::File::TagTypes tagType); + ~MPCFileTagModel(); + const QString name(); + QList<Qmmp::MetaData> keys(); + const QString value(Qmmp::MetaData key); + void setValue(Qmmp::MetaData key, const QString &value); + bool exists(); + void create(); + void remove(); + void save(); + +private: + QTextCodec *m_codec; + TagLib::MPC::File *m_file; + TagLib::Tag *m_tag; + TagLib::MPC::File::TagTypes m_tagType; }; -#endif +#endif // MPCMETADATAMODEL_H diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_cs.ts b/src/plugins/Input/mpc/translations/mpc_plugin_cs.ts index ada260e0f..7d9b2f508 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_cs.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_cs.ts @@ -4,72 +4,72 @@ <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Modul Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Soubory Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>O modulu Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Vstupní modul Qmmp Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autor: Ilja Kotov <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation>kbps</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation>Hz</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> - <translation>Délka</translation> + <translation type="unfinished">Délka</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> - <translation>Vzorkovací frekvence</translation> + <translation type="unfinished">Vzorkovací frekvence</translation> + </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation type="unfinished">Hz</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> + <location filename="../mpcmetadatamodel.cpp" line="48"/> <source>Channels</source> - <translation>Počet kanálů</translation> + <translation type="unfinished">Počet kanálů</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> - <translation>Datový tok</translation> + <translation type="unfinished">Datový tok</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation>KB</translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation type="unfinished">kbps</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> - <translation>Velikost souboru</translation> + <translation type="unfinished">Velikost souboru</translation> + </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation type="unfinished">KB</translation> </message> </context> </TS> diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_de.ts b/src/plugins/Input/mpc/translations/mpc_plugin_de.ts index 715450940..9c270725a 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_de.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_de.ts @@ -4,72 +4,72 @@ <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Musepack-Modul</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Musepack-Dateien</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>Über Musepack-Audio-Modul</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Qmmp Musepack-Audio-Modul</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autor: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation>kbps</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation>Hz</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> - <translation>Länge</translation> + <translation type="unfinished">Länge</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> - <translation>Abtastrate</translation> + <translation type="unfinished">Abtastrate</translation> + </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation type="unfinished">Hz</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> + <location filename="../mpcmetadatamodel.cpp" line="48"/> <source>Channels</source> - <translation>Kanäle</translation> + <translation type="unfinished">Kanäle</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> - <translation>Bitrate</translation> + <translation type="unfinished">Bitrate</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation>KB</translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation type="unfinished">kbps</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> - <translation>Dateigröße</translation> + <translation type="unfinished">Dateigröße</translation> + </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation type="unfinished">KB</translation> </message> </context> </TS> diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_it.ts b/src/plugins/Input/mpc/translations/mpc_plugin_it.ts index 51345e7ca..be7a7d958 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_it.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_it.ts @@ -4,72 +4,72 @@ <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Modulo Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Brani Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>Info sul modulo audio Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Modulo audio Musepack per Qmmp</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autore: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation>kbps</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation>Hz</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation type="unfinished">Hz</translation> + </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="48"/> <source>Channels</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation>KB</translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation type="unfinished">kbps</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation type="unfinished">KB</translation> + </message> </context> </TS> diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_lt.ts b/src/plugins/Input/mpc/translations/mpc_plugin_lt.ts index 1e6b30ad1..0c7b165b4 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_lt.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_lt.ts @@ -4,72 +4,72 @@ <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Musepack įskiepis</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Musepack bylos</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>Apie Qmmp Musepack įskiepį</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Qmmp Musepack įskiepis</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Sukūrė: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation>Hz</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> - <source>Channels</source> - <translation type="unfinished"></translation> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation type="unfinished">Hz</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation>kbps</translation> + <location filename="../mpcmetadatamodel.cpp" line="48"/> + <source>Channels</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation>KB</translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation type="unfinished">kbps</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation type="unfinished">KB</translation> + </message> </context> </TS> diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_pl.ts b/src/plugins/Input/mpc/translations/mpc_plugin_pl.ts index c829ca6eb..6c9886478 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_pl.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_pl.ts @@ -4,72 +4,72 @@ <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Wtyczka Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Pliki Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>O wtyczce Musepack Audio</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Wtyczka Musepack Audio dla Qmmp</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Autor: Ilja Kotov <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> - <translation>Długość</translation> + <translation type="unfinished">Długość</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation></translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> - <translation>Próbkowanie</translation> + <translation type="unfinished">Próbkowanie</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> - <source>Channels</source> - <translation>Kanały</translation> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation></translation> + <location filename="../mpcmetadatamodel.cpp" line="48"/> + <source>Channels</source> + <translation type="unfinished">Kanały</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> - <translation>Szybkość transmisji</translation> + <translation type="unfinished">Szybkość transmisji</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation></translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> - <translation>Wielkość pliku</translation> + <translation type="unfinished">Wielkość pliku</translation> + </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation type="unfinished"></translation> </message> </context> </TS> diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_ru.ts b/src/plugins/Input/mpc/translations/mpc_plugin_ru.ts index 3467b0b1f..a1ee2f813 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_ru.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_ru.ts @@ -4,72 +4,72 @@ <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Модуль Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Файлы Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>Об аудио-модуле Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Аудио-модуль Musepack для Qmmp</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Разработчик: Илья Котов <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation>Гц</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> <translation>Длительность</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> <translation>Дискретизация</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> - <source>Channels</source> - <translation>Каналов</translation> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation>Гц</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation>Кб/с</translation> + <location filename="../mpcmetadatamodel.cpp" line="48"/> + <source>Channels</source> + <translation>Каналов</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> <translation>Битовая частота</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation>Кб</translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation>Кб/с</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> <translation>Размер файла</translation> </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation>КБ</translation> + </message> </context> </TS> diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_tr.ts b/src/plugins/Input/mpc/translations/mpc_plugin_tr.ts index 046fa215b..a8060fcb2 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_tr.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_tr.ts @@ -4,72 +4,72 @@ <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Musepack Eklentisi</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Musepack Dosyaları</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>Musepack Ses Eklentisi Hakkında</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Qmmp Musepack Ses Eklentisi</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Yazan: Ilya Kotov <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation>Hz</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> - <source>Channels</source> - <translation type="unfinished"></translation> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation type="unfinished">Hz</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation>kbps</translation> + <location filename="../mpcmetadatamodel.cpp" line="48"/> + <source>Channels</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation>KB</translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation type="unfinished">kbps</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation type="unfinished">KB</translation> + </message> </context> </TS> diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_uk_UA.ts b/src/plugins/Input/mpc/translations/mpc_plugin_uk_UA.ts index 84e566100..7775cf9c7 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_uk_UA.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_uk_UA.ts @@ -1,75 +1,75 @@ <?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS><TS version="1.1" language="uk"> -<defaultcodec></defaultcodec> +<!DOCTYPE TS> +<TS version="2.0" language="uk"> <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Модуль Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Файли Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>Про аудіо-модуль Musepack</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Аудіо-модуль Musepack для Qmmp</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>Розробник: Ілля Котов <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation>Гц</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> - <translation>Тривалість</translation> + <translation type="unfinished">Тривалість</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> - <translation>Частота</translation> + <translation type="unfinished">Частота</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> - <source>Channels</source> - <translation>Канали</translation> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation type="unfinished">Гц</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation>Кб/с</translation> + <location filename="../mpcmetadatamodel.cpp" line="48"/> + <source>Channels</source> + <translation type="unfinished">Канали</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> - <translation>Бітрейт</translation> + <translation type="unfinished">Бітрейт</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation>Кб</translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation type="unfinished">Кб/с</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> - <translation>Розмір файлу</translation> + <translation type="unfinished">Розмір файлу</translation> + </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation type="unfinished">Кб</translation> </message> </context> </TS> diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_zh_CN.ts b/src/plugins/Input/mpc/translations/mpc_plugin_zh_CN.ts index 0a9379d81..5e3998793 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_zh_CN.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_zh_CN.ts @@ -4,72 +4,72 @@ <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Musepack 插件</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Musepack 文件</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>关于 Musepack 音频插件</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Qmmp Musepack 音频插件</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation>Hz</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> - <source>Channels</source> - <translation type="unfinished"></translation> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation type="unfinished">Hz</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation>kbps</translation> + <location filename="../mpcmetadatamodel.cpp" line="48"/> + <source>Channels</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation>KB</translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation type="unfinished">kbps</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation type="unfinished">KB</translation> + </message> </context> </TS> diff --git a/src/plugins/Input/mpc/translations/mpc_plugin_zh_TW.ts b/src/plugins/Input/mpc/translations/mpc_plugin_zh_TW.ts index 192074cd5..943fbfa65 100644 --- a/src/plugins/Input/mpc/translations/mpc_plugin_zh_TW.ts +++ b/src/plugins/Input/mpc/translations/mpc_plugin_zh_TW.ts @@ -4,72 +4,72 @@ <context> <name>DecoderMPCFactory</name> <message> - <location filename="../decodermpcfactory.cpp" line="48"/> + <location filename="../decodermpcfactory.cpp" line="47"/> <source>Musepack Plugin</source> <translation>Musepack 插件</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="50"/> + <location filename="../decodermpcfactory.cpp" line="49"/> <source>Musepack Files</source> <translation>Musepack 檔案</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="113"/> + <location filename="../decodermpcfactory.cpp" line="109"/> <source>About Musepack Audio Plugin</source> <translation>關於 Musepack 聲訊插件</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="114"/> + <location filename="../decodermpcfactory.cpp" line="110"/> <source>Qmmp Musepack Audio Plugin</source> <translation>Qmmp Musepack 聲訊插件</translation> </message> <message> - <location filename="../decodermpcfactory.cpp" line="115"/> + <location filename="../decodermpcfactory.cpp" line="111"/> <source>Writen by: Ilya Kotov <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></translation> </message> </context> <context> - <name>DetailsDialog</name> + <name>MPCMetaDataModel</name> <message> - <location filename="../detailsdialog.cpp" line="57"/> - <source>Hz</source> - <translation>Hz</translation> - </message> - <message> - <location filename="../detailsdialog.cpp" line="56"/> + <location filename="../mpcmetadatamodel.cpp" line="46"/> <source>Length</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="57"/> + <location filename="../mpcmetadatamodel.cpp" line="47"/> <source>Sample rate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="58"/> - <source>Channels</source> - <translation type="unfinished"></translation> + <location filename="../mpcmetadatamodel.cpp" line="47"/> + <source>Hz</source> + <translation type="unfinished">Hz</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> - <source>kbps</source> - <translation>kbps</translation> + <location filename="../mpcmetadatamodel.cpp" line="48"/> + <source>Channels</source> + <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="59"/> + <location filename="../mpcmetadatamodel.cpp" line="49"/> <source>Bitrate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> - <source>KB</source> - <translation>KB</translation> + <location filename="../mpcmetadatamodel.cpp" line="49"/> + <source>kbps</source> + <translation type="unfinished">kbps</translation> </message> <message> - <location filename="../detailsdialog.cpp" line="60"/> + <location filename="../mpcmetadatamodel.cpp" line="50"/> <source>File size</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../mpcmetadatamodel.cpp" line="50"/> + <source>KB</source> + <translation type="unfinished">KB</translation> + </message> </context> </TS> diff --git a/src/plugins/Input/mplayer/translations/mplayer_plugin_ru.ts b/src/plugins/Input/mplayer/translations/mplayer_plugin_ru.ts index 0fabd7c71..b4169c849 100644 --- a/src/plugins/Input/mplayer/translations/mplayer_plugin_ru.ts +++ b/src/plugins/Input/mplayer/translations/mplayer_plugin_ru.ts @@ -71,7 +71,7 @@ <message> <location filename="../detailsdialog.cpp" line="33"/> <source>KB</source> - <translation>Кб</translation> + <translation>КБ</translation> </message> <message> <location filename="../detailsdialog.ui" line="51"/> diff --git a/src/plugins/Input/vorbis/translations/vorbis_plugin_ru.ts b/src/plugins/Input/vorbis/translations/vorbis_plugin_ru.ts index c27ae7eef..a24ab44e1 100644 --- a/src/plugins/Input/vorbis/translations/vorbis_plugin_ru.ts +++ b/src/plugins/Input/vorbis/translations/vorbis_plugin_ru.ts @@ -74,7 +74,7 @@ <message> <location filename="../vorbismetadatamodel.cpp" line="53"/> <source>KB</source> - <translation>Кб</translation> + <translation>КБ</translation> </message> </context> </TS> |
