diff options
author | Arno <arno@disconnect.de> | 2017-02-27 02:05:28 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-02-27 02:05:28 +0100 |
commit | bfe075c2c75d00155c7f3e92e2a16c25eed8d005 (patch) | |
tree | bd742a8bf0ecbdc00df14d384e49b7a3fbd6c887 | |
parent | 14992a657c57fa712a58a9b0ef117bb4c75fce97 (diff) | |
download | BeetPlayer-bfe075c2c75d00155c7f3e92e2a16c25eed8d005.tar.gz BeetPlayer-bfe075c2c75d00155c7f3e92e2a16c25eed8d005.tar.bz2 BeetPlayer-bfe075c2c75d00155c7f3e92e2a16c25eed8d005.zip |
Implement random selection
Hard code limit to 1000 songs.
-rw-r--r-- | playerwidget.cpp | 22 | ||||
-rw-r--r-- | playerwidget.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/playerwidget.cpp b/playerwidget.cpp index a00ded3..6e6cb76 100644 --- a/playerwidget.cpp +++ b/playerwidget.cpp @@ -128,8 +128,11 @@ void PlayerWidget::createActions(){ connect(refreshA, SIGNAL(triggered()), this, SLOT(reindex())); QAction *shufflePlayistA = new QAction(QIcon(":/shuffle.png"), tr("Shuffle playlist"), this); connect(shufflePlayistA, SIGNAL(triggered()), this, SLOT(shufflePlayList())); + QAction *randomPlayA = new QAction(QIcon(":/dice.png"), tr("Play random"), this); + connect(randomPlayA, SIGNAL(triggered()), this, SLOT(randomPlay())); QAction *configA = Globals::instance()->action(Globals::ConfigAction); mView->addAction(addToPlayListA); + mView->addAction(randomPlayA); mPlayListView->addAction(removeFromPlayListA); mPlayListView->addAction(shufflePlayistA); mPlayListView->addAction(clearPlayListA); @@ -144,6 +147,7 @@ void PlayerWidget::createActions(){ mToolBar->addAction(removeFromPlayListA); mToolBar->addAction(clearPlayListA); mToolBar->addAction(shufflePlayistA); + mToolBar->addAction(randomPlayA); mToolBar->addSeparator(); mToolBar->addAction(refreshA); mToolBar->addSeparator(); @@ -378,3 +382,21 @@ void PlayerWidget::shufflePlayList(){ root->appendRow(i); } } + +void PlayerWidget::randomPlay(){ + mPlayListModel->clear(); + mPlayListModel->setHorizontalHeaderLabels(QStringList() << "Title"); + QStandardItem *root = mPlayListModel->invisibleRootItem(); + QSqlDatabase db = QSqlDatabase::database("beetplayerdb"); + QSqlQuery randomQ(db); + randomQ.prepare("SELECT sipos, ttitle, tfullpath, igenres_id, artists.tartists_name, albums.talbum_name FROM songs, artists, albums WHERE songs.iartists_id = artists.iartists_id AND songs.ialbums_id = albums.ialbums_id ORDER BY random() LIMIT 1000"); + randomQ.exec(); + while(randomQ.next()){ + QString display = QString(tr("%1 - %2 - %3 - %4")).arg(QChar(0x266C)).arg(randomQ.value(4).toString()).arg(randomQ.value(1).toString()).arg(randomQ.value(5).toString()); + QStandardItem *item = new QStandardItem; + item->setFont(QFont("courier")); + item->setText(display); + item->setData(randomQ.value(2), FullPathRole); + root->appendRow(item); + } +} diff --git a/playerwidget.h b/playerwidget.h index ee0b4a1..2837688 100644 --- a/playerwidget.h +++ b/playerwidget.h @@ -30,6 +30,7 @@ class PlayerWidget : public QWidget { void removeFromPlayList(); void clearPlayList(); void shufflePlayList(); + void randomPlay(); private: void setupGui(); |