new function: stop playing after current song

This commit is contained in:
Andrzej Rybczak
2009-03-01 11:26:39 +01:00
parent 27535e133c
commit b9cbacebff
5 changed files with 16 additions and 1 deletions

View File

@@ -201,6 +201,7 @@ void Help::GetKeybindings()
*w << DisplayKeys(Key.SavePlaylist) << "Save playlist\n"; *w << DisplayKeys(Key.SavePlaylist) << "Save playlist\n";
*w << DisplayKeys(Key.SortPlaylist) << "Sort playlist\n"; *w << DisplayKeys(Key.SortPlaylist) << "Sort playlist\n";
*w << DisplayKeys(Key.GoToNowPlaying) << "Go to currently playing position\n"; *w << DisplayKeys(Key.GoToNowPlaying) << "Go to currently playing position\n";
*w << DisplayKeys(Key.StartSearching) << "Toggle \"stop playing after current song\" option\n";
*w << DisplayKeys(Key.ToggleAutoCenter) << "Toggle auto center mode\n\n\n"; *w << DisplayKeys(Key.ToggleAutoCenter) << "Toggle auto center mode\n\n\n";
*w << " " << fmtBold << "Keys - Browse screen\n -----------------------------------------\n" << fmtBoldEnd; *w << " " << fmtBold << "Keys - Browse screen\n -----------------------------------------\n" << fmtBoldEnd;

View File

@@ -1201,7 +1201,12 @@ int main(int argc, char *argv[])
} }
else if (Keypressed(input, Key.StartSearching)) else if (Keypressed(input, Key.StartSearching))
{ {
if (myScreen == mySearcher) if (myScreen == myPlaylist && myPlaylist->isPlaying())
{
Config.stop_after_current_song = !Config.stop_after_current_song;
ShowMessage("Stop playing after current song: %s", Config.stop_after_current_song ? "on" : "off");
}
else if (myScreen == mySearcher)
{ {
mySearcher->Main()->Highlight(SearchEngine::SearchButton); mySearcher->Main()->Highlight(SearchEngine::SearchButton);
mySearcher->Main()->Highlighting(0); mySearcher->Main()->Highlighting(0);

View File

@@ -266,6 +266,7 @@ void DefaultConfiguration(ncmpcpp_config &conf)
conf.display_screens_numbers_on_start = true; conf.display_screens_numbers_on_start = true;
conf.clock_display_seconds = false; conf.clock_display_seconds = false;
conf.ignore_leading_the = false; conf.ignore_leading_the = false;
conf.stop_after_current_song = false;
conf.set_window_title = true; conf.set_window_title = true;
conf.mpd_port = 6600; conf.mpd_port = 6600;
conf.mpd_connection_timeout = 15; conf.mpd_connection_timeout = 15;

View File

@@ -158,6 +158,7 @@ struct ncmpcpp_config
bool display_screens_numbers_on_start; bool display_screens_numbers_on_start;
bool clock_display_seconds; bool clock_display_seconds;
bool ignore_leading_the; bool ignore_leading_the;
bool stop_after_current_song;
int mpd_port; int mpd_port;
int mpd_connection_timeout; int mpd_connection_timeout;

View File

@@ -309,6 +309,7 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *)
catch (std::out_of_range) { } catch (std::out_of_range) { }
Playlist::ReloadRemaining = 1; Playlist::ReloadRemaining = 1;
myPlaylist->NowPlaying = -1; myPlaylist->NowPlaying = -1;
Config.stop_after_current_song = 0;
player_state.clear(); player_state.clear();
break; break;
} }
@@ -351,6 +352,12 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *)
playing_song_scroll_begin = 0; playing_song_scroll_begin = 0;
if (Config.stop_after_current_song)
{
Mpd->Stop();
Config.stop_after_current_song = 0;
}
if (Mpd->GetState() == psPlay) if (Mpd->GetState() == psPlay)
{ {
changed.ElapsedTime = 1; changed.ElapsedTime = 1;