diff options
| -rw-r--r-- | app/include/turns/app/windows/create_participant.hpp | 10 | ||||
| -rw-r--r-- | app/src/windows/create_participant.cpp | 9 | ||||
| -rw-r--r-- | app/src/windows/main.cpp | 1 | ||||
| -rw-r--r-- | domain/include/turns/domain/turn_order.hpp | 2 | ||||
| -rw-r--r-- | domain/src/turn_order.cpp | 3 |
5 files changed, 21 insertions, 4 deletions
diff --git a/app/include/turns/app/windows/create_participant.hpp b/app/include/turns/app/windows/create_participant.hpp index 856c1dc..a9f19ea 100644 --- a/app/include/turns/app/windows/create_participant.hpp +++ b/app/include/turns/app/windows/create_participant.hpp @@ -4,18 +4,24 @@ #include <adwaita.h> #include <glibmm/refptr.h> #include <gtkmm/builder.h> -#include <gtkmm/widget.h> #include <gtkmm/button.h> +#include <gtkmm/widget.h> + +#include <sigc++/signal.h> namespace turns::app::windows { struct create_participant : Gtk::Widget { + using signal_finished_type = sigc::signal<void (Glib::ustring, float)>; + create_participant(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder); auto present(Gtk::Widget * parent) -> void; + auto signal_finished() -> signal_finished_type; + private: auto handle_finish_clicked() -> void; @@ -25,6 +31,8 @@ namespace turns::app::windows AdwComboRow * m_disposition{}; AdwEntryRow * m_name{}; AdwSpinRow * m_order{}; + + signal_finished_type m_signal_finished{}; }; } // namespace turns::app::windows diff --git a/app/src/windows/create_participant.cpp b/app/src/windows/create_participant.cpp index b6d674f..eadc41e 100644 --- a/app/src/windows/create_participant.cpp +++ b/app/src/windows/create_participant.cpp @@ -3,6 +3,7 @@ #include <print> #include <gtkmm/listboxrow.h> +#include <gtkmm/editable.h> namespace turns::app::windows { @@ -24,8 +25,16 @@ namespace turns::app::windows adw_dialog_present(m_adw, parent->gobj()); } + auto create_participant::signal_finished() -> signal_finished_type + { + return m_signal_finished; + } + auto create_participant::handle_finish_clicked() -> void { + auto name = gtk_editable_get_text(GTK_EDITABLE(m_name)); + auto order = adw_spin_row_get_value(m_order); + m_signal_finished.emit(name, order); adw_dialog_close(m_adw); } } // namespace turns::app::windows
\ No newline at end of file diff --git a/app/src/windows/main.cpp b/app/src/windows/main.cpp index bb8d55e..6b2331a 100644 --- a/app/src/windows/main.cpp +++ b/app/src/windows/main.cpp @@ -51,6 +51,7 @@ namespace turns::app::windows auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/create_participant.ui"); auto dialog = Gtk::Builder::get_widget_derived<windows::create_participant>(builder, "create_participant_dialog"); dialog->present(this); + dialog->signal_finished().connect(sigc::mem_fun(*m_participants, &domain::turn_order::append)); } } // namespace turns::app::windows diff --git a/domain/include/turns/domain/turn_order.hpp b/domain/include/turns/domain/turn_order.hpp index 8c9afa7..a82e331 100644 --- a/domain/include/turns/domain/turn_order.hpp +++ b/domain/include/turns/domain/turn_order.hpp @@ -17,7 +17,7 @@ namespace turns::domain auto static create() -> Glib::RefPtr<turn_order>; - auto append(Glib::ustring const & name, float order_value) -> turn_order &; + auto append(Glib::ustring const & name, float order_value) -> void; auto sort() -> void; }; diff --git a/domain/src/turn_order.cpp b/domain/src/turn_order.cpp index 8b9e042..81b7fe7 100644 --- a/domain/src/turn_order.cpp +++ b/domain/src/turn_order.cpp @@ -24,12 +24,11 @@ namespace turns::domain return Glib::make_refptr_for_instance(new turn_order{}); } - auto turn_order::append(Glib::ustring const & name, float order_value) -> turn_order & + auto turn_order::append(Glib::ustring const & name, float order_value) -> void { auto participant = participant::create(name, order_value); participant->property_order_value().signal_changed().connect([this] { sort(); }); insert_sorted(participant, comparator); - return *this; } auto turn_order::sort() -> void |
