[gnome-calendar/wip/pandusonu/week-view] event-widget: factor out clock format function



commit ab3b80f3b95fcf36dcfc186e9af6bdcb2b2c2896
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue Dec 13 20:17:28 2016 -0200

    event-widget: factor out clock format function
    
    This function will be used by other pieces of code later. We also gain
    a tiny performance improvement, as only one GSetting is ever created.

 src/gcal-event-widget.c |    9 +--------
 src/gcal-utils.c        |   14 ++++++++++++++
 src/gcal-utils.h        |    2 ++
 3 files changed, 17 insertions(+), 8 deletions(-)
---
diff --git a/src/gcal-event-widget.c b/src/gcal-event-widget.c
index 6b889c6..16410f4 100644
--- a/src/gcal-event-widget.c
+++ b/src/gcal-event-widget.c
@@ -188,13 +188,9 @@ static void
 gcal_event_widget_init (GcalEventWidget *self)
 {
   GtkWidget *widget;
-  GSettings *settings;
-  gchar *clock_format;
 
   widget = GTK_WIDGET (self);
-  settings = g_settings_new ("org.gnome.desktop.interface");
-  clock_format = g_settings_get_string (settings, "clock-format");
-  self->clock_format_24h = g_strcmp0 (clock_format, "24h") == 0;
+  self->clock_format_24h = is_clock_format_24h ();
 
   gtk_widget_set_has_window (widget, FALSE);
   gtk_widget_set_can_focus (widget, TRUE);
@@ -207,9 +203,6 @@ gcal_event_widget_init (GcalEventWidget *self)
                        GDK_ACTION_COPY);
 
   gtk_drag_source_add_text_targets (widget);
-
-  g_clear_object (&settings);
-  g_free (clock_format);
 }
 
 static void
diff --git a/src/gcal-utils.c b/src/gcal-utils.c
index b6d1f4b..ed73f61 100644
--- a/src/gcal-utils.c
+++ b/src/gcal-utils.c
@@ -561,6 +561,20 @@ get_end_of_week (icaltimetype *date)
   return week_end;
 }
 
+gboolean
+is_clock_format_24h (void)
+{
+  static GSettings *settings = NULL;
+  g_autofree gchar *clock_format = NULL;
+
+  if (!settings)
+    settings = g_settings_new ("org.gnome.desktop.interface");
+
+  clock_format = g_settings_get_string (settings, "clock-format");
+
+  return g_strcmp0 (clock_format, "24h") == 0;
+}
+
 /* Function to do a last minute fixup of the AM/PM stuff if the locale
  * and gettext haven't done it right. Most English speaking countries
  * except the USA use the 24 hour clock (UK, Australia etc). However
diff --git a/src/gcal-utils.h b/src/gcal-utils.h
index 484b3ae..8c3a249 100644
--- a/src/gcal-utils.h
+++ b/src/gcal-utils.h
@@ -105,6 +105,8 @@ GDateTime*      get_start_of_week                               (icaltimetype
 
 GDateTime*      get_end_of_week                                 (icaltimetype          *date);
 
+gboolean        is_clock_format_24h                             (void);
+
 /* code brought from evolution */
 gsize           e_strftime_fix_am_pm                            (gchar                 *str,
                                                                  gsize                  max,


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