aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/detailsdialog.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-09-03 05:26:51 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-09-03 05:26:51 +0000
commitd890b302f1ee3059a188c3e5e470c3ccd6f38b53 (patch)
tree967c749816f0baac446e59d024bc7bf67981f9bc /src/qmmpui/detailsdialog.cpp
parent193f06b98d83c83c17e9729476b8fcadead2a8a1 (diff)
downloadqmmp-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.cpp115
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();
-}