[gnome-builder] libide/tweaks: add IdeTweaksPage:section



commit 4b8f5571343d744d10e29f9c6bd46927ad83ef4c
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jul 29 19:38:20 2022 -0700

    libide/tweaks: add IdeTweaksPage:section
    
    The section will be used for grouping pages into areas of the list.

 src/libide/tweaks/ide-tweaks-page.c | 33 +++++++++++++++++++++++++++++++++
 src/libide/tweaks/ide-tweaks-page.h | 13 +++++++++----
 2 files changed, 42 insertions(+), 4 deletions(-)
---
diff --git a/src/libide/tweaks/ide-tweaks-page.c b/src/libide/tweaks/ide-tweaks-page.c
index 999b42d7a..07accda5b 100644
--- a/src/libide/tweaks/ide-tweaks-page.c
+++ b/src/libide/tweaks/ide-tweaks-page.c
@@ -28,6 +28,7 @@
 struct _IdeTweaksPage
 {
   IdeTweaksItem parent_instance;
+  char *section;
   char *title;
 };
 
@@ -35,6 +36,7 @@ G_DEFINE_FINAL_TYPE (IdeTweaksPage, ide_tweaks_page, IDE_TYPE_TWEAKS_ITEM)
 
 enum {
   PROP_0,
+  PROP_SECTION,
   PROP_TITLE,
   N_PROPS
 };
@@ -52,6 +54,7 @@ ide_tweaks_page_finalize (GObject *object)
 {
   IdeTweaksPage *self = (IdeTweaksPage *)object;
 
+  g_clear_pointer (&self->section, g_free);
   g_clear_pointer (&self->title, g_free);
 
   G_OBJECT_CLASS (ide_tweaks_page_parent_class)->finalize (object);
@@ -67,6 +70,10 @@ ide_tweaks_page_get_property (GObject    *object,
 
   switch (prop_id)
     {
+    case PROP_SECTION:
+      g_value_set_string (value, ide_tweaks_page_get_section (self));
+      break;
+
     case PROP_TITLE:
       g_value_set_string (value, ide_tweaks_page_get_title (self));
       break;
@@ -86,6 +93,10 @@ ide_tweaks_page_set_property (GObject      *object,
 
   switch (prop_id)
     {
+    case PROP_SECTION:
+      ide_tweaks_page_set_section (self, g_value_get_string (value));
+      break;
+
     case PROP_TITLE:
       ide_tweaks_page_set_title (self, g_value_get_string (value));
       break;
@@ -104,6 +115,10 @@ ide_tweaks_page_class_init (IdeTweaksPageClass *klass)
   object_class->get_property = ide_tweaks_page_get_property;
   object_class->set_property = ide_tweaks_page_set_property;
 
+  properties [PROP_SECTION] =
+    g_param_spec_string ("section", NULL, NULL, NULL,
+                         (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
   properties [PROP_TITLE] =
     g_param_spec_string ("title", NULL, NULL, NULL,
                          (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
@@ -116,6 +131,24 @@ ide_tweaks_page_init (IdeTweaksPage *self)
 {
 }
 
+const char *
+ide_tweaks_page_get_section (IdeTweaksPage *self)
+{
+  g_return_val_if_fail (IDE_IS_TWEAKS_PAGE (self), NULL);
+
+  return self->section;
+}
+
+void
+ide_tweaks_page_set_section (IdeTweaksPage *self,
+                             const char    *section)
+{
+  g_return_if_fail (IDE_IS_TWEAKS_PAGE (self));
+
+  if (ide_set_string (&self->section, section))
+    g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_SECTION]);
+}
+
 const char *
 ide_tweaks_page_get_title (IdeTweaksPage *self)
 {
diff --git a/src/libide/tweaks/ide-tweaks-page.h b/src/libide/tweaks/ide-tweaks-page.h
index 4d2acb32f..96fb85c65 100644
--- a/src/libide/tweaks/ide-tweaks-page.h
+++ b/src/libide/tweaks/ide-tweaks-page.h
@@ -31,11 +31,16 @@ IDE_AVAILABLE_IN_ALL
 G_DECLARE_FINAL_TYPE (IdeTweaksPage, ide_tweaks_page, IDE, TWEAKS_PAGE, IdeTweaksItem)
 
 IDE_AVAILABLE_IN_ALL
-IdeTweaksPage *ide_tweaks_page_new       (void);
+IdeTweaksPage *ide_tweaks_page_new         (void);
 IDE_AVAILABLE_IN_ALL
-const char    *ide_tweaks_page_get_title (IdeTweaksPage *self);
+const char    *ide_tweaks_page_get_section (IdeTweaksPage *self);
 IDE_AVAILABLE_IN_ALL
-void           ide_tweaks_page_set_title (IdeTweaksPage *self,
-                                          const char    *title);
+void           ide_tweaks_page_set_section (IdeTweaksPage *self,
+                                            const char    *section);
+IDE_AVAILABLE_IN_ALL
+const char    *ide_tweaks_page_get_title   (IdeTweaksPage *self);
+IDE_AVAILABLE_IN_ALL
+void           ide_tweaks_page_set_title   (IdeTweaksPage *self,
+                                            const char    *title);
 
 G_END_DECLS


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]