From bab10ea14ddaf7af7aeeff925b373be1c347d0d7 Mon Sep 17 00:00:00 2001 From: Crystalwarrior Date: Fri, 31 Jul 2020 23:11:38 +0300 Subject: [PATCH] Add "Play Random Song" option (#200) It also respects the search string, so only visible tracks are chosen from the pool. Categories (i.e. entries with children) are also ignored. --- include/courtroom.h | 1 + src/courtroom.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/courtroom.h b/include/courtroom.h index 3311758..182c2a6 100644 --- a/include/courtroom.h +++ b/include/courtroom.h @@ -673,6 +673,7 @@ private slots: void music_fade_out(bool toggle); void music_fade_in(bool toggle); void music_synchronize(bool toggle); + void music_random(); void music_list_expand_all(); void music_list_collapse_all(); void on_area_list_double_clicked(QTreeWidgetItem *p_item, int column); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index bc182a8..b203cf0 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -4098,6 +4098,9 @@ void Courtroom::on_music_list_context_menu_requested(const QPoint &pos) { QMenu *menu = new QMenu(); + menu->addAction(QString(tr("Play Random Song")), this, + SLOT(music_random())); + menu->addSeparator(); menu->addAction(QString(tr("Expand All Categories")), this, SLOT(music_list_expand_all())); menu->addAction(QString(tr("Collapse All Categories")), this, @@ -4149,6 +4152,18 @@ void Courtroom::music_synchronize(bool toggle) music_flags &= ~SYNC_POS; } +void Courtroom::music_random() +{ + QList clist; + QTreeWidgetItemIterator it(ui_music_list, QTreeWidgetItemIterator::NotHidden | QTreeWidgetItemIterator::NoChildren); + while (*it) { + clist += (*it); + ++it; + } + int i = qrand() % clist.length(); + on_music_list_double_clicked(clist.at(i), 1); +} + void Courtroom::music_list_expand_all() { ui_music_list->expandAll(); } void Courtroom::music_list_collapse_all() {