summaryrefslogtreecommitdiff
path: root/gui/include/participant_row.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/include/participant_row.hpp')
-rw-r--r--gui/include/participant_row.hpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/gui/include/participant_row.hpp b/gui/include/participant_row.hpp
new file mode 100644
index 0000000..81b3610
--- /dev/null
+++ b/gui/include/participant_row.hpp
@@ -0,0 +1,55 @@
+/*
+ * SPDX-FileCopyrightText: 2025 Felix Morgner <felix.morgner@gmail.com>
+ * SPDX-License-Identifier: LGPL-2.1-only
+ */
+
+#ifndef TURNS_UI_PARTICIPANT_ROW_HPP
+#define TURNS_UI_PARTICIPANT_ROW_HPP
+
+#include "turns/core/fwd.hpp"
+#include "turns/ui/template_widget.hpp"
+
+#include <glibmm/property.h>
+#include <glibmm/propertyproxy.h>
+#include <glibmm/refptr.h>
+
+#include <gtkmm/button.h>
+#include <gtkmm/label.h>
+#include <gtkmm/listboxrow.h>
+#include <gtkmm/togglebutton.h>
+
+#include <array>
+
+namespace turns::ui
+{
+ struct ParticipantRow : template_widget<ParticipantRow, Gtk::ListBoxRow>
+ {
+ auto constexpr inline static children = std::array{
+ "delete",
+ "edit",
+ "subtitle",
+ "title",
+ "toggle_defeated",
+ };
+
+ ParticipantRow(Glib::RefPtr<core::Participant> participant);
+
+ auto delete_enabled() -> Glib::PropertyProxy<bool>;
+ auto edit_enabled() -> Glib::PropertyProxy<bool>;
+
+ private:
+ auto handle_delete() -> void;
+ auto handle_edit() -> void;
+
+ Gtk::Button * m_delete;
+ Gtk::Button * m_edit;
+ Gtk::Label * m_subtitle;
+ Gtk::Label * m_title;
+ Gtk::ToggleButton * m_toggle_defeated;
+
+ Glib::Property<bool> m_delete_enabled;
+ Glib::Property<bool> m_edit_enabled;
+ };
+} // namespace turns::ui::widgets
+
+#endif \ No newline at end of file