| 198 g_value_set_string(value, purple_contact_info_get_note(info)); |
199 g_value_set_string(value, purple_contact_info_get_note(info)); |
| 199 break; |
200 break; |
| 200 case PROP_AVATAR: |
201 case PROP_AVATAR: |
| 201 g_value_set_object(value, purple_contact_info_get_avatar(info)); |
202 g_value_set_object(value, purple_contact_info_get_avatar(info)); |
| 202 break; |
203 break; |
| |
204 case PROP_AVATAR_FOR_DISPLAY: |
| |
205 g_value_set_object(value, purple_contact_info_get_avatar_for_display(info)); |
| |
206 break; |
| 203 case PROP_PRESENCE: |
207 case PROP_PRESENCE: |
| 204 g_value_set_object(value, purple_contact_info_get_presence(info)); |
208 g_value_set_object(value, purple_contact_info_get_presence(info)); |
| 205 break; |
209 break; |
| 206 case PROP_TAGS: |
210 case PROP_TAGS: |
| 207 g_value_set_object(value, purple_contact_info_get_tags(info)); |
211 g_value_set_object(value, purple_contact_info_get_tags(info)); |
| 500 "avatar", NULL, NULL, |
504 "avatar", NULL, NULL, |
| 501 PURPLE_TYPE_IMAGE, |
505 PURPLE_TYPE_IMAGE, |
| 502 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); |
506 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); |
| 503 |
507 |
| 504 /** |
508 /** |
| |
509 * PurpleContactInfo:avatar-for-display: |
| |
510 * |
| |
511 * The avatar that should be displayed for this contact info. |
| |
512 * |
| |
513 * Since: 3.0 |
| |
514 */ |
| |
515 properties[PROP_AVATAR_FOR_DISPLAY] = g_param_spec_object( |
| |
516 "avatar-for-display", NULL, NULL, |
| |
517 PURPLE_TYPE_IMAGE, |
| |
518 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); |
| |
519 |
| |
520 /** |
| 505 * PurpleContactInfo:presence: |
521 * PurpleContactInfo:presence: |
| 506 * |
522 * |
| 507 * The [class@Purple.Presence] for this contact. This is typically |
523 * The [class@Purple.Presence] for this contact. This is typically |
| 508 * controlled by the protocol and should only be read by others. |
524 * controlled by the protocol and should only be read by others. |
| 509 * |
525 * |
| 956 priv = purple_contact_info_get_instance_private(info); |
972 priv = purple_contact_info_get_instance_private(info); |
| 957 |
973 |
| 958 return priv->avatar; |
974 return priv->avatar; |
| 959 } |
975 } |
| 960 |
976 |
| |
977 PurpleImage * |
| |
978 purple_contact_info_get_avatar_for_display(PurpleContactInfo *info) { |
| |
979 PurpleContactInfoPrivate *priv = NULL; |
| |
980 PurpleImage *candidate = NULL; |
| |
981 |
| |
982 g_return_val_if_fail(PURPLE_IS_CONTACT_INFO(info), NULL); |
| |
983 |
| |
984 priv = purple_contact_info_get_instance_private(info); |
| |
985 |
| |
986 if(PURPLE_IS_PERSON(priv->person)) { |
| |
987 candidate = purple_person_get_avatar_for_display(priv->person); |
| |
988 } |
| |
989 |
| |
990 if(!PURPLE_IS_IMAGE(candidate)) { |
| |
991 candidate = priv->avatar; |
| |
992 } |
| |
993 |
| |
994 return candidate; |
| |
995 } |
| |
996 |
| 961 void |
997 void |
| 962 purple_contact_info_set_avatar(PurpleContactInfo *info, PurpleImage *avatar) { |
998 purple_contact_info_set_avatar(PurpleContactInfo *info, PurpleImage *avatar) { |
| 963 PurpleContactInfoPrivate *priv = NULL; |
999 PurpleContactInfoPrivate *priv = NULL; |
| 964 |
1000 |
| 965 g_return_if_fail(PURPLE_IS_CONTACT_INFO(info)); |
1001 g_return_if_fail(PURPLE_IS_CONTACT_INFO(info)); |
| 966 |
1002 |
| 967 priv = purple_contact_info_get_instance_private(info); |
1003 priv = purple_contact_info_get_instance_private(info); |
| 968 |
1004 |
| 969 if(g_set_object(&priv->avatar, avatar)) { |
1005 if(g_set_object(&priv->avatar, avatar)) { |
| 970 g_object_notify_by_pspec(G_OBJECT(info), properties[PROP_AVATAR]); |
1006 GObject *obj = G_OBJECT(info); |
| |
1007 |
| |
1008 g_object_freeze_notify(obj); |
| |
1009 g_object_notify_by_pspec(obj, properties[PROP_AVATAR]); |
| |
1010 g_object_notify_by_pspec(obj, properties[PROP_AVATAR_FOR_DISPLAY]); |
| |
1011 g_object_thaw_notify(obj); |
| 971 } |
1012 } |
| 972 } |
1013 } |
| 973 |
1014 |
| 974 PurplePresence * |
1015 PurplePresence * |
| 975 purple_contact_info_get_presence(PurpleContactInfo *info) { |
1016 purple_contact_info_get_presence(PurpleContactInfo *info) { |
| 1015 * name-for-display property. |
1056 * name-for-display property. |
| 1016 */ |
1057 */ |
| 1017 g_object_freeze_notify(G_OBJECT(info)); |
1058 g_object_freeze_notify(G_OBJECT(info)); |
| 1018 |
1059 |
| 1019 g_object_notify_by_pspec(G_OBJECT(info), properties[PROP_PERSON]); |
1060 g_object_notify_by_pspec(G_OBJECT(info), properties[PROP_PERSON]); |
| |
1061 g_object_notify_by_pspec(G_OBJECT(info), |
| |
1062 properties[PROP_AVATAR_FOR_DISPLAY]); |
| 1020 |
1063 |
| 1021 /* Update the name-for-display property */ |
1064 /* Update the name-for-display property */ |
| 1022 purple_contact_info_update_name_for_display(info); |
1065 purple_contact_info_update_name_for_display(info); |
| 1023 |
1066 |
| 1024 g_object_thaw_notify(G_OBJECT(info)); |
1067 g_object_thaw_notify(G_OBJECT(info)); |