diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-10-24 14:11:41 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2021-10-24 14:11:41 +0000 |
| commit | 3a92defd77b55a416e90f9db9e38afe451b0456c (patch) | |
| tree | de388f34874eb54e9e283066756d23f3e5e0a779 | |
| parent | 8bb61aac38bdfc0947a74fdfd0fa06011396faf3 (diff) | |
| download | qmmp-3a92defd77b55a416e90f9db9e38afe451b0456c.tar.gz qmmp-3a92defd77b55a416e90f9db9e38afe451b0456c.tar.bz2 qmmp-3a92defd77b55a416e90f9db9e38afe451b0456c.zip | |
history: added feature to remove tracks from history
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@10369 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/General/history/historywindow.cpp | 37 | ||||
| -rw-r--r-- | src/plugins/General/history/historywindow.h | 4 |
2 files changed, 37 insertions, 4 deletions
diff --git a/src/plugins/General/history/historywindow.cpp b/src/plugins/General/history/historywindow.cpp index 164f87e4e..7bf53808f 100644 --- a/src/plugins/General/history/historywindow.cpp +++ b/src/plugins/General/history/historywindow.cpp @@ -26,6 +26,7 @@ #include <QProgressBar> #include <QTreeWidgetItem> #include <QFile> +#include <QMenu> #include <QtDebug> #include <qmmp/qmmp.h> #include <qmmpui/mediaplayer.h> @@ -36,6 +37,7 @@ #include "ui_historywindow.h" #define PathRole (Qt::UserRole + 4) +#define IdRole (Qt::UserRole + 5) HistoryWindow::HistoryWindow(QSqlDatabase db, QWidget *parent) : QWidget(parent), @@ -60,6 +62,7 @@ HistoryWindow::HistoryWindow(QSqlDatabase db, QWidget *parent) : m_ui->historyTreeWidget->header()->setSortIndicator(0, Qt::AscendingOrder); m_ui->historyTreeWidget->header()->setSortIndicatorShown(true); m_ui->historyTreeWidget->header()->setSectionsClickable(true); + m_ui->historyTreeWidget->setContextMenuPolicy(Qt::CustomContextMenu); readSettings(); connect(m_ui->historyTreeWidget->header(), SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), SLOT(onSortIndicatorChanged(int, Qt::SortOrder))); @@ -84,12 +87,12 @@ void HistoryWindow::loadHistory() if(m_ui->historyTreeWidget->header()->sortIndicatorOrder() == Qt::DescendingOrder) { - query.prepare("SELECT Timestamp,Title,Artist,AlbumArtist,Album,Comment,Genre,Composer,Track,Year,Duration,URL " + query.prepare("SELECT Timestamp,Title,Artist,AlbumArtist,Album,Comment,Genre,Composer,Track,Year,Duration,URL,ID " "FROM track_history WHERE Timestamp BETWEEN :from and :to ORDER BY id DESC"); } else { - query.prepare("SELECT Timestamp,Title,Artist,AlbumArtist,Album,Comment,Genre,Composer,Track,Year,Duration,URL " + query.prepare("SELECT Timestamp,Title,Artist,AlbumArtist,Album,Comment,Genre,Composer,Track,Year,Duration,URL,ID " "FROM track_history WHERE Timestamp BETWEEN :from and :to"); } query.bindValue(":from", m_ui->fromDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); @@ -140,6 +143,7 @@ void HistoryWindow::loadHistory() item->setText(0, timeStr); item->setText(1, m_formatter.format(info)); item->setData(1, PathRole, info.path()); + item->setData(1, IdRole, query.value(12).toLongLong()); topLevelItem->addChild(item); } @@ -360,6 +364,21 @@ void HistoryWindow::readSettings() settings.endGroup(); } +void HistoryWindow::removeTrack(QTreeWidgetItem *item) +{ + if(!m_db.isOpen()) + return; + + qint64 id = item->data(1, IdRole).toLongLong(); + + QSqlQuery query(m_db); + + query.prepare("DELETE FROM track_history WHERE ID=:id"); + query.bindValue(":id", id); + if(query.exec()) + delete item; +} + void HistoryWindow::closeEvent(QCloseEvent *) { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); @@ -426,6 +445,20 @@ void HistoryWindow::on_historyTreeWidget_itemDoubleClicked(QTreeWidgetItem *item on_topSongsTreeWidget_itemDoubleClicked(item, 0); } +void HistoryWindow::on_historyTreeWidget_customContextMenuRequested(const QPoint &pos) +{ + QTreeWidgetItem *item = m_ui->historyTreeWidget->itemAt(pos); + if(item && item->parent()) + { + 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.addSeparator(); + menu.addAction(QIcon::fromTheme("edit-delete"), tr("Remove from History"), [=] { removeTrack(item); } ); + menu.exec(m_ui->historyTreeWidget->viewport()->mapToGlobal(pos)); + } +} + void HistoryWindow::on_topSongsTreeWidget_itemDoubleClicked(QTreeWidgetItem *item, int) { QString path = item->data(1, PathRole).toString(); diff --git a/src/plugins/General/history/historywindow.h b/src/plugins/General/history/historywindow.h index d75340866..4a92bd39a 100644 --- a/src/plugins/General/history/historywindow.h +++ b/src/plugins/General/history/historywindow.h @@ -47,13 +47,12 @@ private slots: void on_fromButton_clicked(); void on_toButton_clicked(); void on_historyTreeWidget_itemDoubleClicked(QTreeWidgetItem *item, int); + void on_historyTreeWidget_customContextMenuRequested(const QPoint &pos); void on_topSongsTreeWidget_itemDoubleClicked(QTreeWidgetItem *item, int); void onSortIndicatorChanged(int index, Qt::SortOrder order); void playTrack(PlayListTrack *item); void disconnectPl(); - - private: void loadHistory(); void loadDistribution(); @@ -61,6 +60,7 @@ private: void loadTopArtists(); void loadTopGenres(); void readSettings(); + void removeTrack(QTreeWidgetItem *item); void closeEvent(QCloseEvent *) override; Ui::HistoryWindow *m_ui; |
