diff options
Diffstat (limited to 'src/service.c')
-rw-r--r-- | src/service.c | 76 |
1 files changed, 18 insertions, 58 deletions
diff --git a/src/service.c b/src/service.c index c46beeb..0928205 100644 --- a/src/service.c +++ b/src/service.c @@ -227,7 +227,7 @@ calculate_seconds_until_next_fifteen_minutes (GDateTime * now) g_date_time_get_day_of_month (next), g_date_time_get_hour (next), g_date_time_get_minute (next), - 1); + 0.1); str = g_date_time_format (start_of_next, "%F %T"); g_debug ("%s %s the next timestamp rebuild will be at %s", G_STRLOC, G_STRFUNC, str); @@ -299,7 +299,7 @@ calculate_milliseconds_until_next_minute (GDateTime * now) g_date_time_get_day_of_month (next), g_date_time_get_hour (next), g_date_time_get_minute (next), - 0); + 0.1); interval_usec = g_date_time_difference (start_of_next, now); interval_msec = (interval_usec + 999) / 1000; @@ -424,43 +424,12 @@ skew_timer_func (gpointer gself) **** ***/ -typedef enum -{ - TIME_FORMAT_MODE_LOCALE_DEFAULT, - TIME_FORMAT_MODE_12_HOUR, - TIME_FORMAT_MODE_24_HOUR, - TIME_FORMAT_MODE_CUSTOM -} -TimeFormatMode; - -/* gets the user's time-format from GSettings */ -static TimeFormatMode -get_time_format_mode (IndicatorDatetimeService * self) -{ - char * str; - TimeFormatMode mode; - - str = g_settings_get_string (self->priv->settings, SETTINGS_TIME_FORMAT_S); - - if (!g_strcmp0 ("12-hour", str)) - mode = TIME_FORMAT_MODE_12_HOUR; - else if (!g_strcmp0 ("24-hour", str)) - mode = TIME_FORMAT_MODE_24_HOUR; - else if (!g_strcmp0 ("custom", str)) - mode = TIME_FORMAT_MODE_CUSTOM; - else - mode = TIME_FORMAT_MODE_LOCALE_DEFAULT; - - g_free (str); - return mode; -} - static gchar * get_header_label_format_string (IndicatorDatetimeService * self) { char * fmt; - const TimeFormatMode mode = get_time_format_mode (self); GSettings * s = self->priv->settings; + const TimeFormatMode mode = g_settings_get_enum (s, SETTINGS_TIME_FORMAT_S); if (mode == TIME_FORMAT_MODE_CUSTOM) { @@ -470,7 +439,7 @@ get_header_label_format_string (IndicatorDatetimeService * self) { gboolean show_day = g_settings_get_boolean (s, SETTINGS_SHOW_DAY_S); gboolean show_date = g_settings_get_boolean (s, SETTINGS_SHOW_DATE_S); - fmt = generate_full_format_string (show_day, show_date); + fmt = generate_full_format_string (show_day, show_date, s); } return fmt; @@ -497,14 +466,13 @@ create_desktop_header_state (IndicatorDatetimeService * self) g_warning ("%s", str); } - g_variant_builder_init (&b, G_VARIANT_TYPE("a{sv}")); + g_variant_builder_init (&b, G_VARIANT_TYPE_VARDICT); g_variant_builder_add (&b, "{sv}", "accessible-desc", g_variant_new_string (str)); - g_variant_builder_add (&b, "{sv}", "label", g_variant_new_string (str)); + g_variant_builder_add (&b, "{sv}", "label", g_variant_new_take_string (str)); g_variant_builder_add (&b, "{sv}", "visible", g_variant_new_boolean (visible)); /* cleanup */ g_date_time_unref (now); - g_free (str); g_free (fmt); return g_variant_builder_end (&b); } @@ -522,13 +490,12 @@ create_phone_header_state (IndicatorDatetimeService * self) gboolean has_alarms; gchar * a11y; - g_variant_builder_init (&b, G_VARIANT_TYPE("a{sv}")); + g_variant_builder_init (&b, G_VARIANT_TYPE_VARDICT); /* label */ now = indicator_datetime_service_get_localtime (self); fmt = get_terse_time_format_string (now); label = g_date_time_format (now, fmt); - g_variant_builder_add (&b, "{sv}", "label", g_variant_new_string (label)); /* icon */ if ((has_alarms = service_has_alarms (self))) @@ -545,14 +512,12 @@ create_phone_header_state (IndicatorDatetimeService * self) else a11y = g_strdup (label); g_variant_builder_add (&b, "{sv}", "accessible-desc", - g_variant_new_string (a11y)); + g_variant_new_take_string (a11y)); - /* visible */ g_variant_builder_add (&b, "{sv}", "visible", g_variant_new_boolean (TRUE)); + g_variant_builder_add (&b, "{sv}", "label", g_variant_new_take_string (label)); /* cleanup */ - g_free (a11y); - g_free (label); g_date_time_unref (now); return g_variant_builder_end (&b); } @@ -652,10 +617,8 @@ add_localtime_menuitem (GMenu * menu, static void add_calendar_menuitem (GMenu * menu) { - char * label; GMenuItem * menu_item; - label = g_strdup ("[calendar]"); menu_item = g_menu_item_new ("[calendar]", NULL); g_menu_item_set_action_and_target_value (menu_item, "indicator.calendar", g_variant_new_int64(0)); g_menu_item_set_attribute (menu_item, "x-canonical-type", "s", "com.canonical.indicator.calendar"); @@ -663,7 +626,6 @@ add_calendar_menuitem (GMenu * menu) g_menu_append_item (menu, menu_item); g_object_unref (menu_item); - g_free (label); } static GMenuModel * @@ -721,6 +683,7 @@ service_has_alarms (IndicatorDatetimeService * self) static char * get_appointment_time_format (struct IndicatorDatetimeAppt * appt, GDateTime * now, + GSettings * settings, gboolean terse) { char * fmt; @@ -729,7 +692,7 @@ get_appointment_time_format (struct IndicatorDatetimeAppt * appt, if (appt->is_daily) { const char * time_fmt = terse ? get_terse_time_format_string (appt->begin) - : get_full_time_format_string (); + : get_full_time_format_string (settings); fmt = join_date_and_time_format_strings (_("Daily"), time_fmt); } else if (full_day) @@ -741,7 +704,7 @@ get_appointment_time_format (struct IndicatorDatetimeAppt * appt, else { fmt = terse ? generate_terse_format_string_at_time (now, appt->begin) - : generate_full_format_string_at_time (now, appt->begin); + : generate_full_format_string_at_time (now, appt->begin, settings); } return fmt; @@ -761,7 +724,7 @@ add_appointments (IndicatorDatetimeService * self, GMenu * menu, gboolean terse) for (l=appts, i=0; l!=NULL && i<MAX_APPTS; l=l->next, i++) { struct IndicatorDatetimeAppt * appt = l->data; - char * fmt = get_appointment_time_format (appt, now, terse); + char * fmt = get_appointment_time_format (appt, now, self->priv->settings, terse); const gint64 unix_time = g_date_time_to_unix (appt->begin); GMenuItem * menu_item; @@ -1001,7 +964,7 @@ create_locations_section (IndicatorDatetimeService * self) const char * tz = indicator_datetime_timezone_get_timezone (detected_timezones[i]); if (tz && *tz) { - gchar * name = get_current_zone_name (tz); + gchar * name = get_current_zone_name (tz, p->settings); locations = locations_add (locations, tz, name, visible); g_free (name); } @@ -1034,18 +997,16 @@ create_locations_section (IndicatorDatetimeService * self) struct TimeLocation * loc = l->data; if (loc->visible) { - char * label; char * detailed_action; char * fmt; GMenuItem * menu_item; - label = g_strdup (loc->name); detailed_action = g_strdup_printf ("indicator.set-location::%s %s", loc->zone, loc->name); - fmt = generate_full_format_string_at_time (now, loc->local_time); + fmt = generate_full_format_string_at_time (now, loc->local_time, p->settings); - menu_item = g_menu_item_new (label, detailed_action); + menu_item = g_menu_item_new (loc->name, detailed_action); g_menu_item_set_attribute (menu_item, "x-canonical-type", "s", "com.canonical.indicator.location"); g_menu_item_set_attribute (menu_item, "x-canonical-timezone", @@ -1057,7 +1018,6 @@ create_locations_section (IndicatorDatetimeService * self) g_object_unref (menu_item); g_free (fmt); g_free (detailed_action); - g_free (label); } } @@ -1650,8 +1610,8 @@ update_appointment_lists (IndicatorDatetimeService * self) /* get all the appointments in the calendar month */ g_date_time_get_ymd (calendar_date, &y, &m, &d); - begin = g_date_time_new_local (y, m, 1, 0, 0, 0); - end = g_date_time_new_local (y, m, g_date_get_days_in_month(m,y), 23, 59, 0); + begin = g_date_time_new_local (y, m, 1, 0, 0, 0.1); + end = g_date_time_new_local (y, m, g_date_get_days_in_month(m,y), 23, 59, 59.9); if (begin && end) indicator_datetime_planner_get_appointments (planner, begin, end, on_calendar_appointments_ready, |