diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/include/turns/app/windows/participant_editor.hpp | 12 | ||||
| -rw-r--r-- | app/src/windows/main.cpp | 2 | ||||
| -rw-r--r-- | app/src/windows/participant_editor.cpp | 7 | ||||
| -rw-r--r-- | app/tests/widgets/participant_row.cpp | 3 | ||||
| -rw-r--r-- | app/tests/windows/participant_editor.cpp | 7 |
5 files changed, 20 insertions, 11 deletions
diff --git a/app/include/turns/app/windows/participant_editor.hpp b/app/include/turns/app/windows/participant_editor.hpp index 36c1d37..764b9ba 100644 --- a/app/include/turns/app/windows/participant_editor.hpp +++ b/app/include/turns/app/windows/participant_editor.hpp @@ -3,14 +3,16 @@ #include "turns/domain/participant.hpp" +#include <utility> + #include <adwaita.h> #include <glibmm/refptr.h> #include <gtkmm/builder.h> #include <gtkmm/button.h> -#include <gtkmm/widget.h> -#include <gtkmm/stringlist.h> -#include <gtkmm/signallistitemfactory.h> #include <gtkmm/listitem.h> +#include <gtkmm/signallistitemfactory.h> +#include <gtkmm/stringlist.h> +#include <gtkmm/widget.h> #include <sigc++/signal.h> @@ -19,7 +21,9 @@ namespace turns::app::windows struct participant_editor : Gtk::Widget { - using signal_finished_type = sigc::signal<void(Glib::ustring, float)>; + using signal_finished_type = sigc::signal<void(decltype(std::declval<domain::participant const>().get_name()), + decltype(std::declval<domain::participant const>().get_priority()), + decltype(std::declval<domain::participant const>().get_disposition()))>; participant_editor(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder, Glib::RefPtr<domain::participant> obj = {}); diff --git a/app/src/windows/main.cpp b/app/src/windows/main.cpp index a8f8739..68d2c5f 100644 --- a/app/src/windows/main.cpp +++ b/app/src/windows/main.cpp @@ -69,7 +69,7 @@ namespace turns::app::windows { auto [lifeline, dialog] = editor_for(nullptr); dialog->present(this); - dialog->signal_finished().connect([this](auto name, auto priority) { m_participant_list_data->append(name, priority); }); + dialog->signal_finished().connect([this](auto name, auto priority, auto disposition) { m_participant_list_data->append(name, priority, disposition); }); } auto main::handle_clear() -> void diff --git a/app/src/windows/participant_editor.cpp b/app/src/windows/participant_editor.cpp index 5ca6602..1c97442 100644 --- a/app/src/windows/participant_editor.cpp +++ b/app/src/windows/participant_editor.cpp @@ -40,10 +40,11 @@ namespace turns::app::windows adw_combo_row_set_factory(m_disposition, GTK_LIST_ITEM_FACTORY(m_disposition_factory->gobj())); adw_combo_row_set_model(m_disposition, G_LIST_MODEL(m_disposition_model->gobj())); - if (obj) + if (m_participant) { gtk_editable_set_text(GTK_EDITABLE(m_name), m_participant->property_name().get_value().c_str()); adw_spin_row_set_value(m_priority, m_participant->property_priority().get_value()); + adw_combo_row_set_selected(m_disposition, static_cast<unsigned>(m_participant->get_disposition())); } } @@ -61,14 +62,16 @@ namespace turns::app::windows { auto name = gtk_editable_get_text(GTK_EDITABLE(m_name)); auto priority = adw_spin_row_get_value(m_priority); + auto disposition = static_cast<domain::disposition>(adw_combo_row_get_selected(m_disposition)); if (m_participant) { m_participant->set_name(name); m_participant->set_priority(priority); + m_participant->set_disposition(disposition); } - m_signal_finished.emit(name, priority); + m_signal_finished.emit(name, priority, disposition); adw_dialog_close(m_adw); } diff --git a/app/tests/widgets/participant_row.cpp b/app/tests/widgets/participant_row.cpp index 0e91ad7..04950ad 100644 --- a/app/tests/widgets/participant_row.cpp +++ b/app/tests/widgets/participant_row.cpp @@ -1,5 +1,6 @@ #include "turns/app/widgets/participant_row.hpp" +#include "turns/domain/disposition.hpp" #include "turns/domain/participant.hpp" #include "turns/lang/messages.hpp" @@ -23,7 +24,7 @@ namespace turns::app::widgets::tests SECTION("can be created with a participant") { - REQUIRE(Gtk::make_managed<participant_row>(domain::participant::create("Tazmyla Fireforge", 13))); + REQUIRE(Gtk::make_managed<participant_row>(domain::participant::create("Tazmyla Fireforge", 13, domain::disposition::secret))); } } diff --git a/app/tests/windows/participant_editor.cpp b/app/tests/windows/participant_editor.cpp index 15c9975..5808740 100644 --- a/app/tests/windows/participant_editor.cpp +++ b/app/tests/windows/participant_editor.cpp @@ -1,6 +1,7 @@ #include "turns/app/windows/participant_editor.hpp" #include "turns/domain/participant.hpp" +#include "turns/domain/disposition.hpp" #include "turns/lang/messages.hpp" #include <catch2/catch_test_macros.hpp> @@ -60,7 +61,7 @@ namespace turns::app::windows::tests SECTION("allows binding to the finished signal") { - REQUIRE((instance->signal_finished().connect([](auto, auto){})).connected()); + REQUIRE((instance->signal_finished().connect([](auto, auto, auto){})).connected()); } } @@ -69,7 +70,7 @@ namespace turns::app::windows::tests auto locale = GENERATE("en_US.UTF-8", "de_CH.UTF-8"); setlocale(LC_ALL, locale); - auto participant = domain::participant::create("Qibi Babblebranch", 12); + auto participant = domain::participant::create("Qibi Babblebranch", 12, domain::disposition::neutral); auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/participant_editor.ui"); auto instance = Gtk::Builder::get_widget_derived<participant_editor>(builder, "participant_editor", participant); auto window = Gtk::Window{}; @@ -105,7 +106,7 @@ namespace turns::app::windows::tests SECTION("allows binding to the finished signal") { - REQUIRE((instance->signal_finished().connect([](auto, auto){})).connected()); + REQUIRE((instance->signal_finished().connect([](auto, auto, auto){})).connected()); } } |
