From ec3fa197624cea242b05303461e6fece78d78009 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Sun, 14 Jul 2024 01:41:14 +0200 Subject: app/ui: layout basic participant creation dialog --- app/CMakeLists.txt | 1 + .../turns/app/windows/create_participant.hpp | 32 ++++++++++++++++++++++ app/include/turns/app/windows/main.hpp | 1 + app/src/windows/create_participant.cpp | 31 +++++++++++++++++++++ app/src/windows/main.cpp | 10 +++++++ 5 files changed, 75 insertions(+) create mode 100644 app/include/turns/app/windows/create_participant.hpp create mode 100644 app/src/windows/create_participant.cpp (limited to 'app') 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 +#include +#include +#include +#include + +namespace turns::app::windows +{ + + struct create_participant : Gtk::Widget + { + create_participant(BaseObjectType * base, Glib::RefPtr 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 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 + +#include + +namespace turns::app::windows +{ + + create_participant::create_participant(BaseObjectType * base, Glib::RefPtr const builder) + : Gtk::Widget{base} + , m_adw{ADW_DIALOG(gobj())} + , m_finish{builder->get_widget("finish")} + { + m_disposition = ADW_COMBO_ROW(builder->get_widget("disposition")->gobj()); + m_name = ADW_ENTRY_ROW(builder->get_widget("name")->gobj()); + m_order = ADW_SPIN_ROW(builder->get_widget("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 @@ -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(builder, "create_participant_dialog"); + dialog->present(this); + } + } // namespace turns::app::windows -- cgit v1.2.3