static gboolean update_clock (gpointer data) { GnomeWallClock *self = data; GDesktopClockFormat clock_format; gboolean show_full_date; gboolean show_weekday; gboolean show_seconds; GSource *source; GDateTime *now; GDateTime *expiry; clock_format = g_settings_get_enum (self->priv->desktop_settings, "clock-format"); show_weekday = !self->priv->time_only && g_settings_get_boolean (self->priv->desktop_settings, "clock-show-weekday"); show_full_date = !self->priv->time_only && g_settings_get_boolean (self->priv->desktop_settings, "clock-show-date"); show_seconds = g_settings_get_boolean (self->priv->desktop_settings, "clock-show-seconds"); now = g_date_time_new_now (self->priv->timezone); if (show_seconds) expiry = g_date_time_add_seconds (now, 1); else expiry = g_date_time_add_seconds (now, 60 - g_date_time_get_second (now)); if (self->priv->clock_update_id) g_source_remove (self->priv->clock_update_id); source = _gnome_datetime_source_new (now, expiry, TRUE); g_source_set_priority (source, G_PRIORITY_HIGH); g_source_set_callback (source, update_clock, self, NULL); self->priv->clock_update_id = g_source_attach (source, NULL); g_source_unref (source); g_free (self->priv->clock_string); self->priv->clock_string = gnome_wall_clock_string_for_datetime (self, now, clock_format, show_weekday, show_full_date, show_seconds); g_date_time_unref (now); g_date_time_unref (expiry); g_object_notify ((GObject*)self, "clock"); return FALSE; }
static gboolean update_clock (gpointer data) { GnomeWallClock *self = data; const char *format_string; GSource *source; GDateTime *now; GDateTime *expiry; now = g_date_time_new_now_local (); expiry = g_date_time_add_seconds (now, 60 - g_date_time_get_second (now)); if (self->priv->clock_update_id) g_source_remove (self->priv->clock_update_id); source = _gnome_datetime_source_new (now, expiry, TRUE); g_source_set_priority (source, G_PRIORITY_HIGH); g_source_set_callback (source, update_clock, self, NULL); self->priv->clock_update_id = g_source_attach (source, NULL); g_source_unref (source); format_string = g_strdup_printf ( "<b><span font_desc=\"Ubuntu 64\" foreground=\"#FFFFFF\">%s</span></b>\n<b><span font_desc=\"Ubuntu 24\" foreground=\"#FFFFFF\">%s</span></b>", _("%R"), _("%A, %B %e")); g_free (self->priv->clock_string); self->priv->clock_string = g_date_time_format (now, format_string); g_date_time_unref (now); g_date_time_unref (expiry); g_object_notify ((GObject*)self, "clock"); return FALSE; }
static gboolean update_clock (gpointer data) { GnomeWallClock *self = data; CDesktopClockFormat clock_format; const char *format_string; gboolean show_full_date; gboolean show_weekday; gboolean show_seconds; GSource *source; GDateTime *now; GDateTime *expiry; clock_format = g_settings_get_enum (self->priv->desktop_settings, "clock-format"); show_weekday = !self->priv->time_only; show_full_date = show_weekday && g_settings_get_boolean (self->priv->desktop_settings, "clock-show-date"); show_seconds = g_settings_get_boolean (self->priv->desktop_settings, "clock-show-seconds"); now = g_date_time_new_now_local (); if (show_seconds) expiry = g_date_time_add_seconds (now, 1); else expiry = g_date_time_add_seconds (now, 60 - g_date_time_get_second (now)); if (self->priv->clock_update_id) g_source_remove (self->priv->clock_update_id); source = _gnome_datetime_source_new (now, expiry, TRUE); g_source_set_priority (source, G_PRIORITY_HIGH); g_source_set_callback (source, update_clock, self, NULL); self->priv->clock_update_id = g_source_attach (source, NULL); g_source_unref (source); if (clock_format == C_DESKTOP_CLOCK_FORMAT_24H) { if (show_full_date) { /* Translators: This is the time format with full date used in 24-hour mode. */ format_string = show_seconds ? _("%a %b %e, %R:%S") : _("%a %b %e, %R"); } else if (show_weekday) { /* Translators: This is the time format with day used in 24-hour mode. */ format_string = show_seconds ? _("%a %R:%S") : _("%a %R"); } else { /* Translators: This is the time format without date used in 24-hour mode. */ format_string = show_seconds ? _("%R:%S") : _("%R"); } } else { if (show_full_date) { /* Translators: This is a time format with full date used for AM/PM. */ format_string = show_seconds ? _("%a %b %e, %l:%M:%S %p") : _("%a %b %e, %l:%M %p"); } else if (show_weekday) { /* Translators: This is a time format with day used for AM/PM. */ format_string = show_seconds ? _("%a %l:%M:%S %p") : _("%a %l:%M %p"); } else { /* Translators: This is a time format without date used for AM/PM. */ format_string = show_seconds ? _("%l:%M:%S %p") : _("%l:%M %p"); } } g_free (self->priv->clock_string); self->priv->clock_string = g_date_time_format (now, format_string); g_date_time_unref (now); g_date_time_unref (expiry); g_object_notify ((GObject*)self, "clock"); return FALSE; }