diff options
Diffstat (limited to 'src/plugins/Input/mad')
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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<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;"></p></body></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 <forkotov02@hotmail.ru></source> <translation>Autor: Ilja Kotov <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></source> - <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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 <forkotov02@hotmail.ru></source> <translation>Autor: Ilya Kotov <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></source> - <translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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 <forkotov02@hotmail.ru></source> <translation>Autore: Ilya Kotov <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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 <forkotov02@hotmail.ru></source> <translation>Sukūrė: Ilya Kotov <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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 <forkotov02@hotmail.ru></source> <translation>Autor: Ilja Kotov <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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 <forkotov02@hotmail.ru></source> <translation>Разработчик: Илья Котов <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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 <forkotov02@hotmail.ru></source> <translation>Yazan: Ilya Kotov <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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 <forkotov02@hotmail.ru></source> <translation>Розробник: Ілля Котов <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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 <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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 <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<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;"></p></body></html></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> |
