From 76004293835309a078dce397716c0233b853ec8e Mon Sep 17 00:00:00 2001 From: Frank Blendinger Date: Sat, 3 Jul 2010 19:53:01 +0200 Subject: [PATCH] add key_select_album: select album around cursor Default key for this is 'B'. This use to be the default for ToggleBitrateVisibility, which has changed to '#'. --- doc/keys | 4 +++- src/help.cpp | 1 + src/ncmpcpp.cpp | 38 ++++++++++++++++++++++++++++++++++++++ src/settings.cpp | 6 +++++- src/settings.h | 1 + 5 files changed, 48 insertions(+), 2 deletions(-) diff --git a/doc/keys b/doc/keys index 8d0f095f..3cfa19d9 100644 --- a/doc/keys +++ b/doc/keys @@ -48,7 +48,7 @@ # #key_toggle_mouse = '|' # -#key_toggle_bitrate_visibility = 'B' +#key_toggle_bitrate_visibility = '#' # #key_screen_switcher = 9 # @@ -132,6 +132,8 @@ # #key_deselect_all = 'V' # +#key_select_album = 'B' +# #key_add_selected_items = 'A' # #key_clear = 'c' diff --git a/src/help.cpp b/src/help.cpp index 9e207df4..09f6a58c 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -182,6 +182,7 @@ void Help::GetKeybindings() *w << DisplayKeys(Key.ToggleMouse) << "Toggle mouse support\n"; *w << DisplayKeys(Key.ReverseSelection) << "Reverse selection\n"; *w << DisplayKeys(Key.DeselectAll) << "Deselect all items\n"; + *w << DisplayKeys(Key.SelectAlbum) << "Select songs of album around cursor\n"; *w << DisplayKeys(Key.AddSelected) << "Add selected items to playlist/m3u file\n"; *w << "\n"; *w << DisplayKeys(Key.ToggleRepeat) << "Toggle repeat mode\n"; diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index 837f1cb9..4705fe38 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -1694,6 +1694,44 @@ int main(int argc, char *argv[]) ShowMessage("Items deselected!"); } } + else if (Keypressed(input, Key.SelectAlbum)) + { + if (myScreen->allowsSelection()) + { + Menu *songs = NULL; + if (myScreen == myPlaylist && !myPlaylist->Items->Empty()) + songs = myPlaylist->Items; + else if (myScreen->ActiveWindow() == myPlaylistEditor->Content) + songs = myPlaylistEditor->Content; + + if (songs && !songs->Empty()) + { + size_t pos = songs->Choice(); + std::string album = songs->at(pos).GetAlbum(); + List *mList = myScreen->GetList(); + // select song under cursor + mList->Select(pos, 1); + // go up + while (pos > 0) + { + if (songs->at(--pos).GetAlbum() != album) + break; + else + mList->Select(pos, 1); + } + // go down + pos = songs->Choice(); + while (pos < songs->Size() - 1) + { + if (songs->at(++pos).GetAlbum() != album) + break; + else + mList->Select(pos, 1); + } + ShowMessage("Album around cursor position selected."); + } + } + } else if (Keypressed(input, Key.AddSelected)) { mySelectedItemsAdder->SwitchTo(); diff --git a/src/settings.cpp b/src/settings.cpp index 12598d24..22b1d316 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -194,7 +194,7 @@ void NcmpcppKeys::SetDefaults() ToggleSpaceMode[0] = 't'; ToggleAddMode[0] = 'T'; ToggleMouse[0] = '|'; - ToggleBitrateVisibility[0] = 'B'; + ToggleBitrateVisibility[0] = '#'; Shuffle[0] = 'Z'; ToggleCrossfade[0] = 'x'; SetCrossfade[0] = 'X'; @@ -213,6 +213,7 @@ void NcmpcppKeys::SetDefaults() Lyrics[0] = 'l'; ReverseSelection[0] = 'v'; DeselectAll[0] = 'V'; + SelectAlbum[0] = 'B'; AddSelected[0] = 'A'; Clear[0] = 'c'; Crop[0] = 'C'; @@ -294,6 +295,7 @@ void NcmpcppKeys::SetDefaults() Lyrics[1] = NullKey; ReverseSelection[1] = NullKey; DeselectAll[1] = NullKey; + SelectAlbum[1] = NullKey; AddSelected[1] = NullKey; Clear[1] = NullKey; Crop[1] = NullKey; @@ -555,6 +557,8 @@ void NcmpcppKeys::Read() GetKeys(key, ReverseSelection); else if (key.find("key_deselect_all ") != std::string::npos) GetKeys(key, DeselectAll); + else if (key.find("key_select_album ") != std::string::npos) + GetKeys(key, SelectAlbum); else if (key.find("key_add_selected_items ") != std::string::npos) GetKeys(key, AddSelected); else if (key.find("key_clear ") != std::string::npos) diff --git a/src/settings.h b/src/settings.h index bf078b88..67b885b3 100644 --- a/src/settings.h +++ b/src/settings.h @@ -118,6 +118,7 @@ struct NcmpcppKeys int Lyrics[2]; int ReverseSelection[2]; int DeselectAll[2]; + int SelectAlbum[2]; int AddSelected[2]; int Clear[2]; int Crop[2];