From 077930df7849d3a24d6c0f9424a5b90e609756e1 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sat, 15 Sep 2012 23:30:46 +0200 Subject: [PATCH] actions: ShowMediaLibrary -> ShowMediaLibrary/ToggleMediaLibraryColumnsMode --- doc/bindings | 3 +++ doc/config | 2 -- doc/ncmpcpp.1 | 3 --- src/actions.cpp | 20 +++++++++++--- src/actions.h | 14 +++++++--- src/bindings.cpp | 3 +++ src/help.cpp | 3 +-- src/media_library.cpp | 62 +++++++++++++++++++------------------------ src/media_library.h | 1 + src/settings.cpp | 5 ---- src/settings.h | 1 - 11 files changed, 64 insertions(+), 53 deletions(-) diff --git a/doc/bindings b/doc/bindings index 77d1d222..07c32b7b 100644 --- a/doc/bindings +++ b/doc/bindings @@ -190,6 +190,9 @@ #def_key "4" # show_media_library # +#def_key "4" +# toggle_media_library_columns_mode +# #def_key "5" # show_playlist_editor # diff --git a/doc/config b/doc/config index 4ba96ce0..16b32f67 100644 --- a/doc/config +++ b/doc/config @@ -437,8 +437,6 @@ # #media_library_display_empty_tag = "yes" # -#media_library_disable_two_column_mode = "no" -# #enable_window_title = "yes" # ## diff --git a/doc/ncmpcpp.1 b/doc/ncmpcpp.1 index b03f68f3..f48421df 100644 --- a/doc/ncmpcpp.1 +++ b/doc/ncmpcpp.1 @@ -330,9 +330,6 @@ If enabled, dates of albums in media library will be displayed and respected in .B media_library_display_empty_tag = yes/no If enabled, left column will contain entry for 'empty' tag, otherwise not. .TP -.B media_library_disable_two_column_mode = yes/no -If enabled, pressing the key for the media library twice won't switch it to two column mode. -.TP .B enable_window_title = yes/no If enabled, ncmpcpp will override current window title with its own one. .TP diff --git a/src/actions.cpp b/src/actions.cpp index 47de86f6..62849720 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -2392,18 +2392,31 @@ void ResetSearchEngine::Run() mySearcher->reset(); } -#ifdef HAVE_TAGLIB_H bool ShowMediaLibrary::canBeRun() const { - return myScreen != myTinyTagEditor; + return myScreen != myLibrary +# ifdef HAVE_TAGLIB_H + && myScreen != myTinyTagEditor +# endif // HAVE_TAGLIB_H + ; } -#endif // HAVE_TAGLIB_H void ShowMediaLibrary::Run() { myLibrary->switchTo(); } +bool ToggleMediaLibraryColumnsMode::canBeRun() const +{ + return myScreen == myLibrary; +} + +void ToggleMediaLibraryColumnsMode::Run() +{ + myLibrary->toggleColumnsMode(); + myLibrary->refresh(); +} + bool ShowPlaylistEditor::canBeRun() const { return myScreen != myPlaylistEditor @@ -2624,6 +2637,7 @@ void populateActions() insertAction(new ShowSearchEngine()); insertAction(new ResetSearchEngine()); insertAction(new ShowMediaLibrary()); + insertAction(new ToggleMediaLibraryColumnsMode()); insertAction(new ShowPlaylistEditor()); insertAction(new ShowTagEditor()); insertAction(new ShowOutputs()); diff --git a/src/actions.h b/src/actions.h index 4b7dbcc3..a97f3e60 100644 --- a/src/actions.h +++ b/src/actions.h @@ -47,7 +47,7 @@ enum ActionType aRefetchLyrics, aRefetchArtistInfo, aSetSelectedItemsPriority, aFilterPlaylistOnPriorities, aShowSongInfo, aShowArtistInfo, aShowLyrics, aQuit, aNextScreen, aPreviousScreen, aShowHelp, aShowPlaylist, aShowBrowser, aChangeBrowseMode, - aShowSearchEngine, aResetSearchEngine, aShowMediaLibrary, aShowPlaylistEditor, aShowTagEditor, aShowOutputs, + aShowSearchEngine, aResetSearchEngine, aShowMediaLibrary, aToggleMediaLibraryColumnsMode, aShowPlaylistEditor, aShowTagEditor, aShowOutputs, aShowVisualizer, aShowClock, aShowServerInfo }; @@ -1033,9 +1033,17 @@ struct ShowMediaLibrary : public Action ShowMediaLibrary() : Action(aShowMediaLibrary, "show_media_library") { } protected: -# ifdef HAVE_TAGLIB_H virtual bool canBeRun() const; -# endif // HAVE_TAGLIB_H + virtual void Run(); +}; + +struct ToggleMediaLibraryColumnsMode : public Action +{ + ToggleMediaLibraryColumnsMode() + : Action(aToggleMediaLibraryColumnsMode, "toggle_media_library_columns_mode") { } + +protected: + virtual bool canBeRun() const; virtual void Run(); }; diff --git a/src/bindings.cpp b/src/bindings.cpp index 9c3d5df9..16ddf594 100644 --- a/src/bindings.cpp +++ b/src/bindings.cpp @@ -319,7 +319,10 @@ void BindingsConfiguration::generateDefaults() bind(k, aResetSearchEngine); } if (notBound(k = stringToKey("4"))) + { bind(k, aShowMediaLibrary); + bind(k, aToggleMediaLibraryColumnsMode); + } if (notBound(k = stringToKey("5"))) bind(k, aShowPlaylistEditor); if (notBound(k = stringToKey("6"))) diff --git a/src/help.cpp b/src/help.cpp index 7b2a06b7..4a7f0784 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -311,8 +311,7 @@ void Help::GetKeybindings() KeyDesc(aResetSearchEngine, "Reset search constraints and clear results"); KeysSection("Media library"); - if (!Config.media_library_disable_two_column_mode) - KeyDesc(aShowMediaLibrary, "Switch between two/three columns mode"); + KeyDesc(aToggleMediaLibraryColumnsMode, "Switch between two/three columns mode"); KeyDesc(aPreviousColumn, "Previous column"); KeyDesc(aNextColumn, "Next column"); KeyDesc(aPressEnter, "Add item to playlist and play it"); diff --git a/src/media_library.cpp b/src/media_library.cpp index 108c753a..769b1620 100644 --- a/src/media_library.cpp +++ b/src/media_library.cpp @@ -198,40 +198,10 @@ void MediaLibrary::refresh() void MediaLibrary::switchTo() { - if (myScreen == this) - { - if (!Config.media_library_disable_two_column_mode) - { - hasTwoColumns = !hasTwoColumns; - Tags.clear(); - Albums.clear(); - Albums.reset(); - Songs.clear(); - if (hasTwoColumns) - { - if (isActiveWindow(Tags)) - nextColumn(); - if (Config.titles_visibility) - { - std::string item_type = lowercase(tagTypeToString(Config.media_lib_primary_tag)); - Albums.setTitle("Albums (sorted by " + item_type + ")"); - } - else - Albums.setTitle(""); - } - else - Albums.setTitle(Config.titles_visibility ? "Albums" : ""); - resize(); - refresh(); - } - } - else - { - SwitchTo::execute(this); - markSongsInPlaylist(songsProxyList()); - drawHeader(); - refresh(); - } + SwitchTo::execute(this); + markSongsInPlaylist(songsProxyList()); + drawHeader(); + refresh(); } std::wstring MediaLibrary::title() @@ -742,6 +712,30 @@ void MediaLibrary::nextColumn() /***********************************************************************/ +void MediaLibrary::toggleColumnsMode() +{ + hasTwoColumns = !hasTwoColumns; + Tags.clear(); + Albums.clear(); + Albums.reset(); + Songs.clear(); + if (hasTwoColumns) + { + if (isActiveWindow(Tags)) + nextColumn(); + if (Config.titles_visibility) + { + std::string item_type = lowercase(tagTypeToString(Config.media_lib_primary_tag)); + Albums.setTitle("Albums (sorted by " + item_type + ")"); + } + else + Albums.setTitle(""); + } + else + Albums.setTitle(Config.titles_visibility ? "Albums" : ""); + resize(); +} + int MediaLibrary::Columns() { if (hasTwoColumns) diff --git a/src/media_library.h b/src/media_library.h index fa0b1fac..1c76ae01 100644 --- a/src/media_library.h +++ b/src/media_library.h @@ -68,6 +68,7 @@ struct MediaLibrary: Screen, Filterable, HasColumns, HasSongs, Sea virtual void nextColumn() OVERRIDE; // private members + void toggleColumnsMode(); int Columns(); void LocateSong(const MPD::Song &); std::shared_ptr songsProxyList(); diff --git a/src/settings.cpp b/src/settings.cpp index 27a584f1..64452766 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -244,7 +244,6 @@ void Configuration::SetDefaults() tag_editor_extended_numeration = false; media_library_display_date = true; media_library_display_empty_tag = true; - media_library_disable_two_column_mode = false; discard_colors_if_item_is_selected = true; store_lyrics_in_song_dir = false; ask_for_locked_screen_width_part = true; @@ -798,10 +797,6 @@ void Configuration::Read() { media_library_display_empty_tag = v == "yes"; } - else if (name == "media_library_disable_two_column_mode") - { - media_library_disable_two_column_mode = v == "yes"; - } else if (name == "discard_colors_if_item_is_selected") { discard_colors_if_item_is_selected = v == "yes"; diff --git a/src/settings.h b/src/settings.h index 93f3c2da..7afc3e77 100644 --- a/src/settings.h +++ b/src/settings.h @@ -182,7 +182,6 @@ struct Configuration bool tag_editor_extended_numeration; bool media_library_display_date; bool media_library_display_empty_tag; - bool media_library_disable_two_column_mode; bool discard_colors_if_item_is_selected; bool store_lyrics_in_song_dir; bool ask_for_locked_screen_width_part;