Exemplo n.º 1
0
Gobby::ChatSessionView::ChatSessionView(InfChatSession* session,
                                        const Glib::ustring& title,
                                        const Glib::ustring& path,
                                        const Glib::ustring& hostname,
                                        Preferences& preferences):
	SessionView(INF_SESSION(session), title, path, hostname),
	m_preferences(preferences), m_chat(INF_GTK_CHAT(inf_gtk_chat_new()))
{
	inf_gtk_chat_set_session(m_chat, session);
	gtk_widget_show(GTK_WIDGET(m_chat));

	gtk_box_pack_start(GTK_BOX(gobj()), GTK_WIDGET(m_chat),
	                   TRUE, TRUE, 0);
}
static void
subscribe_chat_cb (InfcNodeRequest *infcnoderequest,
                   InfcBrowserIter *iter,
                   gpointer         data)
{
	InfcSessionProxy *proxy;
	InfSession *session;
	ChatData *cdata = (ChatData *) data;
	GtkWidget *chat;

	proxy = infc_browser_get_chat_session (cdata->browser);

	if (proxy == NULL)
	{
		free_chat_data (data);
		return;
	}

	session = infc_session_proxy_get_session (proxy);
	cdata->proxy = proxy;

	chat = inf_gtk_chat_new ();
	cdata->chat = chat;

	inf_gtk_chat_set_session (INF_GTK_CHAT (chat),
	                          INF_CHAT_SESSION (session));

	g_signal_connect_after (session,
	                        "synchronization-failed",
	                        G_CALLBACK (sync_failed),
	                        data);

	g_signal_connect_after (session,
	                        "synchronization-complete",
	                        G_CALLBACK (sync_completed),
	                        data);
}