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 /collectionfavoritesview.cpp | |
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 :)
Diffstat (limited to 'collectionfavoritesview.cpp')
-rw-r--r-- | collectionfavoritesview.cpp | 24 |
1 files changed, 24 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(); + } +} |