| 492 |
492 |
| 493 switch (param_id) { |
493 switch (param_id) { |
| 494 case PROP_ICON_SEL: |
494 case PROP_ICON_SEL: |
| 495 if (g_value_get_boolean(value)) { |
495 if (g_value_get_boolean(value)) { |
| 496 if (statusbox->account) { |
496 if (statusbox->account) { |
| 497 PurplePluginProtocolInfo *prpl_info = |
497 PurpleProtocol *protocol = |
| 498 purple_find_protocol_info(purple_account_get_protocol_id(statusbox->account)); |
498 purple_find_protocol_info(purple_account_get_protocol_id(statusbox->account)); |
| 499 if (prpl_info && prpl_info->icon_spec.format != NULL) |
499 if (protocol && protocol->icon_spec.format != NULL) |
| 500 setup_icon_box(statusbox); |
500 setup_icon_box(statusbox); |
| 501 } else { |
501 } else { |
| 502 setup_icon_box(statusbox); |
502 setup_icon_box(statusbox); |
| 503 } |
503 } |
| 504 } else { |
504 } else { |
| 1448 buddy_icon_set_cb(const char *filename, PidginStatusBox *box) |
1448 buddy_icon_set_cb(const char *filename, PidginStatusBox *box) |
| 1449 { |
1449 { |
| 1450 PurpleStoredImage *img = NULL; |
1450 PurpleStoredImage *img = NULL; |
| 1451 |
1451 |
| 1452 if (box->account) { |
1452 if (box->account) { |
| 1453 PurplePluginProtocolInfo *prpl_info = |
1453 PurpleProtocol *protocol = |
| 1454 purple_find_protocol_info(purple_account_get_protocol_id(box->account)); |
1454 purple_find_protocol_info(purple_account_get_protocol_id(box->account)); |
| 1455 if (prpl_info && prpl_info->icon_spec.format) { |
1455 if (protocol && protocol->icon_spec.format) { |
| 1456 gpointer data = NULL; |
1456 gpointer data = NULL; |
| 1457 size_t len = 0; |
1457 size_t len = 0; |
| 1458 if (filename) |
1458 if (filename) |
| 1459 data = pidgin_convert_buddy_icon(prpl_info, filename, &len); |
1459 data = pidgin_convert_buddy_icon(protocol, filename, &len); |
| 1460 img = purple_buddy_icons_set_account_icon(box->account, data, len); |
1460 img = purple_buddy_icons_set_account_icon(box->account, data, len); |
| 1461 if (img) |
1461 if (img) |
| 1462 /* |
1462 /* |
| 1463 * set_account_icon doesn't give us a reference, but we |
1463 * set_account_icon doesn't give us a reference, but we |
| 1464 * unref one below (for the other code path) |
1464 * unref one below (for the other code path) |
| 1471 } |
1471 } |
| 1472 } else { |
1472 } else { |
| 1473 GList *accounts; |
1473 GList *accounts; |
| 1474 for (accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) { |
1474 for (accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) { |
| 1475 PurpleAccount *account = accounts->data; |
1475 PurpleAccount *account = accounts->data; |
| 1476 PurplePluginProtocolInfo *prpl_info = |
1476 PurpleProtocol *protocol = |
| 1477 purple_find_protocol_info(purple_account_get_protocol_id(account)); |
1477 purple_find_protocol_info(purple_account_get_protocol_id(account)); |
| 1478 if (prpl_info != NULL && |
1478 if (protocol != NULL && |
| 1479 purple_account_get_bool(account, "use-global-buddyicon", TRUE) && |
1479 purple_account_get_bool(account, "use-global-buddyicon", TRUE) && |
| 1480 prpl_info->icon_spec.format) { |
1480 protocol->icon_spec.format) { |
| 1481 gpointer data = NULL; |
1481 gpointer data = NULL; |
| 1482 size_t len = 0; |
1482 size_t len = 0; |
| 1483 if (filename) |
1483 if (filename) |
| 1484 data = pidgin_convert_buddy_icon(prpl_info, filename, &len); |
1484 data = pidgin_convert_buddy_icon(protocol, filename, &len); |
| 1485 purple_buddy_icons_set_account_icon(account, data, len); |
1485 purple_buddy_icons_set_account_icon(account, data, len); |
| 1486 purple_account_set_buddy_icon_path(account, filename); |
1486 purple_account_set_buddy_icon_path(account, filename); |
| 1487 } |
1487 } |
| 1488 } |
1488 } |
| 1489 |
1489 |