From 0ee09fb109e106cc826382f150480c0f313bf83c Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sun, 27 Sep 2015 14:24:30 +0200 Subject: [PATCH] outputs: replace enterPressed with toggleOutput --- doc/bindings | 3 +++ src/actions.cpp | 11 +++++++++++ src/actions.h | 11 ++++++++++- src/bindings.cpp | 3 +++ src/help.cpp | 2 +- src/outputs.cpp | 31 +++++++++++++++---------------- src/outputs.h | 5 +++-- src/status.cpp | 4 ++-- 8 files changed, 48 insertions(+), 22 deletions(-) diff --git a/doc/bindings b/doc/bindings index 93e78793..ca4d09b6 100644 --- a/doc/bindings +++ b/doc/bindings @@ -193,6 +193,9 @@ # select_item # #def_key "enter" +# toggle_output +# +#def_key "enter" # press_enter # #def_key "space" diff --git a/src/actions.cpp b/src/actions.cpp index deab9110..e46a0a86 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -2216,6 +2216,16 @@ void SetSelectedItemsPriority::run() myPlaylist->SetSelectedItemsPriority(prio); } +bool ToggleOutput::canBeRun() +{ + return myScreen == myOutputs; +} + +void ToggleOutput::run() +{ + myOutputs->toggleOutput(); +} + bool ToggleVisualizationType::canBeRun() { # ifdef ENABLE_VISUALIZER @@ -2667,6 +2677,7 @@ void populateActions() insert_action(new Actions::ToggleMediaLibrarySortMode()); insert_action(new Actions::RefetchLyrics()); insert_action(new Actions::SetSelectedItemsPriority()); + insert_action(new Actions::ToggleOutput()); insert_action(new Actions::ToggleVisualizationType()); insert_action(new Actions::SetVisualizerSampleMultiplier()); insert_action(new Actions::ShowSongInfo()); diff --git a/src/actions.h b/src/actions.h index 544115d1..515b5e66 100644 --- a/src/actions.h +++ b/src/actions.h @@ -56,7 +56,7 @@ enum class Type ToggleAddMode, ToggleMouse, ToggleBitrateVisibility, AddRandomItems, ToggleBrowserSortMode, ToggleLibraryTagType, ToggleMediaLibrarySortMode, RefetchLyrics, - SetSelectedItemsPriority, ToggleVisualizationType, SetVisualizerSampleMultiplier, + SetSelectedItemsPriority, ToggleOutput, ToggleVisualizationType, SetVisualizerSampleMultiplier, ShowSongInfo, ShowArtistInfo, ShowLyrics, Quit, NextScreen, PreviousScreen, ShowHelp, ShowPlaylist, ShowBrowser, ChangeBrowseMode, ShowSearchEngine, ResetSearchEngine, ShowMediaLibrary, ToggleMediaLibraryColumnsMode, @@ -1045,6 +1045,15 @@ private: virtual void run() OVERRIDE; }; +struct ToggleOutput: BaseAction +{ + ToggleOutput(): BaseAction(Type::ToggleOutput, "toggle_output") { } + +private: + virtual bool canBeRun() OVERRIDE; + virtual void run() OVERRIDE; +}; + struct ToggleVisualizationType: BaseAction { ToggleVisualizationType() diff --git a/src/bindings.cpp b/src/bindings.cpp index afa3184c..557994be 100644 --- a/src/bindings.cpp +++ b/src/bindings.cpp @@ -496,7 +496,10 @@ void BindingsConfiguration::generateDefaults() if (notBound(k = stringToKey("insert"))) bind(k, Actions::Type::SelectItem); if (notBound(k = stringToKey("enter"))) + { + bind(k, Actions::Type::ToggleOutput); bind(k, Actions::Type::PressEnter); + } if (notBound(k = stringToKey("space"))) { bind(k, Actions::Type::AddItemToPlaylist); diff --git a/src/help.cpp b/src/help.cpp index 9a017c0c..be7ed3ea 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -330,7 +330,7 @@ void write_bindings(NC::Scrollpad &w) # ifdef ENABLE_OUTPUTS key_section(w, "Outputs"); - key(w, Type::PressEnter, "Toggle output"); + key(w, Type::ToggleOutput, "Toggle output"); # endif // ENABLE_OUTPUTS # if defined(ENABLE_VISUALIZER) && defined(HAVE_FFTW3_H) diff --git a/src/outputs.cpp b/src/outputs.cpp index dce69f01..3b076108 100644 --- a/src/outputs.cpp +++ b/src/outputs.cpp @@ -69,20 +69,6 @@ std::wstring Outputs::title() return L"Outputs"; } -void Outputs::enterPressed() -{ - if (w.current()->value().enabled()) - { - Mpd.DisableOutput(w.choice()); - Statusbar::printf("Output \"%s\" disabled", w.current()->value().name()); - } - else - { - Mpd.EnableOutput(w.choice()); - Statusbar::printf("Output \"%s\" enabled", w.current()->value().name()); - } -} - void Outputs::mouseButtonPressed(MEVENT me) { if (w.empty() || !w.hasCoords(me.x, me.y) || size_t(me.y) >= w.size()) @@ -97,7 +83,7 @@ void Outputs::mouseButtonPressed(MEVENT me) Screen::mouseButtonPressed(me); } -void Outputs::FetchList() +void Outputs::fetchList() { w.clear(); for (MPD::OutputIterator out = Mpd.GetOutputs(), end; out != end; ++out) @@ -111,5 +97,18 @@ void Outputs::FetchList() w.refresh(); } -#endif // ENABLE_OUTPUTS +void Outputs::toggleOutput() +{ + if (w.current()->value().enabled()) + { + Mpd.DisableOutput(w.choice()); + Statusbar::printf("Output \"%s\" disabled", w.current()->value().name()); + } + else + { + Mpd.EnableOutput(w.choice()); + Statusbar::printf("Output \"%s\" enabled", w.current()->value().name()); + } +} +#endif // ENABLE_OUTPUTS diff --git a/src/outputs.h b/src/outputs.h index 1d066b92..7da62a2c 100644 --- a/src/outputs.h +++ b/src/outputs.h @@ -43,14 +43,15 @@ struct Outputs: Screen>, Tabbable virtual void update() OVERRIDE { } - virtual void enterPressed() OVERRIDE; + virtual void enterPressed() OVERRIDE { } virtual void mouseButtonPressed(MEVENT me) OVERRIDE; virtual bool isLockable() OVERRIDE { return true; } virtual bool isMergable() OVERRIDE { return true; } // private members - void FetchList(); + void fetchList(); + void toggleOutput(); }; extern Outputs *myOutputs; diff --git a/src/status.cpp b/src/status.cpp index 7c9f5352..e1cdab73 100644 --- a/src/status.cpp +++ b/src/status.cpp @@ -159,7 +159,7 @@ void initialize_status() myBrowser->fetchSupportedExtensions(); # ifdef ENABLE_OUTPUTS - myOutputs->FetchList(); + myOutputs->fetchList(); # endif // ENABLE_OUTPUTS # ifdef ENABLE_VISUALIZER myVisualizer->ResetFD(); @@ -760,6 +760,6 @@ void Status::Changes::mixer() void Status::Changes::outputs() { # ifdef ENABLE_OUTPUTS - myOutputs->FetchList(); + myOutputs->fetchList(); # endif // ENABLE_OUTPUTS }