summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/include/turns/app/widgets/participant_list_row.hpp6
-rw-r--r--app/src/widgets/participant_list_row.cpp10
-rw-r--r--res/widgets/participant_list_row.ui20
-rw-r--r--res/widgets/widgets.cmb28
4 files changed, 42 insertions, 22 deletions
diff --git a/app/include/turns/app/widgets/participant_list_row.hpp b/app/include/turns/app/widgets/participant_list_row.hpp
index b9efbd6..172e9ac 100644
--- a/app/include/turns/app/widgets/participant_list_row.hpp
+++ b/app/include/turns/app/widgets/participant_list_row.hpp
@@ -7,15 +7,18 @@
#include <glibmm/ustring.h>
#include <gtkmm/box.h>
+#include <gtkmm/editablelabel.h>
#include <gtkmm/image.h>
#include <gtkmm/label.h>
#include <gtkmm/listboxrow.h>
+#include <gtkmm/togglebutton.h>
namespace turns::app::widgets
{
struct participant_list_row : template_widget<participant_list_row, Gtk::ListBoxRow>
{
auto constexpr inline static children = std::array{
+ "edit",
"header",
"prefixes",
"image",
@@ -31,12 +34,13 @@ 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::Label * m_subtitle;
Gtk::Box * m_suffixes;
- Gtk::Label * m_title;
+ Gtk::EditableLabel * m_title;
Gtk::Box * m_title_box;
};
} // namespace turns::app::widgets
diff --git a/app/src/widgets/participant_list_row.cpp b/app/src/widgets/participant_list_row.cpp
index bc3108e..10bcc2d 100644
--- a/app/src/widgets/participant_list_row.cpp
+++ b/app/src/widgets/participant_list_row.cpp
@@ -14,13 +14,21 @@ 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_subtitle = get_widget<Gtk::Label>("subtitle");
m_suffixes = get_widget<Gtk::Box>("suffixes");
- m_title = get_widget<Gtk::Label>("title");
+ 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();
+ }
+ });
}
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 66506c8..c0e3895 100644
--- a/res/widgets/participant_list_row.ui
+++ b/res/widgets/participant_list_row.ui
@@ -32,15 +32,14 @@
<property name="orientation">vertical</property>
<property name="valign">center</property>
<child>
- <object class="GtkLabel" id="title">
- <property name="lines">0</property>
+ <object class="GtkEditableLabel" id="title">
+ <property name="editable">False</property>
<property name="visible">False</property>
- <property name="wrap">True</property>
- <property name="wrap-mode">word-char</property>
- <property name="xalign">0.0</property>
<style>
<class name="title"/>
</style>
+ <!-- Custom object fragments -->
+ <property name="editable" bind-source="edit" bind-property="active" bind-flags="sync-create"/>
</object>
</child>
<child>
@@ -64,7 +63,16 @@
<object class="GtkBox" id="suffixes">
<property name="valign">center</property>
<child>
- <object class="GtkSwitch"/>
+ <object class="GtkToggleButton" id="edit">
+ <property name="icon-name">document-edit-symbolic</property>
+ <!-- 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>
+ </object>
</child>
<style>
<class name="suffixes"/>
diff --git a/res/widgets/widgets.cmb b/res/widgets/widgets.cmb
index ce44dd0..a61fa4d 100644
--- a/res/widgets/widgets.cmb
+++ b/res/widgets/widgets.cmb
@@ -13,10 +13,11 @@
(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,6,"GtkLabel","title",5,None,None,None,-1,None,None),
- (1,7,"GtkLabel","subtitle",5,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,9,"GtkSwitch",None,8,None,None,None,1,None,None),
+ (1,10,"GtkEditableLabel","title",5,None,None,None,None,"&lt;property name=\"editable\"\n bind-source=\"edit\"\n bind-property=\"active\"\n bind-flags=\"sync-create\" /&gt;",None),
+ (1,11,"GtkToggleButton","edit",8,None,None,None,None,"&lt;property name=\"active\"\n bind-source=\"title\"\n bind-property=\"editing\"\n bind-flags=\"sync-create\" /&gt;",None)
</object>
<object_property>
(1,1,"GtkListBoxRow","child",None,None,None,None,None,2,None,None,None,None),
@@ -29,21 +30,18 @@
(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),
- (1,6,"GtkLabel","lines","0",None,None,None,None,None,None,None,None,None),
- (1,6,"GtkLabel","wrap","True",None,None,None,None,None,None,None,None,None),
- (1,6,"GtkLabel","wrap-mode","word-char",None,None,None,None,None,None,None,None,None),
- (1,6,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None),
- (1,6,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None),
(1,7,"GtkLabel","lines","0",None,None,None,None,None,None,None,None,None),
(1,7,"GtkLabel","wrap","True",None,None,None,None,None,None,None,None,None),
(1,7,"GtkLabel","wrap-mode","word-char",None,None,None,None,None,None,None,None,None),
(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,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)
</object_property>
<object_data>
- (1,6,"GtkWidget",1,1,None,None,None,None,None,None),
- (1,6,"GtkWidget",2,2,None,1,None,None,None,None),
(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),
@@ -56,16 +54,18 @@
(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,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)
</object_data>
<object_data_arg>
- (1,6,"GtkWidget",2,2,"name","title"),
(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,1,"GtkWidget",2,4,"name","view"),
+ (1,10,"GtkWidget",2,2,"name","title")
</object_data_arg>
</cambalache-project>