summaryrefslogtreecommitdiffstats
path: root/collectionfavoritesview.cpp
diff options
context:
space:
mode:
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();
+ }
+}