From 430cd92e96a6932ea71319bfb09977a87a449bbf Mon Sep 17 00:00:00 2001 From: arcnmx Date: Sun, 13 Dec 2020 00:25:23 -0800 Subject: [PATCH] Add an explicit Load action (#409) --- src/actions.cpp | 22 ++++++++++++++++++++++ src/actions.h | 10 ++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/actions.cpp b/src/actions.cpp index cc309a5f..f07feab6 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -1034,6 +1034,27 @@ void Add::run() } } +bool Load::canBeRun() +{ + return myScreen != myPlaylistEditor; +} + +void Load::run() +{ + using Global::wFooter; + + std::string path; + { + Statusbar::ScopedLock slock; + Statusbar::put() << "Load playlist: "; + path = wFooter->prompt(); + } + + Statusbar::put() << "Loading..."; + wFooter->refresh(); + Mpd.LoadPlaylist(path); +} + bool SeekForward::canBeRun() { return Status::State::player() != MPD::psStop && Status::State::totalTime() > 0; @@ -2753,6 +2774,7 @@ void populateActions() insert_action(new Actions::MoveSelectedItemsDown()); insert_action(new Actions::MoveSelectedItemsTo()); insert_action(new Actions::Add()); + insert_action(new Actions::Load()); insert_action(new Actions::PlayItem()); insert_action(new Actions::SeekForward()); insert_action(new Actions::SeekBackward()); diff --git a/src/actions.h b/src/actions.h index c5548e90..809e94ee 100644 --- a/src/actions.h +++ b/src/actions.h @@ -77,6 +77,7 @@ enum class Type MoveSelectedItemsDown, MoveSelectedItemsTo, Add, + Load, SeekForward, SeekBackward, ToggleDisplayMode, @@ -606,6 +607,15 @@ private: virtual void run() override; }; +struct Load: BaseAction +{ + Load(): BaseAction(Type::Load, "load") { } + +private: + virtual bool canBeRun() override; + virtual void run() override; +}; + struct SeekForward: BaseAction { SeekForward(): BaseAction(Type::SeekForward, "seek_forward") { }