summaryrefslogtreecommitdiff
path: root/gui/src/participant_editor.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-06-05 14:30:13 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-06-05 14:30:13 +0200
commit838e660750b589636b95472f7421b5579f068727 (patch)
tree63bd5bcb124cdef0cc5197aa1c9fdbe9803055bb /gui/src/participant_editor.cpp
parent85f0a9cc53e51106b7601b6ae10b5fb169613184 (diff)
downloadturns-838e660750b589636b95472f7421b5579f068727.tar.xz
turns-838e660750b589636b95472f7421b5579f068727.zip
gui: reintroduce participant editor
Diffstat (limited to 'gui/src/participant_editor.cpp')
-rw-r--r--gui/src/participant_editor.cpp66
1 files changed, 41 insertions, 25 deletions
diff --git a/gui/src/participant_editor.cpp b/gui/src/participant_editor.cpp
index 998d566..ca17495 100644
--- a/gui/src/participant_editor.cpp
+++ b/gui/src/participant_editor.cpp
@@ -3,22 +3,25 @@
* SPDX-License-Identifier: LGPL-2.1-only
*/
-#include "turns/ui/participant_editor.hpp"
+#include "participant_editor.hpp"
-#include "turns/core/disposition.hpp"
-#include "turns/core/participant.hpp"
-#include "turns/lang/messages.hpp"
-#include "turns/ui/template_widget.hpp"
+#include "messages.hpp"
+#include "template_widget.hpp"
+
+#include <turnsmm/participant.hpp>
#include <sigc++/functors/mem_fun.h>
+#include <adwaitamm/comborow.hpp>
+#include <adwaitamm/entryrow.hpp>
+#include <adwaitamm/spinrow.hpp>
#include <glibmm/binding.h>
#include <glibmm/i18n.h>
#include <glibmm/objectbase.h>
#include <glibmm/propertyproxy.h>
#include <glibmm/refptr.h>
#include <glibmm/ustring.h>
-
+#include <glibmm/value.h>
#include <gtkmm/button.h>
#include <gtkmm/label.h>
#include <gtkmm/listitem.h>
@@ -27,23 +30,36 @@
#include <gtkmm/stringlist.h>
#include <gtkmm/stringobject.h>
-#include <adwaitamm/comborow.hpp>
-#include <adwaitamm/entryrow.hpp>
-#include <adwaitamm/spinrow.hpp>
-
#include <cstdint>
#include <memory>
#include <ranges>
-namespace turns::ui
+namespace Turns::gui
{
namespace
{
auto constexpr static TYPE_NAME = "ParticipantEditor";
auto constexpr static TEMPLATE = "/ch/arknet/Turns/participant_editor.ui";
+
+ auto presentation_name_for(Participant::Disposition disposition) -> char const *
+ {
+ switch (disposition)
+ {
+ case Participant::Disposition::Neutral:
+ return _("Neutral");
+ case Participant::Disposition::Friendly:
+ return _("Friendly");
+ case Participant::Disposition::Hostile:
+ return _("Hostile");
+ case Participant::Disposition::Secret:
+ return _("Secret");
+ }
+
+ return "Invalid value";
+ }
} // namespace
- ParticipantEditor::ParticipantEditor(Glib::RefPtr<core::Participant> participant)
+ ParticipantEditor::ParticipantEditor(Glib::RefPtr<Participant> participant)
: Glib::ObjectBase{TYPE_NAME}
, template_widget{TEMPLATE}
, m_disposition{get_widget<Adwaita::ComboRow>("disposition")}
@@ -56,9 +72,9 @@ namespace turns::ui
{
m_finish->signal_clicked().connect(sigc::mem_fun(*this, &ParticipantEditor::handle_finish_clicked));
- for (auto n : std::views::iota(std::uint8_t{}, static_cast<std::uint8_t>(core::Disposition::END)))
+ for (auto n : std::views::iota(std::uint8_t{}, static_cast<std::uint8_t>(Participant::Disposition::Secret)))
{
- m_disposition_model->append(presentation_name_for(core::Disposition{n}));
+ m_disposition_model->append(presentation_name_for(Participant::Disposition{n}));
}
m_disposition_factory->signal_bind().connect(sigc::mem_fun(*this, &ParticipantEditor::handle_item_bind));
@@ -72,9 +88,9 @@ namespace turns::ui
set_participant(participant);
}
- auto ParticipantEditor::get_disposition() const -> core::Disposition
+ auto ParticipantEditor::get_disposition() const -> Participant::Disposition
{
- return static_cast<core::Disposition>(m_disposition->get_selected());
+ return static_cast<Participant::Disposition>(m_disposition->get_selected());
}
auto ParticipantEditor::get_name() const -> Glib::ustring
@@ -82,7 +98,7 @@ namespace turns::ui
return m_name->get_text();
}
- auto ParticipantEditor::get_participant() const -> Glib::RefPtr<core::Participant>
+ auto ParticipantEditor::get_participant() const -> Glib::RefPtr<Participant>
{
return m_participant.get_value();
}
@@ -92,7 +108,7 @@ namespace turns::ui
return m_priority->get_value();
}
- auto ParticipantEditor::set_disposition(core::Disposition value) -> void
+ auto ParticipantEditor::set_disposition(Participant::Disposition value) -> void
{
m_disposition->set_selected(static_cast<unsigned>(value));
}
@@ -102,7 +118,7 @@ namespace turns::ui
m_name->set_text(value);
}
- auto ParticipantEditor::set_participant(Glib::RefPtr<core::Participant> const & value) -> void
+ auto ParticipantEditor::set_participant(Glib::RefPtr<Participant> const & value) -> void
{
m_participant.set_value(value);
}
@@ -112,12 +128,12 @@ namespace turns::ui
m_priority->set_value(value);
}
- auto ParticipantEditor::property_participant() -> Glib::PropertyProxy<Glib::RefPtr<core::Participant>>
+ auto ParticipantEditor::property_participant() -> Glib::PropertyProxy<Glib::RefPtr<Participant>>
{
return m_participant.get_proxy();
}
- auto ParticipantEditor::property_participant() const -> Glib::PropertyProxy_ReadOnly<Glib::RefPtr<core::Participant>>
+ auto ParticipantEditor::property_participant() const -> Glib::PropertyProxy_ReadOnly<Glib::RefPtr<Participant>>
{
return m_participant.get_proxy();
}
@@ -129,7 +145,7 @@ namespace turns::ui
auto ParticipantEditor::handle_finish_clicked() -> void
{
- m_signal_finished.emit(m_name->get_text(), m_priority->get_value(), static_cast<core::Disposition>(m_disposition->get_selected()));
+ m_signal_finished.emit(m_name->get_text(), m_priority->get_value(), static_cast<Participant::Disposition>(m_disposition->get_selected()));
close();
}
@@ -147,7 +163,7 @@ namespace turns::ui
auto ParticipantEditor::handle_participant_changed() -> void
{
auto value = m_participant.get_value();
- set_title(_(value ? lang::edit_participant : lang::add_participant));
+ set_title(_(value ? message::edit_participant : message::add_participant));
if (value)
{
Glib::Binding::bind_property(value->property_name(),
@@ -160,8 +176,8 @@ namespace turns::ui
m_disposition->property_selected(),
Glib::Binding::Flags::BIDIRECTIONAL | Glib::Binding::Flags::SYNC_CREATE,
[](auto value) { return static_cast<unsigned>(value); },
- [](auto value) { return static_cast<core::Disposition>(value); });
+ [](auto value) { return static_cast<Participant::Disposition>(value); });
}
}
-} // namespace turns::ui \ No newline at end of file
+} // namespace Turns::gui \ No newline at end of file