#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 #include #include #include #include namespace turns::app::windows { main::main(BaseObjectType * base, Glib::RefPtr const builder) : Gtk::ApplicationWindow{base} , m_add_participant{builder->get_widget("add_participant")} , m_adw{ADW_APPLICATION_WINDOW(gobj())} , m_open_main_menu{builder->get_widget("open_main_menu")} , m_participant_list{builder->get_widget("participant_list")} , m_title(ADW_WINDOW_TITLE(builder->get_widget("title")->gobj())) , m_participants{Gio::ListStore::create()} { m_add_participant->set_tooltip_text(_(lang::add_participant)); m_open_main_menu->set_tooltip_text(_(lang::main_menu)); adw_window_title_set_subtitle(m_title, _(lang::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); auto participant = domain::participant::create(name, n); m_participants->append(participant); } m_participant_list->bind_model(m_participants, sigc::mem_fun(*this, &main::handle_create_list_row)); } auto main::handle_create_list_row(Glib::RefPtr const item) -> Gtk::Widget * { auto participant = std::dynamic_pointer_cast(item); auto widget = Gtk::make_managed(); widget->set_title(participant->name()); 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