protocols/demo/purpledemoprotocolconversation.c

changeset 43078
d6d76c53fc95
parent 43066
850400fb36c0
child 43100
e6df74d36862
--- a/protocols/demo/purpledemoprotocolconversation.c	Fri Nov 22 00:21:51 2024 -0600
+++ b/protocols/demo/purpledemoprotocolconversation.c	Fri Nov 22 00:49:59 2024 -0600
@@ -151,11 +151,43 @@
 
 	for(guint i = 0; i < g_list_model_get_n_items(participants); i++) {
 		PurpleContactInfo *info = NULL;
+		PurpleConversationMember *member = NULL;
 		PurpleConversationMembers *members = NULL;
+		PurpleTags *tags = NULL;
+		const char *badge_id = NULL;
 
 		info = g_list_model_get_item(participants, i);
 		members = purple_conversation_get_members(conversation);
-		purple_conversation_members_add_member(members, info, FALSE, NULL);
+		member = purple_conversation_members_add_member(members, info, FALSE,
+		                                                NULL);
+
+		tags = purple_contact_info_get_tags(info);
+		badge_id = purple_tags_get(tags, "demo-badge");
+		if(!purple_strempty(badge_id)) {
+			PurpleBadge *badge = NULL;
+			PurpleBadgeManager *manager = NULL;
+			PurpleBadges *badges = NULL;
+
+			manager = purple_badge_manager_get_default();
+			badge = purple_badge_manager_find(manager, badge_id);
+			if(!PURPLE_IS_BADGE(badge)) {
+				char *icon_name = NULL;
+				char *id = NULL;
+
+				id = g_strdup_printf("demo-badge-%s", badge_id);
+				icon_name = g_strdup_printf("demo-badge-%s", badge_id);
+				badge = purple_badge_new(id, 0, icon_name, " ");
+				g_free(id);
+				g_free(icon_name);
+
+				purple_badge_manager_add(manager, badge);
+			}
+
+			badges = purple_conversation_member_get_badges(member);
+			purple_badges_add_badge(badges, badge);
+			g_clear_object(&badge);
+		}
+
 		g_clear_object(&info);
 	}
 	g_clear_object(&details);

mercurial