diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-14 01:41:14 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-14 01:41:14 +0200 |
| commit | ec3fa197624cea242b05303461e6fece78d78009 (patch) | |
| tree | 11e0c48443f160d252cabd9adcba20c78675b9e2 /app | |
| parent | 695ece2c35491a509c70ef710bd0419d67b8fd0f (diff) | |
| download | turns-ec3fa197624cea242b05303461e6fece78d78009.tar.xz turns-ec3fa197624cea242b05303461e6fece78d78009.zip | |
app/ui: layout basic participant creation dialog
Diffstat (limited to 'app')
| -rw-r--r-- | app/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | app/include/turns/app/windows/create_participant.hpp | 32 | ||||
| -rw-r--r-- | app/include/turns/app/windows/main.hpp | 1 | ||||
| -rw-r--r-- | app/src/windows/create_participant.cpp | 31 | ||||
| -rw-r--r-- | app/src/windows/main.cpp | 10 |
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 |
