actions: only shuffle selected range of playlist if applicable

This commit is contained in:
Andrzej Rybczak
2015-05-02 16:03:55 +02:00
parent 7acff16535
commit 3bd9c88f05
5 changed files with 14 additions and 2 deletions

1
NEWS
View File

@@ -18,6 +18,7 @@ ncmpcpp-0.7 (????-??-??)
* Searching with regular expressions are now enabled by default.
* Support for the Perl regular expression syntax was added.
* BOOST_LIB_SUFFIX configure variable is now empty by default.
* Shuffle function now shuffles only selected range if selection in playlist is active.
ncmpcpp-0.6.3 (2015-03-02)

View File

@@ -1184,7 +1184,10 @@ void ToggleRepeat::run()
void Shuffle::run()
{
Mpd.Shuffle();
auto begin = myPlaylist->main().begin(), end = myPlaylist->main().end();
auto range = getSelectedRange(begin, end);
Mpd.ShuffleRange(range.first-begin, range.second-begin);
Statusbar::print("Range shuffled");
}
void ToggleRandom::run()

View File

@@ -240,7 +240,7 @@ void write_bindings(NC::Scrollpad &w)
key(w, Type::ToggleConsume, "Toggle consume mode");
key(w, Type::ToggleReplayGainMode, "Toggle replay gain mode");
key(w, Type::ToggleBitrateVisibility, "Toggle bitrate visibility");
key(w, Type::Shuffle, "Shuffle playlist");
key(w, Type::Shuffle, "Shuffle selected range in playlist");
key(w, Type::ToggleCrossfade, "Toggle crossfade mode");
key(w, Type::SetCrossfade, "Set crossfade");
key(w, Type::SetVolume, "Set volume");

View File

@@ -297,6 +297,13 @@ void Connection::Shuffle()
checkErrors();
}
void Connection::ShuffleRange(unsigned start, unsigned end)
{
prechecksNoCommandsList();
mpd_run_shuffle_range(m_connection.get(), start, end);
checkErrors();
}
void Connection::ClearMainPlaylist()
{
prechecksNoCommandsList();

View File

@@ -498,6 +498,7 @@ struct Connection
void Swap(unsigned, unsigned);
void Seek(unsigned int pos, unsigned int where);
void Shuffle();
void ShuffleRange(unsigned start, unsigned end);
void ClearMainPlaylist();
SongIterator GetPlaylistChanges(unsigned);