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