static void didl_container_available_cb (GUPnPDIDLLiteParser *parser, GUPnPDIDLLiteObject *container, gpointer user_data) { char **container_id = (char **) user_data; if (!gupnp_didl_lite_object_get_restricted (container)) { /* Seems like we found a suitable container */ *container_id = g_strdup (gupnp_didl_lite_object_get_id (container)); g_print ("Automatically choosing '%s' (%s) as destination.\n", gupnp_didl_lite_object_get_title (container), *container_id); } }
static QString generateMetaData(GUPnPDIDLLiteObject *object) { GList *resources, *it; if (GUPNP_IS_DIDL_LITE_CONTAINER(object)) { return QString(); } // produce minimal DIDL auto writer = wrap(gupnp_didl_lite_writer_new (NULL)); GUPnPDIDLLiteObject *item = GUPNP_DIDL_LITE_OBJECT(gupnp_didl_lite_writer_add_item(writer)); const char *title = gupnp_didl_lite_object_get_title(object); // maximum title length is 256 bytes if (strlen(title) > 256) { char *tmp = 0; const char *end_ptr = 0; g_utf8_validate(title, 256, &end_ptr); tmp = g_strndup(title, end_ptr - title); gupnp_didl_lite_object_set_title(item, tmp); g_free(tmp); } else { gupnp_didl_lite_object_set_title(item, title); } gupnp_didl_lite_object_set_upnp_class(item, gupnp_didl_lite_object_get_upnp_class(object)); gupnp_didl_lite_object_set_parent_id(item, gupnp_didl_lite_object_get_parent_id(object)); gupnp_didl_lite_object_set_id(item, gupnp_didl_lite_object_get_id(object)); gupnp_didl_lite_object_set_restricted(item, gupnp_didl_lite_object_get_restricted(object)); it = resources = gupnp_didl_lite_object_get_resources(object); while (it != 0) { GUPnPDIDLLiteResource *orig_resource = GUPNP_DIDL_LITE_RESOURCE(it->data); GUPnPDIDLLiteResource *resource = gupnp_didl_lite_object_add_resource(item); gupnp_didl_lite_resource_set_uri(resource, gupnp_didl_lite_resource_get_uri (orig_resource)); gupnp_didl_lite_resource_set_protocol_info(resource, gupnp_didl_lite_resource_get_protocol_info(orig_resource)); it = it->next; } g_list_free_full(resources, (GDestroyNotify)g_object_unref); return QString::fromUtf8(gupnp_didl_lite_writer_get_string(writer)); }
void add_content(GUPnPDIDLLiteParser *didl_parser, xmlNode *object_node, gpointer user_data) { struct browse_data *data = (struct browse_data *)user_data; char *title = gupnp_didl_lite_object_get_title(object_node); char *id = gupnp_didl_lite_object_get_id(object_node); gboolean container = gupnp_didl_lite_object_is_container(object_node); GError *error = NULL; GdkPixbuf *icon = gtk_icon_theme_load_icon(gtk_icon_theme_get_default(), (container ? "general_folder" : "general_audio_file"), HILDON_ICON_PIXEL_SIZE_FINGER, 0, &error); GtkTreeIter iter; gtk_list_store_append(data->list, &iter); gtk_list_store_set(data->list, &iter, COL_ICON, icon, COL_LABEL, title, COL_ID, id, COL_CONTENT, data->content_dir, COL_CONTAINER, container, -1); }
QVariant BrowseModelPrivate::data(const QModelIndex &index, int role) const { if (!index.isValid()) { return QVariant(); } DIDLLiteObject object = m_data.at(index.row()); if (object.isEmpty()) { return QVariant(); } switch (role) { case BrowseRoleTitle: return QString::fromUtf8(gupnp_didl_lite_object_get_title(object)); case BrowseRoleId: return QString::fromUtf8(gupnp_didl_lite_object_get_id(object)); case BrowseRoleUPnPClass: return QString::fromUtf8(gupnp_didl_lite_object_get_upnp_class(object)); case BrowseRoleIcon: return findIconForObject(object); case BrowseRoleURI: return getCompatibleUri(index.row(), m_protocolInfo); case BrowseRoleType: if (GUPNP_IS_DIDL_LITE_CONTAINER(object)) { return QLatin1String("container"); } else { return QLatin1String("object"); } case BrowseRoleDetail: return createDetailsForObject(object); case BrowseRoleMetaData: return generateMetaData(object); case BrowseRoleFilter: return QString::fromUtf8(gupnp_didl_lite_object_get_title(object)) + createDetailsForObject(object); default: return QVariant(); } }