actions: only shuffle selected range of playlist if applicable

master
Andrzej Rybczak 11 years ago
parent 7acff16535
commit 3bd9c88f05
  1. 1
      NEWS
  2. 5
      src/actions.cpp
  3. 2
      src/help.cpp
  4. 7
      src/mpdpp.cpp
  5. 1
      src/mpdpp.h

@ -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)

@ -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()

@ -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");

@ -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();

@ -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);

Loading…
Cancel
Save