/* * SPDX-FileCopyrightText: 2025 Felix Morgner * SPDX-License-Identifier: LGPL-2.1-only */ #ifndef TURNS_GUI_PARTICIPANT_EDITOR_HPP #define TURNS_GUI_PARTICIPANT_EDITOR_HPP #include "template_widget.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace Turns::gui { struct ParticipantEditor : template_widget { using SignalFinishedType = sigc::signal; auto constexpr inline static children = std::array{ "disposition", "finish", "name", "priority", }; explicit ParticipantEditor(Glib::RefPtr participant); [[nodiscard]] auto get_disposition() const -> Participant::Disposition; [[nodiscard]] auto get_name() const -> Glib::ustring; [[nodiscard]] auto get_participant() const -> Glib::RefPtr; [[nodiscard]] auto get_priority() const -> double; auto set_disposition(Participant::Disposition value) -> void; auto set_name(Glib::ustring const & value) -> void; auto set_participant(Glib::RefPtr const & value) -> void; auto set_priority(double value) -> void; [[nodiscard]] auto property_participant() -> Glib::PropertyProxy>; [[nodiscard]] auto property_participant() const -> Glib::PropertyProxy_ReadOnly>; auto signal_finished() -> SignalFinishedType; private: auto handle_finish_clicked() -> void; auto handle_item_bind(Glib::RefPtr item) -> void; auto handle_item_setup(Glib::RefPtr item) -> void; auto handle_participant_changed() -> void; Adwaita::ComboRow * m_disposition; Gtk::Button * m_finish; Adwaita::EntryRow * m_name; Adwaita::SpinRow * m_priority; Glib::RefPtr m_disposition_factory; Glib::RefPtr m_disposition_model; Glib::Property> m_participant; SignalFinishedType m_signal_finished{}; }; } // namespace Turns::gui #endif