#include "turns/app/windows/participant_editor.hpp" #include #include #include namespace turns::app::windows { participant_editor::participant_editor(BaseObjectType * base, Glib::RefPtr const builder, Glib::RefPtr obj) : Gtk::Widget{base} , m_adw{ADW_DIALOG(gobj())} , m_finish{builder->get_widget("finish")} , m_participant{obj} { m_disposition = ADW_COMBO_ROW(builder->get_widget("disposition")->gobj()); m_name = ADW_ENTRY_ROW(builder->get_widget("name")->gobj()); m_priority = ADW_SPIN_ROW(builder->get_widget("priority")->gobj()); if (obj) { gtk_editable_set_text(GTK_EDITABLE(m_name), m_participant->property_name().get_value().c_str()); adw_spin_row_set_value(m_priority, m_participant->property_priority().get_value()); } m_finish->signal_clicked().connect(sigc::mem_fun(*this, &participant_editor::handle_finish_clicked)); } auto participant_editor::present(Gtk::Widget * parent) -> void { adw_dialog_present(m_adw, parent->gobj()); } auto participant_editor::set_title(Glib::ustring const & value) -> void { adw_dialog_set_title(m_adw, value.c_str()); } auto participant_editor::signal_finished() -> signal_finished_type { return m_signal_finished; } auto participant_editor::handle_finish_clicked() -> void { auto name = gtk_editable_get_text(GTK_EDITABLE(m_name)); auto priority = adw_spin_row_get_value(m_priority); if (m_participant) { m_participant->property_name().set_value(name); m_participant->property_priority().set_value(priority); } else { m_signal_finished.emit(name, priority); } adw_dialog_close(m_adw); } } // namespace turns::app::windows