From 864d4162d3638676ce2cb0257f55ba00292cb3cc Mon Sep 17 00:00:00 2001 From: kiselev-dv Date: Tue, 12 May 2015 14:05:46 +0500 Subject: [PATCH 1/5] Add stop after each song repeat mode --- src/networkremote/outgoingdatacreator.cpp | 3 +++ src/playlist/playlist.cpp | 5 +++++ src/playlist/playlistsequence.cpp | 8 ++++++++ src/playlist/playlistsequence.h | 1 + src/widgets/osd.cpp | 3 +++ 5 files changed, 20 insertions(+) diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index 3081c5d6a..0d022b9c7 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -495,6 +495,9 @@ void OutgoingDataCreator::SendRepeatMode(PlaylistSequence::RepeatMode mode) { case PlaylistSequence::Repeat_Playlist: msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Playlist); break; + case PlaylistSequence::Repeat_OneByOne: + msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_OneByOne); + break; } SendDataToClients(&msg); diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 0fbd5e5e0..d6ed6a2f8 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -1681,6 +1681,11 @@ void Playlist::ClearStreamMetadata() { } bool Playlist::stop_after_current() const { + PlaylistSequence::RepeatMode repeat_mode = playlist_sequence_->repeat_mode(); + if(repeat_mode == PlaylistSequence::Repeat_OneByOne) { + return true; + } + return stop_after_.isValid() && current_item_index_.isValid() && stop_after_.row() == current_item_index_.row(); } diff --git a/src/playlist/playlistsequence.cpp b/src/playlist/playlistsequence.cpp index d93c43b40..43cfe0162 100644 --- a/src/playlist/playlistsequence.cpp +++ b/src/playlist/playlistsequence.cpp @@ -52,6 +52,7 @@ PlaylistSequence::PlaylistSequence(QWidget* parent, SettingsProvider* settings) repeat_group->addAction(ui_->action_repeat_track); repeat_group->addAction(ui_->action_repeat_album); repeat_group->addAction(ui_->action_repeat_playlist); + repeat_group->addAction(ui_->action_repeat_onebyone); repeat_menu_->addActions(repeat_group->actions()); ui_->repeat->setMenu(repeat_menu_); @@ -118,6 +119,7 @@ void PlaylistSequence::RepeatActionTriggered(QAction* action) { if (action == ui_->action_repeat_track) mode = Repeat_Track; if (action == ui_->action_repeat_album) mode = Repeat_Album; if (action == ui_->action_repeat_playlist) mode = Repeat_Playlist; + if (action == ui_->action_repeat_onebyone) mode = Repeat_OneByOne; SetRepeatMode(mode); } @@ -147,6 +149,9 @@ void PlaylistSequence::SetRepeatMode(RepeatMode mode) { case Repeat_Playlist: ui_->action_repeat_playlist->setChecked(true); break; + case Repeat_OneByOne: + ui_->action_repeat_onebyone->setChecked(true); + break; } if (mode != repeat_mode_) { @@ -237,6 +242,9 @@ void PlaylistSequence::CycleRepeatMode() { mode = Repeat_Playlist; break; case Repeat_Playlist: + mode = Repeat_OneByOne; + break; + case Repeat_OneByOne: break; } diff --git a/src/playlist/playlistsequence.h b/src/playlist/playlistsequence.h index a5b841a78..4fadfa5aa 100644 --- a/src/playlist/playlistsequence.h +++ b/src/playlist/playlistsequence.h @@ -40,6 +40,7 @@ class PlaylistSequence : public QWidget { Repeat_Track = 1, Repeat_Album = 2, Repeat_Playlist = 3, + Repeat_OneByOne = 4 }; enum ShuffleMode { Shuffle_Off = 0, diff --git a/src/widgets/osd.cpp b/src/widgets/osd.cpp index a1cbf117e..110191c91 100644 --- a/src/widgets/osd.cpp +++ b/src/widgets/osd.cpp @@ -314,6 +314,9 @@ void OSD::RepeatModeChanged(PlaylistSequence::RepeatMode mode) { case PlaylistSequence::Repeat_Playlist: current_mode = tr("Repeat playlist"); break; + case PlaylistSequence::Repeat_OneByOne: + current_mode = tr("Tracks one by one"); + break; } ShowMessage(QCoreApplication::applicationName(), current_mode); } From 5cd39a74b5d194adc33ce91a3b457324fe2ff837 Mon Sep 17 00:00:00 2001 From: kiselev-dv Date: Tue, 19 May 2015 09:56:12 +0500 Subject: [PATCH 2/5] Fix next song autoselection --- src/core/player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/player.cpp b/src/core/player.cpp index ec5038c3b..cf0e9b795 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -292,7 +292,7 @@ void Player::RestartOrPrevious() { void Player::Stop(bool stop_after) { engine_->Stop(stop_after); - app_->playlist_manager()->active()->set_current_row(-1); + //app_->playlist_manager()->active()->set_current_row(-1); current_item_.reset(); } From a3bf9475a9534a3c086434abb424c0d4a6741c59 Mon Sep 17 00:00:00 2001 From: kiselev-dv Date: Tue, 19 May 2015 09:56:46 +0500 Subject: [PATCH 3/5] Rename One by One repeat mode --- src/widgets/osd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/osd.cpp b/src/widgets/osd.cpp index 110191c91..8bb636dbe 100644 --- a/src/widgets/osd.cpp +++ b/src/widgets/osd.cpp @@ -315,7 +315,7 @@ void OSD::RepeatModeChanged(PlaylistSequence::RepeatMode mode) { current_mode = tr("Repeat playlist"); break; case PlaylistSequence::Repeat_OneByOne: - current_mode = tr("Tracks one by one"); + current_mode = tr("Stop after every track"); break; } ShowMessage(QCoreApplication::applicationName(), current_mode); From e122898187d0967d77b5f4117ce0d8bdaa24bd8d Mon Sep 17 00:00:00 2001 From: kiselev-dv Date: Wed, 20 May 2015 16:50:13 +0500 Subject: [PATCH 4/5] unnecessary set_current_row(-1) --- src/core/player.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/player.cpp b/src/core/player.cpp index cf0e9b795..b847502a9 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -292,7 +292,6 @@ void Player::RestartOrPrevious() { void Player::Stop(bool stop_after) { engine_->Stop(stop_after); - //app_->playlist_manager()->active()->set_current_row(-1); current_item_.reset(); } From aba271ed6ae3c1155230b2fffbf6a2976af073aa Mon Sep 17 00:00:00 2001 From: kiselev-dv Date: Wed, 20 May 2015 17:34:37 +0500 Subject: [PATCH 5/5] format code --- src/networkremote/outgoingdatacreator.cpp | 19 +++++++++++-------- src/playlist/playlist.cpp | 4 ++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index 0d022b9c7..f8c22eb30 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -75,8 +75,7 @@ void OutgoingDataCreator::SetClients(QList* clients) { SLOT(ResultsAvailable(int, SearchProvider::ResultList)), Qt::QueuedConnection); - connect(app_->global_search(), - SIGNAL(SearchFinished(int)), + connect(app_->global_search(), SIGNAL(SearchFinished(int)), SLOT(SearchFinished(int))); } @@ -130,8 +129,8 @@ void OutgoingDataCreator::CheckEnabledProviders() { } } -SongInfoProvider* OutgoingDataCreator::ProviderByName(const QString& name) - const { +SongInfoProvider* OutgoingDataCreator::ProviderByName( + const QString& name) const { for (SongInfoProvider* provider : fetcher_->providers()) { if (UltimateLyricsProvider* lyrics = qobject_cast(provider)) { @@ -656,14 +655,16 @@ void OutgoingDataCreator::SendKitten(const QImage& kitten) { } } -void OutgoingDataCreator::DoGlobalSearch(const QString &query, RemoteClient *client) { +void OutgoingDataCreator::DoGlobalSearch(const QString& query, + RemoteClient* client) { int id = app_->global_search()->SearchAsync(query); GlobalSearchRequest request(id, query, client); global_search_result_map_.insert(id, request); } -void OutgoingDataCreator::ResultsAvailable(int id, const SearchProvider::ResultList& results) { +void OutgoingDataCreator::ResultsAvailable( + int id, const SearchProvider::ResultList& results) { if (!global_search_result_map_.contains(id)) return; GlobalSearchRequest search_request = global_search_result_map_.value(id); @@ -671,12 +672,14 @@ void OutgoingDataCreator::ResultsAvailable(int id, const SearchProvider::ResultL QImage null_img; pb::remote::Message msg; - pb::remote::ResponseGlobalSearch* response = msg.mutable_response_global_search(); + pb::remote::ResponseGlobalSearch* response = + msg.mutable_response_global_search(); msg.set_type(pb::remote::GLOBAL_SEARCH_RESULT); response->set_id(search_request.id_); response->set_query(DataCommaSizeFromQString(search_request.query_)); - response->set_search_provider(DataCommaSizeFromQString(results.first().provider_->name())); + response->set_search_provider( + DataCommaSizeFromQString(results.first().provider_->name())); // Append the icon QImage icon_image(results.first().provider_->icon().pixmap(48, 48).toImage()); diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index d6ed6a2f8..65b95002f 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -1682,8 +1682,8 @@ void Playlist::ClearStreamMetadata() { bool Playlist::stop_after_current() const { PlaylistSequence::RepeatMode repeat_mode = playlist_sequence_->repeat_mode(); - if(repeat_mode == PlaylistSequence::Repeat_OneByOne) { - return true; + if (repeat_mode == PlaylistSequence::Repeat_OneByOne) { + return true; } return stop_after_.isValid() && current_item_index_.isValid() &&