aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-10-27 19:07:36 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2021-10-27 19:07:36 +0000
commit4f5f49288327ef9d68ca5004254950abbb04ff72 (patch)
tree5aa8ce23f530694757f50a5a8761b96e6c3fd5bd
parent2fa8b6812f2e4c405c63cf59893363b825b6edd6 (diff)
downloadqmmp-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.cpp45
-rw-r--r--src/plugins/General/history/historywindow.h1
-rw-r--r--src/qmmpui/detailsdialog.cpp3
-rw-r--r--src/qmmpui/detailsdialog.h6
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();