aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/mpc/detailsdialog.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-08-08 18:44:28 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-08-08 18:44:28 +0000
commit784841ed5063005e9029246075546102f4e71f47 (patch)
tree1cd5d7ca0d4c45e86dde25b0befa48f02009f5fe /src/plugins/Input/mpc/detailsdialog.cpp
parentb4acea47086ea5c6b7853c462b33e204e1ee5510 (diff)
downloadqmmp-784841ed5063005e9029246075546102f4e71f47.tar.gz
qmmp-784841ed5063005e9029246075546102f4e71f47.tar.bz2
qmmp-784841ed5063005e9029246075546102f4e71f47.zip
mpc plugin: added composer tag support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1127 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/mpc/detailsdialog.cpp')
-rw-r--r--src/plugins/Input/mpc/detailsdialog.cpp101
1 files changed, 41 insertions, 60 deletions
diff --git a/src/plugins/Input/mpc/detailsdialog.cpp b/src/plugins/Input/mpc/detailsdialog.cpp
index 472046717..80a7fd108 100644
--- a/src/plugins/Input/mpc/detailsdialog.cpp
+++ b/src/plugins/Input/mpc/detailsdialog.cpp
@@ -20,6 +20,7 @@
#include <taglib/tag.h>
#include <taglib/fileref.h>
#include <taglib/mpcfile.h>
+#include <taglib/apetag.h>
#include <QFile>
#include <QFileInfo>
@@ -27,89 +28,69 @@
#include "detailsdialog.h"
#define QStringToTString_qt4(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8)
+#define TStringToQString_qt4(s) QString::fromUtf8(s.toCString(TRUE)).trimmed()
DetailsDialog::DetailsDialog(QWidget *parent, const QString &path)
- : QDialog(parent)
+ : AbstractDetailsDialog(parent)
{
- ui.setupUi(this);
- setAttribute(Qt::WA_DeleteOnClose);
m_path = path;
- setWindowTitle (path.section('/',-1));
- path.section('/',-1);
- ui.pathLineEdit->setText(m_path);
- if(QFile::exists(m_path))
+ if (QFile::exists(m_path))
{
loadMPCInfo();
- loadTag();
+ loadTags();
+ blockSaveButton(!QFileInfo(m_path).isWritable());
}
+ else
+ blockSaveButton();
}
-
DetailsDialog::~DetailsDialog()
{}
void DetailsDialog::loadMPCInfo()
{
TagLib::MPC::File f (m_path.toLocal8Bit());
- QString text;
- text = QString("%1").arg(f.audioProperties()->length()/60);
+ QMap <QString, QString> ap;
+ QString text = QString("%1").arg(f.audioProperties()->length()/60);
text +=":"+QString("%1").arg(f.audioProperties()->length()%60,2,10,QChar('0'));
- ui.lengthLabel->setText(text);
- text = QString("%1").arg(f.audioProperties()->sampleRate());
- ui.sampleRateLabel->setText(text+" "+tr("Hz"));
- text = QString("%1").arg(f.audioProperties()->channels());
- ui.channelsLabel->setText(text);
- text = QString("%1").arg(f.audioProperties()->bitrate());
- ui.bitrateLabel->setText(text+" "+tr("kbps"));
- text = QString("%1").arg(f.audioProperties()->mpcVersion());
- ui.versionLabel->setText(text);
- text = QString("%1 "+tr("KB")).arg(f.length()/1024);
- ui.fileSizeLabel->setText(text);
+ ap.insert(tr("Length"), text);
+ ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(f.audioProperties()->sampleRate()));
+ ap.insert(tr("Channels"), QString("%1").arg(f.audioProperties()->channels()));
+ ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(f.audioProperties()->bitrate()));
+ ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(f.length()/1024));
+ setAudioProperties(ap);
}
-void DetailsDialog::loadTag()
+void DetailsDialog::loadTags()
{
TagLib::FileRef f (m_path.toLocal8Bit());
-
- if (f.tag())
- { //TODO: load codec name from config
-
- TagLib::String title = f.tag()->title();
- TagLib::String artist = f.tag()->artist();
- TagLib::String album = f.tag()->album();
- TagLib::String comment = f.tag()->comment();
- TagLib::String genre = f.tag()->genre();
- QString string = QString::fromUtf8(title.toCString(TRUE)).trimmed();
- ui.titleLineEdit->setText(string);
- string = QString::fromUtf8(artist.toCString(TRUE)).trimmed();
- ui.artistLineEdit->setText(string);
- string = QString::fromUtf8(album.toCString(TRUE)).trimmed();
- ui.albumLineEdit->setText(string);
- string = QString::fromUtf8(comment.toCString(TRUE)).trimmed();
- ui.commentLineEdit->setText(string);
- string = QString("%1").arg(f.tag()->year());
- ui.yearLineEdit->setText(string);
- string = QString("%1").arg(f.tag()->track());
- ui.trackLineEdit->setText(string);
- string = QString::fromUtf8(genre.toCString(TRUE)).trimmed();
- ui.genreLineEdit->setText(string);
- }
- QFileInfo info(m_path);
- ui.saveButton->setEnabled(info.isWritable());
- connect(ui.saveButton, SIGNAL(clicked()), SLOT(saveTag()));
+ setMetaData(Qmmp::TITLE, TStringToQString_qt4(f.tag()->title()));
+ setMetaData(Qmmp::ARTIST, TStringToQString_qt4(f.tag()->artist()));
+ setMetaData(Qmmp::ALBUM, TStringToQString_qt4(f.tag()->album()));
+ setMetaData(Qmmp::COMMENT, TStringToQString_qt4(f.tag()->comment()));
+ setMetaData(Qmmp::GENRE, TStringToQString_qt4(f.tag()->genre()));
+ setMetaData(Qmmp::YEAR, f.tag()->year());
+ setMetaData(Qmmp::TRACK, f.tag()->track());
+ setMetaData(Qmmp::URL, m_path);
+ TagLib::MPC::File *file = dynamic_cast<TagLib::MPC::File *>(f.file());
+ TagLib::APE::Item fld;
+ if(file->APETag() && !(fld = file->APETag()->itemListMap()["COMPOSER"]).isEmpty())
+ setMetaData(Qmmp::COMPOSER, TStringToQString_qt4(fld.toString()));
}
-void DetailsDialog::saveTag()
+void DetailsDialog::writeTags()
{
TagLib::FileRef f (m_path.toLocal8Bit());
-
- f.tag()->setTitle(QStringToTString_qt4(ui.titleLineEdit->text()));
- f.tag()->setArtist(QStringToTString_qt4(ui.artistLineEdit->text()));
- f.tag()->setAlbum(QStringToTString_qt4(ui.albumLineEdit->text()));
- f.tag()->setComment(QStringToTString_qt4(ui.commentLineEdit->text()));
- f.tag()->setGenre(QStringToTString_qt4(ui.genreLineEdit->text()));
- f.tag()->setYear(ui.yearLineEdit->text().toUInt());
- f.tag()->setTrack(ui.trackLineEdit->text().toUInt());
-
+ f.tag()->setTitle(QStringToTString_qt4(strMetaData(Qmmp::TITLE)));
+ f.tag()->setArtist(QStringToTString_qt4(strMetaData(Qmmp::ARTIST)));
+ f.tag()->setAlbum(QStringToTString_qt4(strMetaData(Qmmp::ALBUM)));
+ f.tag()->setComment(QStringToTString_qt4(strMetaData(Qmmp::COMMENT)));
+ f.tag()->setGenre(QStringToTString_qt4(strMetaData(Qmmp::GENRE)));
+ f.tag()->setYear(intMetaData(Qmmp::YEAR));
+ f.tag()->setTrack(intMetaData(Qmmp::TRACK));
+ TagLib::MPC::File *file = dynamic_cast<TagLib::MPC::File *>(f.file());
+ strMetaData(Qmmp::COMPOSER).isEmpty() ?
+ file->APETag()->removeItem("COMPOSER"):
+ file->APETag()->addValue("COMPOSER", QStringToTString_qt4(strMetaData(Qmmp::COMPOSER)), TRUE);
f.save();
}