예제 #1
0
static gboolean linphone_gtk_process_buddy_lookup(GtkWidget *w){
	BuddyLookupStatus bls;
	SipSetupContext *ctx;
	int last_state;
	gchar *tmp;
	MSList *results=NULL;
	GtkProgressBar *pb=GTK_PROGRESS_BAR(linphone_gtk_get_widget(w,"progressbar"));
	ctx=(SipSetupContext*)g_object_get_data(G_OBJECT(w),"SipSetupContext");
	last_state=GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w),"last_state"));
	bls=sip_setup_context_get_buddy_lookup_status(ctx);
	if (last_state==bls) return TRUE;
	switch(bls){
		case BuddyLookupNone:
			gtk_progress_bar_set_fraction(pb,0);
			gtk_progress_bar_set_text(pb,NULL);
			break;
		case BuddyLookupFailure:
			gtk_progress_bar_set_fraction(pb,0);
			gtk_progress_bar_set_text(pb,_("Error communicating with server."));
			break;
		case BuddyLookupConnecting:
			gtk_progress_bar_set_fraction(pb,0.2);
			gtk_progress_bar_set_text(pb,_("Connecting..."));
			break;
		case BuddyLookupConnected:
			gtk_progress_bar_set_fraction(pb,0.4);
			gtk_progress_bar_set_text(pb,_("Connected"));
			break;
		case BuddyLookupReceivingResponse:
			gtk_progress_bar_set_fraction(pb,0.8);
			gtk_progress_bar_set_text(pb,_("Receiving data..."));
			break;
		case BuddyLookupDone:
			sip_setup_context_get_buddy_lookup_results(ctx,&results);
			linphone_gtk_display_lookup_results(
					linphone_gtk_get_widget(w,"search_results"),
					results);
			gtk_progress_bar_set_fraction(pb,1);
			tmp=g_strdup_printf(_("Found %i contact(s)"),ms_list_size(results));
			gtk_progress_bar_set_text(pb,tmp);
			g_free(tmp);
			if (results) sip_setup_context_free_results(results);
			break;
	}
	enable_add_buddy_button(w,bls==BuddyLookupDone);
	g_object_set_data(G_OBJECT(w),"last_state",GINT_TO_POINTER(bls));
	return TRUE;
}
예제 #2
0
static void buddy_selection_changed(GtkWidget *w){
	GtkWidget *results=linphone_gtk_get_widget(w,"search_results");
	GtkTreeSelection *select;
	GtkTreeIter iter;
	GtkTreeModel *model;
	enable_add_buddy_button(w);
	
	select = gtk_tree_view_get_selection(GTK_TREE_VIEW(results));
	if (gtk_tree_selection_get_selected (select, &model, &iter))
	{
		GtkTreePath *path=gtk_tree_model_get_path(model,&iter);
		gtk_tree_view_collapse_all(GTK_TREE_VIEW(results));
		gtk_tree_view_expand_row(GTK_TREE_VIEW(results),path,FALSE);
		gtk_tree_path_free(path);
	}
}