diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-10-27 19:07:36 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-10-27 19:07:36 +0000 |
| commit | 4f5f49288327ef9d68ca5004254950abbb04ff72 (patch) | |
| tree | 5aa8ce23f530694757f50a5a8761b96e6c3fd5bd | |
| parent | 2fa8b6812f2e4c405c63cf59893363b825b6edd6 (diff) | |
| download | qmmp-4f5f49288327ef9d68ca5004254950abbb04ff72.tar.gz qmmp-4f5f49288327ef9d68ca5004254950abbb04ff72.tar.bz2 qmmp-4f5f49288327ef9d68ca5004254950abbb04ff72.zip | |
history: added feature to show track details
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@10379 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/General/history/historywindow.cpp | 45 | ||||
| -rw-r--r-- | src/plugins/General/history/historywindow.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/detailsdialog.cpp | 3 | ||||
| -rw-r--r-- | src/qmmpui/detailsdialog.h | 6 |
4 files changed, 54 insertions, 1 deletions
diff --git a/src/plugins/General/history/historywindow.cpp b/src/plugins/General/history/historywindow.cpp index 7bf53808f..1a74051a1 100644 --- a/src/plugins/General/history/historywindow.cpp +++ b/src/plugins/General/history/historywindow.cpp @@ -31,6 +31,7 @@ #include <qmmp/qmmp.h> #include <qmmpui/mediaplayer.h> #include <qmmpui/playlistmanager.h> +#include <qmmpui/detailsdialog.h> #include "historywindow.h" #include "dateinputdialog.h" #include "progressbaritemdelegate.h" @@ -242,7 +243,7 @@ void HistoryWindow::loadTopSongs() int maxCount = 0; - while (query.next()) + while(query.next()) { TrackInfo info; info.setValue(Qmmp::TITLE, query.value(2).toString()); @@ -377,6 +378,47 @@ void HistoryWindow::removeTrack(QTreeWidgetItem *item) query.bindValue(":id", id); if(query.exec()) delete item; + else + qWarning("HistoryWindow: query error: %s", qPrintable(query.lastError().text())); +} + +void HistoryWindow::showInformation(QTreeWidgetItem *item) +{ + if(!m_db.isOpen()) + return; + + qint64 id = item->data(1, IdRole).toLongLong(); + + QSqlQuery query(m_db); + + query.prepare("SELECT Timestamp,Title,Artist,AlbumArtist,Album,Comment,Genre,Composer,Track,Year,Duration,URL,ID " + "FROM track_history WHERE ID=:id"); + query.bindValue(":id", id); + + if(!query.exec()) + { + qWarning("HistoryWindow: query error: %s", qPrintable(query.lastError().text())); + return; + } + + if(query.next()) + { + PlayListTrack track; + track.setValue(Qmmp::TITLE, query.value(1).toString()); + track.setValue(Qmmp::ARTIST, query.value(2).toString()); + track.setValue(Qmmp::ALBUMARTIST, query.value(3).toString()); + track.setValue(Qmmp::ALBUM, query.value(4).toString()); + track.setValue(Qmmp::COMMENT, query.value(5).toString()); + track.setValue(Qmmp::GENRE, query.value(6).toString()); + track.setValue(Qmmp::COMPOSER, query.value(7).toString()); + track.setValue(Qmmp::TRACK, query.value(8).toString()); + track.setValue(Qmmp::YEAR, query.value(9).toString()); + track.setDuration(query.value(10).toInt()); + track.setPath(query.value(11).toString()); + + DetailsDialog d(&track, this); + d.exec(); + } } void HistoryWindow::closeEvent(QCloseEvent *) @@ -453,6 +495,7 @@ void HistoryWindow::on_historyTreeWidget_customContextMenuRequested(const QPoint QString path = item->data(1, PathRole).toString(); QMenu menu(this); menu.addAction(QIcon::fromTheme("list-add"),tr("Add to Playlist"), [=] { PlayListManager::instance()->add(path); } ); + menu.addAction(QIcon::fromTheme("dialog-information"), tr("&View Track Details"), [=] { showInformation(item); }); menu.addSeparator(); menu.addAction(QIcon::fromTheme("edit-delete"), tr("Remove from History"), [=] { removeTrack(item); } ); menu.exec(m_ui->historyTreeWidget->viewport()->mapToGlobal(pos)); diff --git a/src/plugins/General/history/historywindow.h b/src/plugins/General/history/historywindow.h index 4a92bd39a..973976393 100644 --- a/src/plugins/General/history/historywindow.h +++ b/src/plugins/General/history/historywindow.h @@ -61,6 +61,7 @@ private: void loadTopGenres(); void readSettings(); void removeTrack(QTreeWidgetItem *item); + void showInformation(QTreeWidgetItem *item); void closeEvent(QCloseEvent *) override; Ui::HistoryWindow *m_ui; diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp index b2bc6d72e..74d6f8405 100644 --- a/src/qmmpui/detailsdialog.cpp +++ b/src/qmmpui/detailsdialog.cpp @@ -51,6 +51,9 @@ DetailsDialog::DetailsDialog(const QList<PlayListTrack *> &tracks, QWidget *pare t->beginUsage(); } +DetailsDialog::DetailsDialog(PlayListTrack *track, QWidget *parent) : DetailsDialog(QList<PlayListTrack *>{ track }, parent) +{} + DetailsDialog::~DetailsDialog() { for(PlayListTrack *t : qAsConst(m_tracks)) diff --git a/src/qmmpui/detailsdialog.h b/src/qmmpui/detailsdialog.h index 73f3d010c..fae3f151b 100644 --- a/src/qmmpui/detailsdialog.h +++ b/src/qmmpui/detailsdialog.h @@ -51,6 +51,12 @@ public: */ explicit DetailsDialog(const QList<PlayListTrack *> &tracks, QWidget *parent = nullptr); /*! + * Constructor. + * @param track a track which should be used. + * @param parent Parent widget. + */ + explicit DetailsDialog(PlayListTrack *track, QWidget *parent = nullptr); + /*! * Destructor. */ ~DetailsDialog(); |
