summaryrefslogtreecommitdiff
path: root/shell/clock.c
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2014-02-18 16:06:29 +0100
committerJonny Lamb <jonny.lamb@collabora.co.uk>2014-02-18 18:28:09 +0100
commitd7538c85af3344a7587c3a51b17da60b8e88d79d (patch)
tree0618c4f7547f975069b113cc2d10605f8adb0191 /shell/clock.c
parent4352192c319e37cbeeeca0d60c6ef74731e48b05 (diff)
downloadgraynard-d7538c85af3344a7587c3a51b17da60b8e88d79d.tar.gz
graynard-d7538c85af3344a7587c3a51b17da60b8e88d79d.zip
clocks: use GnomeWallClock to give time change updates
Use this to stop showing static times for both clocks.
Diffstat (limited to 'shell/clock.c')
-rw-r--r--shell/clock.c37
1 files changed, 34 insertions, 3 deletions
diff --git a/shell/clock.c b/shell/clock.c
index b229dda..4a3cf9c 100644
--- a/shell/clock.c
+++ b/shell/clock.c
@@ -8,8 +8,13 @@
#include "clock.h"
+#define GNOME_DESKTOP_USE_UNSTABLE_API
+#include <libgnome-desktop/gnome-wall-clock.h>
+
struct WestonGtkClockPrivate {
GtkWidget *label;
+
+ GnomeWallClock *wall_clock;
};
G_DEFINE_TYPE(WestonGtkClock, weston_gtk_clock, GTK_TYPE_WINDOW)
@@ -23,12 +28,35 @@ weston_gtk_clock_init (WestonGtkClock *self)
}
static void
+wall_clock_notify_cb (GnomeWallClock *wall_clock,
+ GParamSpec *pspec,
+ WestonGtkClock *self)
+{
+ GDateTime *datetime;
+ gchar *str;
+
+ datetime = g_date_time_new_now_local ();
+
+ str = g_date_time_format (datetime,
+ "<span font=\"Droid Sans 32\">%H:%M</span>\n"
+ "<span font=\"Droid Sans 12\">%d/%m/%Y</span>");
+ gtk_label_set_markup (GTK_LABEL (self->priv->label), str);
+
+ g_free (str);
+ g_date_time_unref (datetime);
+}
+
+static void
weston_gtk_clock_constructed (GObject *object)
{
WestonGtkClock *self = WESTON_GTK_CLOCK (object);
G_OBJECT_CLASS (weston_gtk_clock_parent_class)->constructed (object);
+ self->priv->wall_clock = g_object_new (GNOME_TYPE_WALL_CLOCK, NULL);
+ g_signal_connect (self->priv->wall_clock, "notify::clock",
+ G_CALLBACK (wall_clock_notify_cb), self);
+
gtk_window_set_title (GTK_WINDOW (self), "gtk shell");
gtk_window_set_decorated (GTK_WINDOW (self), FALSE);
gtk_widget_realize (GTK_WIDGET (self));
@@ -38,11 +66,10 @@ weston_gtk_clock_constructed (GObject *object)
"wgs-clock");
self->priv->label = gtk_label_new ("");
- gtk_label_set_markup (GTK_LABEL (self->priv->label),
- "<span font=\"Droid Sans 32\">11:47</span>\n"
- "<span font=\"Droid Sans 12\">13/02/2014</span>");
gtk_label_set_justify (GTK_LABEL (self->priv->label), GTK_JUSTIFY_CENTER);
gtk_container_add (GTK_CONTAINER (self), self->priv->label);
+
+ wall_clock_notify_cb (self->priv->wall_clock, NULL, self);
}
static void
@@ -50,6 +77,10 @@ weston_gtk_clock_dispose (GObject *object)
{
WestonGtkClock *self = WESTON_GTK_CLOCK (object);
+ if (self->priv->wall_clock)
+ g_object_unref (self->priv->wall_clock);
+ self->priv->wall_clock = NULL;
+
G_OBJECT_CLASS (weston_gtk_clock_parent_class)->dispose (object);
}