aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/mad
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Input/mad')
-rw-r--r--src/plugins/Input/mad/CMakeLists.txt7
-rw-r--r--src/plugins/Input/mad/coverwidget.cpp45
-rw-r--r--src/plugins/Input/mad/coverwidget.h50
-rw-r--r--src/plugins/Input/mad/decodermadfactory.cpp8
-rw-r--r--src/plugins/Input/mad/decodermadfactory.h4
-rw-r--r--src/plugins/Input/mad/detailsdialog.cpp391
-rw-r--r--src/plugins/Input/mad/detailsdialog.ui450
-rw-r--r--src/plugins/Input/mad/mad.pro83
-rw-r--r--src/plugins/Input/mad/mpegmetadatamodel.cpp325
-rw-r--r--src/plugins/Input/mad/mpegmetadatamodel.h (renamed from src/plugins/Input/mad/detailsdialog.h)63
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_cs.ts220
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_de.ts213
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_it.ts195
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_lt.ts199
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_pl.ts209
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_ru.ts215
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_tr.ts183
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts215
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts201
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts201
20 files changed, 854 insertions, 2623 deletions
diff --git a/src/plugins/Input/mad/CMakeLists.txt b/src/plugins/Input/mad/CMakeLists.txt
index bc08f3c74..174f4f696 100644
--- a/src/plugins/Input/mad/CMakeLists.txt
+++ b/src/plugins/Input/mad/CMakeLists.txt
@@ -35,19 +35,17 @@ link_directories(${MAD_LIBRARY_DIRS} ${TAGLIB_LIBRARY_DIRS})
SET(libmad_SRCS
decoder_mad.cpp
decodermadfactory.cpp
- detailsdialog.cpp
settingsdialog.cpp
tagextractor.cpp
- coverwidget.cpp
+ mpegmetadatamodel.cpp
)
SET(libmad_MOC_HDRS
settingsdialog.h
decodermadfactory.h
decoder_mad.h
- detailsdialog.h
tagextractor.h
- coverwidget.h
+ mpegmetadatamodel.h
)
SET(libmad_RCCS translations/translations.qrc)
@@ -60,7 +58,6 @@ QT4_WRAP_CPP(libmad_MOC_SRCS ${libmad_MOC_HDRS})
SET(libmad_UIS
- detailsdialog.ui
settingsdialog.ui
)
diff --git a/src/plugins/Input/mad/coverwidget.cpp b/src/plugins/Input/mad/coverwidget.cpp
deleted file mode 100644
index 6ce4eebc1..000000000
--- a/src/plugins/Input/mad/coverwidget.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/***************************************************************************
- * 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 <QPixmap>
-#include <QPainter>
-#include <QPaintEvent>
-
-#include "coverwidget.h"
-
-CoverWidget::CoverWidget(QWidget *parent)
- : QWidget(parent)
-{}
-
-CoverWidget::~CoverWidget()
-{}
-
-void CoverWidget::setPixmap(const QPixmap &pixmap)
-{
- m_pixmap = pixmap;
- update();
-}
-
-void CoverWidget::paintEvent (QPaintEvent *p)
-{
- QPainter paint(this);
- if(!m_pixmap.isNull())
- paint.drawPixmap(0,0, m_pixmap.scaled(p->rect().size()));
-}
-
diff --git a/src/plugins/Input/mad/coverwidget.h b/src/plugins/Input/mad/coverwidget.h
deleted file mode 100644
index b06e66f7e..000000000
--- a/src/plugins/Input/mad/coverwidget.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/***************************************************************************
- * 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 PIXMAPWIDGET_H
-#define PIXMAPWIDGET_H
-
-#include <QWidget>
-#include <QPixmap>
-
-/**
- @author Ilya Kotov <forkotov02@hotmail.ru>
-*/
-
-class CoverWidget : public QWidget
-{
-Q_OBJECT
-public:
- CoverWidget(QWidget *parent = 0);
-
- ~CoverWidget();
-
- virtual void setPixmap(const QPixmap&);
-
-protected:
- void paintEvent (QPaintEvent *event);
-
-private:
- QPixmap m_pixmap;
-
-
-
-};
-
-#endif
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp
index fd45987c7..d4d881cd8 100644
--- a/src/plugins/Input/mad/decodermadfactory.cpp
+++ b/src/plugins/Input/mad/decodermadfactory.cpp
@@ -31,7 +31,7 @@
#include <taglib/tfile.h>
#include <taglib/mpegfile.h>
-#include "detailsdialog.h"
+#include "mpegmetadatamodel.h"
#include "settingsdialog.h"
#include "decoder_mad.h"
#include "decodermadfactory.h"
@@ -207,11 +207,9 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo
return list;
}
-QObject* DecoderMADFactory::showDetails(QWidget *parent, const QString &path)
+MetaDataModel* DecoderMADFactory::createMetaDataModel(const QString &path, QObject *parent)
{
- DetailsDialog *d = new DetailsDialog(parent, path);
- d -> show();
- return d;
+ return new MPEGMetaDataModel(path, parent);
}
void DecoderMADFactory::showSettings(QWidget *parent)
diff --git a/src/plugins/Input/mad/decodermadfactory.h b/src/plugins/Input/mad/decodermadfactory.h
index c749cd86d..bd657514c 100644
--- a/src/plugins/Input/mad/decodermadfactory.h
+++ b/src/plugins/Input/mad/decodermadfactory.h
@@ -28,6 +28,7 @@
#include <qmmp/decoder.h>
#include <qmmp/output.h>
#include <qmmp/decoderfactory.h>
+#include <qmmp/metadatamodel.h>
@@ -43,9 +44,8 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
- //FileInfo *createFileInfo(const QString &source);
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/mad/detailsdialog.cpp b/src/plugins/Input/mad/detailsdialog.cpp
deleted file mode 100644
index b103b5c78..000000000
--- a/src/plugins/Input/mad/detailsdialog.cpp
+++ /dev/null
@@ -1,391 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2006-2009 by Ilya Kotov *
- * forkotov02@hotmail.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-#include <QTextCodec>
-#include <QSettings>
-#include <QDir>
-#include <QFile>
-#include <QFileInfo>
-
-#include <taglib/tag.h>
-#include <taglib/fileref.h>
-#include <taglib/id3v1tag.h>
-#include <taglib/id3v2tag.h>
-#include <taglib/apetag.h>
-#include <taglib/tfile.h>
-#include <taglib/mpegfile.h>
-#include <taglib/mpegheader.h>
-#include <taglib/mpegproperties.h>
-#include <taglib/textidentificationframe.h>
-
-#include <qmmp/decoder.h>
-#include <qmmp/qmmp.h>
-
-#include "detailsdialog.h"
-
-DetailsDialog::DetailsDialog(QWidget *parent, const QString &path)
- : QDialog(parent)
-{
- ui.setupUi(this);
- setAttribute(Qt::WA_DeleteOnClose);
- m_path = path;
- setWindowTitle (path.section('/',-1));
- ui.pathLineEdit->setText(m_path);
-
- if (!QFile::exists(m_path))
- return;
-
- QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- settings.beginGroup("MAD");
- m_codec_v1 =
- QTextCodec::codecForName(settings.value("ID3v1_encoding", "ISO-8859-1")
- .toByteArray ());
- m_codec_v2 =
- QTextCodec::codecForName(settings.value("ID3v2_encoding","UTF-8")
- .toByteArray ());
- if (!m_codec_v1)
- m_codec_v1 = QTextCodec::codecForName ("ISO-8859-1");
- if (!m_codec_v2)
- m_codec_v2 = QTextCodec::codecForName ("UTF-8");
-
- QString tag_name = settings.value("current_tag","ID3v2").toString ();
-
- if (tag_name == "ID3v1")
- ui.id3v1RadioButton->setChecked(TRUE);
- else if (tag_name == "ID3v2")
- ui.id3v2RadioButton->setChecked(TRUE);
- else if (tag_name == "APE")
- ui.apeRadioButton->setChecked(TRUE);
- else
- ui.id3v2RadioButton->setChecked(TRUE);
-
- settings.endGroup();
-
- loadMPEGInfo();
- QFileInfo info(m_path);
- m_rw = info.isWritable();
- loadTag();
- connect(ui.saveButton, SIGNAL(clicked()), SLOT(save()));
- connect(ui.createButton, SIGNAL(clicked()), SLOT(create()));
- connect(ui.deleteButton, SIGNAL(clicked()), SLOT(deleteTag()));
- connect(ui.id3v1RadioButton, SIGNAL(clicked()), SLOT(loadTag()));
- connect(ui.id3v2RadioButton, SIGNAL(clicked()), SLOT(loadTag()));
- connect(ui.apeRadioButton, SIGNAL(clicked()), SLOT(loadTag()));
- QPixmap pix = Decoder::findCover(m_path);
- if(pix.isNull())
- {
- ui.coverWidget->hide();
- qobject_cast <QBoxLayout *> (ui.groupBox->layout ())->setDirection(QBoxLayout::LeftToRight);
- }
- else
- ui.coverWidget->setPixmap(pix);
-}
-
-
-DetailsDialog::~DetailsDialog()
-{}
-
-void DetailsDialog::loadMPEGInfo()
-{
- TagLib::MPEG::File f (m_path.toLocal8Bit().constData());
- QString text;
- QString v;
- switch((int)f.audioProperties()->version())
- {
- case TagLib::MPEG::Header::Version1:
- v = "1";
- break;
- case TagLib::MPEG::Header::Version2:
- v = "2";
- break;
- case TagLib::MPEG::Header::Version2_5:
- v = "2.5";
- }
- QMap <QString, QString> ap;
- text = QString("MPEG-%1 layer %2").arg(v).arg(f.audioProperties()->layer());
- ap.insert(tr("Format"), text);
- text = QString("%1").arg(f.audioProperties()->bitrate());
- ap.insert(tr("Bitrate"), text+" "+tr("kbps"));
- text = QString("%1").arg(f.audioProperties()->sampleRate());
- ap.insert(tr("Samplerate"), text+" "+tr("Hz"));
- switch (f.audioProperties()->channelMode())
- {
- case TagLib::MPEG::Header::Stereo:
- ap.insert(tr("Mode"), "Stereo");
- break;
- case TagLib::MPEG::Header::JointStereo:
- ap.insert(tr("Mode"), "Joint stereo");
- break;
- case TagLib::MPEG::Header::DualChannel:
- ap.insert(tr("Mode"), "Dual channel");
- break;
- case TagLib::MPEG::Header::SingleChannel:
- ap.insert(tr("Mode"), "Single channel");
- break;
- }
- text = QString("%1 "+tr("KB")).arg(f.length()/1024);
- ap.insert(tr("File size"), text);
- if (f.audioProperties()->protectionEnabled())
- ap.insert(tr("Protection"), tr("Yes"));
- else
- ap.insert(tr("Protection"), tr("No"));
- if (f.audioProperties()->isCopyrighted())
- ap.insert(tr("Copyright"), tr("Yes"));
- else
- ap.insert(tr("Copyright"), tr("No"));
- if (f.audioProperties()->isOriginal())
- ap.insert(tr("Original"), tr("Yes"));
- else
- ap.insert(tr("Original"), tr("No"));
- showAudioProperties(ap);
-}
-
-void DetailsDialog::loadTag()
-{
- TagLib::MPEG::File f (m_path.toLocal8Bit().constData());
- QTextCodec *codec = QTextCodec::codecForName ("UTF-8");
- TagLib::Tag *tag = 0;
- TagLib::ID3v2::FrameListMap flm;
-
- if (selectedTag() == TagLib::MPEG::File::ID3v1)
- {
- tag = f.ID3v1Tag();
- codec = m_codec_v1;
- ui.tagGroupBox->setTitle(tr("ID3v1"));
- }
- else if (selectedTag() == TagLib::MPEG::File::ID3v2)
- {
- tag = f.ID3v2Tag();
- codec = m_codec_v2;
- ui.tagGroupBox->setTitle(tr("ID3v2"));
- if(tag)
- flm = f.ID3v2Tag()->frameListMap();
- }
- else if (selectedTag() == TagLib::MPEG::File::APE)
- {
- ui.tagGroupBox->setTitle(tr("APE"));
- tag = f.APETag();
- }
- ui.saveButton->setEnabled(tag && m_rw);
- ui.createButton->setEnabled(!tag && m_rw);
- ui.deleteButton->setEnabled(tag && m_rw);
- ui.tagGroupBox->setEnabled(tag);
- //clear old values
- ui.titleLineEdit->clear();
- ui.artistLineEdit->clear();
- ui.albumLineEdit->clear();
- ui.commentBrowser->clear();
- ui.yearSpinBox->clear();
- ui.trackSpinBox->setValue(0);
- ui.genreLineEdit->clear();
- ui.composerLineEdit->clear();
- ui.discSpinBox->setValue(0);
-
- if (tag)
- {
- bool utf = codec->name().contains("UTF");
- if (utf)
- codec = QTextCodec::codecForName ("UTF-8");
- TagLib::String title = tag->title();
- TagLib::String artist = tag->artist();
- TagLib::String album = tag->album();
- TagLib::String comment = tag->comment();
- TagLib::String genre = tag->genre();
- QString string = codec->toUnicode(title.toCString(utf)).trimmed();
- ui.titleLineEdit->setText(string);
- string = codec->toUnicode(artist.toCString(utf)).trimmed();
- ui.artistLineEdit->setText(string);
- string = codec->toUnicode(album.toCString(utf)).trimmed();
- ui.albumLineEdit->setText(string);
- string = codec->toUnicode(comment.toCString(utf)).trimmed();
- ui.commentBrowser->setText(string);
- ui.yearSpinBox->setValue(tag->year());
- ui.trackSpinBox->setValue(tag->track());
- string = codec->toUnicode(genre.toCString(utf)).trimmed();
- ui.genreLineEdit->setText(string);
- if(selectedTag() == TagLib::MPEG::File::ID3v2)
- {
- if(!flm["TCOM"].isEmpty())
- {
- string = codec->toUnicode(flm["TCOM"].front()->toString().toCString(utf)).trimmed();
- ui.composerLineEdit->setText(string);
- }
- if(!flm["TPOS"].isEmpty())
- {
- string = QString(flm["TPOS"].front()->toString().toCString(utf)).trimmed();
- ui.discSpinBox->setValue(string.toInt());
- }
- }
- }
-}
-
-void DetailsDialog::save()
-{
- TagLib::MPEG::File* f = new TagLib::MPEG::File(m_path.toLocal8Bit().constData());
- TagLib::String::Type type = TagLib::String::Latin1;
-
- QTextCodec *codec = 0;
- TagLib::Tag *tag = 0;
-
- if (selectedTag() == TagLib::MPEG::File::ID3v1)
- {
- codec = m_codec_v1;
- tag = f->ID3v1Tag(TRUE);
- if (codec->name().contains("UTF"))
- {
- delete f;
- loadTag();
- }
- }
- if (selectedTag() == TagLib::MPEG::File::ID3v2)
- {
- codec = m_codec_v2;
- tag = f->ID3v2Tag(TRUE);
-
- if (codec->name().contains("UTF"))
- {
- type = TagLib::String::UTF8;
- if (codec->name().contains("UTF-16"))
- type = TagLib::String::UTF16;
- else if (codec->name().contains("UTF-16LE"))
- type = TagLib::String::UTF16LE;
- else if (codec->name().contains("UTF-16BE"))
- type = TagLib::String::UTF16BE;
-
- codec = QTextCodec::codecForName ("UTF-8");
- TagLib::ID3v2::FrameFactory *factory = TagLib::ID3v2::FrameFactory::instance();
- factory->setDefaultTextEncoding(type);
- f->setID3v2FrameFactory(factory);
- type = TagLib::String::UTF8;
- }
- //set composer tag
- TagLib::String composer =
- TagLib::String(codec->fromUnicode(ui.composerLineEdit->text()).constData(), type);
- TagLib::ID3v2::Tag *id3v2_tag = dynamic_cast<TagLib::ID3v2::Tag *>(tag);
- if(ui.composerLineEdit->text().isEmpty())
- id3v2_tag->removeFrames("TCOM");
- else if(!id3v2_tag->frameListMap()["TCOM"].isEmpty())
- id3v2_tag->frameListMap()["TCOM"].front()->setText(composer);
- else
- {
- TagLib::ID3v2::TextIdentificationFrame *frame;
- frame = new TagLib::ID3v2::TextIdentificationFrame("TCOM", TagLib::String::Latin1);
- frame->setText(composer);
- id3v2_tag->addFrame(frame);
- }
- //set disc number
- TagLib::String discnumber =
- TagLib::String(QString("%1").arg(ui.discSpinBox->value()).toAscii().constData());
- if(ui.discSpinBox->value() == 0)
- id3v2_tag->removeFrames("TPOS");
- else if(!id3v2_tag->frameListMap()["TPOS"].isEmpty())
- id3v2_tag->frameListMap()["TPOS"].front()->setText(discnumber);
- else
- {
- TagLib::ID3v2::TextIdentificationFrame *frame;
- frame = new TagLib::ID3v2::TextIdentificationFrame("TPOS", TagLib::String::Latin1);
- frame->setText(discnumber);
- id3v2_tag->addFrame(frame);
- }
- }
- if (selectedTag() == TagLib::MPEG::File::APE)
- {
- codec = QTextCodec::codecForName ("UTF-8");
- tag = f->APETag(TRUE);
- type = TagLib::String::UTF8;
- }
-
- tag->setTitle(TagLib::String(codec->fromUnicode(ui.titleLineEdit->text()).constData(), type));
- tag->setArtist(TagLib::String(codec->fromUnicode(ui.artistLineEdit->text()).constData(), type));
- tag->setAlbum(TagLib::String(codec->fromUnicode(ui.albumLineEdit->text()).constData(), type));
- tag->setComment(TagLib::String(codec->fromUnicode(ui.commentBrowser->toPlainText ())
- .constData(), type));
- tag->setGenre(TagLib::String(codec->fromUnicode(ui.genreLineEdit->text()).constData(), type));
- tag->setYear(ui.yearSpinBox->value());
- tag->setTrack(ui.trackSpinBox->value());
-
- f->save(selectedTag(), FALSE);
- delete f;
- loadTag();
-}
-
-void DetailsDialog::create()
-{
- TagLib::MPEG::File *f = new TagLib::MPEG::File (m_path.toLocal8Bit().constData());
- TagLib::Tag *tag = 0;
- if (selectedTag() == TagLib::MPEG::File::ID3v1)
- tag = f->ID3v1Tag(TRUE);
- else if (selectedTag() == TagLib::MPEG::File::ID3v2)
- tag = f->ID3v2Tag(TRUE);
- else if (selectedTag() == TagLib::MPEG::File::APE)
- tag = f->APETag(TRUE);
-
- f->save(selectedTag(), FALSE);
- delete f;
- loadTag();
- ui.tagGroupBox->setEnabled(TRUE);
- ui.saveButton->setEnabled(m_rw);
-}
-
-void DetailsDialog::deleteTag()
-{
- TagLib::MPEG::File *f = new TagLib::MPEG::File (m_path.toLocal8Bit().constData());
- f->strip(selectedTag());
- delete f;
- loadTag();
-}
-
-uint DetailsDialog::selectedTag()
-{
- if (ui.id3v1RadioButton->isChecked())
- return TagLib::MPEG::File::ID3v1;
- else if (ui.id3v2RadioButton->isChecked())
- return TagLib::MPEG::File::ID3v2;
- else if (ui.apeRadioButton->isChecked())
- return TagLib::MPEG::File::APE;
- return TagLib::MPEG::File::ID3v2;
-}
-
-void DetailsDialog::closeEvent (QCloseEvent *)
-{
- QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- settings.beginGroup("MAD");
- if (ui.id3v1RadioButton->isChecked())
- settings.setValue("current_tag","ID3v1");
- else if (ui.id3v2RadioButton->isChecked())
- settings.setValue("current_tag","ID3v2");
- else if (ui.apeRadioButton->isChecked())
- settings.setValue("current_tag","APE");
- settings.endGroup();
-}
-
-void DetailsDialog::showAudioProperties(QMap <QString, QString> p)
-{
- QString formattedText;
- formattedText.append("<TABLE>");
- foreach(QString key, p.keys())
- {
- formattedText.append("<tr>");
- formattedText.append("<td>" + key + ":</td> <td style=\"padding-left: 5px; \"><b>"
- + p.value(key) + "</b></td>");
- formattedText.append("</tr>");
- }
- formattedText.append("</TABLE>");
- ui.propertiesLabel->setText(formattedText);
-}
diff --git a/src/plugins/Input/mad/detailsdialog.ui b/src/plugins/Input/mad/detailsdialog.ui
deleted file mode 100644
index 9d5775dd2..000000000
--- a/src/plugins/Input/mad/detailsdialog.ui
+++ /dev/null
@@ -1,450 +0,0 @@
-<ui version="4.0" >
- <class>DetailsDialog</class>
- <widget class="QDialog" name="DetailsDialog" >
- <property name="geometry" >
- <rect>
- <x>0</x>
- <y>0</y>
- <width>630</width>
- <height>383</height>
- </rect>
- </property>
- <property name="windowTitle" >
- <string>Details</string>
- </property>
- <layout class="QGridLayout" name="gridLayout" >
- <property name="leftMargin" >
- <number>6</number>
- </property>
- <property name="rightMargin" >
- <number>6</number>
- </property>
- <property name="bottomMargin" >
- <number>6</number>
- </property>
- <item row="0" column="0" colspan="6" >
- <widget class="QLineEdit" name="pathLineEdit" >
- <property name="readOnly" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item rowspan="2" row="1" column="0" >
- <layout class="QVBoxLayout" name="verticalLayout_2" >
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_3" >
- <property name="sizeConstraint" >
- <enum>QLayout::SetMinAndMaxSize</enum>
- </property>
- <item>
- <widget class="CoverWidget" native="1" name="coverWidget" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize" >
- <size>
- <width>110</width>
- <height>110</height>
- </size>
- </property>
- <property name="maximumSize" >
- <size>
- <width>110</width>
- <height>110</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title" >
- <string>Tags</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_3" >
- <item>
- <widget class="QRadioButton" name="id3v1RadioButton" >
- <property name="text" >
- <string>ID3v1</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="id3v2RadioButton" >
- <property name="text" >
- <string>ID3v2</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QRadioButton" name="apeRadioButton" >
- <property name="text" >
- <string>APE</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox_2" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize" >
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- <property name="title" >
- <string>Audio Properties</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout" >
- <item>
- <widget class="QLabel" name="propertiesLabel" >
- <property name="text" >
- <string>-</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </item>
- <item row="1" column="1" colspan="5" >
- <widget class="QGroupBox" name="tagGroupBox" >
- <property name="title" >
- <string>ID3v1</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_2" >
- <item row="0" column="0" >
- <widget class="QLabel" name="label_47" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Title:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="0" column="1" >
- <widget class="QLineEdit" name="titleLineEdit" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QLabel" name="label_43" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Artist:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="artistLineEdit" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item row="2" column="0" >
- <widget class="QLabel" name="label_45" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Album:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="2" column="1" >
- <widget class="QLineEdit" name="albumLineEdit" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string/>
- </property>
- </widget>
- </item>
- <item row="3" column="0" >
- <widget class="QLabel" name="label_8" >
- <property name="text" >
- <string>Composer:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1" >
- <widget class="QLineEdit" name="composerLineEdit" />
- </item>
- <item row="4" column="0" >
- <widget class="QLabel" name="label_46" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Genre:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="4" column="1" >
- <layout class="QHBoxLayout" name="horizontalLayout" >
- <item>
- <widget class="QLineEdit" name="genreLineEdit" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_11" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Disc number:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QSpinBox" name="discSpinBox" >
- <property name="specialValueText" >
- <string>?</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="5" column="0" >
- <widget class="QLabel" name="label_42" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Track:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="5" column="1" >
- <layout class="QHBoxLayout" name="horizontalLayout_2" >
- <item>
- <widget class="QSpinBox" name="trackSpinBox" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="specialValueText" >
- <string>?</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_44" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Year:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QSpinBox" name="yearSpinBox" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="specialValueText" >
- <string>?</string>
- </property>
- <property name="suffix" >
- <string/>
- </property>
- <property name="maximum" >
- <number>2012</number>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="6" column="0" >
- <widget class="QLabel" name="label_48" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>Comment:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item row="6" column="1" >
- <widget class="QTextBrowser" name="commentBrowser" >
- <property name="readOnly" >
- <bool>false</bool>
- </property>
- <property name="html" >
- <string>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
-p, li { white-space: pre-wrap; }
-&lt;/style>&lt;/head>&lt;body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;">
-&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;">&lt;/p>&lt;/body>&lt;/html></string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="2" column="1" >
- <spacer name="horizontalSpacer" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>192</width>
- <height>23</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="2" column="2" >
- <widget class="QPushButton" name="createButton" >
- <property name="text" >
- <string>Create</string>
- </property>
- </widget>
- </item>
- <item row="2" column="3" >
- <widget class="QPushButton" name="deleteButton" >
- <property name="text" >
- <string>Delete</string>
- </property>
- </widget>
- </item>
- <item row="2" column="4" >
- <widget class="QPushButton" name="saveButton" >
- <property name="text" >
- <string>Save</string>
- </property>
- </widget>
- </item>
- <item row="2" column="5" >
- <widget class="QPushButton" name="closeButton" >
- <property name="text" >
- <string>Close</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>CoverWidget</class>
- <extends>QWidget</extends>
- <header>coverwidget.h</header>
- <container>1</container>
- </customwidget>
- </customwidgets>
- <resources/>
- <connections>
- <connection>
- <sender>closeButton</sender>
- <signal>clicked()</signal>
- <receiver>DetailsDialog</receiver>
- <slot>close()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>546</x>
- <y>356</y>
- </hint>
- <hint type="destinationlabel" >
- <x>422</x>
- <y>357</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/src/plugins/Input/mad/mad.pro b/src/plugins/Input/mad/mad.pro
index b29f0c090..c77c0be5c 100644
--- a/src/plugins/Input/mad/mad.pro
+++ b/src/plugins/Input/mad/mad.pro
@@ -1,56 +1,49 @@
include(../../plugins.pri)
-
-
-FORMS += detailsdialog.ui \
- settingsdialog.ui
+FORMS += settingsdialog.ui
HEADERS += decodermadfactory.h \
- decoder_mad.h \
- detailsdialog.h \
- settingsdialog.h \
- tagextractor.h \
- coverwidget.h
+ decoder_mad.h \
+ settingsdialog.h \
+ tagextractor.h \
+ mpegmetadatamodel.h
SOURCES += decoder_mad.cpp \
- decodermadfactory.cpp \
- detailsdialog.cpp \
- settingsdialog.cpp \
- tagextractor.cpp \
- coverwidget.cpp
-
-TARGET =$$PLUGINS_PREFIX/Input/mad
-unix:QMAKE_CLEAN =$$PLUGINS_PREFIX/Input/libmad.so
-
-
-INCLUDEPATH += ../../../ ./
+ decodermadfactory.cpp \
+ settingsdialog.cpp \
+ tagextractor.cpp \
+ mpegmetadatamodel.cpp
+TARGET = $$PLUGINS_PREFIX/Input/mad
+unix:QMAKE_CLEAN = $$PLUGINS_PREFIX/Input/libmad.so
+INCLUDEPATH += ../../../ \
+ ./
win32:INCLUDEPATH += D:\MINGW\include\taglib
CONFIG += release \
-warn_on \
-plugin \
-link_pkgconfig
+ warn_on \
+ plugin \
+ link_pkgconfig
TEMPLATE = lib
unix:QMAKE_LIBDIR += ../../../../lib
win32:QMAKE_LIBDIR += ../../../../bin
-unix:LIBS += -lqmmp -lmad
-unix:PKGCONFIG += taglib mad
-
-win32:LIBS += -lqmmp0 -lmad -ltag.dll -ltag_c.dll
-
+unix:LIBS += -lqmmp \
+ -lmad
+unix:PKGCONFIG += taglib \
+ mad
+win32:LIBS += -lqmmp0 \
+ -lmad \
+ -ltag.dll \
+ -ltag_c.dll
TRANSLATIONS = translations/mad_plugin_ru.ts \
- translations/mad_plugin_uk_UA.ts \
- translations/mad_plugin_zh_CN.ts \
- translations/mad_plugin_zh_TW.ts \
- translations/mad_plugin_cs.ts \
- translations/mad_plugin_pl.ts \
- translations/mad_plugin_de.ts \
- translations/mad_plugin_it.ts \
- translations/mad_plugin_tr.ts \
- translations/mad_plugin_tr.ts \
- translations/mad_plugin_lt.ts
+ translations/mad_plugin_uk_UA.ts \
+ translations/mad_plugin_zh_CN.ts \
+ translations/mad_plugin_zh_TW.ts \
+ translations/mad_plugin_cs.ts \
+ translations/mad_plugin_pl.ts \
+ translations/mad_plugin_de.ts \
+ translations/mad_plugin_it.ts \
+ translations/mad_plugin_tr.ts \
+ translations/mad_plugin_tr.ts \
+ translations/mad_plugin_lt.ts
RESOURCES = translations/translations.qrc
-
-unix{
-isEmpty(LIB_DIR){
- LIB_DIR = /lib
-}
-target.path = $$LIB_DIR/qmmp/Input
-INSTALLS += target
+unix {
+ isEmpty(LIB_DIR):LIB_DIR = /lib
+ target.path = $$LIB_DIR/qmmp/Input
+ INSTALLS += target
}
diff --git a/src/plugins/Input/mad/mpegmetadatamodel.cpp b/src/plugins/Input/mad/mpegmetadatamodel.cpp
new file mode 100644
index 000000000..7880f64fb
--- /dev/null
+++ b/src/plugins/Input/mad/mpegmetadatamodel.cpp
@@ -0,0 +1,325 @@
+/***************************************************************************
+ * 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 <QSettings>
+
+#include <taglib/tag.h>
+#include <taglib/fileref.h>
+#include <taglib/id3v1tag.h>
+#include <taglib/id3v2tag.h>
+#include <taglib/apetag.h>
+#include <taglib/tfile.h>
+#include <taglib/mpegfile.h>
+#include <taglib/mpegheader.h>
+#include <taglib/mpegproperties.h>
+#include <taglib/textidentificationframe.h>
+
+#include "mpegmetadatamodel.h"
+
+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);
+}
+
+MPEGMetaDataModel::~MPEGMetaDataModel()
+{
+ while(!m_tags.isEmpty())
+ delete m_tags.takeFirst();
+}
+
+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())
+ {
+ case TagLib::MPEG::Header::Version1:
+ v = "1";
+ break;
+ case TagLib::MPEG::Header::Version2:
+ v = "2";
+ break;
+ case TagLib::MPEG::Header::Version2_5:
+ v = "2.5";
+ }
+ text = QString("MPEG-%1 layer %2").arg(v).arg(f.audioProperties()->layer());
+ ap.insert(tr("Format"), text);
+ text = QString("%1").arg(f.audioProperties()->bitrate());
+ ap.insert(tr("Bitrate"), text+" "+tr("kbps"));
+ text = QString("%1").arg(f.audioProperties()->sampleRate());
+ ap.insert(tr("Samplerate"), text+" "+tr("Hz"));
+ switch (f.audioProperties()->channelMode())
+ {
+ case TagLib::MPEG::Header::Stereo:
+ ap.insert(tr("Mode"), "Stereo");
+ break;
+ case TagLib::MPEG::Header::JointStereo:
+ ap.insert(tr("Mode"), "Joint stereo");
+ break;
+ case TagLib::MPEG::Header::DualChannel:
+ ap.insert(tr("Mode"), "Dual channel");
+ break;
+ case TagLib::MPEG::Header::SingleChannel:
+ ap.insert(tr("Mode"), "Single channel");
+ break;
+ }
+ text = QString("%1 "+tr("KB")).arg(f.length()/1024);
+ ap.insert(tr("File size"), text);
+ if (f.audioProperties()->protectionEnabled())
+ ap.insert(tr("Protection"), tr("Yes"));
+ else
+ ap.insert(tr("Protection"), tr("No"));
+ if (f.audioProperties()->isCopyrighted())
+ ap.insert(tr("Copyright"), tr("Yes"));
+ else
+ ap.insert(tr("Copyright"), tr("No"));
+ if (f.audioProperties()->isOriginal())
+ ap.insert(tr("Original"), tr("Yes"));
+ else
+ ap.insert(tr("Original"), tr("No"));
+ return ap;
+}
+
+QList<TagModel* > MPEGMetaDataModel::tags()
+{
+ return m_tags;
+}
+
+MpegFileTagModel::MpegFileTagModel(const QString &path, TagLib::MPEG::File::TagTypes tagType) : TagModel()
+{
+ m_tagType = tagType;
+ m_file = new TagLib::MPEG::File (path.toLocal8Bit().constData());
+ QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("MAD");
+ if (m_tagType == TagLib::MPEG::File::ID3v1)
+ {
+ m_tag = m_file->ID3v1Tag();
+ m_codec = QTextCodec::codecForName(settings.value("ID3v1_encoding", "ISO-8859-1").toByteArray ());
+ if (!m_codec)
+ QTextCodec::codecForName ("ISO-8859-1");
+ }
+ else if (m_tagType == TagLib::MPEG::File::ID3v2)
+ {
+ m_tag = m_file->ID3v2Tag();
+ m_codec = QTextCodec::codecForName(settings.value("ID3v1_encoding", "UTF-8").toByteArray ());
+ if (!m_codec)
+ QTextCodec::codecForName ("UTF-8");
+ }
+ else
+ {
+ m_tag = m_file->APETag();
+ m_codec = QTextCodec::codecForName ("UTF-8");
+ }
+ settings.endGroup();
+}
+
+MpegFileTagModel::~MpegFileTagModel()
+{
+ delete m_file;
+}
+
+const QString MpegFileTagModel::name()
+{
+ if (m_tagType == TagLib::MPEG::File::ID3v1)
+ return "ID3v1";
+ else if (m_tagType == TagLib::MPEG::File::ID3v2)
+ return "ID3v2";
+ return "APE";
+}
+
+QList<Qmmp::MetaData> MpegFileTagModel::keys()
+{
+ QList<Qmmp::MetaData> list = TagModel::keys();
+ if (m_tagType == TagLib::MPEG::File::ID3v2)
+ return list;
+ list.removeAll(Qmmp::COMPOSER);
+ list.removeAll(Qmmp::DISCNUMBER);
+ return list;
+}
+
+const QString MpegFileTagModel::value(Qmmp::MetaData key)
+{
+ QTextCodec *codec = m_codec;
+
+ if (m_tag)
+ {
+ bool utf = codec->name().contains("UTF");
+ if (utf)
+ codec = QTextCodec::codecForName ("UTF-8");
+
+ 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::COMPOSER:
+ if(m_tagType == TagLib::MPEG::File::ID3v2
+ && !m_file->ID3v2Tag()->frameListMap()["TCOM"].isEmpty())
+ str = m_file->ID3v2Tag()->frameListMap()["TCOM"].front()->toString();
+ break;
+ case Qmmp::YEAR:
+ return QString::number(m_tag->year());
+ case Qmmp::TRACK:
+ return QString::number(m_tag->track());
+ case Qmmp::DISCNUMBER:
+ if(m_tagType == TagLib::MPEG::File::ID3v2
+ && !m_file->ID3v2Tag()->frameListMap()["TPOS"].isEmpty())
+ str = m_file->ID3v2Tag()->frameListMap()["TPOS"].front()->toString();
+ }
+ return codec->toUnicode(str.toCString(utf)).trimmed();
+ }
+ return QString();
+}
+
+void MpegFileTagModel::setValue(Qmmp::MetaData key, const QString &value)
+{
+ if(!m_tag)
+ return;
+ TagLib::String::Type type = TagLib::String::Latin1;
+
+ if (m_tagType == TagLib::MPEG::File::ID3v1)
+ {
+ if(m_codec->name().contains("UTF")) //utf is unsupported
+ return;
+ }
+ else if (m_tagType == TagLib::MPEG::File::ID3v2)
+ {
+ if (m_codec->name().contains("UTF"))
+ {
+ type = TagLib::String::UTF8;
+ if (m_codec->name().contains("UTF-16"))
+ type = TagLib::String::UTF16;
+ else if (m_codec->name().contains("UTF-16LE"))
+ type = TagLib::String::UTF16LE;
+ else if (m_codec->name().contains("UTF-16BE"))
+ type = TagLib::String::UTF16BE;
+
+ m_codec = QTextCodec::codecForName ("UTF-8");
+ TagLib::ID3v2::FrameFactory *factory = TagLib::ID3v2::FrameFactory::instance();
+ factory->setDefaultTextEncoding(type);
+ m_file->setID3v2FrameFactory(factory);
+ type = TagLib::String::UTF8;
+ }
+ //save additional tags
+ TagLib::ByteVector id3v2_key;
+ if (key == Qmmp::COMPOSER)
+ id3v2_key = "TCOM"; //composer
+ else if (key == Qmmp::DISCNUMBER)
+ id3v2_key = "TPOS"; //disc number
+
+ if (!id3v2_key.isEmpty())
+ {
+ TagLib::String composer = TagLib::String(m_codec->fromUnicode(value).constData(), type);
+ TagLib::ID3v2::Tag *id3v2_tag = dynamic_cast<TagLib::ID3v2::Tag *>(m_tag);
+ if(value.isEmpty())
+ id3v2_tag->removeFrames(id3v2_key);
+ else if(!id3v2_tag->frameListMap()[id3v2_key].isEmpty())
+ id3v2_tag->frameListMap()[id3v2_key].front()->setText(composer);
+ else
+ {
+ TagLib::ID3v2::TextIdentificationFrame *frame;
+ frame = new TagLib::ID3v2::TextIdentificationFrame(id3v2_key, type);
+ frame->setText(composer);
+ id3v2_tag->addFrame(frame);
+ }
+ return;
+ }
+ }
+ else if(m_tagType == TagLib::MPEG::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 MpegFileTagModel::exists()
+{
+ return (m_tag != 0);
+}
+
+void MpegFileTagModel::create()
+{
+ if (m_tag)
+ return;
+ if (m_tagType == TagLib::MPEG::File::ID3v1)
+ m_tag = m_file->ID3v1Tag(TRUE);
+ else if (m_tagType == TagLib::MPEG::File::ID3v2)
+ m_tag = m_file->ID3v2Tag(TRUE);
+ else if (m_tagType == TagLib::MPEG::File::APE)
+ m_tag = m_file->APETag(TRUE);
+}
+
+void MpegFileTagModel::remove()
+{
+ m_tag = 0;
+}
+
+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/detailsdialog.h b/src/plugins/Input/mad/mpegmetadatamodel.h
index 7367cbf67..0b134fd3f 100644
--- a/src/plugins/Input/mad/detailsdialog.h
+++ b/src/plugins/Input/mad/mpegmetadatamodel.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2008 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,48 +17,47 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef DETAILSDIALOG_H
-#define DETAILSDIALOG_H
-#include <QDialog>
-#include <QList>
-#include <QMap>
+#ifndef MPEGMETADATAMODEL_H
+#define MPEGMETADATAMODEL_H
-#include "ui_detailsdialog.h"
-
-/**
- @author Ilya Kotov <forkotov02@hotmail.ru>
-*/
+#include <qmmp/metadatamodel.h>
+#include <taglib/mpegfile.h>
class QTextCodec;
-class DetailsDialog : public QDialog
+class MPEGMetaDataModel : public MetaDataModel
{
- Q_OBJECT
public:
- DetailsDialog(QWidget *parent = 0, const QString &path = 0);
-
- ~DetailsDialog();
+ MPEGMetaDataModel(const QString &path, QObject *parent);
+ ~MPEGMetaDataModel();
+ QHash<QString, QString> audioProperties();
+ QList<TagModel* > tags();
-protected:
- virtual void closeEvent (QCloseEvent *);
+private:
+ QString m_path;
+ QList<TagModel* > m_tags;
+};
-private slots:
- void save();
+class MpegFileTagModel : public TagModel
+{
+public:
+ MpegFileTagModel(const QString &path, TagLib::MPEG::File::TagTypes tagType);
+ ~MpegFileTagModel();
+ 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 deleteTag();
- void loadTag();
+ void remove();
+ void save();
private:
- void loadMPEGInfo();
- uint selectedTag();
- void showAudioProperties(QMap <QString, QString> p);
- Ui::DetailsDialog ui;
- QString m_path;
- QTextCodec *m_codec_v1;
- QTextCodec *m_codec_v2;
- bool m_rw;
-
+ QTextCodec *m_codec;
+ TagLib::MPEG::File *m_file;
+ TagLib::Tag *m_tag;
+ TagLib::MPEG::File::TagTypes m_tagType;
};
-#endif
+#endif // MPEGMETADATAMODEL_H
diff --git a/src/plugins/Input/mad/translations/mad_plugin_cs.ts b/src/plugins/Input/mad/translations/mad_plugin_cs.ts
index f2279648e..be0ed634a 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_cs.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_cs.ts
@@ -14,231 +14,107 @@
<translation>Soubory MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>O modulu MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Vstupní modul Qmmp MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>Zkompilováno s libmad verze:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autor: Ilja Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>Zdrojový kód je založen na projektu mq3</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="122"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
- <translation>Formát</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="124"/>
- <source>kbps</source>
- <translation>kbps</translation>
+ <translation type="unfinished">Formát</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="124"/>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
<source>Bitrate</source>
- <translation>Datový tok</translation>
+ <translation type="unfinished">Datový tok</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="126"/>
- <source>Hz</source>
- <translation>Hz</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
+ <translation type="unfinished">kbps</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="126"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
<source>Samplerate</source>
- <translation>Vzorkovací frekvence</translation>
+ <translation type="unfinished">Vzorkovací frekvence</translation>
+ </message>
+ <message>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
+ <translation type="unfinished">Hz</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="130"/>
- <location filename="../detailsdialog.cpp" line="133"/>
- <location filename="../detailsdialog.cpp" line="136"/>
- <location filename="../detailsdialog.cpp" line="139"/>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
<source>Mode</source>
- <translation>Režim</translation>
+ <translation type="unfinished">Režim</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="142"/>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
<source>KB</source>
- <translation>KB</translation>
+ <translation type="unfinished">KB</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="143"/>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
<source>File size</source>
- <translation>Velikost souboru</translation>
+ <translation type="unfinished">Velikost souboru</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="145"/>
- <location filename="../detailsdialog.cpp" line="149"/>
- <location filename="../detailsdialog.cpp" line="153"/>
- <source>Yes</source>
- <translation>Ano</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <source>Protection</source>
+ <translation type="unfinished">Ochrana</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="145"/>
- <location filename="../detailsdialog.cpp" line="147"/>
- <source>Protection</source>
- <translation>Ochrana</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
+ <translation type="unfinished">Ano</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="147"/>
- <location filename="../detailsdialog.cpp" line="151"/>
- <location filename="../detailsdialog.cpp" line="155"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>No</source>
- <translation>Ne</translation>
+ <translation type="unfinished">Ne</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="149"/>
- <location filename="../detailsdialog.cpp" line="151"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
<source>Copyright</source>
- <translation>Copyright</translation>
+ <translation type="unfinished">Copyright</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="153"/>
- <location filename="../detailsdialog.cpp" line="155"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>Original</source>
- <translation>Originál</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="13"/>
- <source>Details</source>
- <translation>Podrobnosti</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="120"/>
- <source>-</source>
- <translation>-</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="410"/>
- <source>Save</source>
- <translation>Uložit</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="319"/>
- <source>Year:</source>
- <translation>Rok:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="238"/>
- <source>Genre:</source>
- <translation>Žánr:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="70"/>
- <source>Tags</source>
- <translation>Tagy</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="114"/>
- <source>Audio Properties</source>
- <translation>Vlastnosti</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="222"/>
- <source>Composer:</source>
- <translation>Skladatel:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="266"/>
- <source>Disc number:</source>
- <translation>Číslo disku:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="273"/>
- <location filename="../detailsdialog.ui" line="306"/>
- <location filename="../detailsdialog.ui" line="335"/>
- <source>?</source>
- <translation>?</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="288"/>
- <source>Track:</source>
- <translation>Stopa:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="356"/>
- <source>Comment:</source>
- <translation>Komentář:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="199"/>
- <source>Album:</source>
- <translation>Album:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="173"/>
- <source>Artist:</source>
- <translation>Umělec:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="147"/>
- <source>Title:</source>
- <translation>Název:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="369"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="417"/>
- <source>Close</source>
- <translation>Zavřít</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="170"/>
- <location filename="../detailsdialog.ui" line="76"/>
- <location filename="../detailsdialog.ui" line="135"/>
- <source>ID3v1</source>
- <translation>ID3v1</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="176"/>
- <location filename="../detailsdialog.ui" line="83"/>
- <source>ID3v2</source>
- <translation>ID3v2</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="182"/>
- <location filename="../detailsdialog.ui" line="90"/>
- <source>APE</source>
- <translation>APE</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="396"/>
- <source>Create</source>
- <translation>Vytvořit</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="403"/>
- <source>Delete</source>
- <translation>Odstranit</translation>
+ <translation type="unfinished">Originál</translation>
</message>
</context>
<context>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_de.ts b/src/plugins/Input/mad/translations/mad_plugin_de.ts
index c4b39054a..49b3ac77d 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_de.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_de.ts
@@ -14,224 +14,107 @@
<translation>MPEG-Dateien</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>Über MPEG-Audio-Modul</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG-Audio-Modul</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>Kompiliert gegen libmad-Version:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autor: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>Quellcode basiert auf dem mq3-Projekt</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="115"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
- <translation>Format</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>kbps</source>
- <translation>kbps</translation>
+ <translation type="unfinished">Format</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
<source>Bitrate</source>
- <translation>Bitrate</translation>
+ <translation type="unfinished">Bitrate</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Hz</source>
- <translation>Hz</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
+ <translation type="unfinished">kbps</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
<source>Samplerate</source>
- <translation>Abtastrate</translation>
+ <translation type="unfinished">Abtastrate</translation>
+ </message>
+ <message>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
+ <translation type="unfinished">Hz</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="123"/>
- <location filename="../detailsdialog.cpp" line="126"/>
- <location filename="../detailsdialog.cpp" line="129"/>
- <location filename="../detailsdialog.cpp" line="132"/>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
<source>Mode</source>
- <translation>Modus</translation>
+ <translation type="unfinished">Modus</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="135"/>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
<source>KB</source>
- <translation>KB</translation>
+ <translation type="unfinished">KB</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="136"/>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
<source>File size</source>
- <translation>Dateigröße</translation>
+ <translation type="unfinished">Dateigröße</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="146"/>
- <source>Yes</source>
- <translation>Ja</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <source>Protection</source>
+ <translation type="unfinished">Geschützt</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="140"/>
- <source>Protection</source>
- <translation>Geschützt</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
+ <translation type="unfinished">Ja</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="140"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <location filename="../detailsdialog.cpp" line="148"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>No</source>
- <translation>Nein</translation>
+ <translation type="unfinished">Nein</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="144"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
<source>Copyright</source>
- <translation>Copyright</translation>
+ <translation type="unfinished">Copyright</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="146"/>
- <location filename="../detailsdialog.cpp" line="148"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>Original</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="345"/>
- <source>-</source>
- <translation>-</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="385"/>
- <source>Save</source>
- <translation>Speichern</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="263"/>
- <source>Year:</source>
- <translation>Jahr:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="182"/>
- <source>Genre:</source>
- <translation>Genre:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="49"/>
- <source>Tags</source>
- <translation>Tags</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="210"/>
- <source>Disc number:</source>
- <translation>CD-Nummer:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="166"/>
- <source>Composer:</source>
- <translation>Komponist:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="232"/>
- <source>Track:</source>
- <translation>Stück:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="300"/>
- <source>Comment:</source>
- <translation>Kommentar:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="143"/>
- <source>Album:</source>
- <translation>Album:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="117"/>
- <source>Artist:</source>
- <translation>Interpret:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="91"/>
- <source>Title:</source>
- <translation>Titel:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="14"/>
- <source>Details</source>
- <translation>Details</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="313"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="339"/>
- <source>Audio Properties</source>
- <translation>Audio-Eigenschaften</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="392"/>
- <source>Close</source>
- <translation>Schließen</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="163"/>
- <location filename="../detailsdialog.ui" line="55"/>
- <location filename="../detailsdialog.ui" line="79"/>
- <source>ID3v1</source>
- <translation>ID3v1</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="169"/>
- <location filename="../detailsdialog.ui" line="62"/>
- <source>ID3v2</source>
- <translation>ID3v2</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="175"/>
- <location filename="../detailsdialog.ui" line="69"/>
- <source>APE</source>
- <translation>APE</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="371"/>
- <source>Create</source>
- <translation>Erstellen</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="378"/>
- <source>Delete</source>
- <translation>Löschen</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_it.ts b/src/plugins/Input/mad/translations/mad_plugin_it.ts
index f5dbd9405..db8dfb39f 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_it.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_it.ts
@@ -14,221 +14,108 @@
<translation>Brani MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>Info sul modulo audio MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Modulo audio MPEG per Qmmp</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>Compilato con libmad-Version:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autore: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>Codice sorgente basato sul progetto mq3</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="115"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>kbps</source>
- <translation>kbps</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="117"/>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
<source>Bitrate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Hz</source>
- <translation>Hz</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
+ <translation type="unfinished">kbps</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
<source>Samplerate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="123"/>
- <location filename="../detailsdialog.cpp" line="126"/>
- <location filename="../detailsdialog.cpp" line="129"/>
- <location filename="../detailsdialog.cpp" line="132"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
+ <translation type="unfinished">Hz</translation>
+ </message>
+ <message>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
<source>Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="135"/>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
<source>KB</source>
- <translation>KB</translation>
+ <translation type="unfinished">KB</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="136"/>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
<source>File size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="146"/>
- <source>Yes</source>
- <translation>Sì</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="140"/>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
<source>Protection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="140"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <location filename="../detailsdialog.cpp" line="148"/>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
+ <translation type="unfinished">Sì</translation>
+ </message>
+ <message>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>No</source>
- <translation>No</translation>
+ <translation type="unfinished">No</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="144"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
<source>Copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="146"/>
- <location filename="../detailsdialog.cpp" line="148"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>Original</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../detailsdialog.ui" line="345"/>
- <source>-</source>
- <translation>-</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="385"/>
- <source>Save</source>
- <translation>Salva</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="263"/>
- <source>Year:</source>
- <translation>Anno:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="182"/>
- <source>Genre:</source>
- <translation>Genere:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="49"/>
- <source>Tags</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="210"/>
- <source>Disc number:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="166"/>
- <source>Composer:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="232"/>
- <source>Track:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="300"/>
- <source>Comment:</source>
- <translation>Commento:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="143"/>
- <source>Album:</source>
- <translation>Album:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="117"/>
- <source>Artist:</source>
- <translation>Interprete:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="91"/>
- <source>Title:</source>
- <translation>Titolo:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="14"/>
- <source>Details</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="313"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="339"/>
- <source>Audio Properties</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="392"/>
- <source>Close</source>
- <translation>Chiudi</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="163"/>
- <location filename="../detailsdialog.ui" line="55"/>
- <location filename="../detailsdialog.ui" line="79"/>
- <source>ID3v1</source>
- <translation>ID3v1</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="169"/>
- <location filename="../detailsdialog.ui" line="62"/>
- <source>ID3v2</source>
- <translation>ID3v2</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="175"/>
- <location filename="../detailsdialog.ui" line="69"/>
- <source>APE</source>
- <translation>APE</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="371"/>
- <source>Create</source>
- <translation>Crea</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="378"/>
- <source>Delete</source>
- <translation>Elimina</translation>
- </message>
</context>
<context>
<name>SettingsDialog</name>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_lt.ts b/src/plugins/Input/mad/translations/mad_plugin_lt.ts
index e6b8b7db8..13de2c57b 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_lt.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_lt.ts
@@ -14,221 +14,108 @@
<translation>MPEG bylos</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>Apie MPEG audio įskiepį</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG įskiepis</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>Sukurta libmad pagrindu:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Sukūrė: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>Išvesties kodas sukurtas mq3 pagrindu</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="115"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
<source>Bitrate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Hz</source>
- <translation>Hz</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
+ <translation type="unfinished">kbps</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
<source>Samplerate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="123"/>
- <location filename="../detailsdialog.cpp" line="126"/>
- <location filename="../detailsdialog.cpp" line="129"/>
- <location filename="../detailsdialog.cpp" line="132"/>
- <source>Mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="136"/>
- <source>File size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="146"/>
- <source>Yes</source>
- <translation>Taip</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="140"/>
- <source>Protection</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="140"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>No</source>
- <translation>Ne</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <source>Copyright</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="146"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>Original</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="385"/>
- <source>Save</source>
- <translation>Išsaugoti</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="263"/>
- <source>Year:</source>
- <translation>Metai:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="14"/>
- <source>Details</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="182"/>
- <source>Genre:</source>
- <translation>Žanras:</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
+ <translation type="unfinished">Hz</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="49"/>
- <source>Tags</source>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
+ <source>Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="300"/>
- <source>Comment:</source>
- <translation>Komentaras:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="143"/>
- <source>Album:</source>
- <translation>Albumas:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="117"/>
- <source>Artist:</source>
- <translation>Atlikėjas:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="91"/>
- <source>Title:</source>
- <translation>Pavadinimas:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="392"/>
- <source>Close</source>
- <translation>Užverti</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="345"/>
- <source>-</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="135"/>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
<source>KB</source>
- <translation>КB</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>kbps</source>
- <translation>kbps</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="163"/>
- <location filename="../detailsdialog.ui" line="55"/>
- <location filename="../detailsdialog.ui" line="79"/>
- <source>ID3v1</source>
- <translation type="unfinished">ID3v1</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="169"/>
- <location filename="../detailsdialog.ui" line="62"/>
- <source>ID3v2</source>
- <translation type="unfinished">ID3v2</translation>
+ <translation type="unfinished">КB</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="175"/>
- <location filename="../detailsdialog.ui" line="69"/>
- <source>APE</source>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
+ <source>File size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="210"/>
- <source>Disc number:</source>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <source>Protection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="166"/>
- <source>Composer:</source>
- <translation type="unfinished"></translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
+ <translation type="unfinished">Taip</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="232"/>
- <source>Track:</source>
- <translation type="unfinished"></translation>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>No</source>
+ <translation type="unfinished">Ne</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="313"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <source>Copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="339"/>
- <source>Audio Properties</source>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>Original</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../detailsdialog.ui" line="371"/>
- <source>Create</source>
- <translation>sukurti</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="378"/>
- <source>Delete</source>
- <translation>Ištrinti</translation>
- </message>
</context>
<context>
<name>SettingsDialog</name>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_pl.ts b/src/plugins/Input/mad/translations/mad_plugin_pl.ts
index 24369cb28..8cddd1647 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_pl.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_pl.ts
@@ -14,220 +14,107 @@
<translation>Pliki MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>O wtyczce Audio MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Wtyczka MPEG Audio dla Qmmp</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>Skompilowane przy użyciu biblioteki libmad w wersji:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autor: Ilja Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>Kod źródłowy oparty na projekcie mq3</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="115"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
- <translation>Format</translation>
+ <translation type="unfinished">Format</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>kbps</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="117"/>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
<source>Bitrate</source>
- <translation>Szybkość transmisji</translation>
+ <translation type="unfinished">Szybkość transmisji</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Hz</source>
- <translation></translation>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
<source>Samplerate</source>
- <translation>Próbkowanie</translation>
+ <translation type="unfinished">Próbkowanie</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="123"/>
- <location filename="../detailsdialog.cpp" line="126"/>
- <location filename="../detailsdialog.cpp" line="129"/>
- <location filename="../detailsdialog.cpp" line="132"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
<source>Mode</source>
- <translation>Tryb</translation>
+ <translation type="unfinished">Tryb</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="135"/>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
<source>KB</source>
- <translation></translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="136"/>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
<source>File size</source>
- <translation>Wielkość pliku</translation>
+ <translation type="unfinished">Wielkość pliku</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="146"/>
- <source>Yes</source>
- <translation>Tak</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <source>Protection</source>
+ <translation type="unfinished">Zabezpieczenie</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="140"/>
- <source>Protection</source>
- <translation>Zabezpieczenie</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
+ <translation type="unfinished">Tak</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="140"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <location filename="../detailsdialog.cpp" line="148"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>No</source>
- <translation>Nie</translation>
+ <translation type="unfinished">Nie</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="144"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
<source>Copyright</source>
- <translation>Prawa autorskie</translation>
+ <translation type="unfinished">Prawa autorskie</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="146"/>
- <location filename="../detailsdialog.cpp" line="148"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>Original</source>
- <translation>Oryginał</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="163"/>
- <location filename="../detailsdialog.ui" line="55"/>
- <location filename="../detailsdialog.ui" line="79"/>
- <source>ID3v1</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="169"/>
- <location filename="../detailsdialog.ui" line="62"/>
- <source>ID3v2</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="175"/>
- <location filename="../detailsdialog.ui" line="69"/>
- <source>APE</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="345"/>
- <source>-</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="91"/>
- <source>Title:</source>
- <translation>Tytuł:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="14"/>
- <source>Details</source>
- <translation>Informacje o pliku</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="117"/>
- <source>Artist:</source>
- <translation>Artysta:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="143"/>
- <source>Album:</source>
- <translation>Album:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="300"/>
- <source>Comment:</source>
- <translation>Komentarz:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="263"/>
- <source>Year:</source>
- <translation>Rok:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="49"/>
- <source>Tags</source>
- <translation>Tagi</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="210"/>
- <source>Disc number:</source>
- <translation>Numer albumu:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="166"/>
- <source>Composer:</source>
- <translation>Kompozytor:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="182"/>
- <source>Genre:</source>
- <translation>Gatunek:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="232"/>
- <source>Track:</source>
- <translation>Numer utworu:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="313"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="339"/>
- <source>Audio Properties</source>
- <translation>Właściwości Audio</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="371"/>
- <source>Create</source>
- <translation>Utwórz</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="378"/>
- <source>Delete</source>
- <translation>Usuń</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="385"/>
- <source>Save</source>
- <translation>Zapisz</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="392"/>
- <source>Close</source>
- <translation>Zamknij</translation>
+ <translation type="unfinished">Oryginał</translation>
</message>
</context>
<context>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_ru.ts b/src/plugins/Input/mad/translations/mad_plugin_ru.ts
index 39976d1e8..6f337c558 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_ru.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_ru.ts
@@ -14,220 +14,107 @@
<translation>Файлы MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>Об аудио-модуле MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Аудио-модуль MPEG для Qmmp</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>Собрано с версией libmad:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Разработчик: Илья Котов &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>Исходный код основан на проекте mq3</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="115"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
- <translation>Формат</translation>
+ <translation type="unfinished">Формат</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
<source>Bitrate</source>
- <translation>Битовая частота</translation>
+ <translation type="unfinished">Битовая частота</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Hz</source>
- <translation>Гц</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
+ <translation type="unfinished">Кб/с</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
<source>Samplerate</source>
- <translation>Дискретизация</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="123"/>
- <location filename="../detailsdialog.cpp" line="126"/>
- <location filename="../detailsdialog.cpp" line="129"/>
- <location filename="../detailsdialog.cpp" line="132"/>
- <source>Mode</source>
- <translation>Режим</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="136"/>
- <source>File size</source>
- <translation>Размер файла</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="146"/>
- <source>Yes</source>
- <translation>Есть</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="140"/>
- <source>Protection</source>
- <translation>Защита</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="140"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>No</source>
- <translation>Нет</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <source>Copyright</source>
- <translation>Авторские права</translation>
+ <translation type="unfinished">Дискретизация</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="146"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>Original</source>
- <translation>Оригинальный</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="385"/>
- <source>Save</source>
- <translation>Сохранить</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="263"/>
- <source>Year:</source>
- <translation>Год:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="182"/>
- <source>Genre:</source>
- <translation>Жанр:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="49"/>
- <source>Tags</source>
- <translation>Теги</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="210"/>
- <source>Disc number:</source>
- <translation>Номер диска:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="166"/>
- <source>Composer:</source>
- <translation>Композитор:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="232"/>
- <source>Track:</source>
- <translation>Трек:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="300"/>
- <source>Comment:</source>
- <translation>Комментарий:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="143"/>
- <source>Album:</source>
- <translation>Альбом:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="117"/>
- <source>Artist:</source>
- <translation>Исполнитель:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="91"/>
- <source>Title:</source>
- <translation>Название:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="14"/>
- <source>Details</source>
- <translation>Иформация</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="313"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="339"/>
- <source>Audio Properties</source>
- <translation>Свойства аудио</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="392"/>
- <source>Close</source>
- <translation>Закрыть</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
+ <translation type="unfinished">Гц</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="345"/>
- <source>-</source>
- <translation></translation>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
+ <source>Mode</source>
+ <translation type="unfinished">Режим</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="135"/>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
<source>KB</source>
- <translation>Кб</translation>
+ <translation type="unfinished">Кб</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>kbps</source>
- <translation>Кб/с</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
+ <source>File size</source>
+ <translation type="unfinished">Размер файла</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="163"/>
- <location filename="../detailsdialog.ui" line="55"/>
- <location filename="../detailsdialog.ui" line="79"/>
- <source>ID3v1</source>
- <translation>ID3v1</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <source>Protection</source>
+ <translation type="unfinished">Защита</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="169"/>
- <location filename="../detailsdialog.ui" line="62"/>
- <source>ID3v2</source>
- <translation>ID3v2</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
+ <translation type="unfinished">Есть</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="175"/>
- <location filename="../detailsdialog.ui" line="69"/>
- <source>APE</source>
- <translation>APE</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>No</source>
+ <translation type="unfinished">Нет</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="371"/>
- <source>Create</source>
- <translation>Создать</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <source>Copyright</source>
+ <translation type="unfinished">Авторские права</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="378"/>
- <source>Delete</source>
- <translation>Удалить</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>Original</source>
+ <translation type="unfinished">Оригинальный</translation>
</message>
</context>
<context>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_tr.ts b/src/plugins/Input/mad/translations/mad_plugin_tr.ts
index b6cb95e35..6678b4675 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_tr.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_tr.ts
@@ -14,221 +14,108 @@
<translation>MPEG Dosyaları</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>MPEG Ses Eklentisi Hakkında</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG Ses Eklentisi</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>Derlendiği libmad sürümü:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Yazan: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>Kaynak kodu mq3 projesi temellidir</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="115"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>kbps</source>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>Bitrate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>Bitrate</source>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Hz</source>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Samplerate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Samplerate</source>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="123"/>
- <location filename="../detailsdialog.cpp" line="126"/>
- <location filename="../detailsdialog.cpp" line="129"/>
- <location filename="../detailsdialog.cpp" line="132"/>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
<source>Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="135"/>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="136"/>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
<source>File size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="146"/>
- <source>Yes</source>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <source>Protection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="140"/>
- <source>Protection</source>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="140"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <location filename="../detailsdialog.cpp" line="148"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="144"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
<source>Copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="146"/>
- <location filename="../detailsdialog.cpp" line="148"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
<source>Original</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../detailsdialog.cpp" line="163"/>
- <location filename="../detailsdialog.ui" line="55"/>
- <location filename="../detailsdialog.ui" line="79"/>
- <source>ID3v1</source>
- <translation type="unfinished">ID3v1</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="169"/>
- <location filename="../detailsdialog.ui" line="62"/>
- <source>ID3v2</source>
- <translation type="unfinished">ID3v2</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="175"/>
- <location filename="../detailsdialog.ui" line="69"/>
- <source>APE</source>
- <translation type="unfinished">APE</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="345"/>
- <source>-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="91"/>
- <source>Title:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="14"/>
- <source>Details</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="117"/>
- <source>Artist:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="143"/>
- <source>Album:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="300"/>
- <source>Comment:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="263"/>
- <source>Year:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="49"/>
- <source>Tags</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="210"/>
- <source>Disc number:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="166"/>
- <source>Composer:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="182"/>
- <source>Genre:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="232"/>
- <source>Track:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="313"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="339"/>
- <source>Audio Properties</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="371"/>
- <source>Create</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="378"/>
- <source>Delete</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="385"/>
- <source>Save</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="392"/>
- <source>Close</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>SettingsDialog</name>
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 a0cbbc579..de32bc3e3 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts
@@ -14,220 +14,107 @@
<translation>Файли MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>Про аудіо-модуль MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Аудіо-модуль MPEG для Qmmp</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>Зібрано з версією libmad:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Розробник: Ілля Котов &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>Вихідний код базується на проекті mq3</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="115"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
- <translation>Формат</translation>
+ <translation type="unfinished">Формат</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
<source>Bitrate</source>
- <translation>Бітрейт</translation>
+ <translation type="unfinished">Бітрейт</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Hz</source>
- <translation>Гц</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
+ <translation type="unfinished">Кб/с</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
<source>Samplerate</source>
- <translation>Частота</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="123"/>
- <location filename="../detailsdialog.cpp" line="126"/>
- <location filename="../detailsdialog.cpp" line="129"/>
- <location filename="../detailsdialog.cpp" line="132"/>
- <source>Mode</source>
- <translation>Режим</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="136"/>
- <source>File size</source>
- <translation>Розмір файла</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="146"/>
- <source>Yes</source>
- <translation>Так</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="140"/>
- <source>Protection</source>
- <translation>Захищено</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="140"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>No</source>
- <translation>Ні</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <source>Copyright</source>
- <translation>Авторське право</translation>
+ <translation type="unfinished">Частота</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="146"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>Original</source>
- <translation>Оригінал</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="385"/>
- <source>Save</source>
- <translation>Зберегти</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="263"/>
- <source>Year:</source>
- <translation>Рік:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="182"/>
- <source>Genre:</source>
- <translation>Жанр:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="49"/>
- <source>Tags</source>
- <translation>Теги</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="210"/>
- <source>Disc number:</source>
- <translation>Номер диска:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="166"/>
- <source>Composer:</source>
- <translation>Композитор:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="232"/>
- <source>Track:</source>
- <translation>Доріжка:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="300"/>
- <source>Comment:</source>
- <translation>Коментар:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="143"/>
- <source>Album:</source>
- <translation>Альбом:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="117"/>
- <source>Artist:</source>
- <translation>Виконавець:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="91"/>
- <source>Title:</source>
- <translation>Назва:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="14"/>
- <source>Details</source>
- <translation>Інформація</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="313"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="339"/>
- <source>Audio Properties</source>
- <translation>Властивості аудіо</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="392"/>
- <source>Close</source>
- <translation>Закрити</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
+ <translation type="unfinished">Гц</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="345"/>
- <source>-</source>
- <translation>-</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
+ <source>Mode</source>
+ <translation type="unfinished">Режим</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="135"/>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
<source>KB</source>
- <translation>Кб</translation>
+ <translation type="unfinished">Кб</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>kbps</source>
- <translation>Кб/с</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
+ <source>File size</source>
+ <translation type="unfinished">Розмір файла</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="163"/>
- <location filename="../detailsdialog.ui" line="55"/>
- <location filename="../detailsdialog.ui" line="79"/>
- <source>ID3v1</source>
- <translation>ID3v1</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <source>Protection</source>
+ <translation type="unfinished">Захищено</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="169"/>
- <location filename="../detailsdialog.ui" line="62"/>
- <source>ID3v2</source>
- <translation>ID3v2</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
+ <translation type="unfinished">Так</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="175"/>
- <location filename="../detailsdialog.ui" line="69"/>
- <source>APE</source>
- <translation>APE</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>No</source>
+ <translation type="unfinished">Ні</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="371"/>
- <source>Create</source>
- <translation>Створити</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <source>Copyright</source>
+ <translation type="unfinished">Авторське право</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="378"/>
- <source>Delete</source>
- <translation>Видалити</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>Original</source>
+ <translation type="unfinished">Оригінал</translation>
</message>
</context>
<context>
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 0115b47f4..f25bbaf63 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts
@@ -14,221 +14,108 @@
<translation>MPEG 文件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>关于 MPEG 音频插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG 音频插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>编译基于 libmad 的版本:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>源代码基于 mq3 项目</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="115"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
<source>Bitrate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Hz</source>
- <translation>Hz</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
+ <translation type="unfinished">kbps</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
<source>Samplerate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="123"/>
- <location filename="../detailsdialog.cpp" line="126"/>
- <location filename="../detailsdialog.cpp" line="129"/>
- <location filename="../detailsdialog.cpp" line="132"/>
- <source>Mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="136"/>
- <source>File size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="146"/>
- <source>Yes</source>
- <translation>是</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="140"/>
- <source>Protection</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="140"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>No</source>
- <translation>否</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <source>Copyright</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="146"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>Original</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="385"/>
- <source>Save</source>
- <translation>保存</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="263"/>
- <source>Year:</source>
- <translation>年代:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="182"/>
- <source>Genre:</source>
- <translation>流派:</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
+ <translation type="unfinished">Hz</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="49"/>
- <source>Tags</source>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
+ <source>Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="210"/>
- <source>Disc number:</source>
- <translation type="unfinished"></translation>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
+ <source>KB</source>
+ <translation type="unfinished">KB</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="166"/>
- <source>Composer:</source>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
+ <source>File size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="232"/>
- <source>Track:</source>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <source>Protection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="300"/>
- <source>Comment:</source>
- <translation>备注:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="143"/>
- <source>Album:</source>
- <translation>专辑:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="117"/>
- <source>Artist:</source>
- <translation>艺术家:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="91"/>
- <source>Title:</source>
- <translation>标题:</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
+ <translation type="unfinished">是</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="14"/>
- <source>Details</source>
- <translation type="unfinished"></translation>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>No</source>
+ <translation type="unfinished">否</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="313"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <source>Copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="339"/>
- <source>Audio Properties</source>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>Original</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../detailsdialog.ui" line="392"/>
- <source>Close</source>
- <translation>关闭</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="345"/>
- <source>-</source>
- <translation>-</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="135"/>
- <source>KB</source>
- <translation>KB</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>kbps</source>
- <translation>kbps</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="163"/>
- <location filename="../detailsdialog.ui" line="55"/>
- <location filename="../detailsdialog.ui" line="79"/>
- <source>ID3v1</source>
- <translation>ID3v1</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="169"/>
- <location filename="../detailsdialog.ui" line="62"/>
- <source>ID3v2</source>
- <translation>ID3v2</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="175"/>
- <location filename="../detailsdialog.ui" line="69"/>
- <source>APE</source>
- <translation>APE</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="371"/>
- <source>Create</source>
- <translation>创建</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="378"/>
- <source>Delete</source>
- <translation>删除</translation>
- </message>
</context>
<context>
<name>SettingsDialog</name>
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 fcb947694..67f9691f0 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts
@@ -14,221 +14,108 @@
<translation>MPEG 檔案</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="223"/>
<source>About MPEG Audio Plugin</source>
<translation>關於 MPEG 聲訊插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="226"/>
+ <location filename="../decodermadfactory.cpp" line="224"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG 聲訊插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="227"/>
+ <location filename="../decodermadfactory.cpp" line="225"/>
<source>Compiled against libmad version:</source>
<translation>編譯基於 libmad 的版本:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="231"/>
+ <location filename="../decodermadfactory.cpp" line="229"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="232"/>
+ <location filename="../decodermadfactory.cpp" line="230"/>
<source>Source code based on mq3 progect</source>
<translation>源碼基於 mq3 項目</translation>
</message>
</context>
<context>
- <name>DetailsDialog</name>
+ <name>MPEGMetaDataModel</name>
<message>
- <location filename="../detailsdialog.cpp" line="115"/>
+ <location filename="../mpegmetadatamodel.cpp" line="69"/>
<source>Format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="117"/>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
<source>Bitrate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
- <source>Hz</source>
- <translation>Hz</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="71"/>
+ <source>kbps</source>
+ <translation type="unfinished">kbps</translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="119"/>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
<source>Samplerate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.cpp" line="123"/>
- <location filename="../detailsdialog.cpp" line="126"/>
- <location filename="../detailsdialog.cpp" line="129"/>
- <location filename="../detailsdialog.cpp" line="132"/>
- <source>Mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="136"/>
- <source>File size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="146"/>
- <source>Yes</source>
- <translation>是</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="138"/>
- <location filename="../detailsdialog.cpp" line="140"/>
- <source>Protection</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="140"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>No</source>
- <translation>否</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="142"/>
- <location filename="../detailsdialog.cpp" line="144"/>
- <source>Copyright</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="146"/>
- <location filename="../detailsdialog.cpp" line="148"/>
- <source>Original</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="385"/>
- <source>Save</source>
- <translation>儲存</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="263"/>
- <source>Year:</source>
- <translation>年代:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="182"/>
- <source>Genre:</source>
- <translation>流派:</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="73"/>
+ <source>Hz</source>
+ <translation type="unfinished">Hz</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="49"/>
- <source>Tags</source>
+ <location filename="../mpegmetadatamodel.cpp" line="77"/>
+ <location filename="../mpegmetadatamodel.cpp" line="80"/>
+ <location filename="../mpegmetadatamodel.cpp" line="83"/>
+ <location filename="../mpegmetadatamodel.cpp" line="86"/>
+ <source>Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="210"/>
- <source>Disc number:</source>
- <translation type="unfinished"></translation>
+ <location filename="../mpegmetadatamodel.cpp" line="89"/>
+ <source>KB</source>
+ <translation type="unfinished">KB</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="166"/>
- <source>Composer:</source>
+ <location filename="../mpegmetadatamodel.cpp" line="90"/>
+ <source>File size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="232"/>
- <source>Track:</source>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <source>Protection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="300"/>
- <source>Comment:</source>
- <translation>備註:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="143"/>
- <source>Album:</source>
- <translation>專輯:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="117"/>
- <source>Artist:</source>
- <translation>藝術家:</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="91"/>
- <source>Title:</source>
- <translation>標題:</translation>
+ <location filename="../mpegmetadatamodel.cpp" line="92"/>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <source>Yes</source>
+ <translation type="unfinished">是</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="14"/>
- <source>Details</source>
- <translation type="unfinished"></translation>
+ <location filename="../mpegmetadatamodel.cpp" line="94"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>No</source>
+ <translation type="unfinished">否</translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="313"/>
- <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
-&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
-p, li { white-space: pre-wrap; }
-&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Arial&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <location filename="../mpegmetadatamodel.cpp" line="96"/>
+ <location filename="../mpegmetadatamodel.cpp" line="98"/>
+ <source>Copyright</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../detailsdialog.ui" line="339"/>
- <source>Audio Properties</source>
+ <location filename="../mpegmetadatamodel.cpp" line="100"/>
+ <location filename="../mpegmetadatamodel.cpp" line="102"/>
+ <source>Original</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../detailsdialog.ui" line="392"/>
- <source>Close</source>
- <translation>關閉</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="345"/>
- <source>-</source>
- <translation>-</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="135"/>
- <source>KB</source>
- <translation>KB</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="117"/>
- <source>kbps</source>
- <translation>kbps</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="163"/>
- <location filename="../detailsdialog.ui" line="55"/>
- <location filename="../detailsdialog.ui" line="79"/>
- <source>ID3v1</source>
- <translation>ID3v1</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="169"/>
- <location filename="../detailsdialog.ui" line="62"/>
- <source>ID3v2</source>
- <translation>ID3v2</translation>
- </message>
- <message>
- <location filename="../detailsdialog.cpp" line="175"/>
- <location filename="../detailsdialog.ui" line="69"/>
- <source>APE</source>
- <translation>APE</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="371"/>
- <source>Create</source>
- <translation>建立</translation>
- </message>
- <message>
- <location filename="../detailsdialog.ui" line="378"/>
- <source>Delete</source>
- <translation>移除</translation>
- </message>
</context>
<context>
<name>SettingsDialog</name>