From 3d2e5adae8bfc0d1d7f709ffb109d6bd9a2be592 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sat, 15 Sep 2012 23:13:47 +0200 Subject: [PATCH] actions: split ShowBrowser into showBrowser and ChangeBrowseMode --- doc/bindings | 3 +++ src/actions.cpp | 25 ++++++++++++++++++++----- src/actions.h | 13 ++++++++++--- src/bindings.cpp | 3 +++ src/browser.cpp | 30 +++++++++++------------------- src/help.cpp | 2 +- 6 files changed, 48 insertions(+), 28 deletions(-) diff --git a/doc/bindings b/doc/bindings index cc61d363..ace63072 100644 --- a/doc/bindings +++ b/doc/bindings @@ -178,6 +178,9 @@ #def_key "2" # show_browser # +#def_key "2" +# change_browse_mode +# #def_key "3" # show_search_engine # diff --git a/src/actions.cpp b/src/actions.cpp index ac740ea4..217035c0 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -2032,6 +2032,16 @@ void ToggleBitrateVisibility::Run() Statusbar::msg("Bitrate visibility %s", Config.display_bitrate ? "enabled" : "disabled"); } +bool ChangeBrowseMode::canBeRun() const +{ + return myScreen == myBrowser; +} + +void ChangeBrowseMode::Run() +{ + myBrowser->ChangeBrowseMode(); +} + void AddRandomItems::Run() { using Global::wFooter; @@ -2334,8 +2344,9 @@ bool ShowPlaylist::canBeRun() const { return myScreen != myPlaylist # ifdef HAVE_TAGLIB_H - && myScreen != myTinyTagEditor; + && myScreen != myTinyTagEditor # endif // HAVE_TAGLIB_H + ; } void ShowPlaylist::Run() @@ -2343,12 +2354,14 @@ void ShowPlaylist::Run() myPlaylist->switchTo(); } -#ifdef HAVE_TAGLIB_H bool ShowBrowser::canBeRun() const { - return myScreen != myTinyTagEditor; + return myScreen != myBrowser +# ifdef HAVE_TAGLIB_H + && myScreen != myTinyTagEditor +# endif // HAVE_TAGLIB_H + ; } -#endif // HAVE_TAGLIB_H void ShowBrowser::Run() { @@ -2383,8 +2396,9 @@ bool ShowPlaylistEditor::canBeRun() const { return myScreen != myPlaylistEditor # ifdef HAVE_TAGLIB_H - && myScreen != myTinyTagEditor; + && myScreen != myTinyTagEditor # endif // HAVE_TAGLIB_H + ; } void ShowPlaylistEditor::Run() @@ -2578,6 +2592,7 @@ void populateActions() insertAction(new ToggleAddMode()); insertAction(new ToggleMouse()); insertAction(new ToggleBitrateVisibility()); + insertAction(new ChangeBrowseMode()); insertAction(new AddRandomItems()); insertAction(new ToggleBrowserSortMode()); insertAction(new ToggleLibraryTagType()); diff --git a/src/actions.h b/src/actions.h index 5f44401f..471e073a 100644 --- a/src/actions.h +++ b/src/actions.h @@ -46,7 +46,7 @@ enum ActionType aToggleMouse, aToggleBitrateVisibility, aAddRandomItems, aToggleBrowserSortMode, aToggleLibraryTagType, aRefetchLyrics, aRefetchArtistInfo, aSetSelectedItemsPriority, aFilterPlaylistOnPriorities, aShowSongInfo, aShowArtistInfo, - aShowLyrics, aQuit, aNextScreen, aPreviousScreen, aShowHelp, aShowPlaylist, aShowBrowser, + aShowLyrics, aQuit, aNextScreen, aPreviousScreen, aShowHelp, aShowPlaylist, aShowBrowser, aChangeBrowseMode, aShowSearchEngine, aShowMediaLibrary, aShowPlaylistEditor, aShowTagEditor, aShowOutputs, aShowVisualizer, aShowClock, aShowServerInfo }; @@ -997,9 +997,16 @@ struct ShowBrowser : public Action ShowBrowser() : Action(aShowBrowser, "show_browser") { } protected: -# ifdef HAVE_TAGLIB_H virtual bool canBeRun() const; -# endif // HAVE_TAGLIB_H + virtual void Run(); +}; + +struct ChangeBrowseMode : public Action +{ + ChangeBrowseMode() : Action(aChangeBrowseMode, "change_browse_mode") { } + +protected: + virtual bool canBeRun() const; virtual void Run(); }; diff --git a/src/bindings.cpp b/src/bindings.cpp index 0d489e9b..151db9cd 100644 --- a/src/bindings.cpp +++ b/src/bindings.cpp @@ -309,7 +309,10 @@ void BindingsConfiguration::generateDefaults() if (notBound(k = stringToKey("1"))) bind(k, aShowPlaylist); if (notBound(k = stringToKey("2"))) + { bind(k, aShowBrowser); + bind(k, aChangeBrowseMode); + } if (notBound(k = stringToKey("3"))) bind(k, aShowSearchEngine); if (notBound(k = stringToKey("4"))) diff --git a/src/browser.cpp b/src/browser.cpp index 5fa32e46..ca031473 100644 --- a/src/browser.cpp +++ b/src/browser.cpp @@ -88,26 +88,18 @@ void Browser::resize() void Browser::switchTo() { - if (myScreen == this) - { -# ifndef WIN32 - ChangeBrowseMode(); -# endif // !WIN32 - } + SwitchTo::execute(this); + + // local browser doesn't support sorting by mtime + if (isLocal() && Config.browser_sort_mode == smMTime) + Config.browser_sort_mode = smName; + + if (w.empty()) + GetDirectory(itsBrowsedDir); else - { - SwitchTo::execute(this); - - if (isLocal() && Config.browser_sort_mode == smMTime) // local browser doesn't support sorting by mtime - Config.browser_sort_mode = smName; - - if (w.empty()) - GetDirectory(itsBrowsedDir); - else - markSongsInPlaylist(getProxySongList()); - - drawHeader(); - } + markSongsInPlaylist(getProxySongList()); + + drawHeader(); } std::wstring Browser::title() diff --git a/src/help.cpp b/src/help.cpp index 6793bafa..72e32e6f 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -294,7 +294,7 @@ void Help::GetKeybindings() # endif // HAVE_TAGLIB_H KeyDesc(aEditDirectoryName, "Edit directory name"); KeyDesc(aEditPlaylistName, "Edit playlist name"); - KeyDesc(aShowBrowser, "Browse MPD database/local filesystem"); + KeyDesc(aChangeBrowseMode, "Browse MPD database/local filesystem"); KeyDesc(aToggleBrowserSortMode, "Toggle sort mode"); KeyDesc(aJumpToPlayingSong, "Locate playing song"); KeyDesc(aJumpToParentDirectory, "Jump to parent directory");