blob: 39b721ce5039938f25998529f0c023da9b1d1a35 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
/*
* SPDX-FileCopyrightText: 2025 Felix Morgner <felix.morgner@gmail.com>
* SPDX-License-Identifier: LGPL-2.1-only
*/
#ifndef TURNS_UI_PARTICIPANT_EDITOR_HPP
#define TURNS_UI_PARTICIPANT_EDITOR_HPP
#include "turns/core/disposition.hpp"
#include "turns/core/fwd.hpp"
#include "turns/core/participant.hpp"
#include "turns/ui/template_widget.hpp"
#include <sigc++/signal.h>
#include <glibmm/property.h>
#include <glibmm/propertyproxy.h>
#include <glibmm/refptr.h>
#include <glibmm/ustring.h>
#include <gtkmm/builder.h>
#include <gtkmm/button.h>
#include <gtkmm/listitem.h>
#include <gtkmm/signallistitemfactory.h>
#include <gtkmm/stringlist.h>
#include <gtkmm/widget.h>
#include <adwaitamm/comborow.hpp>
#include <adwaitamm/dialog.hpp>
#include <adwaitamm/entryrow.hpp>
#include <adwaitamm/spinrow.hpp>
#include <array>
namespace turns::ui
{
struct ParticipantEditor : template_widget<ParticipantEditor, Adwaita::Dialog>
{
using SignalFinishedType = sigc::signal<void(Glib::ustring, float, core::Disposition)>;
auto constexpr inline static children = std::array{
"disposition",
"finish",
"name",
"priority",
};
explicit ParticipantEditor(Glib::RefPtr<core::Participant> participant);
[[nodiscard]] auto get_disposition() const -> core::Disposition;
[[nodiscard]] auto get_name() const -> Glib::ustring;
[[nodiscard]] auto get_participant() const -> Glib::RefPtr<core::Participant>;
[[nodiscard]] auto get_priority() const -> double;
auto set_disposition(core::Disposition value) -> void;
auto set_name(Glib::ustring const & value) -> void;
auto set_participant(Glib::RefPtr<core::Participant> const & value) -> void;
auto set_priority(double value) -> void;
[[nodiscard]] auto property_participant() -> Glib::PropertyProxy<Glib::RefPtr<core::Participant>>;
[[nodiscard]] auto property_participant() const -> Glib::PropertyProxy_ReadOnly<Glib::RefPtr<core::Participant>>;
auto signal_finished() -> SignalFinishedType;
private:
auto handle_finish_clicked() -> void;
auto handle_item_bind(Glib::RefPtr<Gtk::ListItem> item) -> void;
auto handle_item_setup(Glib::RefPtr<Gtk::ListItem> 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<Gtk::SignalListItemFactory> m_disposition_factory;
Glib::RefPtr<Gtk::StringList> m_disposition_model;
Glib::Property<Glib::RefPtr<core::Participant>> m_participant;
SignalFinishedType m_signal_finished{};
};
} // namespace turns::ui
#endif
|