comparison src/gtkconn.c @ 7625:1ffe44bb2573

[gaim-migrate @ 8249] 1) removed a duplicate copy of one function. it was quite literally duplicate: it looked like an example of paste gone arry, like some of my commit messages. 2)" This is an update to make the disconnect dialog work better w/ the autoreconnect plugin and the accounts dialog. If any account on the list are reconnected (by anything that uses the "signed-on" signal, which should cover all bases), it will be removed from the list. Of course, the single-multiple behavior (show list or just message) still happens, and if it is there are no more disconnected accounts, the dialog will be closed." --Daniel Atallah (datallah) committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Mon, 24 Nov 2003 14:27:01 +0000
parents 83453431d722
children 6afe28251c85
comparison
equal deleted inserted replaced
7624:8df31c1aca4a 7625:1ffe44bb2573
339 label_text = g_value_get_string(&val); 339 label_text = g_value_get_string(&val);
340 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); 340 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text);
341 g_value_unset(&val); 341 g_value_unset(&val);
342 } 342 }
343 343
344 static void disconnect_signed_on_cb(GaimConnection *gc, void *data)
345 {
346 if (disconnect_window) {
347 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview));
348 GtkTreeIter iter;
349 if (gtk_tree_model_get_iter_first(model, &iter)) {
350 GaimAccount *account = NULL;
351 do {
352 GValue val = { 0, };
353 gtk_tree_model_get_value(model, &iter, 4, &val);
354 account = g_value_get_pointer(&val);
355 g_value_unset(&val);
356 if (account == gaim_connection_get_account(gc)) {
357 gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
358
359 if (!gtk_tree_model_get_iter_first(model, &iter))
360 disconnect_window_hide();
361 else {
362 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(disconnect_window->treeview));
363 gtk_tree_selection_select_iter(sel, &iter);
364 if (!gtk_tree_model_iter_next(model, &iter))
365 gtk_widget_hide_all(disconnect_window->sw);
366 }
367 break;
368 }
369 } while (gtk_tree_model_iter_next(model, &iter));
370 }
371 }
372 }
344 373
345 static void 374 static void
346 gaim_gtk_connection_report_disconnect(GaimConnection *gc, const char *text) 375 gaim_gtk_connection_report_disconnect(GaimConnection *gc, const char *text)
347 { 376 {
348 char *label_text = NULL; 377 char *label_text = NULL;
421 450
422 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (disconnect_window->treeview)); 451 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (disconnect_window->treeview));
423 gtk_widget_set_size_request(disconnect_window->treeview, -1, 96); 452 gtk_widget_set_size_request(disconnect_window->treeview, -1, 96);
424 g_signal_connect (G_OBJECT (sel), "changed", 453 g_signal_connect (G_OBJECT (sel), "changed",
425 G_CALLBACK (disconnect_tree_cb), list_store); 454 G_CALLBACK (disconnect_tree_cb), list_store);
455
456 gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
457 disconnect_window, GAIM_CALLBACK(disconnect_signed_on_cb), NULL);
458
426 } else 459 } else
427 list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview))); 460 list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview)));
428 461
429 /* If this account is already in our list then remove it */ 462 /* If this account is already in our list then remove it */
430 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter)) { 463 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter)) {