diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2024-07-13 17:40:58 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2024-07-13 17:40:58 +0200 |
| commit | 992d7883ee42f5eb5083d27c5f095a8a4821d0dd (patch) | |
| tree | fd09b3ca5b8605bc1ad786bde642b4f8cb3ebe27 | |
| parent | f8bfd268523ff5abd3cf5490d5b892ff49954f47 (diff) | |
| download | turns-992d7883ee42f5eb5083d27c5f095a8a4821d0dd.tar.xz turns-992d7883ee42f5eb5083d27c5f095a8a4821d0dd.zip | |
app/ui: simplify participant rows
| -rw-r--r-- | app/include/turns/app/widgets/participant_list_row.hpp | 19 | ||||
| -rw-r--r-- | app/src/widgets/participant_list_row.cpp | 17 | ||||
| -rw-r--r-- | res/widgets/participant_list_row.ui | 51 | ||||
| -rw-r--r-- | res/widgets/widgets.cmb | 47 |
4 files changed, 56 insertions, 78 deletions
diff --git a/app/include/turns/app/widgets/participant_list_row.hpp b/app/include/turns/app/widgets/participant_list_row.hpp index 172e9ac..070d540 100644 --- a/app/include/turns/app/widgets/participant_list_row.hpp +++ b/app/include/turns/app/widgets/participant_list_row.hpp @@ -6,9 +6,8 @@ #include <array> #include <glibmm/ustring.h> -#include <gtkmm/box.h> +#include <gtkmm/button.h> #include <gtkmm/editablelabel.h> -#include <gtkmm/image.h> #include <gtkmm/label.h> #include <gtkmm/listboxrow.h> #include <gtkmm/togglebutton.h> @@ -19,13 +18,9 @@ namespace turns::app::widgets { auto constexpr inline static children = std::array{ "edit", - "header", - "prefixes", - "image", - "title_box", - "title", "subtitle", - "suffixes", + "title", + "toggle_defeated", }; participant_list_row(); @@ -34,14 +29,10 @@ namespace turns::app::widgets auto set_title(Glib::ustring const & value) -> void; private: - Gtk::ToggleButton * m_edit; - Gtk::Box * m_header; - Gtk::Image * m_image; - Gtk::Box * m_prefixes; + Gtk::Button * m_edit; Gtk::Label * m_subtitle; - Gtk::Box * m_suffixes; Gtk::EditableLabel * m_title; - Gtk::Box * m_title_box; + Gtk::ToggleButton * m_toggle_defeated; }; } // namespace turns::app::widgets diff --git a/app/src/widgets/participant_list_row.cpp b/app/src/widgets/participant_list_row.cpp index 10bcc2d..3be31b3 100644 --- a/app/src/widgets/participant_list_row.cpp +++ b/app/src/widgets/participant_list_row.cpp @@ -1,5 +1,7 @@ #include "turns/app/widgets/participant_list_row.hpp" +#include <print> + #include <glibmm/ustring.h> namespace turns::app::widgets @@ -14,21 +16,10 @@ namespace turns::app::widgets : Glib::ObjectBase(TYPE_NAME) , template_widget<participant_list_row, Gtk::ListBoxRow>{TEMPLATE} { - m_edit = get_widget<Gtk::ToggleButton>("edit"); - m_header = get_widget<Gtk::Box>("header"); - m_image = get_widget<Gtk::Image>("image"); - m_prefixes = get_widget<Gtk::Box>("prefixes"); + m_edit = get_widget<Gtk::Button>("edit"); m_subtitle = get_widget<Gtk::Label>("subtitle"); - m_suffixes = get_widget<Gtk::Box>("suffixes"); m_title = get_widget<Gtk::EditableLabel>("title"); - m_title_box = get_widget<Gtk::Box>("title_box"); - - m_edit->signal_clicked().connect([this]{ - if(m_edit->get_active()) - { - m_title->start_editing(); - } - }); + m_toggle_defeated = get_widget<Gtk::ToggleButton>("toggle_defeated"); } auto participant_list_row::set_subtitle(Glib::ustring const & value) -> void diff --git a/res/widgets/participant_list_row.ui b/res/widgets/participant_list_row.ui index c0e3895..fca9f22 100644 --- a/res/widgets/participant_list_row.ui +++ b/res/widgets/participant_list_row.ui @@ -6,40 +6,38 @@ <requires lib="gtk" version="4.14"/> <template class="gtkmm__CustomObject_participant_list_row" parent="GtkListBoxRow"> <property name="child"> - <object class="GtkBox" id="header"> + <object class="GtkBox"> <property name="css-classes">header</property> <child> - <object class="GtkBox" id="prefixes"> - <property name="visible">False</property> + <object class="GtkBox"> + <child> + <object class="GtkToggleButton" id="toggle_defeated"> + <property name="halign">center</property> + <property name="icon-name">face-smile-symbolic</property> + <property name="valign">center</property> + <style> + <class name="circular"/> + </style> + </object> + </child> <style> <class name="prefixes"/> </style> </object> </child> <child> - <object class="GtkImage" id="image"> - <property name="icon-name">face-smile</property> - <property name="valign">center</property> - <property name="visible">False</property> - <style> - <class name="icon"/> - </style> - </object> - </child> - <child> - <object class="GtkBox" id="title_box"> + <object class="GtkBox"> <property name="hexpand">True</property> <property name="orientation">vertical</property> <property name="valign">center</property> <child> <object class="GtkEditableLabel" id="title"> - <property name="editable">False</property> <property name="visible">False</property> <style> <class name="title"/> </style> <!-- Custom object fragments --> - <property name="editable" bind-source="edit" bind-property="active" bind-flags="sync-create"/> + <property name="sensitive" bind-source="toggle_defeated" bind-property="active" bind-flags="sync-create|invert-boolean"/> </object> </child> <child> @@ -52,6 +50,8 @@ <style> <class name="subtitle"/> </style> + <!-- Custom object fragments --> + <property name="sensitive" bind-source="toggle_defeated" bind-property="active" bind-flags="sync-create|invert-boolean"/> </object> </child> <style> @@ -60,18 +60,17 @@ </object> </child> <child> - <object class="GtkBox" id="suffixes"> + <object class="GtkBox"> <property name="valign">center</property> <child> - <object class="GtkToggleButton" id="edit"> + <object class="GtkButton" id="edit"> <property name="icon-name">document-edit-symbolic</property> + <style> + <class name="circular"/> + <class name="suggested-action"/> + </style> <!-- Custom object fragments --> - <property name="active" bind-source="title" bind-property="editing" bind-flags="sync-create"/> - </object> - </child> - <child> - <object class="GtkSwitch"> - <property name="valign">center</property> + <property name="sensitive" bind-source="toggle_defeated" bind-property="active" bind-flags="sync-create|invert-boolean"/> </object> </child> <style> @@ -82,8 +81,6 @@ </object> </property> <property name="valign">center</property> - <style> - <class name="view"/> - </style> + <style/> </template> </interface> diff --git a/res/widgets/widgets.cmb b/res/widgets/widgets.cmb index a61fa4d..de76966 100644 --- a/res/widgets/widgets.cmb +++ b/res/widgets/widgets.cmb @@ -2,31 +2,26 @@ <!DOCTYPE cambalache-project SYSTEM "cambalache-project.dtd"> <cambalache-project version="0.17.3" target_tk="gtk-4.0"> <ui> - (1,1,"participant_list_item.ui","participant_list_row.ui",None,None,None,None,None,"Adapted from: https://gitlab.gnome.org/GNOME/libadwaita",None) + (1,1,"participant_list_item.ui","participant_list_row.ui",None,None,None,None,None,None,None) </ui> <ui_library> (1,"gtk","4.14",None) </ui_library> <object> (1,1,"GtkListBoxRow","gtkmm__CustomObject_participant_list_row",None,None,None,None,-1,None,None), - (1,2,"GtkBox","header",1,None,None,None,-1,None,None), - (1,3,"GtkBox","prefixes",2,None,None,None,-1,None,None), - (1,4,"GtkImage","image",2,None,None,None,-1,None,None), - (1,5,"GtkBox","title_box",2,None,None,None,-1,None,None), - (1,7,"GtkLabel","subtitle",5,None,None,None,1,None,None), - (1,8,"GtkBox","suffixes",2,None,None,None,-1,None,None), - (1,9,"GtkSwitch",None,8,None,None,None,1,None,None), - (1,10,"GtkEditableLabel","title",5,None,None,None,None,"<property name=\"editable\"\n bind-source=\"edit\"\n bind-property=\"active\"\n bind-flags=\"sync-create\" />",None), - (1,11,"GtkToggleButton","edit",8,None,None,None,None,"<property name=\"active\"\n bind-source=\"title\"\n bind-property=\"editing\"\n bind-flags=\"sync-create\" />",None) + (1,2,"GtkBox",None,1,None,None,None,-1,None,None), + (1,3,"GtkBox",None,2,None,None,None,-1,None,None), + (1,5,"GtkBox",None,2,None,None,None,-1,None,None), + (1,7,"GtkLabel","subtitle",5,None,None,None,1,"<property name=\"sensitive\"\n bind-source=\"toggle_defeated\"\n bind-property=\"active\"\n bind-flags=\"sync-create|invert-boolean\" />",None), + (1,8,"GtkBox",None,2,None,None,None,-1,None,None), + (1,10,"GtkEditableLabel","title",5,None,None,None,None,"<property name=\"sensitive\"\n bind-source=\"toggle_defeated\"\n bind-property=\"active\"\n bind-flags=\"sync-create|invert-boolean\" />",None), + (1,12,"GtkToggleButton","toggle_defeated",3,None,None,None,-1,None,None), + (1,13,"GtkButton","edit",8,None,None,None,-1,"<property name=\"sensitive\"\n bind-source=\"toggle_defeated\"\n bind-property=\"active\"\n bind-flags=\"sync-create|invert-boolean\" />",None) </object> <object_property> (1,1,"GtkListBoxRow","child",None,None,None,None,None,2,None,None,None,None), (1,1,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), (1,2,"GtkWidget","css-classes","header",None,None,None,None,None,None,None,None,None), - (1,3,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None), - (1,4,"GtkImage","icon-name","face-smile",None,None,None,None,None,None,None,None,None), - (1,4,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), - (1,4,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None), (1,5,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), (1,5,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), (1,5,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), @@ -36,16 +31,15 @@ (1,7,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None), (1,7,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None), (1,8,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), - (1,9,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), - (1,10,"GtkEditable","editable","False",None,None,None,None,None,None,None,None,None), (1,10,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None), - (1,11,"GtkButton","icon-name","document-edit-symbolic",None,None,None,None,None,None,None,None,None) + (1,12,"GtkButton","icon-name","face-smile-symbolic",None,None,None,None,None,None,None,None,None), + (1,12,"GtkWidget","halign","center",None,None,None,None,None,None,None,None,None), + (1,12,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), + (1,13,"GtkButton","icon-name","document-edit-symbolic",None,None,None,None,None,None,None,None,None) </object_property> <object_data> (1,5,"GtkWidget",1,1,None,None,None,None,None,None), (1,5,"GtkWidget",2,2,None,1,None,None,None,None), - (1,4,"GtkWidget",1,1,None,None,None,None,None,None), - (1,4,"GtkWidget",2,2,None,1,None,None,None,None), (1,3,"GtkWidget",1,1,None,None,None,None,None,None), (1,3,"GtkWidget",2,2,None,1,None,None,None,None), (1,7,"GtkWidget",1,1,None,None,None,None,None,None), @@ -54,18 +48,23 @@ (1,8,"GtkWidget",2,2,None,1,None,None,None,None), (1,1,"GtkWidget",2,2,None,1,None,None,None,None), (1,1,"GtkWidget",1,3,None,None,None,None,None,None), - (1,1,"GtkWidget",2,4,None,3,None,None,None,None), (1,10,"GtkWidget",1,1,None,None,None,None,None,None), - (1,10,"GtkWidget",2,2,None,1,None,None,None,None) + (1,10,"GtkWidget",2,2,None,1,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,13,"GtkWidget",1,1,None,None,None,None,None,None), + (1,13,"GtkWidget",2,2,None,1,None,None,None,None), + (1,13,"GtkWidget",2,3,None,1,None,None,None,None) </object_data> <object_data_arg> (1,5,"GtkWidget",2,2,"name","title"), - (1,4,"GtkWidget",2,2,"name","icon"), (1,3,"GtkWidget",2,2,"name","prefixes"), (1,7,"GtkWidget",2,2,"name","subtitle"), (1,8,"GtkWidget",2,2,"name","suffixes"), (1,1,"GtkWidget",2,2,"name","property"), - (1,1,"GtkWidget",2,4,"name","view"), - (1,10,"GtkWidget",2,2,"name","title") + (1,10,"GtkWidget",2,2,"name","title"), + (1,12,"GtkWidget",2,2,"name","circular"), + (1,13,"GtkWidget",2,2,"name","circular"), + (1,13,"GtkWidget",2,3,"name","suggested-action") </object_data_arg> </cambalache-project> |
