[sysprof/wip/visualizers] empty-state: make empty state labels changable



commit e239887a9bc8ba16e89c61e092619779f69f6f18
Author: Christian Hergert <chergert redhat com>
Date:   Sun Oct 9 15:12:50 2016 -0700

    empty-state: make empty state labels changable

 lib/resources/ui/sp-empty-state-view.ui |    4 +-
 lib/sp-empty-state-view.c               |   62 ++++++++++++++++++++++++++++++-
 2 files changed, 63 insertions(+), 3 deletions(-)
---
diff --git a/lib/resources/ui/sp-empty-state-view.ui b/lib/resources/ui/sp-empty-state-view.ui
index fd61eb4..61c02e7 100644
--- a/lib/resources/ui/sp-empty-state-view.ui
+++ b/lib/resources/ui/sp-empty-state-view.ui
@@ -18,7 +18,7 @@
           </object>
         </child>
         <child>
-          <object class="GtkLabel">
+          <object class="GtkLabel" id="title">
             <property name="label" translatable="yes">Welcome to Sysprof</property>
             <property name="visible">true</property>
             <style>
@@ -35,7 +35,7 @@
           </packing>
         </child>
         <child>
-          <object class="GtkLabel">
+          <object class="GtkLabel" id="subtitle">
             <property name="label" translatable="yes">Start profiling your system with the 
&lt;b&gt;Record&lt;/b&gt; button above</property>
             <property name="use-markup">true</property>
             <property name="visible">true</property>
diff --git a/lib/sp-empty-state-view.c b/lib/sp-empty-state-view.c
index 8164fdc..9dc064a 100644
--- a/lib/sp-empty-state-view.c
+++ b/lib/sp-empty-state-view.c
@@ -18,7 +18,22 @@
 
 #include "sp-empty-state-view.h"
 
-G_DEFINE_TYPE (SpEmptyStateView, sp_empty_state_view, GTK_TYPE_BIN)
+typedef struct
+{
+  GtkLabel *title;
+  GtkLabel *subtitle;
+} SpEmptyStateViewPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (SpEmptyStateView, sp_empty_state_view, GTK_TYPE_BIN)
+
+enum {
+  PROP_0,
+  PROP_TITLE,
+  PROP_SUBTITLE,
+  N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS];
 
 GtkWidget *
 sp_empty_state_view_new (void)
@@ -27,11 +42,56 @@ sp_empty_state_view_new (void)
 }
 
 static void
+sp_empty_state_view_set_property (GObject      *object,
+                                  guint         prop_id,
+                                  const GValue *value,
+                                  GParamSpec   *pspec)
+{
+  SpEmptyStateView *self = SP_EMPTY_STATE_VIEW (object);
+  SpEmptyStateViewPrivate *priv = sp_empty_state_view_get_instance_private (self);
+
+  switch (prop_id)
+    {
+    case PROP_TITLE:
+      gtk_label_set_label (priv->title, g_value_get_string (value));
+      break;
+
+    case PROP_SUBTITLE:
+      gtk_label_set_label (priv->subtitle, g_value_get_string (value));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
 sp_empty_state_view_class_init (SpEmptyStateViewClass *klass)
 {
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
   GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
+  object_class->set_property = sp_empty_state_view_set_property;
+
+  properties [PROP_TITLE] =
+    g_param_spec_string ("title",
+                         NULL,
+                         NULL,
+                         NULL,
+                         (G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS));
+
+  properties [PROP_SUBTITLE] =
+    g_param_spec_string ("subtitle",
+                         NULL,
+                         NULL,
+                         NULL,
+                         (G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_properties (object_class, N_PROPS, properties);
+
   gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sp-empty-state-view.ui");
+  gtk_widget_class_bind_template_child_private (widget_class, SpEmptyStateView, subtitle);
+  gtk_widget_class_bind_template_child_private (widget_class, SpEmptyStateView, title);
 }
 
 static void


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