Mercurial > pidgin.yaz
comparison src/gtkconn.c @ 7637:6afe28251c85
[gaim-migrate @ 8279]
one very cool Mr. Daniel Atallah submitted this patch to make the disconnect
dialog work the way I intended it to.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Wed, 26 Nov 2003 08:05:45 +0000 |
parents | 1ffe44bb2573 |
children | 99ae80bdffa1 |
comparison
equal
deleted
inserted
replaced
7636:01c1b3ea70c6 | 7637:6afe28251c85 |
---|---|
312 return; | 312 return; |
313 } | 313 } |
314 gtk_tree_model_get_value(model, &iter, 4, &val); | 314 gtk_tree_model_get_value(model, &iter, 4, &val); |
315 account = g_value_get_pointer(&val); | 315 account = g_value_get_pointer(&val); |
316 g_value_unset(&val); | 316 g_value_unset(&val); |
317 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); | 317 gaim_account_connect(account); |
318 /* remove all disconnections of the account reconnected */ | |
319 if (gtk_tree_model_get_iter_first(model, &iter)) { | |
320 GaimAccount *account2 = NULL; | |
321 gboolean alreadyIterated = FALSE; | |
322 do { | |
323 alreadyIterated = FALSE; | |
324 gtk_tree_model_get_value(model, &iter, 4, &val); | |
325 account2 = g_value_get_pointer(&val); | |
326 g_value_unset(&val); | |
327 if (account2 == account) { | |
328 if (!gtk_list_store_remove(GTK_LIST_STORE(model), &iter)) | |
329 return; | |
330 alreadyIterated = TRUE; | |
331 } | |
332 g_value_unset(&val); | |
333 } while (alreadyIterated || gtk_tree_model_iter_next(model, &iter)); | |
334 } | |
335 | |
318 if (!gtk_tree_model_get_iter_first(model, &iter)) | 336 if (!gtk_tree_model_get_iter_first(model, &iter)) |
319 disconnect_window_hide(); | 337 disconnect_window_hide(); |
320 else { | 338 else { |
321 gtk_tree_selection_select_iter(sel, &iter); | 339 gtk_tree_selection_select_iter(sel, &iter); |
322 if (!gtk_tree_model_iter_next(model, &iter)) | 340 if (!gtk_tree_model_iter_next(model, &iter)) |
323 gtk_widget_hide_all(disconnect_window->sw); | 341 gtk_widget_hide_all(disconnect_window->sw); |
324 } | 342 } |
325 gaim_account_connect(account); | |
326 break; | 343 break; |
327 } | 344 } |
328 } | 345 } |
329 | 346 |
330 static void disconnect_tree_cb(GtkTreeSelection *sel, GtkTreeModel *model) | 347 static void disconnect_tree_cb(GtkTreeSelection *sel, GtkTreeModel *model) |
331 { | 348 { |
332 GtkTreeIter iter; | 349 GtkTreeIter iter; |
333 GValue val = { 0, }; | 350 GValue val = { 0, }; |
334 const char *label_text; | 351 const char *label_text; |
335 | 352 |
336 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) | 353 if (! gtk_tree_selection_get_selected (sel, &model, &iter)) { |
354 gtk_dialog_set_response_sensitive(GTK_DIALOG(disconnect_window->window), GTK_RESPONSE_ACCEPT, FALSE); | |
337 return; | 355 return; |
356 } else | |
357 gtk_dialog_set_response_sensitive(GTK_DIALOG(disconnect_window->window), GTK_RESPONSE_ACCEPT, TRUE); | |
338 gtk_tree_model_get_value (model, &iter, 3, &val); | 358 gtk_tree_model_get_value (model, &iter, 3, &val); |
339 label_text = g_value_get_string(&val); | 359 label_text = g_value_get_string(&val); |
340 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); | 360 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); |
341 g_value_unset(&val); | 361 g_value_unset(&val); |
342 } | 362 } |
343 | 363 |
344 static void disconnect_signed_on_cb(GaimConnection *gc, void *data) | 364 static void disconnect_signed_on_cb(GaimConnection *gc, void *data) |
345 { | 365 { |
346 if (disconnect_window) { | 366 if (disconnect_window) { |
347 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview)); | 367 GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview)); |
368 GaimAccount *account = gaim_connection_get_account(gc); | |
369 GdkPixbuf *icon = create_prpl_icon(account); | |
370 GdkPixbuf *scale = gdk_pixbuf_scale_simple(icon, 16, 16, GDK_INTERP_BILINEAR); | |
348 GtkTreeIter iter; | 371 GtkTreeIter iter; |
349 if (gtk_tree_model_get_iter_first(model, &iter)) { | 372 if (gtk_tree_model_get_iter_first(model, &iter)) { |
350 GaimAccount *account = NULL; | 373 GaimAccount *account2 = NULL; |
351 do { | 374 do { |
352 GValue val = { 0, }; | 375 GValue val = { 0, }; |
353 gtk_tree_model_get_value(model, &iter, 4, &val); | 376 gtk_tree_model_get_value(model, &iter, 4, &val); |
354 account = g_value_get_pointer(&val); | 377 account2 = g_value_get_pointer(&val); |
355 g_value_unset(&val); | 378 g_value_unset(&val); |
356 if (account == gaim_connection_get_account(gc)) { | 379 if (account2 == account) { |
357 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); | 380 gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, scale, -1); |
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 } | 381 } |
369 } while (gtk_tree_model_iter_next(model, &iter)); | 382 } while (gtk_tree_model_iter_next(model, &iter)); |
370 } | 383 } |
384 if (icon != NULL) g_object_unref(G_OBJECT(icon)); | |
385 if (scale != NULL) g_object_unref(G_OBJECT(scale)); | |
371 } | 386 } |
372 } | 387 } |
373 | 388 |
374 static void | 389 static void |
375 gaim_gtk_connection_report_disconnect(GaimConnection *gc, const char *text) | 390 gaim_gtk_connection_report_disconnect(GaimConnection *gc, const char *text) |
442 | 457 |
443 rend = gtk_cell_renderer_text_new(); | 458 rend = gtk_cell_renderer_text_new(); |
444 col = gtk_tree_view_column_new_with_attributes (_("Time"), | 459 col = gtk_tree_view_column_new_with_attributes (_("Time"), |
445 rend, "text", 2, NULL); | 460 rend, "text", 2, NULL); |
446 gtk_tree_view_append_column (GTK_TREE_VIEW(disconnect_window->treeview), col); | 461 gtk_tree_view_append_column (GTK_TREE_VIEW(disconnect_window->treeview), col); |
447 | 462 |
448 g_object_unref(G_OBJECT(list_store)); | 463 g_object_unref(G_OBJECT(list_store)); |
449 gtk_container_add(GTK_CONTAINER(disconnect_window->sw), disconnect_window->treeview); | 464 gtk_container_add(GTK_CONTAINER(disconnect_window->sw), disconnect_window->treeview); |
450 | 465 |
451 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (disconnect_window->treeview)); | 466 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (disconnect_window->treeview)); |
452 gtk_widget_set_size_request(disconnect_window->treeview, -1, 96); | 467 gtk_widget_set_size_request(disconnect_window->treeview, -1, 96); |
456 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", | 471 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", |
457 disconnect_window, GAIM_CALLBACK(disconnect_signed_on_cb), NULL); | 472 disconnect_window, GAIM_CALLBACK(disconnect_signed_on_cb), NULL); |
458 | 473 |
459 } else | 474 } else |
460 list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview))); | 475 list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview))); |
461 | 476 /* mark all disconnections w/ the account type disconnected /w grey icon */ |
462 /* If this account is already in our list then remove it */ | 477 icon = create_prpl_icon(gaim_connection_get_account(gc)); |
478 scale = gdk_pixbuf_scale_simple(icon, 16, 16, GDK_INTERP_BILINEAR); | |
479 gdk_pixbuf_saturate_and_pixelate(scale, scale, 0.0, FALSE); | |
463 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter)) { | 480 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter)) { |
464 do { | 481 do { |
465 gtk_tree_model_get_value(GTK_TREE_MODEL(list_store), &iter, 4, &val); | 482 gtk_tree_model_get_value(GTK_TREE_MODEL(list_store), &iter, 4, &val); |
466 account = g_value_get_pointer(&val); | 483 account = g_value_get_pointer(&val); |
467 g_value_unset(&val); | 484 g_value_unset(&val); |
468 if (account == gaim_connection_get_account(gc)) { | 485 if (account == gaim_connection_get_account(gc)) { |
469 gtk_list_store_remove(list_store, &iter); | 486 gtk_list_store_set(list_store, &iter, 0, scale, -1); |
470 break; | |
471 } | 487 } |
472 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(list_store), &iter)); | 488 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(list_store), &iter)); |
473 } | 489 } |
474 | 490 |
475 /* Add this account to our list of disconnected accounts */ | 491 /* Add this account to our list of disconnected accounts */ |
476 icon = create_prpl_icon(gaim_connection_get_account(gc)); | |
477 scale = gdk_pixbuf_scale_simple(icon, 16, 16, GDK_INTERP_BILINEAR); | |
478 gtk_list_store_append(list_store, &new_row_iter); | 492 gtk_list_store_append(list_store, &new_row_iter); |
479 gtk_list_store_set(list_store, &new_row_iter, | 493 gtk_list_store_set(list_store, &new_row_iter, |
480 0, scale, | 494 0, scale, |
481 1, gaim_account_get_username(gaim_connection_get_account(gc)), | 495 1, gaim_account_get_username(gaim_connection_get_account(gc)), |
482 2, gaim_date_full(), | 496 2, gaim_date_full(), |