From 966fd634a4bf6898d7946a8c3b4f890dd5ddbdd9 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sun, 1 Feb 2009 17:55:28 +0100 Subject: [PATCH] add support for columns view in browser and search engine --- doc/config | 4 ++++ doc/keys | 2 +- src/browser.cpp | 7 ++++++- src/help.cpp | 2 +- src/ncmpcpp.cpp | 35 +++++++++++++++++++++++++---------- src/search_engine.cpp | 12 +++++++++++- src/settings.cpp | 18 ++++++++++++++---- src/settings.h | 4 +++- 8 files changed, 65 insertions(+), 19 deletions(-) diff --git a/doc/config b/doc/config index 778cfc09..0c331078 100644 --- a/doc/config +++ b/doc/config @@ -106,6 +106,10 @@ # #playlist_display_mode = "classic" (classic/columns) # +#browser_display_mode = "classic" (classic/columns) +# +#search_engine_display_mode = "classic" (classic/columns) +# #incremental_seeking = "yes" # #seek_time = "1" diff --git a/doc/keys b/doc/keys index 9fccaab1..61afff42 100644 --- a/doc/keys +++ b/doc/keys @@ -124,7 +124,7 @@ # #key_toggle_auto_center = 'U' # -#key_toggle_playlist_display_mode = 'p' +#key_toggle_display_mode = 'p' # #key_go_to_containing_directory = 'G' # diff --git a/src/browser.cpp b/src/browser.cpp index 560d77b9..73f8406c 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -143,7 +143,12 @@ void DisplayItem(const Item &item, void *, Menu *menu) return; } case itSong: - DisplaySong(*item.song, &Config.song_list_format, reinterpret_cast *>(menu)); + !Config.columns_in_browser + ? + DisplaySong(*item.song, &Config.song_list_format, reinterpret_cast *>(menu)) + : + DisplaySongInColumns(*item.song, &Config.song_columns_list_format, reinterpret_cast *>(menu)) + ; return; case itPlaylist: *menu << Config.browser_playlist_prefix << item.name; diff --git a/src/help.cpp b/src/help.cpp index 1508f3b5..65c64f0a 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -143,6 +143,7 @@ void GetKeybindings(Scrollpad &help) help << DisplayKeys(Key.NextFoundPosition) << "Go to next found position\n"; help << DisplayKeys(Key.ToggleFindMode) << "Toggle find mode (normal/wrapped)\n"; help << DisplayKeys(Key.GoToContainingDir) << "Go to directory containing current item\n"; + help << DisplayKeys(Key.ToggleDisplayMode) << "Toggle display mode\n"; # ifdef HAVE_TAGLIB_H help << DisplayKeys(Key.EditTags) << "Edit song's tags/playlist's name\n"; # endif // HAVE_TAGLIB_H @@ -166,7 +167,6 @@ void GetKeybindings(Scrollpad &help) help << DisplayKeys(Key.Add) << "Add url/file/directory to playlist\n"; help << DisplayKeys(Key.SavePlaylist) << "Save playlist\n"; help << DisplayKeys(Key.GoToNowPlaying) << "Go to currently playing position\n"; - help << DisplayKeys(Key.TogglePlaylistDisplayMode) << "Toggle playlist display mode\n"; help << DisplayKeys(Key.ToggleAutoCenter) << "Toggle auto center mode\n\n\n"; help << " " << fmtBold << "Keys - Browse screen\n -----------------------------------------\n" << fmtBoldEnd; diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index e64b4ce7..706b8f65 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -826,10 +826,7 @@ int main(int argc, char *argv[]) } # endif - if (Config.columns_in_playlist && wCurrent == mPlaylist) - wCurrent->Display(); - else - wCurrent->Refresh(); + wCurrent->Display(); // redraw_screen = 0; wCurrent->ReadKey(input); @@ -1362,6 +1359,8 @@ int main(int argc, char *argv[]) Search(s); if (!mSearcher->Back().first) { + if (Config.columns_in_search_engine) + mSearcher->SetTitle(DisplayColumns(Config.song_columns_list_format)); size_t found = mSearcher->Size()-search_engine_static_options; found += 3; // don't count options inserted below mSearcher->InsertSeparator(16); @@ -2538,13 +2537,29 @@ int main(int argc, char *argv[]) block_progressbar_update = 0; UnlockStatusbar(); } - else if (Keypressed(input, Key.TogglePlaylistDisplayMode) && wCurrent == mPlaylist) + else if (Keypressed(input, Key.ToggleDisplayMode)) { - Config.columns_in_playlist = !Config.columns_in_playlist; - ShowMessage("Playlist display mode: %s", Config.columns_in_playlist ? "Columns" : "Classic"); - mPlaylist->SetItemDisplayer(Config.columns_in_playlist ? DisplaySongInColumns : DisplaySong); - mPlaylist->SetItemDisplayerUserData(Config.columns_in_playlist ? &Config.song_columns_list_format : &Config.song_list_format); - mPlaylist->SetTitle(Config.columns_in_playlist ? DisplayColumns(Config.song_columns_list_format) : ""); + if (wCurrent == mPlaylist) + { + Config.columns_in_playlist = !Config.columns_in_playlist; + ShowMessage("Playlist display mode: %s", Config.columns_in_playlist ? "Columns" : "Classic"); + mPlaylist->SetItemDisplayer(Config.columns_in_playlist ? DisplaySongInColumns : DisplaySong); + mPlaylist->SetItemDisplayerUserData(Config.columns_in_playlist ? &Config.song_columns_list_format : &Config.song_list_format); + mPlaylist->SetTitle(Config.columns_in_playlist ? DisplayColumns(Config.song_columns_list_format) : ""); + } + else if (wCurrent == mBrowser) + { + Config.columns_in_browser = !Config.columns_in_browser; + ShowMessage("Browser display mode: %s", Config.columns_in_browser ? "Columns" : "Classic"); + mBrowser->SetTitle(Config.columns_in_browser ? DisplayColumns(Config.song_columns_list_format) : ""); + } + else if (wCurrent == mSearcher) + { + Config.columns_in_search_engine = !Config.columns_in_search_engine; + ShowMessage("Search engine display mode: %s", Config.columns_in_search_engine ? "Columns" : "Classic"); + if (mSearcher->Size() > search_engine_static_options) + mSearcher->SetTitle(Config.columns_in_search_engine ? DisplayColumns(Config.song_columns_list_format) : ""); + } // redraw_screen = 1; } else if (Keypressed(input, Key.ToggleAutoCenter)) diff --git a/src/search_engine.cpp b/src/search_engine.cpp index 41432e07..27fb1c99 100644 --- a/src/search_engine.cpp +++ b/src/search_engine.cpp @@ -20,6 +20,7 @@ #include "helpers.h" #include "search_engine.h" +#include "settings.h" using namespace MPD; @@ -36,7 +37,15 @@ const char *search_mode_strict = "Match only if both values are the same"; void SearchEngineDisplayer(const std::pair &pair, void *, Menu< std::pair > *menu) { if (pair.second) - DisplaySong(*pair.second, &Config.song_list_format, reinterpret_cast *>(menu)); + { + !Config.columns_in_search_engine + ? + DisplaySong(*pair.second, &Config.song_list_format, reinterpret_cast *>(menu)) + : + DisplaySongInColumns(*pair.second, &Config.song_columns_list_format, reinterpret_cast *>(menu)) + ; + } + else *menu << *pair.first; } @@ -72,6 +81,7 @@ void PrepareSearchEngine(Song &s) } s.Clear(); + mSearcher->SetTitle(""); mSearcher->Clear(); mSearcher->Reset(); mSearcher->ResizeBuffer(16); diff --git a/src/settings.cpp b/src/settings.cpp index 1f2dba4b..50fd7d6a 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -159,7 +159,7 @@ void DefaultKeys(ncmpcpp_keys &keys) keys.GoToContainingDir[0] = 'G'; keys.StartSearching[0] = 'y'; keys.ToggleAutoCenter[0] = 'U'; - keys.TogglePlaylistDisplayMode[0] = 'p'; + keys.ToggleDisplayMode[0] = 'p'; keys.GoToParentDir[0] = 263; keys.SwitchTagTypeList[0] = '`'; keys.Quit[0] = 'q'; @@ -222,7 +222,7 @@ void DefaultKeys(ncmpcpp_keys &keys) keys.GoToContainingDir[1] = null_key; keys.StartSearching[1] = null_key; keys.ToggleAutoCenter[1] = null_key; - keys.TogglePlaylistDisplayMode[1] = null_key; + keys.ToggleDisplayMode[1] = null_key; keys.GoToParentDir[1] = 127; keys.SwitchTagTypeList[1] = null_key; keys.Quit[1] = 'Q'; @@ -261,6 +261,8 @@ void DefaultConfiguration(ncmpcpp_config &conf) conf.colors_enabled = true; conf.fancy_scrolling = true; conf.columns_in_playlist = false; + conf.columns_in_browser = false; + conf.columns_in_search_engine = false; conf.header_visibility = true; conf.statusbar_visibility = true; conf.autocenter_mode = false; @@ -476,8 +478,8 @@ void ReadKeys(ncmpcpp_keys &keys) GetKeys(key, keys.GoToNowPlaying); else if (key.find("key_toggle_auto_center ") != string::npos) GetKeys(key, keys.ToggleAutoCenter); - else if (key.find("key_toggle_playlist_display_mode ") != string::npos) - GetKeys(key, keys.TogglePlaylistDisplayMode); + else if (key.find("key_toggle_display_mode ") != string::npos) + GetKeys(key, keys.ToggleDisplayMode); else if (key.find("key_go_to_containing_directory ") != string::npos) GetKeys(key, keys.GoToContainingDir); else if (key.find("key_start_searching ") != string::npos) @@ -628,6 +630,14 @@ void ReadConfiguration(ncmpcpp_config &conf) { conf.columns_in_playlist = v == "columns"; } + else if (cl.find("browser_display_mode") != string::npos) + { + conf.columns_in_browser = v == "columns"; + } + else if (cl.find("search_engine_display_mode") != string::npos) + { + conf.columns_in_search_engine = v == "columns"; + } else if (cl.find("header_visibility") != string::npos) { conf.header_visibility = v == "yes"; diff --git a/src/settings.h b/src/settings.h index 4dcfbd46..a472c03f 100644 --- a/src/settings.h +++ b/src/settings.h @@ -87,7 +87,7 @@ struct ncmpcpp_keys int GoToContainingDir[2]; int StartSearching[2]; int ToggleAutoCenter[2]; - int TogglePlaylistDisplayMode[2]; + int ToggleDisplayMode[2]; int GoToParentDir[2]; int SwitchTagTypeList[2]; int Quit[2]; @@ -133,6 +133,8 @@ struct ncmpcpp_config bool colors_enabled; bool fancy_scrolling; bool columns_in_playlist; + bool columns_in_browser; + bool columns_in_search_engine; bool set_window_title; bool header_visibility; bool statusbar_visibility;