示例#1
0
ExploreRequest* BrowserIter::exploreRequest() const
{
    if( m_infBrowser ) {
        InfRequest* req = inf_browser_get_pending_request(
                              INF_BROWSER(m_infBrowser),
                              &m_infBrowserIter,
                              "explore-node"
                          );
        return ExploreRequest::wrap(req, 0, false);
    }
    return 0;
}
示例#2
0
ExploreRequest* BrowserIter::explore()
{
    if( m_infBrowser ) {
        InfRequest* req = inf_browser_get_pending_request(
                              INF_BROWSER(m_infBrowser),
                              &m_infBrowserIter,
                              "explore-node"
                          );
        if ( req ) {
            return ExploreRequest::wrap(req, 0, false);
        }
        else {
            return ExploreRequest::wrap( inf_browser_explore(
                                             INF_BROWSER(m_infBrowser), &m_infBrowserIter, 0, 0
                                         ) );
        }
    }
    return 0;
}
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;
      }
    }
  }
}