summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2017-02-27 02:05:28 +0100
committerArno <arno@disconnect.de>2017-02-27 02:05:28 +0100
commitbfe075c2c75d00155c7f3e92e2a16c25eed8d005 (patch)
treebd742a8bf0ecbdc00df14d384e49b7a3fbd6c887
parent14992a657c57fa712a58a9b0ef117bb4c75fce97 (diff)
downloadBeetPlayer-bfe075c2c75d00155c7f3e92e2a16c25eed8d005.tar.gz
BeetPlayer-bfe075c2c75d00155c7f3e92e2a16c25eed8d005.tar.bz2
BeetPlayer-bfe075c2c75d00155c7f3e92e2a16c25eed8d005.zip
Implement random selection
Hard code limit to 1000 songs.
-rw-r--r--playerwidget.cpp22
-rw-r--r--playerwidget.h1
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();