if (enabled)
{
- g_print ("enable publishing\n");
+ gboolean start_gps;
if (priv->publisher != NULL)
return;
- priv->publisher = position_publisher_new (TRUE, FALSE);
+ start_gps = gconf_client_get_bool (priv->gconf,
+ AZIMUTH_GCONF_KEY_START_GPS, NULL);
+ g_print ("enable publishing (start gps: %s)\n",
+ start_gps ? "yes" : "no");
+ priv->publisher = position_publisher_new (TRUE, start_gps);
}
else
{
}
static void
+start_gps_changed (Azimuth *self,
+ gboolean start_gps)
+{
+ AzimuthPrivate *priv = AZIMUTH_GET_PRIVATE (self);
+
+ if (priv->publisher)
+ {
+ g_print ("%s GPS\n", start_gps ? "Start" : "Stop");
+ g_object_set (priv->publisher, "start-gps", start_gps, NULL);
+ }
+}
+
+static void
gconf_notification_cb (GConfClient *client,
guint cnxn_id,
GConfEntry *entry,
enabled_changed (self, enabled);
}
+
+ if (!tp_strdiff (key, AZIMUTH_GCONF_KEY_START_GPS) &&
+ value->type == GCONF_VALUE_BOOL)
+ {
+ gboolean start_gps = gconf_value_get_bool (value);
+
+ start_gps_changed (self, start_gps);
+ }
}
static void
{
AzimuthPrivate *priv = AZIMUTH_GET_PRIVATE (self);
gboolean enabled;
+ gboolean start_gps;
enabled = gconf_client_get_bool (priv->gconf, AZIMUTH_GCONF_KEY_ENABLED,
NULL);
+ start_gps = gconf_client_get_bool (priv->gconf, AZIMUTH_GCONF_KEY_START_GPS,
+ NULL);
if (enabled)
{
- g_print ("publishing is enabled\n");
+ g_print ("publishing is enabled (start gps: %s)\n",
+ start_gps ? "yes" : "no");
g_assert (priv->publisher == NULL);
- priv->publisher = position_publisher_new (TRUE, FALSE);
+ priv->publisher = position_publisher_new (TRUE, start_gps);
}
else
{
priv->dispose_has_run = TRUE;
+ if (priv->start_gps)
+ {
+ location_gpsd_control_stop (priv->gps_control);
+ priv->start_gps = FALSE;
+ }
+
g_object_unref (priv->watcher);
g_object_unref (priv->gps_control);
g_object_unref (priv->gps_device);
priv->blur = g_value_get_boolean (value);
break;
case PROP_START_GPS:
- priv->blur = g_value_get_boolean (value);
+ priv->start_gps = g_value_get_boolean (value);
+ if (priv->start_gps)
+ location_gpsd_control_start (priv->gps_control);
+ else
+ location_gpsd_control_stop (priv->gps_control);
+
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);