| 415 { |
415 { |
| 416 const char *filename = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon"); |
416 const char *filename = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon"); |
| 417 PurpleStoredImage *img = NULL; |
417 PurpleStoredImage *img = NULL; |
| 418 |
418 |
| 419 if (filename != NULL) |
419 if (filename != NULL) |
| 420 { |
420 img = purple_imgstore_new_from_file(filename); |
| 421 gchar *contents; |
|
| 422 gsize size; |
|
| 423 if (g_file_get_contents(filename, &contents, &size, NULL)) |
|
| 424 { |
|
| 425 img = purple_imgstore_add(contents, size, filename); |
|
| 426 } |
|
| 427 } |
|
| 428 |
421 |
| 429 pidgin_status_box_set_buddy_icon(status_box, img); |
422 pidgin_status_box_set_buddy_icon(status_box, img); |
| |
423 if (img) |
| |
424 /* |
| |
425 * purple_imgstore_new gives us a reference and |
| |
426 * pidgin_status_box_set_buddy_icon also takes one. |
| |
427 */ |
| |
428 purple_imgstore_unref(img); |
| 430 } |
429 } |
| 431 |
430 |
| 432 status_box->hand_cursor = gdk_cursor_new (GDK_HAND2); |
431 status_box->hand_cursor = gdk_cursor_new (GDK_HAND2); |
| 433 status_box->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR); |
432 status_box->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR); |
| 434 |
433 |
| 1494 gpointer data = NULL; |
1493 gpointer data = NULL; |
| 1495 size_t len = 0; |
1494 size_t len = 0; |
| 1496 if (filename) |
1495 if (filename) |
| 1497 data = pidgin_convert_buddy_icon(plug, filename, &len); |
1496 data = pidgin_convert_buddy_icon(plug, filename, &len); |
| 1498 img = purple_buddy_icons_set_account_icon(box->account, data, len); |
1497 img = purple_buddy_icons_set_account_icon(box->account, data, len); |
| |
1498 if (img) |
| |
1499 /* |
| |
1500 * set_account_icon doesn't give us a reference, but we |
| |
1501 * unref one below (for the other code path) |
| |
1502 */ |
| |
1503 purple_imgstore_ref(img); |
| |
1504 |
| 1499 purple_account_set_buddy_icon_path(box->account, filename); |
1505 purple_account_set_buddy_icon_path(box->account, filename); |
| 1500 |
1506 |
| 1501 purple_account_set_bool(box->account, "use-global-buddyicon", (filename != NULL)); |
1507 purple_account_set_bool(box->account, "use-global-buddyicon", (filename != NULL)); |
| 1502 } |
1508 } |
| 1503 } |
1509 } |
| 1513 prplinfo->icon_spec.format) { |
1519 prplinfo->icon_spec.format) { |
| 1514 gpointer data = NULL; |
1520 gpointer data = NULL; |
| 1515 size_t len = 0; |
1521 size_t len = 0; |
| 1516 if (filename) |
1522 if (filename) |
| 1517 data = pidgin_convert_buddy_icon(plug, filename, &len); |
1523 data = pidgin_convert_buddy_icon(plug, filename, &len); |
| 1518 img = purple_buddy_icons_set_account_icon(account, data, len); |
1524 purple_buddy_icons_set_account_icon(account, data, len); |
| 1519 purple_account_set_buddy_icon_path(account, filename); |
1525 purple_account_set_buddy_icon_path(account, filename); |
| 1520 } |
1526 } |
| 1521 } |
1527 } |
| 1522 } |
1528 } |
| 1523 |
1529 |
| 1524 /* Even if no accounts were processed, load the icon that was set. */ |
1530 /* Even if no accounts were processed, load the icon that was set. */ |
| 1525 if (filename != NULL) |
1531 if (filename != NULL) |
| 1526 { |
1532 img = purple_imgstore_new_from_file(filename); |
| 1527 gchar *contents; |
|
| 1528 gsize size; |
|
| 1529 if (g_file_get_contents(filename, &contents, &size, NULL)) |
|
| 1530 { |
|
| 1531 img = purple_imgstore_add(contents, size, filename); |
|
| 1532 } |
|
| 1533 } |
|
| 1534 } |
1533 } |
| 1535 |
1534 |
| 1536 pidgin_status_box_set_buddy_icon(box, img); |
1535 pidgin_status_box_set_buddy_icon(box, img); |
| |
1536 if (img) |
| |
1537 purple_imgstore_unref(img); |
| 1537 } |
1538 } |
| 1538 |
1539 |
| 1539 static void |
1540 static void |
| 1540 remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box) |
1541 remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box) |
| 1541 { |
1542 { |