diff options
author | Arno <arno@disconnect.de> | 2018-02-19 02:08:54 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-02-19 02:08:54 +0100 |
commit | 164701b69d3d84b5530e93866dea93b446654a8e (patch) | |
tree | b76a99d7d453e1b44557f1a5943f3a23af5a6a92 | |
parent | 1789930645650d9302b484cf21317e606e8f14e8 (diff) | |
download | BeetPlayer-164701b69d3d84b5530e93866dea93b446654a8e.tar.gz BeetPlayer-164701b69d3d84b5530e93866dea93b446654a8e.tar.bz2 BeetPlayer-164701b69d3d84b5530e93866dea93b446654a8e.zip |
Add "remove from Favorites"
Implemented as a custom action. Works out fine so far :)
-rw-r--r-- | collectionfavoritesview.cpp | 24 | ||||
-rw-r--r-- | collectionfavoritesview.h | 1 | ||||
-rw-r--r-- | playerwidget.cpp | 1 |
3 files changed, 26 insertions, 0 deletions
diff --git a/collectionfavoritesview.cpp b/collectionfavoritesview.cpp index a202fcb..54ce2f5 100644 --- a/collectionfavoritesview.cpp +++ b/collectionfavoritesview.cpp @@ -1,10 +1,16 @@ #include <QSqlDatabase> #include <QSqlQuery> #include <QStandardItem> +#include <QAction> #include "collectionfavoritesview.h" +#include "helper.h" CollectionFavoritesView::CollectionFavoritesView(QWidget *parent) : CollectionWidget(parent) { + QAction *removeFromFavoritesA = new QAction(QIcon(":/delete.png"), tr("Remove from Favorites"), this); + connect(removeFromFavoritesA, &QAction::triggered, [this] { removeFromFavorites(view()->selectionModel()->selectedRows()); }); + customActions()->addAction(Helper::createSeparator(this)); + customActions()->addAction(removeFromFavoritesA); } void CollectionFavoritesView::populate(){ @@ -43,3 +49,21 @@ void CollectionFavoritesView::populate(){ } enableSorting(); } + +void CollectionFavoritesView::removeFromFavorites(const QModelIndexList &idxs){ + if(!idxs.isEmpty()){ + QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); + QSqlQuery favRemoveQ(db); + favRemoveQ.prepare("DELETE FROM persistent_favorites WHERE tartist_name = :artist AND talbum_name = :album AND ttitle = :title"); + int removeCtr = 0; + for(const QModelIndex &idx : idxs){ + favRemoveQ.bindValue(":artist", idx.data(ArtistRole)); + favRemoveQ.bindValue(":album", idx.data(AlbumRole)); + favRemoveQ.bindValue(":title", idx.data(TitleRole)); + if(favRemoveQ.exec()){ + ++removeCtr; + } + } + populate(); + } +} diff --git a/collectionfavoritesview.h b/collectionfavoritesview.h index 4d3f7b5..d8d34d1 100644 --- a/collectionfavoritesview.h +++ b/collectionfavoritesview.h @@ -10,6 +10,7 @@ class CollectionFavoritesView : public CollectionWidget { public slots: virtual void populate(); + void removeFromFavorites(const QModelIndexList &idxs); }; #endif // COLLECTIONFAVORITESVIEW_H diff --git a/playerwidget.cpp b/playerwidget.cpp index d34b954..bb8509a 100644 --- a/playerwidget.cpp +++ b/playerwidget.cpp @@ -208,6 +208,7 @@ void PlayerWidget::setupGui(QSplashScreen *splash){ QAction *searchMBA = new QAction(QIcon(":/bizarre_amputee.png"), tr("Search Musicbrainz"), this); connect(searchMBA, &QAction::triggered, [this, curW] { searchMusicbrainz(curW->view()->selectionModel()->currentIndex()); }); curW->view()->addAction(searchMBA); + curW->view()->addActions(curW->customActions()->actions()); } } QAction *gotoAlbumA = new QAction(QIcon(":/next.png"), tr("Goto album"), this); |