static void infinoted_plugin_dbus_explore_node(InfinotedPluginDbus* plugin, InfinotedPluginDbusInvocation* invocation, InfBrowser* browser, const InfBrowserIter* iter) { InfBrowserIter child_iter; GVariantBuilder builder; child_iter = *iter; g_variant_builder_init(&builder, G_VARIANT_TYPE("a(ss)")); if(inf_browser_get_child(browser, &child_iter)) { do { if(inf_browser_is_subdirectory(browser, &child_iter)) { g_variant_builder_add( &builder, "(ss)", inf_browser_get_node_name(browser, &child_iter), "InfSubdirectory" ); } else { g_variant_builder_add( &builder, "(ss)", inf_browser_get_node_name(browser, &child_iter), inf_browser_get_node_type(browser, &child_iter) ); } } while(inf_browser_get_next(browser, &child_iter)); } g_dbus_method_invocation_return_value( invocation->invocation, g_variant_new("(@a(ss))", g_variant_builder_end(&builder)) ); infinoted_plugin_dbus_invocation_free(invocation->plugin, invocation); }
static void infinoted_plugin_document_stream_navigate_func(InfBrowser* browser, const InfBrowserIter* iter, const GError* error, gpointer user_data) { InfinotedPluginDocumentStreamStream* stream; InfSessionProxy* proxy; InfRequest* request; stream = (InfinotedPluginDocumentStreamStream*)user_data; stream->navigate_handle = NULL; if(error != NULL) { infinoted_plugin_document_stream_send_error(stream, error->message); } else { if(inf_browser_is_subdirectory(browser, iter) || (strcmp(inf_browser_get_node_type(browser, iter), "InfText") != 0 && strcmp(inf_browser_get_node_type(browser, iter), "InfChat") != 0)) { infinoted_plugin_document_stream_send_error( stream, _("Not a text or chat node") ); } else { stream->iter = *iter; proxy = inf_browser_get_session(browser, iter); if(proxy != NULL) { infinoted_plugin_document_stream_subscribe_done(stream, proxy); } else { request = inf_browser_get_pending_request( browser, iter, "subscribe-session" ); if(request != NULL) { g_signal_connect( G_OBJECT(browser), "finished", G_CALLBACK(infinoted_plugin_document_stream_subscribe_func), stream ); } else { request = inf_browser_subscribe( browser, iter, infinoted_plugin_document_stream_subscribe_func, stream ); } stream->subscribe_request = request; } } } }
QString BrowserIter::noteType() { if( m_infBrowser ) return inf_browser_get_node_type( INF_BROWSER(m_infBrowser), &m_infBrowserIter ); return ""; }