diff options
author | Arno <arno@disconnect.de> | 2018-02-19 01:32:25 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-02-19 01:32:25 +0100 |
commit | b7775f392fe9f5d61e2d77c73a6509fa64626a51 (patch) | |
tree | c7f17c24ec0ece0b26a06487b5ca157897d5c32d | |
parent | bb60087de2bdade9a0c88db1849575e54eb5d67d (diff) | |
download | BeetPlayer-b7775f392fe9f5d61e2d77c73a6509fa64626a51.tar.gz BeetPlayer-b7775f392fe9f5d61e2d77c73a6509fa64626a51.tar.bz2 BeetPlayer-b7775f392fe9f5d61e2d77c73a6509fa64626a51.zip |
Re-add "add to Favorites" action
-rw-r--r-- | playerwidget.cpp | 24 | ||||
-rw-r--r-- | playerwidget.h | 2 |
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); |