/** * cd_sensor_add_option: **/ void cd_sensor_add_option (CdSensor *sensor, const gchar *key, GVariant *value) { GVariant *options; g_hash_table_insert (sensor->priv->options, g_strdup (key), g_variant_ref_sink (value)); /* update clients */ options = cd_sensor_get_options_as_variant (sensor); cd_sensor_dbus_emit_property_changed (sensor, "Options", options); }
/** * cd_sensor_dbus_get_property: **/ static GVariant * cd_sensor_dbus_get_property (GDBusConnection *connection_, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *property_name, GError **error, gpointer user_data) { CdSensor *sensor = CD_SENSOR (user_data); CdSensorPrivate *priv = GET_PRIVATE (sensor); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_ID) == 0) return g_variant_new_string (priv->id); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_KIND) == 0) return g_variant_new_string (cd_sensor_kind_to_string (priv->kind)); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_STATE) == 0) return g_variant_new_string (cd_sensor_state_to_string (priv->state)); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_MODE) == 0) return g_variant_new_string (cd_sensor_cap_to_string (priv->mode)); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_SERIAL) == 0) return cd_sensor_get_nullable_for_string (priv->serial); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_MODEL) == 0) return cd_sensor_get_nullable_for_string (priv->model); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_VENDOR) == 0) return cd_sensor_get_nullable_for_string (priv->vendor); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_NATIVE) == 0) return g_variant_new_boolean (priv->native); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_LOCKED) == 0) return g_variant_new_boolean (priv->locked); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_EMBEDDED) == 0) return g_variant_new_boolean (priv->embedded); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_CAPABILITIES) == 0) return cd_sensor_get_variant_for_caps (priv->caps); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_OPTIONS) == 0) return cd_sensor_get_options_as_variant (sensor); if (g_strcmp0 (property_name, CD_SENSOR_PROPERTY_METADATA) == 0) return cd_sensor_get_metadata_as_variant (sensor); /* return an error */ g_set_error (error, CD_SENSOR_ERROR, CD_SENSOR_ERROR_INTERNAL, "failed to get sensor property %s", property_name); return NULL; }