From 081627fcfb9076ce243a9adde4743117bc48a767 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 15 Jul 2024 00:06:06 +0200 Subject: app/ui: turn participant creation dialog into generic edit dialog --- app/CMakeLists.txt | 2 +- .../turns/app/windows/create_participant.hpp | 40 ------------------- .../turns/app/windows/participant_editor.hpp | 42 ++++++++++++++++++++ app/src/windows/create_participant.cpp | 40 ------------------- app/src/windows/main.cpp | 7 ++-- app/src/windows/participant_editor.cpp | 45 ++++++++++++++++++++++ 6 files changed, 92 insertions(+), 84 deletions(-) delete mode 100644 app/include/turns/app/windows/create_participant.hpp create mode 100644 app/include/turns/app/windows/participant_editor.hpp delete mode 100644 app/src/windows/create_participant.cpp create mode 100644 app/src/windows/participant_editor.cpp (limited to 'app') diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index ac7da67..a65a489 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -3,8 +3,8 @@ add_library("app" "src/application.cpp" "src/widgets/participant_list_row.cpp" - "src/windows/create_participant.cpp" "src/windows/main.cpp" + "src/windows/participant_editor.cpp" ) add_library("turns::app" ALIAS "app") diff --git a/app/include/turns/app/windows/create_participant.hpp b/app/include/turns/app/windows/create_participant.hpp deleted file mode 100644 index f572bd5..0000000 --- a/app/include/turns/app/windows/create_participant.hpp +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef TURNS_APP_WINDOWS_CREATE_PARTICIPANT_HPP -#define TURNS_APP_WINDOWS_CREATE_PARTICIPANT_HPP - -#include -#include -#include -#include -#include - -#include - -namespace turns::app::windows -{ - - struct create_participant : Gtk::Widget - { - using signal_finished_type = sigc::signal; - - create_participant(BaseObjectType * base, Glib::RefPtr const builder); - - auto present(Gtk::Widget * parent) -> void; - - auto signal_finished() -> signal_finished_type; - - private: - auto handle_finish_clicked() -> void; - - AdwDialog * m_adw; - Gtk::Button * m_finish; - - AdwComboRow * m_disposition{}; - AdwEntryRow * m_name{}; - AdwSpinRow * m_priority{}; - - signal_finished_type m_signal_finished{}; - }; - -} // namespace turns::app::windows - -#endif \ No newline at end of file diff --git a/app/include/turns/app/windows/participant_editor.hpp b/app/include/turns/app/windows/participant_editor.hpp new file mode 100644 index 0000000..e9c26a0 --- /dev/null +++ b/app/include/turns/app/windows/participant_editor.hpp @@ -0,0 +1,42 @@ +#ifndef TURNS_APP_WINDOWS_PARTICIPANT_EDITOR_HPP +#define TURNS_APP_WINDOWS_PARTICIPANT_EDITOR_HPP + +#include +#include +#include +#include +#include + +#include + +namespace turns::app::windows +{ + + struct participant_editor : Gtk::Widget + { + using signal_finished_type = sigc::signal; + + participant_editor(BaseObjectType * base, Glib::RefPtr const builder); + + auto present(Gtk::Widget * parent) -> void; + + auto set_title(Glib::ustring const & value) -> void; + + auto signal_finished() -> signal_finished_type; + + private: + auto handle_finish_clicked() -> void; + + AdwDialog * m_adw; + Gtk::Button * m_finish; + + AdwComboRow * m_disposition{}; + AdwEntryRow * m_name{}; + AdwSpinRow * m_priority{}; + + signal_finished_type m_signal_finished{}; + }; + +} // namespace turns::app::windows + +#endif \ No newline at end of file diff --git a/app/src/windows/create_participant.cpp b/app/src/windows/create_participant.cpp deleted file mode 100644 index 86583a0..0000000 --- a/app/src/windows/create_participant.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "turns/app/windows/create_participant.hpp" - -#include - -#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_priority = ADW_SPIN_ROW(builder->get_widget("priority")->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::signal_finished() -> signal_finished_type - { - return m_signal_finished; - } - - auto create_participant::handle_finish_clicked() -> void - { - auto name = gtk_editable_get_text(GTK_EDITABLE(m_name)); - auto priority = adw_spin_row_get_value(m_priority); - m_signal_finished.emit(name, priority); - 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 0a5c18d..d217e9f 100644 --- a/app/src/windows/main.cpp +++ b/app/src/windows/main.cpp @@ -1,7 +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/app/windows/participant_editor.hpp" #include "turns/lang/messages.hpp" #include @@ -58,8 +58,9 @@ namespace turns::app::windows auto main::handle_add_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"); + auto builder = Gtk::Builder::create_from_resource("/ch/arknet/Turns/windows/participant_editor.ui"); + auto dialog = Gtk::Builder::get_widget_derived(builder, "participant_editor"); + dialog->set_title(_("Add participant")); dialog->present(this); dialog->signal_finished().connect([this](auto name, auto priority) { m_participants->append(name, priority); }); } diff --git a/app/src/windows/participant_editor.cpp b/app/src/windows/participant_editor.cpp new file mode 100644 index 0000000..f89fc20 --- /dev/null +++ b/app/src/windows/participant_editor.cpp @@ -0,0 +1,45 @@ +#include "turns/app/windows/participant_editor.hpp" + +#include + +#include +#include + +namespace turns::app::windows +{ + + participant_editor::participant_editor(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_priority = ADW_SPIN_ROW(builder->get_widget("priority")->gobj()); + + 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); + m_signal_finished.emit(name, priority); + adw_dialog_close(m_adw); + } +} // namespace turns::app::windows \ No newline at end of file -- cgit v1.2.3