diff options
author | Jens Georg <mail@jensge.org> | 2013-10-16 14:18:05 +0200 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2013-10-16 14:18:16 +0200 |
commit | 7494a41b6a4e659443f7bcc1fbf4773ea3ba35eb (patch) | |
tree | 7e70a4bb650d630a2f7fc594839ce8b4f2e9d32f | |
parent | fc0013d7d05357d29f1d96e62f3d1494e3954e3f (diff) | |
download | gupnp-av-7494a41b6a4e659443f7bcc1fbf4773ea3ba35eb.tar.gz |
Add res@dlna:trackTotal property
https://bugzilla.gnome.org/show_bug.cgi?id=702557
-rw-r--r-- | doc/gupnp-av-sections.txt | 6 | ||||
-rw-r--r-- | libgupnp-av/gupnp-didl-lite-resource.c | 117 | ||||
-rw-r--r-- | libgupnp-av/gupnp-didl-lite-resource.h | 16 |
3 files changed, 137 insertions, 2 deletions
diff --git a/doc/gupnp-av-sections.txt b/doc/gupnp-av-sections.txt index 1709b06..60488fd 100644 --- a/doc/gupnp-av-sections.txt +++ b/doc/gupnp-av-sections.txt @@ -220,12 +220,16 @@ gupnp_didl_lite_resource_get_width gupnp_didl_lite_resource_get_height gupnp_didl_lite_resource_get_color_depth gupnp_didl_lite_resource_get_xml_node -gupnp_didl_lite_resource_get_update_count gupnp_didl_lite_resource_get_clear_text_size gupnp_didl_lite_resource_get_dlna_namespace +gupnp_didl_lite_resource_get_update_count gupnp_didl_lite_resource_set_update_count gupnp_didl_lite_resource_unset_update_count gupnp_didl_lite_resource_update_count_is_set +gupnp_didl_lite_resource_get_track_total +gupnp_didl_lite_resource_set_track_total +gupnp_didl_lite_resource_track_total_is_set +gupnp_didl_lite_resource_unset_track_total <SUBSECTION Standard> GUPNP_TYPE_DIDL_LITE_RESOURCE GUPNP_DIDL_LITE_RESOURCE diff --git a/libgupnp-av/gupnp-didl-lite-resource.c b/libgupnp-av/gupnp-didl-lite-resource.c index 56827a2..136bd52 100644 --- a/libgupnp-av/gupnp-didl-lite-resource.c +++ b/libgupnp-av/gupnp-didl-lite-resource.c @@ -76,7 +76,8 @@ enum { PROP_HEIGHT, PROP_COLOR_DEPTH, - PROP_UPDATE_COUNT + PROP_UPDATE_COUNT, + PROP_TRACK_TOTAL }; static void @@ -220,6 +221,11 @@ gupnp_didl_lite_resource_set_property (GObject *object, (resource, g_value_get_uint (value)); break; + case PROP_TRACK_TOTAL: + gupnp_didl_lite_resource_set_track_total + (resource, + g_value_get_uint (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -326,6 +332,11 @@ gupnp_didl_lite_resource_get_property (GObject *object, (value, gupnp_didl_lite_resource_get_update_count (resource)); break; + case PROP_TRACK_TOTAL: + g_value_set_uint + (value, + gupnp_didl_lite_resource_get_track_total (resource)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -729,6 +740,23 @@ gupnp_didl_lite_resource_class_init (GUPnPDIDLLiteResourceClass *klass) G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); + /** + * GUPnPDIDLLiteResource:track-total: + * + * Number of tracks in a DIDL_S or DIDL_V resource. + **/ + g_object_class_install_property + (object_class, + PROP_TRACK_TOTAL, + g_param_spec_uint ("track-total", + "TrackTotal", + "The number of tracks of this " + "resource.", + 0, + G_MAXUINT, + 0, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); } /** @@ -1105,6 +1133,24 @@ gupnp_didl_lite_resource_get_update_count (GUPnPDIDLLiteResource *resource) } /** + * gupnp_didl_lite_resource_get_track_total: + * @resource: A #GUPnPDIDLLiteResource + * + * Get the total track count of this resource. + * + * Return value: The total track count of the @resource. + **/ +guint +gupnp_didl_lite_resource_get_track_total (GUPnPDIDLLiteResource *resource) +{ + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), 0); + + return xml_util_get_uint_attribute (resource->priv->xml_node, + "trackTotal", + -1); +} + +/** * gupnp_didl_lite_resource_update_count_is_set: * @resource: A #GUPnPDIDLLiteResource * @@ -1125,6 +1171,27 @@ gupnp_didl_lite_resource_update_count_is_set (GUPnPDIDLLiteResource *resource) } /** + * gupnp_didl_lite_resource_track_total_is_set: + * @resource: A #GUPnPDIDLLiteResource + * + * Check whether the total track count property of this resource is set. + * + * Return value: %TRUE if set, otherwise %FALSE. + **/ +gboolean +gupnp_didl_lite_resource_track_total_is_set (GUPnPDIDLLiteResource *resource) +{ + const char *content; + + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), FALSE); + + content = xml_util_get_attribute_content (resource->priv->xml_node, + "trackTotal"); + return content != NULL; +} + + +/** * gupnp_didl_lite_resource_set_uri: * @resource: A #GUPnPDIDLLiteResource * @uri: The URI as string @@ -1613,6 +1680,34 @@ gupnp_didl_lite_resource_set_update_count (GUPnPDIDLLiteResource *resource, g_object_notify (G_OBJECT (resource), "update-count"); } +/* + * gupnp_didl_lite_resource_set_track_total: + * @resource: A #GUPnPDIDLLiteResource + * @track_total: The total number of tracks in this resource + * + * Set the total number of tracks in this resource. + * + * Return value: None. + **/ +void +gupnp_didl_lite_resource_set_track_total (GUPnPDIDLLiteResource *resource, + guint track_total) +{ + char *str; + + g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + + str = g_strdup_printf ("%u", track_total); + xmlSetNsProp (resource->priv->xml_node, + resource->priv->dlna_ns, + (unsigned char *) "trackTotal", + (unsigned char *) str); + g_free (str); + + g_object_notify (G_OBJECT (resource), "track-total"); +} + + /** * gupnp_didl_lite_resource_unset_update_count: * @resource: A #GUPnPDIDLLiteResource @@ -1631,3 +1726,23 @@ gupnp_didl_lite_resource_unset_update_count (GUPnPDIDLLiteResource *resource) g_object_notify (G_OBJECT (resource), "update-count"); } + +/** + * gupnp_didl_lite_resource_unset_track_total: + * @resource: A #GUPnPDIDLLiteResource + * + * Unset the total track count of this resource. + * + * Return value: None. + **/ +void +gupnp_didl_lite_resource_unset_track_total (GUPnPDIDLLiteResource *resource) +{ + g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + + xmlUnsetNsProp (resource->priv->xml_node, + resource->priv->dlna_ns, + (unsigned char *) "trackTotal"); + + g_object_notify (G_OBJECT (resource), "track-total"); +} diff --git a/libgupnp-av/gupnp-didl-lite-resource.h b/libgupnp-av/gupnp-didl-lite-resource.h index 9ecb6bc..ea29685 100644 --- a/libgupnp-av/gupnp-didl-lite-resource.h +++ b/libgupnp-av/gupnp-didl-lite-resource.h @@ -153,6 +153,14 @@ gupnp_didl_lite_resource_set_update_count guint update_count); void +gupnp_didl_lite_resource_set_track_total + (GUPnPDIDLLiteResource *resource, + guint track_total); +void +gupnp_didl_lite_resource_unset_track_total + (GUPnPDIDLLiteResource *resource); + +void gupnp_didl_lite_resource_unset_update_count (GUPnPDIDLLiteResource *resource); @@ -222,6 +230,14 @@ gboolean gupnp_didl_lite_resource_update_count_is_set (GUPnPDIDLLiteResource *resource); +guint +gupnp_didl_lite_resource_get_track_total + (GUPnPDIDLLiteResource *resource); + +gboolean +gupnp_didl_lite_resource_track_total_is_set + (GUPnPDIDLLiteResource *resource); + G_END_DECLS #endif /* __GUPNP_DIDL_LITE_RESOURCE_H__ */ |