/*************************************************************************** * 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 #include #include #include #include #include #include #include #include "abstractplaylistitem.h" #include "tageditor.h" #include "detailsdialog.h" DetailsDialog::DetailsDialog(AbstractPlaylistItem *item, QWidget *parent) : QDialog(parent) { setAttribute(Qt::WA_QuitOnClose, FALSE); setAttribute(Qt::WA_DeleteOnClose, FALSE); m_metaDataModel = 0; m_item = item; ui.setupUi(this); setAttribute(Qt::WA_DeleteOnClose); m_path = item->url(); setWindowTitle (m_path.section('/',-1)); ui.pathEdit->setText(m_path); m_metaDataModel = MetaDataManager::instance()->createMetaDataModel(item->url(), this); if(m_metaDataModel) { foreach(TagModel *tagModel, m_metaDataModel->tags()) ui.tabWidget->addTab(new TagEditor(tagModel, this), tagModel->name()); foreach(QString title, m_metaDataModel->descriptions().keys()) { QTextEdit *textEdit = new QTextEdit(this); textEdit->setReadOnly(TRUE); textEdit->setPlainText(m_metaDataModel->descriptions().value(title)); ui.tabWidget->addTab(textEdit, title); } } printInfo(); } DetailsDialog::~DetailsDialog() {} void DetailsDialog::printInfo() { QList flist = MetaDataManager::instance()->createPlayList(m_path, TRUE); QMap metaData; if(!flist.isEmpty() && QFile::exists(m_item->url())) metaData = flist.at(0)->metaData(); else metaData = m_item->metaData(); QString formattedText; formattedText.append(""); //tags formattedText += formatRow(tr("Title"), metaData[Qmmp::TITLE]); formattedText += formatRow(tr("Artist"), metaData[Qmmp::ARTIST]); formattedText += formatRow(tr("Album"), metaData[Qmmp::ALBUM]); formattedText += formatRow(tr("Comment"), metaData[Qmmp::COMMENT]); formattedText += formatRow(tr("Genre"), metaData[Qmmp::GENRE]); formattedText += formatRow(tr("Composer"), metaData[Qmmp::COMPOSER]); if(metaData[Qmmp::YEAR] != "0") formattedText += formatRow(tr("Year"), metaData[Qmmp::YEAR]); if(metaData[Qmmp::TRACK] != "0") formattedText += formatRow(tr("Track"), metaData[Qmmp::TRACK]); if(metaData[Qmmp::DISCNUMBER] != "0") formattedText += formatRow(tr("Disc number"), metaData[Qmmp::DISCNUMBER]); //audio info if(!m_metaDataModel) { formattedText.append("
"); ui.textEdit->setHtml(formattedText); return; } QHash ap = m_metaDataModel->audioProperties(); //line if(formattedText.trimmed() != "") { formattedText.append(""); formattedText.append(""); formattedText.append(""); } foreach(QString key, ap.keys()) formattedText += formatRow(key, ap.value(key)); formattedText.append("
"); formattedText.append("
"); formattedText.append("
"); ui.textEdit->setHtml(formattedText); } QString DetailsDialog::formatRow(const QString key, const QString value) { if(value.isEmpty()) return QString(); QString str(""); str.append("" + key + " " + value + ""); str.append(""); return str; } void DetailsDialog::on_buttonBox_clicked(QAbstractButton *button) { if(ui.buttonBox->standardButton(button) == QDialogButtonBox::Save) { TagEditor *tab = qobject_cast (ui.tabWidget->currentWidget()); if(tab) tab->save(); } else reject(); }