diff options
-rw-r--r-- | src/clock-live.c | 47 | ||||
-rw-r--r-- | src/clock.c | 6 | ||||
-rw-r--r-- | src/clock.h | 4 | ||||
-rw-r--r-- | src/main.c | 6 | ||||
-rw-r--r-- | src/service.c | 2 |
5 files changed, 24 insertions, 41 deletions
diff --git a/src/clock-live.c b/src/clock-live.c index 6e694ed..564d990 100644 --- a/src/clock-live.c +++ b/src/clock-live.c @@ -35,7 +35,7 @@ struct _IndicatorDatetimeClockLivePriv { GSettings * settings; - /* cached GTimeZone for use by indicator_datetime_service_get_localtime() */ + /* cached GTimeZone for use by get_localtime() */ GTimeZone * internal_timezone; IndicatorDatetimeTimezone * tz_file; @@ -59,39 +59,10 @@ G_DEFINE_TYPE_WITH_CODE ( indicator_datetime_clock_interface_init)); /*** -**** Convenience func -***/ - -#if 0 -static void -emit_changed (IndicatorDatetimeClockLive * self) -{ - indicator_datetime_clock_emit_changed (INDICATOR_DATETIME_CLOCK (self)); -} -#endif - -/*** **** Timezones ***/ static void -update_internal_timezone (IndicatorDatetimeClockLive * self) -{ - priv_t * p = self->priv; - const char * id; - - /* find the id from tz_file or tz_geoclue if possible; NULL otherwise */ - id = NULL; - if (p->tz_file != NULL ) - id = indicator_datetime_timezone_get_timezone (p->tz_file); - if (!id && p->tz_geoclue) - id = indicator_datetime_timezone_get_timezone (p->tz_geoclue); - - g_clear_pointer (&p->internal_timezone, g_time_zone_unref); - p->internal_timezone = g_time_zone_new (id); -} - -static void on_current_timezone_changed (IndicatorDatetimeClockLive * self) { indicator_datetime_clock_emit_changed (INDICATOR_DATETIME_CLOCK (self)); @@ -159,7 +130,7 @@ on_detect_location_changed (IndicatorDatetimeClockLive * self) ***/ static gchar ** -my_get_timezones (IndicatorDatetimeClock * clock G_GNUC_UNUSED) +my_get_timezones (IndicatorDatetimeClock * clock) { IndicatorDatetimeClockLive * self; priv_t * p; @@ -197,8 +168,18 @@ my_get_timezones (IndicatorDatetimeClock * clock G_GNUC_UNUSED) return timezones; } +static void +update_internal_timezone (IndicatorDatetimeClockLive * self) +{ + priv_t * p = self->priv; + gchar ** timezones = my_get_timezones (INDICATOR_DATETIME_CLOCK (self)); + g_clear_pointer (&p->internal_timezone, g_time_zone_unref); + p->internal_timezone = g_time_zone_new (timezones ? timezones[0] : NULL); + g_strfreev (timezones); +} + static GDateTime * -my_get_current_time (IndicatorDatetimeClock * clock) +my_get_localtime (IndicatorDatetimeClock * clock) { IndicatorDatetimeClockLive * self; priv_t * p; @@ -271,8 +252,8 @@ indicator_datetime_clock_live_class_init (IndicatorDatetimeClockLiveClass * klas static void indicator_datetime_clock_interface_init (IndicatorDatetimeClockInterface * iface) { + iface->get_localtime = my_get_localtime; iface->get_timezones = my_get_timezones; - iface->get_current_time = my_get_current_time; } static void diff --git a/src/clock.c b/src/clock.c index 1abdd21..a5cefee 100644 --- a/src/clock.c +++ b/src/clock.c @@ -80,7 +80,7 @@ indicator_datetime_clock_get_timezones (IndicatorDatetimeClock * self) * the current time. */ GDateTime * -indicator_datetime_clock_get_current_time (IndicatorDatetimeClock * self) +indicator_datetime_clock_get_localtime (IndicatorDatetimeClock * self) { GDateTime * now; IndicatorDatetimeClockInterface * iface; @@ -88,8 +88,8 @@ indicator_datetime_clock_get_current_time (IndicatorDatetimeClock * self) g_return_val_if_fail (INDICATOR_IS_DATETIME_CLOCK(self), NULL); iface = INDICATOR_DATETIME_CLOCK_GET_INTERFACE(self); - if (iface->get_current_time != NULL) - now = iface->get_current_time (self); + if (iface->get_localtime != NULL) + now = iface->get_localtime (self); else now = NULL; diff --git a/src/clock.h b/src/clock.h index 8932895..0c10dab 100644 --- a/src/clock.h +++ b/src/clock.h @@ -55,7 +55,7 @@ struct _IndicatorDatetimeClockInterface /* virtual functions */ gchar** (*get_timezones) (IndicatorDatetimeClock * self); - GDateTime* (*get_current_time) (IndicatorDatetimeClock * self); + GDateTime* (*get_localtime) (IndicatorDatetimeClock * self); }; GType indicator_datetime_clock_get_type (void); @@ -66,7 +66,7 @@ GType indicator_datetime_clock_get_type (void); gchar ** indicator_datetime_clock_get_timezones (IndicatorDatetimeClock * clock); -GDateTime * indicator_datetime_clock_get_current_time (IndicatorDatetimeClock * clock); +GDateTime * indicator_datetime_clock_get_localtime (IndicatorDatetimeClock * clock); void indicator_datetime_clock_emit_changed (IndicatorDatetimeClock * clock); @@ -59,17 +59,19 @@ main (int argc G_GNUC_UNUSED, char ** argv G_GNUC_UNUSED) if (!notify_init ("indicator-datetime-service")) g_critical ("libnotify initialization failed"); - /* run */ + /* create the service */ clock = indicator_datetime_clock_live_new (); planner = indicator_datetime_planner_eds_new (); service = indicator_datetime_service_new (clock, planner); + + /* run */ loop = g_main_loop_new (NULL, FALSE); g_signal_connect (service, INDICATOR_DATETIME_SERVICE_SIGNAL_NAME_LOST, G_CALLBACK(on_name_lost), loop); g_main_loop_run (loop); + g_main_loop_unref (loop); /* cleanup */ - g_main_loop_unref (loop); g_object_unref (service); g_object_unref (planner); g_object_unref (clock); diff --git a/src/service.c b/src/service.c index b777b8c..f2b0b34 100644 --- a/src/service.c +++ b/src/service.c @@ -166,7 +166,7 @@ indicator_clear_timer (guint * tag) static inline GDateTime * indicator_datetime_service_get_localtime (IndicatorDatetimeService * self) { - return indicator_datetime_clock_get_current_time (self->priv->clock); + return indicator_datetime_clock_get_localtime (self->priv->clock); } /*** |