From 28633e857f86a21d874117fd677de5e8ad21d8d3 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 4 Oct 2023 14:47:30 +1100 Subject: Implement UI for enqueuing instead of replacing the current track --- src/ui/include/modal.hpp | 9 +++++++++ src/ui/include/modal_add_to_queue.hpp | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/ui/include/modal_add_to_queue.hpp (limited to 'src/ui/include') diff --git a/src/ui/include/modal.hpp b/src/ui/include/modal.hpp index a5ac69b8..61e52cdf 100644 --- a/src/ui/include/modal.hpp +++ b/src/ui/include/modal.hpp @@ -30,6 +30,15 @@ class Modal { lv_obj_t* const root_; lv_group_t* const group_; + std::pmr::vector> event_bindings_; + + template + auto lv_bind(lv_obj_t* obj, lv_event_code_t ev, T fn) -> void { + auto binding = std::make_unique(obj, ev); + binding->signal().connect(fn); + event_bindings_.push_back(std::move(binding)); + } + private: Screen* host_; }; diff --git a/src/ui/include/modal_add_to_queue.hpp b/src/ui/include/modal_add_to_queue.hpp new file mode 100644 index 00000000..760a155e --- /dev/null +++ b/src/ui/include/modal_add_to_queue.hpp @@ -0,0 +1,36 @@ +/* + * Copyright 2023 jacqueline + * + * SPDX-License-Identifier: GPL-3.0-only + */ + +#pragma once + +#include +#include + +#include "database.hpp" +#include "index.hpp" +#include "lvgl.h" + +#include "modal.hpp" +#include "source.hpp" +#include "track_queue.hpp" + +namespace ui { +namespace modals { + +class AddToQueue : public Modal { + public: + AddToQueue(Screen*, + audio::TrackQueue&, + std::shared_ptr); + + private: + audio::TrackQueue& queue_; + std::shared_ptr item_; + lv_obj_t* container_; +}; + +} // namespace modals +} // namespace ui -- cgit v1.2.3