コード例 #1
0
void VideosWindow::listVideos()
{
    this->setAttribute(Qt::WA_Maemo5ShowProgressIndicator, true);

#ifdef DEBUG
    qDebug("Source ready");
#endif

    connect(mafwTrackerSource, SIGNAL(browseResult(uint,int,uint,QString,GHashTable*,QString)),
            this, SLOT(browseAllVideos(uint,int,uint,QString,GHashTable*)), Qt::UniqueConnection);

    browseId = mafwTrackerSource->browse("localtagfs::videos", false, NULL, sortByDate->isChecked() ? "-added,+title" : "+title",
                                         MAFW_SOURCE_LIST(MAFW_METADATA_KEY_TITLE,
                                                          MAFW_METADATA_KEY_DURATION,
                                                          MAFW_METADATA_KEY_THUMBNAIL_URI,
                                                          MAFW_METADATA_KEY_PAUSED_THUMBNAIL_URI,
                                                          MAFW_METADATA_KEY_VIDEO_SOURCE),
                                         0, MAFW_SOURCE_BROWSE_ALL);
}
コード例 #2
0
void SinglePlaylistView::browseImportedPlaylist(QString objectId)
{
    currentObjectId = objectId;
    playlistLoaded = false;

    objectModel->clear();
    QStandardItem *item = new QStandardItem();
    item->setData(true, UserRoleHeader);
    objectModel->appendRow(item);

    connect(mafwTrackerSource, SIGNAL(browseResult(uint,int,uint,QString,GHashTable*,QString)),
            this, SLOT(onBrowseResult(uint,int,uint,QString,GHashTable*)), Qt::UniqueConnection);
    browsePlaylistId = mafwTrackerSource->browse(objectId, true, NULL, NULL,
                                                 MAFW_SOURCE_LIST(MAFW_METADATA_KEY_TITLE,
                                                                  MAFW_METADATA_KEY_DURATION,
                                                                  MAFW_METADATA_KEY_ARTIST,
                                                                  MAFW_METADATA_KEY_ALBUM),
                                                 0, MAFW_SOURCE_BROWSE_ALL);
}
コード例 #3
0
void SingleGenreView::listArtists()
{
    setAttribute(Qt::WA_Maemo5ShowProgressIndicator, true);

    visibleSongs = 0;
    objectModel->clear();
    QStandardItem *item = new QStandardItem();
    item->setData(true, UserRoleHeader);
    objectModel->appendRow(item);

    connect(mafwTrackerSource, SIGNAL(browseResult(uint,int,uint,QString,GHashTable*,QString)),
            this, SLOT(browseAllGenres(uint,int,uint,QString,GHashTable*,QString)), Qt::UniqueConnection);

    browseGenreId = mafwTrackerSource->browse(currentObjectId, false, NULL, NULL,
                                              MAFW_SOURCE_LIST(MAFW_METADATA_KEY_TITLE,
                                                               MAFW_METADATA_KEY_ALBUM_ART_SMALL_URI,
                                                               MAFW_METADATA_KEY_CHILDCOUNT_1,
                                                               MAFW_METADATA_KEY_CHILDCOUNT_2),
                                              0, MAFW_SOURCE_BROWSE_ALL);
}
コード例 #4
0
void SinglePlaylistView::browseAutomaticPlaylist(QString filter, QString sorting, int maxCount)
{
    currentObjectId = QString();
    playlistLoaded = false;

    objectModel->clear();
    QStandardItem *item = new QStandardItem();
    item->setData(true, UserRoleHeader);
    objectModel->appendRow(item);

    // Assume that extended actions are at the end of the menu, in this case the
    // only one should be the delete action.
    ui->windowMenu->removeAction(ui->windowMenu->actions().last());

    connect(mafwTrackerSource, SIGNAL(browseResult(uint,int,uint,QString,GHashTable*,QString)),
            this, SLOT(onBrowseResult(uint,int,uint,QString,GHashTable*)), Qt::UniqueConnection);
    browsePlaylistId = mafwTrackerSource->browse("localtagfs::music/songs", true, filter.toUtf8(), sorting.toUtf8(),
                                                 MAFW_SOURCE_LIST(MAFW_METADATA_KEY_TITLE,
                                                                  MAFW_METADATA_KEY_DURATION,
                                                                  MAFW_METADATA_KEY_ARTIST,
                                                                  MAFW_METADATA_KEY_ALBUM),
                                                 0, maxCount);
}
コード例 #5
0
ファイル: errorsource.c プロジェクト: community-ssu/mafw
static void set_metadata(MafwSource *self, const gchar *object_id,
			     GHashTable *metadata,
			     MafwSourceMetadataSetCb callback,
			     gpointer user_data)
{
	ErrorSource* ms = ERROR_SOURCE(self);

	if (callback != NULL)
	{
		const gchar** failed_keys = (const gchar**)
			MAFW_SOURCE_LIST("pertti", "pasanen");
		GError* error = NULL;

		g_set_error(&error, MAFW_EXTENSION_ERROR,
                            MAFW_EXTENSION_ERROR_FAILED,
			    "Error source fails in everything it does.");
		callback(self, object_id, failed_keys, user_data, error);
		g_error_free(error);
	}

	ms->set_metadata_called++;
	quit_main_loop(self, G_STRFUNC);

}
コード例 #6
0
END_TEST

START_TEST(test_cancel_browse_invalid)
{
    MafwProxySource *src;
    guint32 browse_id;
    DBusMessage *replmsg;
    DBusMessageIter iter_array, iter_msg;
    GError *error = NULL;

    /* II. call browse(), wait till it's finished, then try to
     * cancel it -> proxy should NOT send anything. */

    mockbus_reset();
    mock_empty_props(MAFW_DBUS_DESTINATION, MAFW_DBUS_PATH);
    mockbus_expect(
        mafw_dbus_method(MAFW_SOURCE_METHOD_BROWSE,
                         MAFW_DBUS_STRING("bigcan"),
                         MAFW_DBUS_BOOLEAN(FALSE),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_C_STRVZ("faszom"),
                         MAFW_DBUS_UINT32(0),
                         MAFW_DBUS_UINT32(0)));
    mockbus_reply(MAFW_DBUS_UINT32(4444));

    replmsg = append_browse_res(NULL, &iter_msg, &iter_array, 4444, 0, 0,
                                "testobject::item0", NULL, "", 0, "");
    dbus_message_iter_close_container(&iter_msg, &iter_array);
    mockbus_incoming(replmsg);

    src = MAFW_PROXY_SOURCE(mafw_proxy_source_new(SOURCE_UUID, "fake",
                            mafw_registry_get_instance()));

    fail_if(mafw_source_cancel_browse(MAFW_SOURCE(src), 10, &error));
    fail_if(!error);
    g_error_free(error);

    browse_id = mafw_source_browse(
                    MAFW_SOURCE(src),
                    "bigcan", FALSE, NULL, NULL,
                    MAFW_SOURCE_LIST("faszom"), 0, 0,
                    browse_result2_invalid, NULL);

    g_main_loop_run(mainloop_test = g_main_loop_new(NULL, FALSE));

    fail_if(mafw_source_cancel_browse(MAFW_SOURCE(src), browse_id, NULL));



    mockbus_expect(
        mafw_dbus_method(MAFW_SOURCE_METHOD_BROWSE,
                         MAFW_DBUS_STRING("abc"),
                         MAFW_DBUS_BOOLEAN(FALSE),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_C_STRVZ("def"),
                         MAFW_DBUS_UINT32(0),
                         MAFW_DBUS_UINT32(0)));
    mockbus_reply(MAFW_DBUS_UINT32(4444));

    browse_id = mafw_source_browse(
                    MAFW_SOURCE(src),
                    "abc", FALSE, NULL, NULL,
                    MAFW_SOURCE_LIST("def"), 0, 0,
                    browse_result2_invalid, NULL);
    error = NULL;
    mockbus_expect(
        mafw_dbus_method(MAFW_SOURCE_METHOD_CANCEL_BROWSE,
                         MAFW_DBUS_UINT32(4444)));
    mockbus_error(MAFW_SOURCE_ERROR, 2, "testproblem");
    fail_if(mafw_source_cancel_browse(MAFW_SOURCE(src), browse_id, &error));
    fail_if(!error);
    g_error_free(error);

    mafw_registry_remove_extension(mafw_registry_get_instance(),
                                   (gpointer)src);
    mockbus_finish();
}
コード例 #7
0
END_TEST

START_TEST(test_cancel_browse)
{
    GPtrArray *results;
    MafwProxySource *src;
    DBusMessage *replmsg;
    DBusMessageIter iter_array, iter_msg;

    /* I. call browse(), wait for 2 results, then cancel it ->
     * proxy should sent the cancel message */

    mockbus_reset();
    mock_empty_props(MAFW_DBUS_DESTINATION, MAFW_DBUS_PATH);
    mockbus_expect(
        mafw_dbus_method(MAFW_SOURCE_METHOD_BROWSE,
                         MAFW_DBUS_STRING("bigcan"),
                         MAFW_DBUS_BOOLEAN(FALSE),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_C_STRVZ("faszom"),
                         MAFW_DBUS_UINT32(0),
                         MAFW_DBUS_UINT32(0)));
    mockbus_reply(MAFW_DBUS_UINT32(4444));

    replmsg = append_browse_res(NULL, &iter_msg, &iter_array, 4444, 5, 0,
                                "testobject::item0", NULL, "", 0, "");
    replmsg = append_browse_res(replmsg, &iter_msg, &iter_array, 4444, 4, 0,
                                "testobject::item1", NULL, "", 0, "");
    replmsg = append_browse_res(replmsg, &iter_msg, &iter_array, 4444, 3, 0,
                                "testobject::item2", NULL, "", 0, "");
    replmsg = append_browse_res(replmsg, &iter_msg, &iter_array, 4444, 3, 0,
                                "testobject::item3", NULL, "", 0, "");
    dbus_message_iter_close_container(&iter_msg, &iter_array);

    mockbus_incoming(replmsg);
    mockbus_expect(
        mafw_dbus_method(MAFW_SOURCE_METHOD_CANCEL_BROWSE,
                         MAFW_DBUS_UINT32(4444)));
    mockbus_reply();
    src = MAFW_PROXY_SOURCE(mafw_proxy_source_new(SOURCE_UUID, "fake",
                            mafw_registry_get_instance()));

    results = g_ptr_array_new();
    mafw_source_browse(MAFW_SOURCE(src),
                       "bigcan", FALSE, NULL, NULL,
                       MAFW_SOURCE_LIST("faszom"), 0, 0,
                       browse_result2, results);
    g_main_loop_run(mainloop_test = g_main_loop_new(NULL, FALSE));

    fail_if(results->len != 3);
    fail_if(strcmp(results->pdata[0], "testobject::item0"));
    fail_if(strcmp(results->pdata[1], "testobject::item1"));
    fail_if(strcmp(results->pdata[2], "testobject::item2"));

    g_free(results->pdata[0]);
    g_free(results->pdata[1]);
    g_free(results->pdata[2]);
    g_ptr_array_free(results, TRUE);
    mafw_registry_remove_extension(mafw_registry_get_instance(),
                                   (gpointer)src);
    mockbus_finish();
}
コード例 #8
0
END_TEST

START_TEST(test_browse)
{
    MafwProxySource *sp = NULL;
    guint browse_id = 0;
    const gchar *const *metadata_keys = NULL;
    GHashTable *metadata;
    DBusMessage *replmsg;
    DBusMessageIter iter_array, iter_msg;

    metadata_keys = MAFW_SOURCE_LIST("title");
    metadata = mockbus_mkmeta("title", "More than words", NULL);

    mockbus_reset();

    mock_empty_props(MAFW_DBUS_DESTINATION, MAFW_DBUS_PATH);

    mockbus_expect(
        mafw_dbus_method(MAFW_SOURCE_METHOD_BROWSE,
                         MAFW_DBUS_STRING("testobject"),
                         MAFW_DBUS_BOOLEAN(FALSE),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_C_STRVZ("title"),
                         MAFW_DBUS_UINT32(0),
                         MAFW_DBUS_UINT32(10)));

    mockbus_reply(MAFW_DBUS_UINT32(4444));



    replmsg = append_browse_res(NULL, &iter_msg, &iter_array, 4444, -1, 0,
                                "testobject", metadata, "", 0, "");

    dbus_message_iter_close_container(&iter_msg, &iter_array);

    mockbus_incoming(replmsg);
    mafw_metadata_release(metadata);

    sp = MAFW_PROXY_SOURCE(mafw_proxy_source_new(SOURCE_UUID, "fake",
                           mafw_registry_get_instance()));
    fail_unless(sp != NULL, "Object construction failed");

    browse_id = mafw_source_browse(MAFW_SOURCE(sp),
                                   "testobject", FALSE, NULL, NULL,
                                   metadata_keys, 0, 10,
                                   browse_result, NULL);


    info("Browse ID: %d", browse_id);

    mainloop_test = g_main_loop_new(NULL, FALSE);
    g_main_loop_run(mainloop_test);

    fail_unless(browse_result_ok == TRUE, "Browse result signal missing.");


    mockbus_expect(
        mafw_dbus_method(MAFW_SOURCE_METHOD_BROWSE,
                         MAFW_DBUS_STRING("testobject"),
                         MAFW_DBUS_BOOLEAN(FALSE),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_STRING(""),
                         MAFW_DBUS_C_STRVZ(NULL),
                         MAFW_DBUS_UINT32(0),
                         MAFW_DBUS_UINT32(10)));

    mockbus_error(MAFW_SOURCE_ERROR, 2, "testproblem");


    browse_id = mafw_source_browse(MAFW_SOURCE(sp),
                                   "testobject", FALSE, NULL, NULL,
                                   NULL, 0, 10,
                                   browse_error_result, NULL);


    info("Browse ID: %d", browse_id);

    fail_unless(browse_result_ok == TRUE, "Browse result signal missing.");

    fail_if(browse_id != MAFW_SOURCE_INVALID_BROWSE_ID);


    mafw_registry_remove_extension(mafw_registry_get_instance(),
                                   (gpointer)sp);
    g_main_loop_unref(mainloop_test);
    mockbus_finish();

}