summaryrefslogtreecommitdiffstats
path: root/collectionfavoritesview.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-02-19 02:08:54 +0100
committerArno <arno@disconnect.de>2018-02-19 02:08:54 +0100
commit164701b69d3d84b5530e93866dea93b446654a8e (patch)
treeb76a99d7d453e1b44557f1a5943f3a23af5a6a92 /collectionfavoritesview.cpp
parent1789930645650d9302b484cf21317e606e8f14e8 (diff)
downloadBeetPlayer-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.cpp24
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();
+ }
+}