summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/CMakeLists.txt1
-rw-r--r--app/include/turns/app/windows/create_participant.hpp32
-rw-r--r--app/include/turns/app/windows/main.hpp1
-rw-r--r--app/src/windows/create_participant.cpp31
-rw-r--r--app/src/windows/main.cpp10
-rw-r--r--res/CMakeLists.txt1
-rw-r--r--res/windows/create_participant.ui74
-rw-r--r--res/windows/windows.cmb59
8 files changed, 203 insertions, 6 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
diff --git a/res/CMakeLists.txt b/res/CMakeLists.txt
index cc3ff8b..dd5b139 100644
--- a/res/CMakeLists.txt
+++ b/res/CMakeLists.txt
@@ -6,6 +6,7 @@ target_add_glib_resources("res"
PREFIX "ch/arknet/Turns"
UI_FILES
"widgets/participant_list_row.ui"
+ "windows/create_participant.ui"
"windows/main_window.ui"
CSS_FILES
"style.css"
diff --git a/res/windows/create_participant.ui b/res/windows/create_participant.ui
new file mode 100644
index 0000000..aa3d093
--- /dev/null
+++ b/res/windows/create_participant.ui
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Created with Cambalache 0.90.4 -->
+<interface>
+ <requires lib="gtk" version="4.14"/>
+ <requires lib="libadwaita" version="1.5"/>
+ <object class="AdwDialog" id="create_participant_dialog">
+ <property name="child">
+ <object class="AdwToolbarView">
+ <property name="content">
+ <object class="AdwClamp">
+ <property name="child">
+ <object class="GtkBox">
+ <property name="hexpand">True</property>
+ <property name="margin-bottom">18</property>
+ <property name="margin-end">12</property>
+ <property name="margin-start">12</property>
+ <property name="margin-top">18</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">18</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkListBox">
+ <child>
+ <object class="AdwEntryRow" id="name">
+ <property name="title">Name</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwSpinRow" id="order">
+ <property name="adjustment">
+ <object class="GtkAdjustment">
+ <property name="lower">-1000.0</property>
+ <property name="step-increment">1.0</property>
+ <property name="upper">1000.0</property>
+ </object>
+ </property>
+ <property name="digits">1</property>
+ <property name="numeric">True</property>
+ <property name="title">Order</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwComboRow" id="disposition">
+ <property name="title">Disposition</property>
+ </object>
+ </child>
+ <style>
+ <class name="boxed-list"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="finish">
+ <property name="hexpand">True</property>
+ <property name="label">Finish</property>
+ <style>
+ <class name="pill"/>
+ <class name="suggested-action"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </property>
+ <child type="top">
+ <object class="AdwHeaderBar"/>
+ </child>
+ </object>
+ </property>
+ <property name="hexpand">True</property>
+ <property name="title">Add Participant</property>
+ </object>
+</interface>
diff --git a/res/windows/windows.cmb b/res/windows/windows.cmb
index 9cb6417..1679737 100644
--- a/res/windows/windows.cmb
+++ b/res/windows/windows.cmb
@@ -2,11 +2,14 @@
<!DOCTYPE cambalache-project SYSTEM "cambalache-project.dtd">
<cambalache-project version="0.17.3" target_tk="gtk-4.0">
<ui>
- (1,None,"main_window.ui","main_window.ui",None,None,None,None,None,None,None)
+ (1,None,"main_window.ui","main_window.ui",None,None,None,None,None,None,None),
+ (2,None,None,"create_participant.ui",None,None,None,None,None,None,None)
</ui>
<ui_library>
(1,"gtk","4.14",None),
- (1,"libadwaita","1.5",None)
+ (1,"libadwaita","1.5",None),
+ (2,"gtk","4.14",None),
+ (2,"libadwaita","1.5",None)
</ui_library>
<object>
(1,1,"AdwApplicationWindow","main_window",None,None,None,None,-1,None,None),
@@ -19,7 +22,18 @@
(1,9,"(menu)","main_menu",None,None,None,None,-1,None,None),
(1,10,"(item)",None,9,None,None,None,-1,None,None),
(1,11,"AdwClamp",None,4,None,None,None,-1,None,None),
- (1,12,"GtkListBox","participant_list",11,None,None,None,-1,None,None)
+ (1,12,"GtkListBox","participant_list",11,None,None,None,-1,None,None),
+ (2,1,"AdwDialog","create_participant_dialog",None,None,None,None,-1,None,None),
+ (2,2,"AdwToolbarView",None,1,None,None,None,-1,None,None),
+ (2,3,"AdwHeaderBar",None,2,None,"top",None,-1,None,None),
+ (2,4,"AdwClamp",None,2,None,None,None,-1,None,None),
+ (2,5,"GtkBox",None,4,None,None,None,-1,None,None),
+ (2,6,"GtkListBox",None,5,None,None,None,None,None,None),
+ (2,7,"AdwEntryRow","name",6,None,None,None,None,None,None),
+ (2,9,"GtkButton","finish",5,None,None,None,1,None,None),
+ (2,10,"AdwSpinRow","order",6,None,None,None,1,None,None),
+ (2,11,"AdwComboRow","disposition",6,None,None,None,2,None,None),
+ (2,12,"GtkAdjustment",None,10,None,None,None,-1,None,None)
</object>
<object_property>
(1,1,"AdwApplicationWindow","content",None,None,None,None,None,2,None,None,None,None),
@@ -42,7 +56,32 @@
(1,12,"GtkWidget","margin-end","12",None,None,None,None,None,None,None,None,None),
(1,12,"GtkWidget","margin-start","12",None,None,None,None,None,None,None,None,None),
(1,12,"GtkWidget","margin-top","18",None,None,None,None,None,None,None,None,None),
- (1,12,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None)
+ (1,12,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
+ (2,1,"AdwDialog","child",None,None,None,None,None,2,None,None,None,None),
+ (2,1,"AdwDialog","default-widget",None,None,None,None,None,None,None,None,None,None),
+ (2,1,"AdwDialog","title","Add Participant",None,None,None,None,None,None,None,None,None),
+ (2,1,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
+ (2,2,"AdwToolbarView","content",None,None,None,None,None,4,None,None,None,None),
+ (2,4,"AdwClamp","child",None,None,None,None,None,5,None,None,None,None),
+ (2,5,"GtkBox","spacing","18",None,None,None,None,None,None,None,None,None),
+ (2,5,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
+ (2,5,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
+ (2,5,"GtkWidget","margin-bottom","18",None,None,None,None,None,None,None,None,None),
+ (2,5,"GtkWidget","margin-end","12",None,None,None,None,None,None,None,None,None),
+ (2,5,"GtkWidget","margin-start","12",None,None,None,None,None,None,None,None,None),
+ (2,5,"GtkWidget","margin-top","18",None,None,None,None,None,None,None,None,None),
+ (2,5,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
+ (2,7,"AdwPreferencesRow","title","Name",None,None,None,None,None,None,None,None,None),
+ (2,9,"GtkButton","label","Finish",None,None,None,None,None,None,None,None,None),
+ (2,9,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
+ (2,10,"AdwPreferencesRow","title","Order",None,None,None,None,None,None,None,None,None),
+ (2,10,"AdwSpinRow","adjustment",None,None,None,None,None,12,None,None,None,None),
+ (2,10,"AdwSpinRow","digits","1",None,None,None,None,None,None,None,None,None),
+ (2,10,"AdwSpinRow","numeric","True",None,None,None,None,None,None,None,None,None),
+ (2,11,"AdwPreferencesRow","title","Disposition",None,None,None,None,None,None,None,None,None),
+ (2,12,"GtkAdjustment","lower","-1000.0",None,None,None,None,None,None,None,None,None),
+ (2,12,"GtkAdjustment","step-increment","1.0",None,None,None,None,None,None,None,None,None),
+ (2,12,"GtkAdjustment","upper","1000.0",None,None,None,None,None,None,None,None,None)
</object_property>
<object_data>
(1,1,"GtkWidget",2,2,None,1,None,None,None,None),
@@ -50,11 +89,19 @@
(1,3,"GtkWidget",1,1,None,None,None,None,None,None),
(1,2,"GtkWidget",1,1,None,None,None,None,None,None),
(1,12,"GtkWidget",1,1,None,None,None,None,None,None),
- (1,12,"GtkWidget",2,2,None,1,None,None,None,None)
+ (1,12,"GtkWidget",2,2,None,1,None,None,None,None),
+ (2,6,"GtkWidget",1,1,None,None,None,None,None,None),
+ (2,6,"GtkWidget",2,2,None,1,None,None,None,None),
+ (2,9,"GtkWidget",1,1,None,None,None,None,None,None),
+ (2,9,"GtkWidget",2,2,None,1,None,None,None,None),
+ (2,9,"GtkWidget",2,3,None,1,None,None,None,None)
</object_data>
<object_data_arg>
(1,1,"GtkWidget",2,2,"name","background"),
(1,4,"GtkWidget",2,2,"name","boxed-list"),
- (1,12,"GtkWidget",2,2,"name","boxed-list")
+ (1,12,"GtkWidget",2,2,"name","boxed-list"),
+ (2,6,"GtkWidget",2,2,"name","boxed-list"),
+ (2,9,"GtkWidget",2,2,"name","pill"),
+ (2,9,"GtkWidget",2,3,"name","suggested-action")
</object_data_arg>
</cambalache-project>