summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-02-19 01:32:25 +0100
committerArno <arno@disconnect.de>2018-02-19 01:32:25 +0100
commitb7775f392fe9f5d61e2d77c73a6509fa64626a51 (patch)
treec7f17c24ec0ece0b26a06487b5ca157897d5c32d
parentbb60087de2bdade9a0c88db1849575e54eb5d67d (diff)
downloadBeetPlayer-b7775f392fe9f5d61e2d77c73a6509fa64626a51.tar.gz
BeetPlayer-b7775f392fe9f5d61e2d77c73a6509fa64626a51.tar.bz2
BeetPlayer-b7775f392fe9f5d61e2d77c73a6509fa64626a51.zip
Re-add "add to Favorites" action
-rw-r--r--playerwidget.cpp24
-rw-r--r--playerwidget.h2
2 files changed, 26 insertions, 0 deletions
diff --git a/playerwidget.cpp b/playerwidget.cpp
index 54c84fe..d34b954 100644
--- a/playerwidget.cpp
+++ b/playerwidget.cpp
@@ -413,6 +413,8 @@ void PlayerWidget::createActions(){
helpA->setMenu(helpM);
QAction *plSearchMB = new QAction(QIcon(":/bizarre_amputee.png"), tr("Search Musicbrainz"), this);
connect(plSearchMB, &QAction::triggered, [this] { searchMusicbrainz(mSongView->selectionModel()->currentIndex()); });
+ QAction *addToFavoritesA = new QAction(QIcon(":/male_chastity_belt.png"), tr("Add to Favorites"), this);
+ connect(addToFavoritesA, &QAction::triggered, [this] { addToFavorites(mSongView->selectionModel()->selectedRows()); });
mSongView->addAction(removeFromPlayListA);
mSongView->addAction(Helper::createSeparator(this));
@@ -421,6 +423,7 @@ void PlayerWidget::createActions(){
mSongView->addAction(shufflePlayistA);
mSongView->addAction(clearPlayListA);
mSongView->addAction(Helper::createSeparator(this));
+ mSongView->addAction(addToFavoritesA);
QWidget* spacer1 = new QWidget();
spacer1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
mToolBar->addWidget(spacer1);
@@ -1041,3 +1044,24 @@ void PlayerWidget::setCollectionIndex(int collectionIndex, bool isWebradio){
}
mPlaylistTab->setCurrentIndex(plIdx);
}
+
+void PlayerWidget::addToFavorites(const QModelIndexList &idxs){
+ QSqlDatabase db = QSqlDatabase::database("beetplayerdb");
+ QSqlQuery favInsertQ(db);
+ favInsertQ.prepare("INSERT INTO persistent_favorites (tartist_name, talbum_name, ttitle) VALUES(:artist, :album, :title)");
+ int insertCount = 0;
+ for(const QModelIndex &idx : idxs){
+ favInsertQ.bindValue(":artist", idx.data(CollectionWidget::ArtistRole));
+ favInsertQ.bindValue(":album", idx.data(CollectionWidget::AlbumRole));
+ favInsertQ.bindValue(":title", idx.data(CollectionWidget::TitleRole));
+ if(favInsertQ.exec()){
+ ++insertCount;
+ }
+ }
+ QString msg = QString(tr("Added %1 file(s) to favorites!")).arg(QString::number(insertCount));
+ emit message(msg);
+ if(insertCount){
+ CollectionWidget *fav = mCollectionStack->findChild<CollectionWidget*>("favorites");
+ fav->populate();
+ }
+}
diff --git a/playerwidget.h b/playerwidget.h
index 22098d8..180c232 100644
--- a/playerwidget.h
+++ b/playerwidget.h
@@ -4,6 +4,7 @@
#include <QWidget>
#include <QMediaPlayer>
#include <QSystemTrayIcon>
+#include <QModelIndexList>
#include <QMap>
#include <taglib/fileref.h>
@@ -69,6 +70,7 @@ class PlayerWidget : public QWidget {
void aboutDlg();
void gotoAlbum();
void setCollectionIndex(int collectionIndex, bool isWebradio);
+ void addToFavorites(const QModelIndexList &idxs);
signals:
void viewModeChanged(const QString &viewMode);