summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2024-07-14 01:41:14 +0200
committerFelix Morgner <felix.morgner@gmail.com>2024-07-14 01:41:14 +0200
commitec3fa197624cea242b05303461e6fece78d78009 (patch)
tree11e0c48443f160d252cabd9adcba20c78675b9e2 /app
parent695ece2c35491a509c70ef710bd0419d67b8fd0f (diff)
downloadturns-ec3fa197624cea242b05303461e6fece78d78009.tar.xz
turns-ec3fa197624cea242b05303461e6fece78d78009.zip
app/ui: layout basic participant creation dialog
Diffstat (limited to 'app')
-rw-r--r--app/CMakeLists.txt1
-rw-r--r--app/include/turns/app/windows/create_participant.hpp32
-rw-r--r--app/include/turns/app/windows/main.hpp1
-rw-r--r--app/src/windows/create_participant.cpp31
-rw-r--r--app/src/windows/main.cpp10
5 files changed, 75 insertions, 0 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 4746fee..ac7da67 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -3,6 +3,7 @@
add_library("app"
"src/application.cpp"
"src/widgets/participant_list_row.cpp"
+ "src/windows/create_participant.cpp"
"src/windows/main.cpp"
)
diff --git a/app/include/turns/app/windows/create_participant.hpp b/app/include/turns/app/windows/create_participant.hpp
new file mode 100644
index 0000000..856c1dc
--- /dev/null
+++ b/app/include/turns/app/windows/create_participant.hpp
@@ -0,0 +1,32 @@
+#ifndef TURNS_APP_WINDOWS_CREATE_PARTICIPANT_HPP
+#define TURNS_APP_WINDOWS_CREATE_PARTICIPANT_HPP
+
+#include <adwaita.h>
+#include <glibmm/refptr.h>
+#include <gtkmm/builder.h>
+#include <gtkmm/widget.h>
+#include <gtkmm/button.h>
+
+namespace turns::app::windows
+{
+
+ struct create_participant : Gtk::Widget
+ {
+ create_participant(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder);
+
+ auto present(Gtk::Widget * parent) -> void;
+
+ private:
+ auto handle_finish_clicked() -> void;
+
+ AdwDialog * m_adw;
+ Gtk::Button * m_finish;
+
+ AdwComboRow * m_disposition{};
+ AdwEntryRow * m_name{};
+ AdwSpinRow * m_order{};
+ };
+
+} // namespace turns::app::windows
+
+#endif \ No newline at end of file
diff --git a/app/include/turns/app/windows/main.hpp b/app/include/turns/app/windows/main.hpp
index c047867..a73c966 100644
--- a/app/include/turns/app/windows/main.hpp
+++ b/app/include/turns/app/windows/main.hpp
@@ -23,6 +23,7 @@ namespace turns::app::windows
private:
auto handle_create_list_row(Glib::RefPtr<Glib::Object> const item) -> Gtk::Widget *;
+ auto handle_create_participant() -> void;
Gtk::Button * m_add_participant;
AdwApplicationWindow * m_adw;
diff --git a/app/src/windows/create_participant.cpp b/app/src/windows/create_participant.cpp
new file mode 100644
index 0000000..b6d674f
--- /dev/null
+++ b/app/src/windows/create_participant.cpp
@@ -0,0 +1,31 @@
+#include "turns/app/windows/create_participant.hpp"
+
+#include <print>
+
+#include <gtkmm/listboxrow.h>
+
+namespace turns::app::windows
+{
+
+ create_participant::create_participant(BaseObjectType * base, Glib::RefPtr<Gtk::Builder> const builder)
+ : Gtk::Widget{base}
+ , m_adw{ADW_DIALOG(gobj())}
+ , m_finish{builder->get_widget<Gtk::Button>("finish")}
+ {
+ m_disposition = ADW_COMBO_ROW(builder->get_widget<Gtk::ListBoxRow>("disposition")->gobj());
+ m_name = ADW_ENTRY_ROW(builder->get_widget<Gtk::ListBoxRow>("name")->gobj());
+ m_order = ADW_SPIN_ROW(builder->get_widget<Gtk::ListBoxRow>("order")->gobj());
+
+ m_finish->signal_clicked().connect(sigc::mem_fun(*this, &create_participant::handle_finish_clicked));
+ }
+
+ auto create_participant::present(Gtk::Widget * parent) -> void
+ {
+ adw_dialog_present(m_adw, parent->gobj());
+ }
+
+ auto create_participant::handle_finish_clicked() -> void
+ {
+ 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 f25b220..d4c3015 100644
--- a/app/src/windows/main.cpp
+++ b/app/src/windows/main.cpp
@@ -1,6 +1,7 @@
#include "turns/app/windows/main.hpp"
#include "turns/app/widgets/participant_list_row.hpp"
+#include "turns/app/windows/create_participant.hpp"
#include "turns/lang/messages.hpp"
#include <format>
@@ -28,6 +29,8 @@ namespace turns::app::windows
m_open_main_menu->set_tooltip_text(_(tooltips::main_menu));
adw_window_title_set_subtitle(m_title, _(labels::no_active_turn_order));
+ m_add_participant->signal_clicked().connect(sigc::mem_fun(*this, &main::handle_create_participant));
+
for (auto n : std::views::iota(0, 32))
{
auto name = std::format("Participant #{}", n);
@@ -46,4 +49,11 @@ namespace turns::app::windows
return widget;
}
+ auto main::handle_create_participant() -> void
+ {
+ 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);
+ }
+
} // namespace turns::app::windows