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); }
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); }
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); }
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); }
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); }
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(); }
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(); }
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(); }