diff --git a/doc/bindings b/doc/bindings index ace63072..77d1d222 100644 --- a/doc/bindings +++ b/doc/bindings @@ -184,6 +184,9 @@ #def_key "3" # show_search_engine # +#def_key "3" +# reset_search_engine +# #def_key "4" # show_media_library # diff --git a/src/actions.cpp b/src/actions.cpp index 217035c0..47de86f6 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -2032,16 +2032,6 @@ 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; @@ -2368,18 +2358,40 @@ void ShowBrowser::Run() myBrowser->switchTo(); } -#ifdef HAVE_TAGLIB_H +bool ChangeBrowseMode::canBeRun() const +{ + return myScreen == myBrowser; +} + +void ChangeBrowseMode::Run() +{ + myBrowser->ChangeBrowseMode(); +} + bool ShowSearchEngine::canBeRun() const { - return myScreen != myTinyTagEditor; + return myScreen != mySearcher +# ifdef HAVE_TAGLIB_H + && myScreen != myTinyTagEditor +# endif // HAVE_TAGLIB_H + ; } -#endif // HAVE_TAGLIB_H void ShowSearchEngine::Run() { mySearcher->switchTo(); } +bool ResetSearchEngine::canBeRun() const +{ + return myScreen == mySearcher; +} + +void ResetSearchEngine::Run() +{ + mySearcher->reset(); +} + #ifdef HAVE_TAGLIB_H bool ShowMediaLibrary::canBeRun() const { @@ -2592,7 +2604,6 @@ void populateActions() insertAction(new ToggleAddMode()); insertAction(new ToggleMouse()); insertAction(new ToggleBitrateVisibility()); - insertAction(new ChangeBrowseMode()); insertAction(new AddRandomItems()); insertAction(new ToggleBrowserSortMode()); insertAction(new ToggleLibraryTagType()); @@ -2609,7 +2620,9 @@ void populateActions() insertAction(new ShowHelp()); insertAction(new ShowPlaylist()); insertAction(new ShowBrowser()); + insertAction(new ChangeBrowseMode()); insertAction(new ShowSearchEngine()); + insertAction(new ResetSearchEngine()); insertAction(new ShowMediaLibrary()); insertAction(new ShowPlaylistEditor()); insertAction(new ShowTagEditor()); diff --git a/src/actions.h b/src/actions.h index 471e073a..4b7dbcc3 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, aShowMediaLibrary, aShowPlaylistEditor, aShowTagEditor, aShowOutputs, + aShowSearchEngine, aResetSearchEngine, aShowMediaLibrary, aShowPlaylistEditor, aShowTagEditor, aShowOutputs, aShowVisualizer, aShowClock, aShowServerInfo }; @@ -1015,9 +1015,16 @@ struct ShowSearchEngine : public Action ShowSearchEngine() : Action(aShowSearchEngine, "show_search_engine") { } protected: -# ifdef HAVE_TAGLIB_H virtual bool canBeRun() const; -# endif // HAVE_TAGLIB_H + virtual void Run(); +}; + +struct ResetSearchEngine : public Action +{ + ResetSearchEngine() : Action(aResetSearchEngine, "reset_search_engine") { } + +protected: + virtual bool canBeRun() const; virtual void Run(); }; diff --git a/src/bindings.cpp b/src/bindings.cpp index 151db9cd..9c3d5df9 100644 --- a/src/bindings.cpp +++ b/src/bindings.cpp @@ -314,7 +314,10 @@ void BindingsConfiguration::generateDefaults() bind(k, aChangeBrowseMode); } if (notBound(k = stringToKey("3"))) + { bind(k, aShowSearchEngine); + bind(k, aResetSearchEngine); + } if (notBound(k = stringToKey("4"))) bind(k, aShowMediaLibrary); if (notBound(k = stringToKey("5"))) diff --git a/src/help.cpp b/src/help.cpp index 72e32e6f..7b2a06b7 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -308,7 +308,7 @@ void Help::GetKeybindings() KeyDesc(aEditSong, "Edit song"); # endif // HAVE_TAGLIB_H KeyDesc(aStartSearching, "Start searching"); - KeyDesc(aShowSearchEngine, "Reset search constraints and clear results"); + KeyDesc(aResetSearchEngine, "Reset search constraints and clear results"); KeysSection("Media library"); if (!Config.media_library_disable_two_column_mode) diff --git a/src/search_engine.cpp b/src/search_engine.cpp index c670fd0b..b465238e 100644 --- a/src/search_engine.cpp +++ b/src/search_engine.cpp @@ -126,16 +126,11 @@ void SearchEngine::resize() void SearchEngine::switchTo() { - if (Global::myScreen != this) - { - SwitchTo::execute(this); - if (w.empty()) - Prepare(); - markSongsInPlaylist(getProxySongList()); - drawHeader(); - } - else - reset(); + SwitchTo::execute(this); + if (w.empty()) + Prepare(); + markSongsInPlaylist(getProxySongList()); + drawHeader(); } std::wstring SearchEngine::title() diff --git a/src/search_engine.h b/src/search_engine.h index 47336879..2653ae5b 100644 --- a/src/search_engine.h +++ b/src/search_engine.h @@ -110,6 +110,8 @@ struct SearchEngine: Screen>, Filterable, HasSongs, Searchable, virtual MPD::SongList getSelectedSongs() OVERRIDE; // private members + void reset(); + static size_t StaticOptions; static size_t SearchButton; static size_t ResetButton; @@ -120,7 +122,6 @@ protected: private: void Prepare(); void Search(); - void reset(); const char **SearchMode;