|
Packit |
712bc5 |
/*
|
|
Packit |
712bc5 |
* Copyright (C) 2009 Nokia Corporation.
|
|
Packit |
712bc5 |
* Copyright (C) 2012 Intel Corporation
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Authors: Zeeshan Ali (Khattak) <zeeshan.ali@nokia.com>
|
|
Packit |
712bc5 |
* <zeeshanak@gnome.org>
|
|
Packit |
712bc5 |
* Krzesimir Nowak <krnowak@openismus.com>
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* This library is free software; you can redistribute it and/or
|
|
Packit |
712bc5 |
* modify it under the terms of the GNU Library General Public
|
|
Packit |
712bc5 |
* License as published by the Free Software Foundation; either
|
|
Packit |
712bc5 |
* version 2 of the License, or (at your option) any later version.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
712bc5 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
712bc5 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
712bc5 |
* Library General Public License for more details.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* You should have received a copy of the GNU Library General Public
|
|
Packit |
712bc5 |
* License along with this library; if not, write to the
|
|
Packit |
712bc5 |
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Packit |
712bc5 |
* Boston, MA 02110-1301, USA.
|
|
Packit |
712bc5 |
*/
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* SECTION:gupnp-didl-lite-object
|
|
Packit |
712bc5 |
* @short_description: DIDL-Lite Object
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* #GUPnPDIDLLiteObject respresent a DIDL-Lite object element.
|
|
Packit |
712bc5 |
*/
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
#include <string.h>
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
#include "gupnp-didl-lite-object.h"
|
|
Packit |
712bc5 |
#include "gupnp-didl-lite-object-private.h"
|
|
Packit |
712bc5 |
#include "gupnp-didl-lite-resource-private.h"
|
|
Packit |
712bc5 |
#include "gupnp-didl-lite-descriptor-private.h"
|
|
Packit |
712bc5 |
#include "gupnp-didl-lite-container.h"
|
|
Packit |
712bc5 |
#include "gupnp-didl-lite-item.h"
|
|
Packit |
712bc5 |
#include "gupnp-didl-lite-contributor-private.h"
|
|
Packit |
712bc5 |
#include "xml-util.h"
|
|
Packit |
712bc5 |
#include "fragment-util.h"
|
|
Packit |
712bc5 |
#include "xsd-data.h"
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
G_DEFINE_ABSTRACT_TYPE (GUPnPDIDLLiteObject,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object,
|
|
Packit |
712bc5 |
G_TYPE_OBJECT);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
struct _GUPnPDIDLLiteObjectPrivate {
|
|
Packit |
712bc5 |
xmlNode *xml_node;
|
|
Packit |
712bc5 |
GUPnPAVXMLDoc *xml_doc;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xmlNs *upnp_ns;
|
|
Packit |
712bc5 |
xmlNs *dc_ns;
|
|
Packit |
712bc5 |
xmlNs *dlna_ns;
|
|
Packit |
712bc5 |
xmlNs *pv_ns;
|
|
Packit |
712bc5 |
};
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static XSDData *didl_lite_xsd;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
enum {
|
|
Packit |
712bc5 |
PROP_0,
|
|
Packit |
712bc5 |
PROP_XML_NODE,
|
|
Packit |
712bc5 |
PROP_XML_DOC,
|
|
Packit |
712bc5 |
PROP_UPNP_NAMESPACE,
|
|
Packit |
712bc5 |
PROP_DC_NAMESPACE,
|
|
Packit |
712bc5 |
PROP_DLNA_NAMESPACE,
|
|
Packit |
712bc5 |
PROP_PV_NAMESPACE,
|
|
Packit |
712bc5 |
PROP_ID,
|
|
Packit |
712bc5 |
PROP_PARENT_ID,
|
|
Packit |
712bc5 |
PROP_RESTRICTED,
|
|
Packit |
712bc5 |
PROP_TITLE,
|
|
Packit |
712bc5 |
PROP_UPNP_CLASS,
|
|
Packit |
712bc5 |
PROP_CREATOR,
|
|
Packit |
712bc5 |
PROP_ARTIST,
|
|
Packit |
712bc5 |
PROP_AUTHOR,
|
|
Packit |
712bc5 |
PROP_GENRE,
|
|
Packit |
712bc5 |
PROP_WRITE_STATUS,
|
|
Packit |
712bc5 |
PROP_ALBUM,
|
|
Packit |
712bc5 |
PROP_ALBUM_ART,
|
|
Packit |
712bc5 |
PROP_DESCRIPTION,
|
|
Packit |
712bc5 |
PROP_DATE,
|
|
Packit |
712bc5 |
PROP_TRACK_NUMBER,
|
|
Packit |
712bc5 |
PROP_DLNA_MANAGED,
|
|
Packit |
712bc5 |
PROP_UPDATE_ID
|
|
Packit |
712bc5 |
};
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static int
|
|
Packit |
712bc5 |
is_non_transcoded_resource (GUPnPDIDLLiteResource *resource)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GUPnPProtocolInfo *info;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
info = gupnp_didl_lite_resource_get_protocol_info (resource);
|
|
Packit |
712bc5 |
if (G_UNLIKELY (info == NULL))
|
|
Packit |
712bc5 |
return -1;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return gupnp_protocol_info_get_dlna_conversion (info) &
|
|
Packit |
712bc5 |
GUPNP_DLNA_CONVERSION_TRANSCODED;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_init (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
object->priv = G_TYPE_INSTANCE_GET_PRIVATE
|
|
Packit |
712bc5 |
(object,
|
|
Packit |
712bc5 |
GUPNP_TYPE_DIDL_LITE_OBJECT,
|
|
Packit |
712bc5 |
GUPnPDIDLLiteObjectPrivate);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_property (GObject *object,
|
|
Packit |
712bc5 |
guint property_id,
|
|
Packit |
712bc5 |
const GValue *value,
|
|
Packit |
712bc5 |
GParamSpec *pspec)
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GUPnPDIDLLiteObject *didl_object;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
didl_object = GUPNP_DIDL_LITE_OBJECT (object);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
switch (property_id) {
|
|
Packit |
712bc5 |
case PROP_XML_NODE:
|
|
Packit |
712bc5 |
didl_object->priv->xml_node = g_value_get_pointer (value);
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_XML_DOC:
|
|
Packit |
712bc5 |
didl_object->priv->xml_doc = g_value_dup_boxed (value);
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_UPNP_NAMESPACE:
|
|
Packit |
712bc5 |
didl_object->priv->upnp_ns = g_value_get_pointer (value);
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DC_NAMESPACE:
|
|
Packit |
712bc5 |
didl_object->priv->dc_ns = g_value_get_pointer (value);
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DLNA_NAMESPACE:
|
|
Packit |
712bc5 |
didl_object->priv->dlna_ns = g_value_get_pointer (value);
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_PV_NAMESPACE:
|
|
Packit |
712bc5 |
didl_object->priv->pv_ns = g_value_get_pointer (value);
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_ID:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_id (didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_PARENT_ID:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_parent_id
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_RESTRICTED:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_restricted
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_boolean (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_TITLE:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_title
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_UPNP_CLASS:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_upnp_class
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_CREATOR:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_creator
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_ARTIST:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_artist
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_AUTHOR:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_author
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_GENRE:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_genre
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_WRITE_STATUS:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_write_status
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_ALBUM:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_album
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_ALBUM_ART:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_album_art
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DESCRIPTION:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_description
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DATE:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_date
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_string (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_TRACK_NUMBER:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_track_number
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_int (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DLNA_MANAGED:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_dlna_managed
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_flags (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_UPDATE_ID:
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_update_id
|
|
Packit |
712bc5 |
(didl_object,
|
|
Packit |
712bc5 |
g_value_get_uint (value));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
default:
|
|
Packit |
712bc5 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_property (GObject *object,
|
|
Packit |
712bc5 |
guint property_id,
|
|
Packit |
712bc5 |
GValue *value,
|
|
Packit |
712bc5 |
GParamSpec *pspec)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GUPnPDIDLLiteObject *didl_object;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
didl_object = GUPNP_DIDL_LITE_OBJECT (object);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
switch (property_id) {
|
|
Packit |
712bc5 |
case PROP_XML_NODE:
|
|
Packit |
712bc5 |
g_value_set_pointer
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_xml_node (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_UPNP_NAMESPACE:
|
|
Packit |
712bc5 |
g_value_set_pointer
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_upnp_namespace
|
|
Packit |
712bc5 |
(didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DC_NAMESPACE:
|
|
Packit |
712bc5 |
g_value_set_pointer
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_dc_namespace
|
|
Packit |
712bc5 |
(didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DLNA_NAMESPACE:
|
|
Packit |
712bc5 |
g_value_set_pointer
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_dlna_namespace
|
|
Packit |
712bc5 |
(didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_PV_NAMESPACE:
|
|
Packit |
712bc5 |
g_value_set_pointer
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_pv_namespace
|
|
Packit |
712bc5 |
(didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_ID:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_id (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_PARENT_ID:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_parent_id (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_RESTRICTED:
|
|
Packit |
712bc5 |
g_value_set_boolean
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_restricted (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_TITLE:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_title (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_UPNP_CLASS:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_upnp_class (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_CREATOR:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_creator (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_ARTIST:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_artist (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_AUTHOR:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_author (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_GENRE:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_genre (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_WRITE_STATUS:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_write_status (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_ALBUM:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_album (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_ALBUM_ART:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_album_art (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DESCRIPTION:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_description (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DATE:
|
|
Packit |
712bc5 |
g_value_set_string
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_date (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_TRACK_NUMBER:
|
|
Packit |
712bc5 |
g_value_set_int
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_track_number (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_DLNA_MANAGED:
|
|
Packit |
712bc5 |
g_value_set_flags
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_dlna_managed (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
case PROP_UPDATE_ID:
|
|
Packit |
712bc5 |
g_value_set_uint
|
|
Packit |
712bc5 |
(value,
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_update_id (didl_object));
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
default:
|
|
Packit |
712bc5 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
|
Packit |
712bc5 |
break;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_dispose (GObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GObjectClass *object_class;
|
|
Packit |
712bc5 |
GUPnPDIDLLiteObjectPrivate *priv;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
priv = GUPNP_DIDL_LITE_OBJECT (object)->priv;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_clear_pointer (&priv->xml_doc, xml_doc_unref);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
object_class = G_OBJECT_CLASS (gupnp_didl_lite_object_parent_class);
|
|
Packit |
712bc5 |
object_class->dispose (object);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_class_init (GUPnPDIDLLiteObjectClass *klass)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GObjectClass *object_class;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
object_class = G_OBJECT_CLASS (klass);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
object_class->set_property = gupnp_didl_lite_object_set_property;
|
|
Packit |
712bc5 |
object_class->get_property = gupnp_didl_lite_object_get_property;
|
|
Packit |
712bc5 |
object_class->dispose = gupnp_didl_lite_object_dispose;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_type_class_add_private (klass, sizeof (GUPnPDIDLLiteObjectPrivate));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:xml-node:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The pointer to object node in XML document.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_XML_NODE,
|
|
Packit |
712bc5 |
g_param_spec_pointer ("xml-node",
|
|
Packit |
712bc5 |
"XMLNode",
|
|
Packit |
712bc5 |
"The pointer to object node in XML"
|
|
Packit |
712bc5 |
" document.",
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_CONSTRUCT_ONLY |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:xml-doc:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The reference to XML document containing this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Internal property.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Stability: Private
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_XML_DOC,
|
|
Packit |
712bc5 |
g_param_spec_boxed ("xml-doc",
|
|
Packit |
712bc5 |
"XMLDoc",
|
|
Packit |
712bc5 |
"The reference to XML document"
|
|
Packit |
712bc5 |
" containing this object.",
|
|
Packit |
712bc5 |
xml_doc_get_type (),
|
|
Packit |
712bc5 |
G_PARAM_WRITABLE |
|
|
Packit |
712bc5 |
G_PARAM_CONSTRUCT_ONLY |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:upnp-namespace:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Pointer to the UPnP namespace registered with the XML document
|
|
Packit |
712bc5 |
* containing this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_UPNP_NAMESPACE,
|
|
Packit |
712bc5 |
g_param_spec_pointer ("upnp-namespace",
|
|
Packit |
712bc5 |
"XML namespace",
|
|
Packit |
712bc5 |
"Pointer to the UPnP XML namespace "
|
|
Packit |
712bc5 |
"registered with the XML document "
|
|
Packit |
712bc5 |
"containing this object.",
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_CONSTRUCT_ONLY |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:dc-namespace:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Pointer to the DublinCore namespace registered with the XML document
|
|
Packit |
712bc5 |
* containing this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_DC_NAMESPACE,
|
|
Packit |
712bc5 |
g_param_spec_pointer ("dc-namespace",
|
|
Packit |
712bc5 |
"XML namespace",
|
|
Packit |
712bc5 |
"Pointer to the Dublin Core XML "
|
|
Packit |
712bc5 |
"namespace registered with the XML "
|
|
Packit |
712bc5 |
"document containing this object.",
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_CONSTRUCT_ONLY |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:dlna-namespace:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Pointer to the DLNA metadata namespace registered with the XML
|
|
Packit |
712bc5 |
* document containing this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_DLNA_NAMESPACE,
|
|
Packit |
712bc5 |
g_param_spec_pointer ("dlna-namespace",
|
|
Packit |
712bc5 |
"XML namespace",
|
|
Packit |
712bc5 |
"Pointer to the DLNA metadata namespace "
|
|
Packit |
712bc5 |
"registered with the XML document "
|
|
Packit |
712bc5 |
"containing this object.",
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_CONSTRUCT_ONLY |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:pv-namespace:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Pointer to the PV metadata namespace registered with the XML
|
|
Packit |
712bc5 |
* document containing this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_PV_NAMESPACE,
|
|
Packit |
712bc5 |
g_param_spec_pointer ("pv-namespace",
|
|
Packit |
712bc5 |
"XML namespace",
|
|
Packit |
712bc5 |
"Pointer to the PV metadata namespace "
|
|
Packit |
712bc5 |
"registered with the XML document "
|
|
Packit |
712bc5 |
"containing this object.",
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_CONSTRUCT_ONLY |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_STRINGS));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:id:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The ID of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_ID,
|
|
Packit |
712bc5 |
g_param_spec_string ("id",
|
|
Packit |
712bc5 |
"ID",
|
|
Packit |
712bc5 |
"The ID of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:parent-id:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The ID of the parent container of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_PARENT_ID,
|
|
Packit |
712bc5 |
g_param_spec_string ("parent-id",
|
|
Packit |
712bc5 |
"ParentID",
|
|
Packit |
712bc5 |
"The ID of the parent container of"
|
|
Packit |
712bc5 |
" this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:restricted:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Whether this object is restricted.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_RESTRICTED,
|
|
Packit |
712bc5 |
g_param_spec_boolean ("restricted",
|
|
Packit |
712bc5 |
"Restricted",
|
|
Packit |
712bc5 |
"Whether this object is restricted.",
|
|
Packit |
712bc5 |
FALSE,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:title:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The title of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_TITLE,
|
|
Packit |
712bc5 |
g_param_spec_string ("title",
|
|
Packit |
712bc5 |
"Title",
|
|
Packit |
712bc5 |
"The title of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:upnp-class:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The UPnP class of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_UPNP_CLASS,
|
|
Packit |
712bc5 |
g_param_spec_string ("upnp-class",
|
|
Packit |
712bc5 |
"UPnPClassName",
|
|
Packit |
712bc5 |
"The UPnP class of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:creator:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The creator of this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_CREATOR,
|
|
Packit |
712bc5 |
g_param_spec_string ("creator",
|
|
Packit |
712bc5 |
"Creator",
|
|
Packit |
712bc5 |
"The creator of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:artist:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The artist of this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Deprecated: 0.5.3: Use #gupnp_didl_lite_object_get_artists and
|
|
Packit |
712bc5 |
* #gupnp_didl_lite_object_add_artist instead since unlike this
|
|
Packit |
712bc5 |
* property, they are capable of dealing with multiple artist nodes.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_ARTIST,
|
|
Packit |
712bc5 |
g_param_spec_string ("artist",
|
|
Packit |
712bc5 |
"Artist",
|
|
Packit |
712bc5 |
"The artist of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:author:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The author of this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Deprecated: 0.5.3: Use #gupnp_didl_lite_object_get_authors and
|
|
Packit |
712bc5 |
* #gupnp_didl_lite_object_add_author instead since unlike this
|
|
Packit |
712bc5 |
* property, they are capable of dealing with multiple author nodes.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_AUTHOR,
|
|
Packit |
712bc5 |
g_param_spec_string ("author",
|
|
Packit |
712bc5 |
"Author",
|
|
Packit |
712bc5 |
"The author of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:genre:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The genre of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_GENRE,
|
|
Packit |
712bc5 |
g_param_spec_string ("genre",
|
|
Packit |
712bc5 |
"Genre",
|
|
Packit |
712bc5 |
"The genre of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:write-status:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The write status of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_WRITE_STATUS,
|
|
Packit |
712bc5 |
g_param_spec_string ("write-status",
|
|
Packit |
712bc5 |
"WriteStatus",
|
|
Packit |
712bc5 |
"The write status of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:album:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The album of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_ALBUM,
|
|
Packit |
712bc5 |
g_param_spec_string ("album",
|
|
Packit |
712bc5 |
"Album",
|
|
Packit |
712bc5 |
"The album of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:album-art:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The URI to album art of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_ALBUM_ART,
|
|
Packit |
712bc5 |
g_param_spec_string ("album-art",
|
|
Packit |
712bc5 |
"AlbumArt",
|
|
Packit |
712bc5 |
"The URI to album art of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:description:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The description of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_DESCRIPTION,
|
|
Packit |
712bc5 |
g_param_spec_string ("description",
|
|
Packit |
712bc5 |
"Description",
|
|
Packit |
712bc5 |
"The description of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:date:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The date of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_DATE,
|
|
Packit |
712bc5 |
g_param_spec_string ("date",
|
|
Packit |
712bc5 |
"Date",
|
|
Packit |
712bc5 |
"The date of this object.",
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:track-number:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The original track number of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_TRACK_NUMBER,
|
|
Packit |
712bc5 |
g_param_spec_int ("track-number",
|
|
Packit |
712bc5 |
"TrackNumber",
|
|
Packit |
712bc5 |
"The original track number of this object.",
|
|
Packit |
712bc5 |
-1, G_MAXINT, -1,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:dlna-managed:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The 'dlna:dlnaManaged' attribute.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_DLNA_MANAGED,
|
|
Packit |
712bc5 |
g_param_spec_flags ("dlna-managed",
|
|
Packit |
712bc5 |
"DLNAManaged",
|
|
Packit |
712bc5 |
"The 'dlna:dlnaManaged' attribute",
|
|
Packit |
712bc5 |
GUPNP_TYPE_OCM_FLAGS,
|
|
Packit |
712bc5 |
GUPNP_OCM_FLAGS_NONE,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* GUPnPDIDLLiteObject:update-id:
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Update ID of this object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
g_object_class_install_property
|
|
Packit |
712bc5 |
(object_class,
|
|
Packit |
712bc5 |
PROP_UPDATE_ID,
|
|
Packit |
712bc5 |
g_param_spec_uint ("update-id",
|
|
Packit |
712bc5 |
"UpdateID",
|
|
Packit |
712bc5 |
"Update ID of this object.",
|
|
Packit |
712bc5 |
0,
|
|
Packit |
712bc5 |
G_MAXUINT,
|
|
Packit |
712bc5 |
0,
|
|
Packit |
712bc5 |
G_PARAM_READWRITE |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NAME |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_NICK |
|
|
Packit |
712bc5 |
G_PARAM_STATIC_BLURB));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (didl_lite_xsd == NULL)
|
|
Packit |
712bc5 |
didl_lite_xsd = fragment_util_get_didl_lite_xsd_data ();
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static gboolean
|
|
Packit |
712bc5 |
is_resource_compatible (GUPnPDIDLLiteResource *resource,
|
|
Packit |
712bc5 |
char **protocols)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
gboolean ret = FALSE;
|
|
Packit |
712bc5 |
char **it;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
for (it = protocols; *it != NULL && !ret; it++) {
|
|
Packit |
712bc5 |
GUPnPProtocolInfo *info;
|
|
Packit |
712bc5 |
GUPnPProtocolInfo *res_info;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
info = gupnp_protocol_info_new_from_string (*it, NULL);
|
|
Packit |
712bc5 |
if (info == NULL)
|
|
Packit |
712bc5 |
continue;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
res_info = gupnp_didl_lite_resource_get_protocol_info
|
|
Packit |
712bc5 |
(resource);
|
|
Packit |
712bc5 |
if (res_info == NULL)
|
|
Packit |
712bc5 |
continue;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
ret = gupnp_protocol_info_is_compatible (info, res_info);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_unref (info);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return ret;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static GList *
|
|
Packit |
712bc5 |
get_contributor_list_by_name (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *name)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GList *contributors = NULL;
|
|
Packit |
712bc5 |
GList *ret = NULL;
|
|
Packit |
712bc5 |
GList *l;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
contributors = gupnp_didl_lite_object_get_properties (object, name);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
for (l = contributors; l; l = l->next) {
|
|
Packit |
712bc5 |
GUPnPDIDLLiteContributor *contributor;
|
|
Packit |
712bc5 |
xmlNode *contributor_node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
contributor_node = (xmlNode *) l->data;
|
|
Packit |
712bc5 |
if (!contributor_node->children)
|
|
Packit |
712bc5 |
continue;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
contributor = gupnp_didl_lite_contributor_new_from_xml
|
|
Packit |
712bc5 |
(contributor_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
ret = g_list_append (ret, contributor);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_list_free (contributors);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return ret;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static char *
|
|
Packit |
712bc5 |
get_contributors_xml_string_by_name (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *name)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GList *contributors = NULL;
|
|
Packit |
712bc5 |
char *ret = NULL;
|
|
Packit |
712bc5 |
GList *l;
|
|
Packit |
712bc5 |
xmlBuffer *buffer;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
contributors = gupnp_didl_lite_object_get_properties (object, name);
|
|
Packit |
712bc5 |
if (contributors == NULL)
|
|
Packit |
712bc5 |
return NULL;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
buffer = xmlBufferCreate ();
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
for (l = contributors; l; l = l->next) {
|
|
Packit |
712bc5 |
xmlNode *node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
node = (xmlNode *) l->data;
|
|
Packit |
712bc5 |
if (!node->children)
|
|
Packit |
712bc5 |
continue;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xmlNodeDump (buffer,
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
node,
|
|
Packit |
712bc5 |
0,
|
|
Packit |
712bc5 |
0);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
ret = g_strndup ((char *) xmlBufferContent (buffer),
|
|
Packit |
712bc5 |
xmlBufferLength (buffer));
|
|
Packit |
712bc5 |
xmlBufferFree (buffer);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_list_free (contributors);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return ret;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
static void
|
|
Packit |
712bc5 |
unset_contributors_by_name (GUPnPDIDLLiteObject *object, const char *name)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GList *contributors = NULL;
|
|
Packit |
712bc5 |
GList *l;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
contributors = gupnp_didl_lite_object_get_properties (object, name);
|
|
Packit |
712bc5 |
if (contributors == NULL)
|
|
Packit |
712bc5 |
return;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
for (l = contributors; l; l = l->next) {
|
|
Packit |
712bc5 |
xmlNode *node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
node = (xmlNode *) l->data;
|
|
Packit |
712bc5 |
if (!node->children)
|
|
Packit |
712bc5 |
continue;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xmlUnlinkNode (node);
|
|
Packit |
712bc5 |
xmlFreeNode (node);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_list_free (contributors);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_new_from_xml:
|
|
Packit |
712bc5 |
* @xml_node: The pointer to 'res' node in XML document
|
|
Packit |
712bc5 |
* @xml_doc: The reference to XML document containing this object
|
|
Packit |
712bc5 |
* @upnp_ns: The pointer to 'upnp' namespace in XML document
|
|
Packit |
712bc5 |
* @dc_ns: The pointer to 'dc' namespace in XML document
|
|
Packit |
712bc5 |
* @dlna_ns: The pointer to 'dlna' namespace in XML document
|
|
Packit |
712bc5 |
* @pv_ns: The pointer to 'pv' namespace in XML document
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Creates a new #GUPnPDIDLLiteObject for the @xml_node.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: A new #GUPnPDIDLLiteObject object. Unref after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GUPnPDIDLLiteObject *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_new_from_xml (xmlNode *xml_node,
|
|
Packit |
712bc5 |
GUPnPAVXMLDoc *xml_doc,
|
|
Packit |
712bc5 |
xmlNs *upnp_ns,
|
|
Packit |
712bc5 |
xmlNs *dc_ns,
|
|
Packit |
712bc5 |
xmlNs *dlna_ns,
|
|
Packit |
712bc5 |
xmlNs *pv_ns)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (xml_node != NULL, NULL);
|
|
Packit |
712bc5 |
g_return_val_if_fail (xml_node->name != NULL, NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (g_ascii_strcasecmp ((char *) xml_node->name, "container") == 0)
|
|
Packit |
712bc5 |
return g_object_new (GUPNP_TYPE_DIDL_LITE_CONTAINER,
|
|
Packit |
712bc5 |
"xml-node", xml_node,
|
|
Packit |
712bc5 |
"xml-doc", xml_doc,
|
|
Packit |
712bc5 |
"upnp-namespace", upnp_ns,
|
|
Packit |
712bc5 |
"dc-namespace", dc_ns,
|
|
Packit |
712bc5 |
"dlna-namespace", dlna_ns,
|
|
Packit |
712bc5 |
"pv-namespace", pv_ns,
|
|
Packit |
712bc5 |
NULL);
|
|
Packit |
712bc5 |
else if (g_ascii_strcasecmp ((char *) xml_node->name, "item") == 0)
|
|
Packit |
712bc5 |
return g_object_new (GUPNP_TYPE_DIDL_LITE_ITEM,
|
|
Packit |
712bc5 |
"xml-node", xml_node,
|
|
Packit |
712bc5 |
"xml-doc", xml_doc,
|
|
Packit |
712bc5 |
"upnp-namespace", upnp_ns,
|
|
Packit |
712bc5 |
"dc-namespace", dc_ns,
|
|
Packit |
712bc5 |
"dlna-namespace", dlna_ns,
|
|
Packit |
712bc5 |
"pv-namespace", pv_ns,
|
|
Packit |
712bc5 |
NULL);
|
|
Packit |
712bc5 |
else
|
|
Packit |
712bc5 |
return NULL;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_gupnp_xml_doc:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the pointer to the XML document containing this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer none): The pointer to the XML document containing this
|
|
Packit |
712bc5 |
* object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GUPnPAVXMLDoc *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_gupnp_xml_doc (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return object->priv->xml_doc;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_xml_node:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the pointer to object node in XML document.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer none): The pointer to object node in XML document.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
xmlNode *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_xml_node (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return object->priv->xml_node;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_upnp_namespace:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the pointer to the UPnP namespace registered with the XML document.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer none): The pointer to UPnP namespace in XML document.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
xmlNsPtr
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_upnp_namespace (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_ns (object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_UPNP,
|
|
Packit |
712bc5 |
&(object->priv->upnp_ns));
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_dc_namespace:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the pointer to the DublinCore namespace registered with the XML document
|
|
Packit |
712bc5 |
* containing this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer none): The pointer to DublinCore namespace in XML document.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
xmlNsPtr
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_dc_namespace (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_ns (object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DC,
|
|
Packit |
712bc5 |
&(object->priv->dc_ns));
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_upnp_class:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the UPnP class of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The class of @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_upnp_class (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"class");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_dlna_namespace:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the pointer to the DLNA metadata namespace registered with the XML
|
|
Packit |
712bc5 |
* document containing this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer none): The pointer to DLNA namespace in XML document.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
xmlNsPtr
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_dlna_namespace (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_ns (object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DLNA,
|
|
Packit |
712bc5 |
&(object->priv->dlna_ns));
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_pv_namespace:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the pointer to the PV metadata namespace registered with the XML
|
|
Packit |
712bc5 |
* document containing this object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer none): The pointer to PV namespace in XML document.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
xmlNsPtr
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_pv_namespace (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_ns (object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_PV,
|
|
Packit |
712bc5 |
&(object->priv->pv_ns));
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_id:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the ID of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The ID of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_id (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_attribute_content (object->priv->xml_node, "id");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_parent_id:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the ID of the parent of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The ID of parent of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_parent_id (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_attribute_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"parentID");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_properties:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @name: name of the properties
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Use this function to retreive property nodes by name.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: (element-type xmlNode*) (transfer container): The list of
|
|
Packit |
712bc5 |
* property nodes by the name @property_name belonging to @object, or %NULL.
|
|
Packit |
712bc5 |
* #g_list_free the returned list after usage but do not modify the contents.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GList *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_properties (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *name)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
g_return_val_if_fail (name != NULL, NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_elements_by_name (object->priv->xml_node,
|
|
Packit |
712bc5 |
name);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_is_restricted_set:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Whehter the restricted attribute exists on @object
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: #TRUE if restricted exists, #FALSE otherwise.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
gboolean
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_is_restricted_set (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (object != NULL, FALSE);
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), FALSE);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_attribute_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"restricted") != NULL;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_restricted:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Whether the @object is restricted or not.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: #TRUE if @object is restricted.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
gboolean
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_restricted (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), FALSE);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_boolean_attribute (object->priv->xml_node,
|
|
Packit |
712bc5 |
"restricted");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_title:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the title of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The title of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_title (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"title");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_creator:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the creator of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The creator of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_creator (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"creator");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_creators:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the creators of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (element-type GUPnPDIDLLiteContributor*) (transfer full): The list
|
|
Packit |
712bc5 |
* of creators belonging to @object, or %NULL.
|
|
Packit |
712bc5 |
* #g_list_free the returned list after usage and unref each object in it.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GList *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_creators (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return get_contributor_list_by_name (object, "creator");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_artist:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the artist of the @object. If role is not %NULL, it is set to the role
|
|
Packit |
712bc5 |
* of the artist if available.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The artist of the @object, or %NULL.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Deprecated: 0.5.3: Use #gupnp_didl_lite_object_get_artists instead.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_artist (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"artist");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_artists:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the artists of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (element-type GUPnPDIDLLiteContributor*) (transfer full): The list
|
|
Packit |
712bc5 |
* of artists belonging to @object, or %NULL.
|
|
Packit |
712bc5 |
* #g_list_free the returned list after usage and unref each object in it.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GList *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_artists (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return get_contributor_list_by_name (object, "artist");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_author:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the author of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The author of the @object, or %NULL.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Deprecated: 0.5.3: Use #gupnp_didl_lite_object_get_authors instead.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_author (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"author");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_authors:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the authors of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (element-type GUPnPDIDLLiteContributor*) (transfer full): The list
|
|
Packit |
712bc5 |
* of authors belonging to @object, or %NULL.
|
|
Packit |
712bc5 |
* #g_list_free the returned list after usage and unref each object in it.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GList *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_authors (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return get_contributor_list_by_name (object, "author");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_descriptors:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the descriptors of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (element-type GUPnPDIDLLiteDescriptor*) (transfer full): The list of
|
|
Packit |
712bc5 |
* descriptors belonging to @object, or %NULL.
|
|
Packit |
712bc5 |
* #g_list_free the returned list after usage and unref each object in it.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GList *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_descriptors (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GList *descriptors = NULL;
|
|
Packit |
712bc5 |
GList *ret = NULL;
|
|
Packit |
712bc5 |
GList *l;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
descriptors = gupnp_didl_lite_object_get_properties (object, "desc");
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
for (l = descriptors; l; l = l->next) {
|
|
Packit |
712bc5 |
GUPnPDIDLLiteDescriptor *descriptor;
|
|
Packit |
712bc5 |
xmlNode *descriptor_node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
descriptor_node = (xmlNode *) l->data;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
descriptor = gupnp_didl_lite_descriptor_new_from_xml
|
|
Packit |
712bc5 |
(descriptor_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
ret = g_list_append (ret, descriptor);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_list_free (descriptors);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return ret;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_genre:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the genre of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The genre of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_genre (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"genre");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_write_status:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the write status of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The write status of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_write_status (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"writeStatus");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_album:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the album of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The album of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_album (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"album");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_album_art:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the URI to album art of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The URI to album art of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_album_art (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"albumArtURI");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_description:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the description of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The description of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_description (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"description");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_date:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the date of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The date of the @object, or %NULL.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
const char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_date (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"date");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_track_number:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the original track number of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The original track number of the @object, or -1.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
int
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_track_number (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
const char *str;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), -1);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
str = xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"originalTrackNumber");
|
|
Packit |
712bc5 |
if (str == NULL)
|
|
Packit |
712bc5 |
return -1;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return atoi (str);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_dlna_managed:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the 'dlna:dlnaManaged' attribute of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The 'dlna:dlnaManaged' attribute of the @object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GUPnPOCMFlags
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_dlna_managed (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
const char *str;
|
|
Packit |
712bc5 |
GUPnPOCMFlags dlna_managed;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (object != NULL, GUPNP_OCM_FLAGS_NONE);
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object),
|
|
Packit |
712bc5 |
GUPNP_OCM_FLAGS_NONE);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
str = xml_util_get_attribute_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"dlnaManaged");
|
|
Packit |
712bc5 |
if (str == NULL)
|
|
Packit |
712bc5 |
return GUPNP_OCM_FLAGS_NONE;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
sscanf (str, "%08x", &dlna_managed);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return dlna_managed;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_update_id:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the update ID of the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: The update ID of the @object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
guint
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_update_id (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (object != NULL, 0);
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), 0);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_uint_child_element (object->priv->xml_node,
|
|
Packit |
712bc5 |
"objectUpdateID",
|
|
Packit |
712bc5 |
0);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_update_id_is_set:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get whether the update ID of the @object is set.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: %TRUE if update ID is set, otherwise %FALSE
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
gboolean
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_update_id_is_set (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
const char *content;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (object != NULL, FALSE);
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), FALSE);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
content = xml_util_get_child_element_content (object->priv->xml_node,
|
|
Packit |
712bc5 |
"objectUpdateID");
|
|
Packit |
712bc5 |
return content != NULL;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_resources:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Use this function to retreive resources from the @object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: (element-type GUPnPDIDLLiteResource*) (transfer full): The list
|
|
Packit |
712bc5 |
* of resources belonging to @object, or %NULL. #g_list_free the
|
|
Packit |
712bc5 |
* returned list after usage and unref each resource in it.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GList *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_resources (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GList *resources = NULL;
|
|
Packit |
712bc5 |
GList *res = NULL;
|
|
Packit |
712bc5 |
GList *ret = NULL;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
resources = gupnp_didl_lite_object_get_properties (object, "res");
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
for (res = resources; res; res = res->next) {
|
|
Packit |
712bc5 |
GUPnPDIDLLiteResource *resource;
|
|
Packit |
712bc5 |
xmlNode *res_node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
res_node = (xmlNode *) res->data;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/* Create a resource struct out of DIDLLite XML */
|
|
Packit |
712bc5 |
resource = gupnp_didl_lite_resource_new_from_xml
|
|
Packit |
712bc5 |
(res_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc,
|
|
Packit |
712bc5 |
object->priv->dlna_ns,
|
|
Packit |
712bc5 |
object->priv->pv_ns);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
ret = g_list_append (ret, resource);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_list_free (resources);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return ret;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_compat_resource:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @sink_protocol_info: The SinkProtocolInfo string from MediaRenderer
|
|
Packit |
712bc5 |
* @lenient: Enable lenient mode
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Use this function to get a resource from the @object that is compatible with
|
|
Packit |
712bc5 |
* any of the protocols specified in the @sink_protocol_info. The value of
|
|
Packit |
712bc5 |
* @sink_protocol_info will typically be acquired from 'Sink' argument of
|
|
Packit |
712bc5 |
* 'GetProtocolInfo' action or 'SinkProtocolInfo' state-variable of a
|
|
Packit |
712bc5 |
* ConnectionManager service.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* If @lenient is #TRUE, the first resource in the list is returned instead of
|
|
Packit |
712bc5 |
* %NULL if none of resources and protocols are found to be compatible.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer full): The resource belonging to @object that is comaptible with
|
|
Packit |
712bc5 |
* any of the protocols specified in @sink_protocol_info, or %NULL. Unref after
|
|
Packit |
712bc5 |
* usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GUPnPDIDLLiteResource *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_compat_resource
|
|
Packit |
712bc5 |
(GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *sink_protocol_info,
|
|
Packit |
712bc5 |
gboolean lenient)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
GUPnPDIDLLiteResource *resource = NULL;
|
|
Packit |
712bc5 |
GList *resources = NULL;
|
|
Packit |
712bc5 |
GList *compat_resources = NULL;
|
|
Packit |
712bc5 |
GList *res;
|
|
Packit |
712bc5 |
char **protocols = NULL;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
g_return_val_if_fail (sink_protocol_info != NULL, NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
resources = gupnp_didl_lite_object_get_resources (object);
|
|
Packit |
712bc5 |
if (resources == NULL)
|
|
Packit |
712bc5 |
return NULL;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
protocols = g_strsplit (sink_protocol_info, ",", -1);
|
|
Packit |
712bc5 |
for (res = resources;
|
|
Packit |
712bc5 |
res != NULL;
|
|
Packit |
712bc5 |
res = res->next) {
|
|
Packit |
712bc5 |
resource = (GUPnPDIDLLiteResource *) res->data;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (is_resource_compatible (resource, protocols))
|
|
Packit |
712bc5 |
compat_resources = g_list_append (compat_resources,
|
|
Packit |
712bc5 |
resource);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
g_strfreev (protocols);
|
|
Packit |
712bc5 |
protocols = NULL;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
resource = NULL;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (compat_resources != NULL) {
|
|
Packit |
712bc5 |
/* Try to find non-transcoded resource */
|
|
Packit |
712bc5 |
res = g_list_find_custom (compat_resources,
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
(GCompareFunc)
|
|
Packit |
712bc5 |
is_non_transcoded_resource);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (res != NULL)
|
|
Packit |
712bc5 |
resource = (GUPnPDIDLLiteResource *) res->data;
|
|
Packit |
712bc5 |
else
|
|
Packit |
712bc5 |
/* Just use the first compatible resource */
|
|
Packit |
712bc5 |
resource = (GUPnPDIDLLiteResource *)
|
|
Packit |
712bc5 |
compat_resources->data;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
} else if (lenient)
|
|
Packit |
712bc5 |
/* Just use the first resource */
|
|
Packit |
712bc5 |
resource = (GUPnPDIDLLiteResource *) resources->data;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/* Unref all resources except for the one we just took */
|
|
Packit |
712bc5 |
for (res = resources; res; res = res->next)
|
|
Packit |
712bc5 |
if (res->data != resource)
|
|
Packit |
712bc5 |
g_object_unref (res->data);
|
|
Packit |
712bc5 |
g_list_free (resources);
|
|
Packit |
712bc5 |
g_list_free (compat_resources);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return resource;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_upnp_class:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @upnp_class: The UPnP class as string.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the UPnP class of the @object to @upnp_class.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_upnp_class (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *upnp_class)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_UPNP,
|
|
Packit |
712bc5 |
&(object->priv->upnp_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"class",
|
|
Packit |
712bc5 |
upnp_class);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "upnp-class");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_id:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @id: The ID
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the ID of the @object to @id.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_id (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *id)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xmlSetProp (object->priv->xml_node,
|
|
Packit |
712bc5 |
(unsigned char *) "id",
|
|
Packit |
712bc5 |
(unsigned char *) id);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "id");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_parent_id:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @parent_id: The parent ID
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the ID of the parent of the @object to @parent_id.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_parent_id (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *parent_id)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xmlSetProp (object->priv->xml_node,
|
|
Packit |
712bc5 |
(unsigned char *) "parentID",
|
|
Packit |
712bc5 |
(unsigned char *) parent_id);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "parent-id");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_restricted:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @restricted: The restricted status
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the restricted status of @object to @restricted.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_restricted (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
gboolean restricted)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
const char *str;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (restricted)
|
|
Packit |
712bc5 |
str = "1";
|
|
Packit |
712bc5 |
else
|
|
Packit |
712bc5 |
str = "0";
|
|
Packit |
712bc5 |
xmlSetProp (object->priv->xml_node,
|
|
Packit |
712bc5 |
(unsigned char *) "restricted",
|
|
Packit |
712bc5 |
(unsigned char *) str);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "restricted");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_title:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @title: The title
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the title of the @object to @title.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_title (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *title)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DC,
|
|
Packit |
712bc5 |
&(object->priv->dc_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"title",
|
|
Packit |
712bc5 |
title);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "title");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_creator:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @creator: The creator
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the creator of the @object to @creator.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_creator (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *creator)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DC,
|
|
Packit |
712bc5 |
&(object->priv->dc_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"creator",
|
|
Packit |
712bc5 |
creator);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "creator");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_add_creator:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Add a new creator node to the @object and return the associated
|
|
Packit |
712bc5 |
* #GUPnPDIDLLiteContributor object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer full): A new #GUPnPDIDLLiteContributor object. Unref after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GUPnPDIDLLiteContributor *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_add_creator (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
xmlNode *res_node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (object != NULL, NULL);
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
res_node = xmlNewChild (object->priv->xml_node,
|
|
Packit |
712bc5 |
object->priv->dc_ns,
|
|
Packit |
712bc5 |
(unsigned char *) "creator",
|
|
Packit |
712bc5 |
NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return gupnp_didl_lite_contributor_new_from_xml (res_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_artist:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @artist: The Artist
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the Artist of the @object to @artist.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Deprecated: 0.5.3: Use #gupnp_didl_lite_object_add_artist instead.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_artist (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *artist)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_UPNP,
|
|
Packit |
712bc5 |
&(object->priv->upnp_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"artist",
|
|
Packit |
712bc5 |
artist);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "artist");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_add_artist:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Add a new Artist node to the @object and return the associated
|
|
Packit |
712bc5 |
* #GUPnPDIDLLiteContributor object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer full): A new #GUPnPDIDLLiteContributor object. Unref after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GUPnPDIDLLiteContributor *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_add_artist (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
xmlNode *res_node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (object != NULL, NULL);
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
res_node = xmlNewChild (object->priv->xml_node,
|
|
Packit |
712bc5 |
object->priv->upnp_ns,
|
|
Packit |
712bc5 |
(unsigned char *) "artist",
|
|
Packit |
712bc5 |
NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return gupnp_didl_lite_contributor_new_from_xml (res_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_author:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @author: The Author
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the Author of the @object to @author.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Deprecated: 0.5.3: Use #gupnp_didl_lite_object_add_author instead.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_author (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *author)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DC,
|
|
Packit |
712bc5 |
&(object->priv->upnp_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"author",
|
|
Packit |
712bc5 |
author);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "author");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_add_author:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Add a new author node to the @object and return the associated
|
|
Packit |
712bc5 |
* #GUPnPDIDLLiteContributor object.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer full): A new #GUPnPDIDLLiteContributor object. Unref after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GUPnPDIDLLiteContributor *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_add_author (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
xmlNode *res_node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (object != NULL, NULL);
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
res_node = xmlNewChild (object->priv->xml_node,
|
|
Packit |
712bc5 |
object->priv->upnp_ns,
|
|
Packit |
712bc5 |
(unsigned char *) "author",
|
|
Packit |
712bc5 |
NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return gupnp_didl_lite_contributor_new_from_xml (res_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_genre:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @genre: The Genre
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the genre of the @object to @genre.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_genre (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *genre)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_UPNP,
|
|
Packit |
712bc5 |
&(object->priv->upnp_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"genre",
|
|
Packit |
712bc5 |
genre);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "genre");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_write_status:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @write_status: The write status string
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the write status of the @object to @write_status.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_write_status (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *write_status)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DC,
|
|
Packit |
712bc5 |
&(object->priv->dc_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"writeStatus",
|
|
Packit |
712bc5 |
write_status);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "write-status");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_album:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @album: The album string
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the album of the @object to @album.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_album (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *album)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_UPNP,
|
|
Packit |
712bc5 |
&(object->priv->upnp_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"album",
|
|
Packit |
712bc5 |
album);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "album");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_album_art:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @album_art: The URI of album art
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the URI to album art of the @object to @album_art.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_album_art (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *album_art)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
xmlNode *node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
node = xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_UPNP,
|
|
Packit |
712bc5 |
&(object->priv->upnp_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"albumArtURI",
|
|
Packit |
712bc5 |
album_art);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_get_ns (object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DLNA,
|
|
Packit |
712bc5 |
&(object->priv->dlna_ns));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xmlSetNsProp (node,
|
|
Packit |
712bc5 |
object->priv->dlna_ns,
|
|
Packit |
712bc5 |
(const unsigned char *) "profileID",
|
|
Packit |
712bc5 |
(const unsigned char *) "JPEG_TN");
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "album-art");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_description:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @description: The description string
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the description of the @object to @description.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_description (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *description)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DC,
|
|
Packit |
712bc5 |
&(object->priv->dc_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"description",
|
|
Packit |
712bc5 |
description);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "description");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_date:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @date: The date string
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the date of the @object to @date.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_date (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
const char *date)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DC,
|
|
Packit |
712bc5 |
&(object->priv->dc_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"date",
|
|
Packit |
712bc5 |
date);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "date");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_track_number:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @track_number: The original track number
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the original track number of the @object to @track_number.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_track_number (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
int track_number)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
char *str;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
str = g_strdup_printf ("%d", track_number);
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_UPNP,
|
|
Packit |
712bc5 |
&(object->priv->upnp_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"originalTrackNumber",
|
|
Packit |
712bc5 |
str);
|
|
Packit |
712bc5 |
g_free (str);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "track-number");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_dlna_managed:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @dlna_managed: The #GUPnPOCMFlags.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the 'dlna:dlnaManaged' attribute of the @object to @dlna_managed.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_dlna_managed (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
GUPnPOCMFlags dlna_managed)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
char *str;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_get_ns (object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_DLNA,
|
|
Packit |
712bc5 |
&(object->priv->dlna_ns));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
str = g_strdup_printf ("%08x", dlna_managed);
|
|
Packit |
712bc5 |
xmlSetNsProp (object->priv->xml_node,
|
|
Packit |
712bc5 |
object->priv->dlna_ns,
|
|
Packit |
712bc5 |
(const unsigned char *) "dlnaManaged",
|
|
Packit |
712bc5 |
(const unsigned char *) str);
|
|
Packit |
712bc5 |
g_free (str);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "dlna-managed");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_set_update_id:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @update_id: Update ID
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Set the update ID of the @object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_set_update_id (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
guint update_id)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
char *str;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
str = g_strdup_printf ("%u", update_id);
|
|
Packit |
712bc5 |
xml_util_set_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
GUPNP_XML_NAMESPACE_UPNP,
|
|
Packit |
712bc5 |
&(object->priv->upnp_ns),
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"objectUpdateID",
|
|
Packit |
712bc5 |
str);
|
|
Packit |
712bc5 |
g_free (str);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "update-id");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_unset_update_id:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Unset the update ID property of the @object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_unset_update_id (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
xml_util_unset_child (object->priv->xml_node,
|
|
Packit |
712bc5 |
"objectUpdateID");
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "update-id");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_add_resource:
|
|
Packit |
712bc5 |
* @object: A #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Creates a new resource, attaches it to @object and returns it.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer full): A new #GUPnPDIDLLiteResource object. Unref after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GUPnPDIDLLiteResource *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_add_resource (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
xmlNode *res_node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
res_node = xmlNewChild (object->priv->xml_node,
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
(unsigned char *) "res",
|
|
Packit |
712bc5 |
NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return gupnp_didl_lite_resource_new_from_xml (res_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc,
|
|
Packit |
712bc5 |
object->priv->dlna_ns,
|
|
Packit |
712bc5 |
object->priv->pv_ns);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_add_descriptor:
|
|
Packit |
712bc5 |
* @object: A #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Creates a new descriptor, attaches it to @object and returns it.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: (transfer full): A new #GUPnPDIDLLiteDescriptor object. Unref after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
GUPnPDIDLLiteDescriptor *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_add_descriptor (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
xmlNode *desc_node;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
desc_node = xmlNewChild (object->priv->xml_node,
|
|
Packit |
712bc5 |
NULL,
|
|
Packit |
712bc5 |
(unsigned char *) "desc",
|
|
Packit |
712bc5 |
NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return gupnp_didl_lite_descriptor_new_from_xml (desc_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc);
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_title_xml_string:
|
|
Packit |
712bc5 |
* @object: A #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Creates a string representation of the DIDL-Lite XML fragment related to the
|
|
Packit |
712bc5 |
* object title.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: A DIDL-Lite XML fragment string, or %NULL. #g_free after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_title_xml_string (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_string (object->priv->xml_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"title");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_date_xml_string:
|
|
Packit |
712bc5 |
* @object: A #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Creates a string representation of the DIDL-Lite XML fragment related to the
|
|
Packit |
712bc5 |
* object date.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: A DIDL-Lite XML fragment string, or %NULL. #g_free after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_date_xml_string (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_string (object->priv->xml_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"date");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_upnp_class_xml_string:
|
|
Packit |
712bc5 |
* @object: A #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Creates a string representation of the DIDL-Lite XML fragment related to the
|
|
Packit |
712bc5 |
* object UPnP class.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: A DIDL-Lite XML fragment string, or %NULL. #g_free after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_upnp_class_xml_string (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_string (object->priv->xml_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"class");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_album_xml_string:
|
|
Packit |
712bc5 |
* @object: A #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Creates a string representation of the DIDL-Lite XML fragment related to the
|
|
Packit |
712bc5 |
* object album.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: A DIDL-Lite XML fragment string, or %NULL. #g_free after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_album_xml_string (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_string (object->priv->xml_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"album");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_track_number_xml_string:
|
|
Packit |
712bc5 |
* @object: A #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Creates a string representation of the DIDL-Lite XML fragment related to the
|
|
Packit |
712bc5 |
* object track number.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: A DIDL-Lite XML fragment string, or %NULL. #g_free after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_track_number_xml_string (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return xml_util_get_child_string (object->priv->xml_node,
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
"originalTrackNumber");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_artists_xml_string:
|
|
Packit |
712bc5 |
* @object: A #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Creates a string representation of the DIDL-Lite XML fragments related to the
|
|
Packit |
712bc5 |
* object artists.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Return value: A DIDL-Lite XML fragment string, or %NULL. #g_free after usage.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_artists_xml_string (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return get_contributors_xml_string_by_name (object, "artist");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_unset_artists:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Unset the artists properties of the @object.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
void
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_unset_artists (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
g_return_if_fail (object != NULL);
|
|
Packit |
712bc5 |
g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object));
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
unset_contributors_by_name (object, "artist");
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_object_notify (G_OBJECT (object), "artist");
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/* GENERAL DOCS ABOUT FRAGMENT APPLYING.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* The function applying fragments takes two arrays of fragments. One
|
|
Packit |
712bc5 |
* array contains current fragments and another one contains new
|
|
Packit |
712bc5 |
* fragments. Both arrays have to be of equal length and have more
|
|
Packit |
712bc5 |
* then zero elements. Each of fragments in both arrays make a pair
|
|
Packit |
712bc5 |
* (i.e. first/second/third/... fragment in current array and
|
|
Packit |
712bc5 |
* first/second/third/... fragment in new array form a pair). Each
|
|
Packit |
712bc5 |
* fragment can have zero, one or more XML elements.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* For each fragment pair first we check if current fragment is indeed
|
|
Packit |
712bc5 |
* a part of this object's document. If it is then we check validity
|
|
Packit |
712bc5 |
* of new fragment for applying. If it is then we replace the current
|
|
Packit |
712bc5 |
* fragment with new fragment in object's document copy and validate
|
|
Packit |
712bc5 |
* the modified document against didl-lite schema. After all fragment
|
|
Packit |
712bc5 |
* pairs are processed we replace a part describing this object in
|
|
Packit |
712bc5 |
* original document with respective one in modified document.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Checking if current fragment is a part of object's document is in
|
|
Packit |
712bc5 |
* essence checking for deep equality of document's node and this
|
|
Packit |
712bc5 |
* fragment (i.e. element name and properties have to be equal, same
|
|
Packit |
712bc5 |
* for children).
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Checking if new fragment is valid for applying is about checking
|
|
Packit |
712bc5 |
* whether element in new fragment is either a context (i.e. both
|
|
Packit |
712bc5 |
* current element and new element are deep equal) or element
|
|
Packit |
712bc5 |
* modification (i.e. changes attributes but element name is still the
|
|
Packit |
712bc5 |
* same). There may be a case when there are more elements in current
|
|
Packit |
712bc5 |
* fragment than in new fragment then those excessive elements are
|
|
Packit |
712bc5 |
* checked whether they can be really removed. The other case is when
|
|
Packit |
712bc5 |
* there are more elements in new fragments than in current fragment -
|
|
Packit |
712bc5 |
* in such situation we check if additions are valid.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* By checking validity of modification, removals or additions we mean
|
|
Packit |
712bc5 |
* that no read-only properties are changed. Additionaly, for
|
|
Packit |
712bc5 |
* removals, we check if required properties are not removed.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* This approach may fail in some more twisted cases.
|
|
Packit |
712bc5 |
*/
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_apply_fragments:
|
|
Packit |
712bc5 |
* @object: The #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
* @current_fragments: (array length=current_size) (transfer none): XML
|
|
Packit |
712bc5 |
* fragments of @object.
|
|
Packit |
712bc5 |
* @current_size: Size of @current_fragments or -1.
|
|
Packit |
712bc5 |
* @new_fragments: (array length=new_size) (transfer none): Substitutes
|
|
Packit |
712bc5 |
* for @current_fragments.
|
|
Packit |
712bc5 |
* @new_size: Size of @new_fragments or -1.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Updates object by applying @new_fragments in places of
|
|
Packit |
712bc5 |
* @current_fragments. For @current_size and @new_size -1 can be
|
|
Packit |
712bc5 |
* passed when respectively @current_fragments and @new_fragments are
|
|
Packit |
712bc5 |
* NULL terminated.
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Returns: Result of operation.
|
|
Packit |
712bc5 |
*/
|
|
Packit |
712bc5 |
GUPnPDIDLLiteFragmentResult
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_apply_fragments (GUPnPDIDLLiteObject *object,
|
|
Packit |
712bc5 |
gchar **current_fragments,
|
|
Packit |
712bc5 |
gint current_size,
|
|
Packit |
712bc5 |
gchar **new_fragments,
|
|
Packit |
712bc5 |
gint new_size)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
DocNode modified;
|
|
Packit |
712bc5 |
DocNode original;
|
|
Packit |
712bc5 |
GUPnPDIDLLiteFragmentResult result;
|
|
Packit |
712bc5 |
gint iter;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object),
|
|
Packit |
712bc5 |
GUPNP_DIDL_LITE_FRAGMENT_RESULT_UNKNOWN_ERROR);
|
|
Packit |
712bc5 |
g_return_val_if_fail (current_fragments != NULL,
|
|
Packit |
712bc5 |
GUPNP_DIDL_LITE_FRAGMENT_RESULT_CURRENT_INVALID);
|
|
Packit |
712bc5 |
g_return_val_if_fail (new_fragments != NULL,
|
|
Packit |
712bc5 |
GUPNP_DIDL_LITE_FRAGMENT_RESULT_NEW_INVALID);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
result = GUPNP_DIDL_LITE_FRAGMENT_RESULT_OK;
|
|
Packit |
712bc5 |
modified.doc = NULL;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (current_size < 0)
|
|
Packit |
712bc5 |
current_size = g_strv_length (current_fragments);
|
|
Packit |
712bc5 |
if (new_size < 0)
|
|
Packit |
712bc5 |
new_size = g_strv_length (new_fragments);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (current_size != new_size) {
|
|
Packit |
712bc5 |
result = GUPNP_DIDL_LITE_FRAGMENT_RESULT_MISMATCH;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
goto out;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (!current_size) {
|
|
Packit |
712bc5 |
result = GUPNP_DIDL_LITE_FRAGMENT_RESULT_CURRENT_INVALID;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
goto out;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
original.doc = object->priv->xml_doc->doc;
|
|
Packit |
712bc5 |
original.node = object->priv->xml_node;
|
|
Packit |
712bc5 |
modified.doc = xmlCopyDoc (original.doc, 1);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (modified.doc == NULL) {
|
|
Packit |
712bc5 |
result = GUPNP_DIDL_LITE_FRAGMENT_RESULT_UNKNOWN_ERROR;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
goto out;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
modified.node = xml_util_find_node (modified.doc->children,
|
|
Packit |
712bc5 |
original.node);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (modified.node == NULL) {
|
|
Packit |
712bc5 |
result = GUPNP_DIDL_LITE_FRAGMENT_RESULT_UNKNOWN_ERROR;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
goto out;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
for (iter = 0; iter < new_size; ++iter) {
|
|
Packit |
712bc5 |
const gchar *current_fragment = current_fragments[iter];
|
|
Packit |
712bc5 |
const gchar *new_fragment = new_fragments[iter];
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
result = fragment_util_check_fragments (&original,
|
|
Packit |
712bc5 |
&modified,
|
|
Packit |
712bc5 |
current_fragment,
|
|
Packit |
712bc5 |
new_fragment,
|
|
Packit |
712bc5 |
didl_lite_xsd);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (result != GUPNP_DIDL_LITE_FRAGMENT_RESULT_OK)
|
|
Packit |
712bc5 |
goto out;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
if (!fragment_util_apply_modification (&object->priv->xml_node,
|
|
Packit |
712bc5 |
&modified))
|
|
Packit |
712bc5 |
result = GUPNP_DIDL_LITE_FRAGMENT_RESULT_UNKNOWN_ERROR;
|
|
Packit |
712bc5 |
out:
|
|
Packit |
712bc5 |
if (modified.doc != NULL)
|
|
Packit |
712bc5 |
xmlFreeDoc (modified.doc);
|
|
Packit |
712bc5 |
return result;
|
|
Packit |
712bc5 |
}
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
/**
|
|
Packit |
712bc5 |
* gupnp_didl_lite_object_get_xml_string:
|
|
Packit |
712bc5 |
* @object: #GUPnPDIDLLiteObject
|
|
Packit |
712bc5 |
*
|
|
Packit |
712bc5 |
* Get the representation of this object as an XML string.
|
|
Packit |
712bc5 |
* Returns: (transfer full): XML representation of this object as string.
|
|
Packit |
712bc5 |
**/
|
|
Packit |
712bc5 |
char *
|
|
Packit |
712bc5 |
gupnp_didl_lite_object_get_xml_string (GUPnPDIDLLiteObject *object)
|
|
Packit |
712bc5 |
{
|
|
Packit |
712bc5 |
xmlBuffer *buffer = NULL;
|
|
Packit |
712bc5 |
char *ret = NULL;
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
buffer = xmlBufferCreate ();
|
|
Packit |
712bc5 |
xmlNodeDump (buffer,
|
|
Packit |
712bc5 |
object->priv->xml_doc->doc,
|
|
Packit |
712bc5 |
object->priv->xml_node,
|
|
Packit |
712bc5 |
0,
|
|
Packit |
712bc5 |
0);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
ret = g_strndup ((char *) xmlBufferContent (buffer),
|
|
Packit |
712bc5 |
xmlBufferLength (buffer));
|
|
Packit |
712bc5 |
xmlBufferFree (buffer);
|
|
Packit |
712bc5 |
|
|
Packit |
712bc5 |
return ret;
|
|
Packit |
712bc5 |
}
|