diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-09-03 05:26:51 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-09-03 05:26:51 +0000 |
| commit | d890b302f1ee3059a188c3e5e470c3ccd6f38b53 (patch) | |
| tree | 967c749816f0baac446e59d024bc7bf67981f9bc /src/qmmpui/detailsdialog.cpp | |
| parent | 193f06b98d83c83c17e9729476b8fcadead2a8a1 (diff) | |
| download | qmmp-d890b302f1ee3059a188c3e5e470c3ccd6f38b53.tar.gz qmmp-d890b302f1ee3059a188c3e5e470c3ccd6f38b53.tar.bz2 qmmp-d890b302f1ee3059a188c3e5e470c3ccd6f38b53.zip | |
improved details dialog (Closes issue 380)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3679 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/detailsdialog.cpp')
| -rw-r--r-- | src/qmmpui/detailsdialog.cpp | 115 |
1 files changed, 77 insertions, 38 deletions
diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp index 2b936bc0f..293b23bbd 100644 --- a/src/qmmpui/detailsdialog.cpp +++ b/src/qmmpui/detailsdialog.cpp @@ -36,34 +36,16 @@ DetailsDialog::DetailsDialog(QList<PlayListTrack *> tracks, QWidget *parent) : QDialog(parent) { m_ui = new Ui::DetailsDialog; - setAttribute(Qt::WA_QuitOnClose, false); - setAttribute(Qt::WA_DeleteOnClose, false); - m_metaDataModel = 0; - m_item = tracks.at(0); m_ui->setupUi(this); - setAttribute(Qt::WA_DeleteOnClose); - m_path = m_item->url(); - setWindowTitle (m_path.section('/',-1)); - m_ui->pathEdit->setText(m_path); + setAttribute(Qt::WA_QuitOnClose, false); + setAttribute(Qt::WA_DeleteOnClose, true); m_ui->directoryButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_DirOpenIcon)); m_ui->nextButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_ArrowRight)); m_ui->prevButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_ArrowLeft)); - m_metaDataModel = MetaDataManager::instance()->createMetaDataModel(m_item->url(), this); - - if(m_metaDataModel) - { - foreach(TagModel *tagModel, m_metaDataModel->tags()) - m_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)); - m_ui->tabWidget->addTab(textEdit, title); - } - } - printInfo(); + m_metaDataModel = 0; + m_page = 0; + m_tracks = tracks; + updatePage(); } DetailsDialog::~DetailsDialog() @@ -93,15 +75,84 @@ void DetailsDialog:: on_directoryButton_clicked() #endif } +void DetailsDialog::on_buttonBox_clicked(QAbstractButton *button) +{ + if(m_ui->buttonBox->standardButton(button) == QDialogButtonBox::Save) + { + TagEditor *tab = qobject_cast<TagEditor *> (m_ui->tabWidget->currentWidget()); + if(tab) + tab->save(); + } + else + reject(); +} + +void DetailsDialog::on_prevButton_clicked() +{ + if(m_page == 0) + m_page = m_tracks.count() - 1; + else + m_page--; + updatePage(); +} + +void DetailsDialog::on_nextButton_clicked() +{ + if(m_page >= m_tracks.count() - 1) + m_page = 0; + else + m_page++; + updatePage(); +} + +void DetailsDialog::updatePage() +{ + if(m_metaDataModel) + { + delete m_metaDataModel; + m_metaDataModel = 0; + } + + while (m_ui->tabWidget->count() > 1) + { + int index = m_ui->tabWidget->count() - 1; + QWidget *w = m_ui->tabWidget->widget(index); + m_ui->tabWidget->removeTab(index); + w->deleteLater(); + } + + m_ui->pageLabel->setText(tr("%1/%2").arg(m_page + 1).arg(m_tracks.count())); + m_track = m_tracks.at(m_page); + m_path = m_track->url(); + setWindowTitle (m_path.section('/',-1)); + m_ui->pathEdit->setText(m_path); + m_metaDataModel = MetaDataManager::instance()->createMetaDataModel(m_path, this); + + if(m_metaDataModel) + { + foreach(TagModel *tagModel, m_metaDataModel->tags()) + m_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)); + m_ui->tabWidget->addTab(textEdit, title); + } + } + printInfo(); +} + void DetailsDialog::printInfo() { SoundCore *core = SoundCore::instance(); QList <FileInfo *> flist = MetaDataManager::instance()->createPlayList(m_path, true); QMap <Qmmp::MetaData, QString> metaData; - if(!flist.isEmpty() && QFile::exists(m_item->url())) + if(!flist.isEmpty() && QFile::exists(m_track->url())) metaData = flist.at(0)->metaData(); else - metaData = *m_item; + metaData = *m_track; QString formattedText; if(layoutDirection() == Qt::RightToLeft) formattedText.append("<DIV align=\"right\" dir=\"rtl\">"); @@ -175,15 +226,3 @@ QString DetailsDialog::formatRow(const QString key, const QString value) str.append("</tr>"); return str; } - -void DetailsDialog::on_buttonBox_clicked(QAbstractButton *button) -{ - if(m_ui->buttonBox->standardButton(button) == QDialogButtonBox::Save) - { - TagEditor *tab = qobject_cast<TagEditor *> (m_ui->tabWidget->currentWidget()); - if(tab) - tab->save(); - } - else - reject(); -} |
