summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/include/turns/app/windows/participant_editor.hpp12
-rw-r--r--app/src/windows/main.cpp2
-rw-r--r--app/src/windows/participant_editor.cpp7
-rw-r--r--app/tests/widgets/participant_row.cpp3
-rw-r--r--app/tests/windows/participant_editor.cpp7
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());
}
}