Ejemplo n.º 1
0
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);
        }
}
Ejemplo n.º 2
0
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));
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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();
    }
}