From 14992a657c57fa712a58a9b0ef117bb4c75fce97 Mon Sep 17 00:00:00 2001 From: Arno Date: Mon, 27 Feb 2017 01:41:36 +0100 Subject: Implement shuffle playlist And add some artwork for icons... --- beetplayer.qrc | 2 ++ chastity_belt.png | Bin delete.png | Bin dice.png | Bin 0 -> 1059 bytes playerwidget.cpp | 21 +++++++++++++++++++++ playerwidget.h | 1 + shuffle.png | Bin 0 -> 539 bytes 7 files changed, 24 insertions(+) mode change 100755 => 100644 chastity_belt.png mode change 100755 => 100644 delete.png create mode 100644 dice.png create mode 100644 shuffle.png diff --git a/beetplayer.qrc b/beetplayer.qrc index b35e691..3ba8fbf 100644 --- a/beetplayer.qrc +++ b/beetplayer.qrc @@ -9,5 +9,7 @@ chastity_belt.png delete.png refresh.png + dice.png + shuffle.png diff --git a/chastity_belt.png b/chastity_belt.png old mode 100755 new mode 100644 diff --git a/delete.png b/delete.png old mode 100755 new mode 100644 diff --git a/dice.png b/dice.png new file mode 100644 index 0000000..c52be58 Binary files /dev/null and b/dice.png differ diff --git a/playerwidget.cpp b/playerwidget.cpp index 976da48..a00ded3 100644 --- a/playerwidget.cpp +++ b/playerwidget.cpp @@ -15,6 +15,8 @@ #include #include +#include + #include "playerwidget.h" #include "beetview.h" #include "indexerdialog.h" @@ -124,9 +126,12 @@ void PlayerWidget::createActions(){ connect(clearPlayListA, SIGNAL(triggered()), this, SLOT(clearPlayList())); QAction *refreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh..."), this); 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 *configA = Globals::instance()->action(Globals::ConfigAction); mView->addAction(addToPlayListA); mPlayListView->addAction(removeFromPlayListA); + mPlayListView->addAction(shufflePlayistA); mPlayListView->addAction(clearPlayListA); QWidget* spacer1 = new QWidget(); spacer1->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); @@ -138,6 +143,7 @@ void PlayerWidget::createActions(){ mToolBar->addAction(addToPlayListA); mToolBar->addAction(removeFromPlayListA); mToolBar->addAction(clearPlayListA); + mToolBar->addAction(shufflePlayistA); mToolBar->addSeparator(); mToolBar->addAction(refreshA); mToolBar->addSeparator(); @@ -357,3 +363,18 @@ void PlayerWidget::clearPlayList(){ mPlayListModel->clear(); mPlayListModel->setHorizontalHeaderLabels(QStringList() << "Title"); } + +void PlayerWidget::shufflePlayList(){ + QVector items; + for(int i = 0; i < mPlayListModel->rowCount(); ++i){ + QStandardItem *cur = mPlayListModel->item(i, 0)->clone(); + items << cur; + } + std::random_shuffle(items.begin(), items.end()); + mPlayListModel->clear(); + mPlayListModel->setHorizontalHeaderLabels(QStringList() << "Title"); + QStandardItem *root = mPlayListModel->invisibleRootItem(); + foreach(QStandardItem *i, items){ + root->appendRow(i); + } +} diff --git a/playerwidget.h b/playerwidget.h index 471b223..ee0b4a1 100644 --- a/playerwidget.h +++ b/playerwidget.h @@ -29,6 +29,7 @@ class PlayerWidget : public QWidget { void addToPlayList(); void removeFromPlayList(); void clearPlayList(); + void shufflePlayList(); private: void setupGui(); diff --git a/shuffle.png b/shuffle.png new file mode 100644 index 0000000..15ea406 Binary files /dev/null and b/shuffle.png differ -- cgit v1.2.3-70-g09d2