diff options
Diffstat (limited to 'src/datetime-prefs.c')
-rw-r--r-- | src/datetime-prefs.c | 126 |
1 files changed, 44 insertions, 82 deletions
diff --git a/src/datetime-prefs.c b/src/datetime-prefs.c index c02b8e2..d7f0def 100644 --- a/src/datetime-prefs.c +++ b/src/datetime-prefs.c @@ -70,8 +70,6 @@ struct _IndicatorDatetimePanelPrivate gboolean changing_time; GtkWidget * loc_dlg; CcTimezoneCompletion * completion; - GCancellable * tz_query_cancel; - GCancellable * ntp_query_cancel; }; struct _IndicatorDatetimePanelClass @@ -193,7 +191,7 @@ dbus_set_answered (GObject *object, GAsyncResult *res, gpointer command) GVariant * answers = g_dbus_proxy_call_finish (G_DBUS_PROXY (object), res, &error); if (error != NULL) { - g_warning("Could not set '%s' for SettingsDaemon: %s", (gchar *)command, error->message); + g_warning("Could not set '%s' using timedated: %s", (gchar *)command, error->message); g_error_free(error); return; } @@ -206,33 +204,8 @@ toggle_ntp (GtkWidget * radio, GParamSpec * pspec, IndicatorDatetimePanel * self { gboolean active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (radio)); - g_dbus_proxy_call (self->priv->proxy, "SetUsingNtp", g_variant_new ("(b)", active), - G_DBUS_CALL_FLAGS_NONE, -1, NULL, dbus_set_answered, "using_ntp"); -} - -static void -ntp_query_answered (GObject *object, GAsyncResult *res, IndicatorDatetimePanel * self) -{ - GError * error = NULL; - GVariant * answers = g_dbus_proxy_call_finish (G_DBUS_PROXY (object), res, &error); - - g_clear_object (&self->priv->ntp_query_cancel); - - if (error != NULL) { - g_warning("Could not query DBus proxy for SettingsDaemon: %s", error->message); - g_error_free(error); - return; - } - - gboolean can_use_ntp, is_using_ntp; - g_variant_get (answers, "(bb)", &can_use_ntp, &is_using_ntp); - - gtk_widget_set_sensitive (GTK_WIDGET (self->priv->auto_radio), can_use_ntp); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->auto_radio), is_using_ntp); - - g_signal_connect (self->priv->auto_radio, "notify::active", G_CALLBACK (toggle_ntp), self); - - g_variant_unref (answers); + g_dbus_proxy_call (self->priv->proxy, "SetNTP", g_variant_new ("(bb)", active, TRUE), + G_DBUS_CALL_FLAGS_NONE, -1, NULL, dbus_set_answered, "NTP"); } static void @@ -255,7 +228,7 @@ tz_changed (CcTimezoneMap * map, CcTimezoneLocation * location, IndicatorDatetim gchar * zone; g_object_get (location, "zone", &zone, NULL); - g_dbus_proxy_call (self->priv->proxy, "SetTimezone", g_variant_new ("(s)", zone), + g_dbus_proxy_call (self->priv->proxy, "SetTimezone", g_variant_new ("(sb)", zone, TRUE), G_DBUS_CALL_FLAGS_NONE, -1, NULL, dbus_set_answered, "timezone"); sync_entry (self, zone); @@ -264,55 +237,53 @@ tz_changed (CcTimezoneMap * map, CcTimezoneLocation * location, IndicatorDatetim } static void -tz_query_answered (GObject *object, GAsyncResult *res, IndicatorDatetimePanel * self) -{ - GError * error = NULL; - GVariant * answers = g_dbus_proxy_call_finish (G_DBUS_PROXY (object), res, &error); - - g_clear_object (&self->priv->tz_query_cancel); - - if (error != NULL) { - g_warning("Could not query DBus proxy for SettingsDaemon: %s", error->message); - g_error_free(error); - return; - } - - const gchar * timezone; - g_variant_get (answers, "(&s)", &timezone); - - cc_timezone_map_set_timezone (self->priv->tzmap, timezone); - - sync_entry (self, timezone); - g_signal_connect (self->priv->tzmap, "location-changed", G_CALLBACK (tz_changed), self); - - g_variant_unref (answers); -} - -static void proxy_ready (GObject *object, GAsyncResult *res, IndicatorDatetimePanel * self) { GError * error = NULL; IndicatorDatetimePanelPrivate * priv = self->priv; + GVariant *value; self->priv->proxy = g_dbus_proxy_new_for_bus_finish (res, &error); if (error != NULL) { - g_critical("Could not grab DBus proxy for SettingsDaemon: %s", error->message); + g_critical("Could not grab DBus proxy for timedated: %s", error->message); g_error_free(error); return; } /* And now, do initial proxy configuration */ - if (priv->ntp_query_cancel == NULL) { - priv->ntp_query_cancel = g_cancellable_new(); - g_dbus_proxy_call (priv->proxy, "GetUsingNtp", NULL, G_DBUS_CALL_FLAGS_NONE, -1, - priv->ntp_query_cancel, (GAsyncReadyCallback)ntp_query_answered, self); - } - if (priv->tz_query_cancel == NULL) { - priv->tz_query_cancel = g_cancellable_new(); - g_dbus_proxy_call (priv->proxy, "GetTimezone", NULL, G_DBUS_CALL_FLAGS_NONE, -1, - priv->tz_query_cancel, (GAsyncReadyCallback)tz_query_answered, self); - } + value = g_dbus_proxy_get_cached_property (priv->proxy, "CanNTP"); + if (value != NULL) + { + if (g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)) + gtk_widget_set_sensitive (priv->auto_radio, g_variant_get_boolean (value)); + g_variant_unref (value); + } + + value = g_dbus_proxy_get_cached_property (priv->proxy, "NTP"); + if (value != NULL) + { + if (g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)) + { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->auto_radio), g_variant_get_boolean (value)); + g_signal_connect (priv->auto_radio, "notify::active", G_CALLBACK (toggle_ntp), self); + } + g_variant_unref (value); + } + + value = g_dbus_proxy_get_cached_property (priv->proxy, "Timezone"); + if (value != NULL) + { + if (g_variant_is_of_type (value, G_VARIANT_TYPE_STRING)) + { + const gchar *timezone = g_variant_get_string (value, NULL); + + cc_timezone_map_set_timezone (priv->tzmap, timezone); + sync_entry (self, timezone); + g_signal_connect (priv->tzmap, "location-changed", G_CALLBACK (tz_changed), self); + } + g_variant_unref (value); + } } static void @@ -359,7 +330,8 @@ save_time (IndicatorDatetimePanel * self) { if (self->priv->user_edited_time) { gdouble current_value = gtk_spin_button_get_value (GTK_SPIN_BUTTON (self->priv->date_spin)); - g_dbus_proxy_call (self->priv->proxy, "SetTime", g_variant_new ("(x)", (guint64)current_value), + g_dbus_proxy_call (self->priv->proxy, "SetTime", + g_variant_new ("(xbb)", (gint64) (current_value * G_TIME_SPAN_SECOND), FALSE, TRUE), G_DBUS_CALL_FLAGS_NONE, -1, NULL, dbus_set_answered, "time"); } self->priv->user_edited_time = FALSE; @@ -696,7 +668,7 @@ indicator_datetime_panel_init (IndicatorDatetimePanel * self) gtk_container_add (GTK_CONTAINER (alignment), polkit_button); gtk_box_pack_start (GTK_BOX (WIG ("timeDateBox")), alignment, FALSE, TRUE, 0); - const gchar * polkit_name = "org.gnome.settingsdaemon.datetimemechanism.configure"; + const gchar * polkit_name = "org.gnome.controlcenter.datetime.configure"; polkit_permission_new (polkit_name, NULL, NULL, polkit_perm_ready, polkit_button); /* Add map */ @@ -763,9 +735,9 @@ indicator_datetime_panel_init (IndicatorDatetimePanel * self) /* Grab proxy for settings daemon */ g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, NULL, - "org.gnome.SettingsDaemon.DateTimeMechanism", - "/", - "org.gnome.SettingsDaemon.DateTimeMechanism", + "org.freedesktop.timedate1", + "/org/freedesktop/timedate1", + "org.freedesktop.timedate1", NULL, (GAsyncReadyCallback)proxy_ready, self); /* Grab proxy for datetime service, to see if it's running. It would @@ -795,16 +767,6 @@ indicator_datetime_panel_dispose (GObject * object) g_clear_object (&priv->builder); g_clear_object (&priv->proxy); - if (priv->tz_query_cancel != NULL) { - g_cancellable_cancel (priv->tz_query_cancel); - g_clear_object (&priv->tz_query_cancel); - } - - if (priv->ntp_query_cancel != NULL) { - g_cancellable_cancel (priv->ntp_query_cancel); - g_clear_object (&priv->ntp_query_cancel); - } - if (priv->loc_dlg) { gtk_widget_destroy (priv->loc_dlg); priv->loc_dlg = NULL; |