static void fl_get_list(GntWidget *button, gpointer null) { PurpleAccount *account = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(froomlist.accounts)); PurpleConnection *gc = purple_account_get_connection(account); if (!gc) return; update_roomlist(NULL); froomlist.roomlist = purple_roomlist_get_list(gc); gnt_box_give_focus_to_child(GNT_BOX(froomlist.window), froomlist.tree); }
static void list_button_cb(GtkButton *button, PidginRoomlistDialog *dialog) { PurpleConnection *gc; PidginRoomlist *rl; gc = purple_account_get_connection(dialog->account); if (!gc) return; if (dialog->roomlist != NULL) { rl = dialog->roomlist->ui_data; gtk_widget_destroy(rl->tree); purple_roomlist_unref(dialog->roomlist); } dialog->roomlist = purple_roomlist_get_list(gc); if (!dialog->roomlist) return; purple_roomlist_ref(dialog->roomlist); rl = dialog->roomlist->ui_data; rl->dialog = dialog; if (dialog->account_widget) gtk_widget_set_sensitive(dialog->account_widget, FALSE); gtk_container_add(GTK_CONTAINER(dialog->sw), rl->tree); /* some protocols (not bundled with libpurple) finish getting their * room list immediately */ if(purple_roomlist_get_in_progress(dialog->roomlist)) { gtk_widget_set_sensitive(dialog->stop_button, TRUE); gtk_widget_set_sensitive(dialog->list_button, FALSE); } else { gtk_widget_set_sensitive(dialog->stop_button, FALSE); gtk_widget_set_sensitive(dialog->list_button, TRUE); } gtk_widget_set_sensitive(dialog->add_button, FALSE); gtk_widget_set_sensitive(dialog->join_button, FALSE); }