diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-08-08 18:44:28 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-08-08 18:44:28 +0000 |
| commit | 784841ed5063005e9029246075546102f4e71f47 (patch) | |
| tree | 1cd5d7ca0d4c45e86dde25b0befa48f02009f5fe /src/plugins/Input/mpc/detailsdialog.cpp | |
| parent | b4acea47086ea5c6b7853c462b33e204e1ee5510 (diff) | |
| download | qmmp-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.cpp | 101 |
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(); } |
