# HG changeset patch # User Gary Kramlich # Date 1732258199 21600 # Node ID d6d76c53fc9596ac1d8d4350b37ddec9c1fc96a3 # Parent 54cb1cfca9ae49e7202d6fbe0d941cab109f5703 Add badges to the demo protocol plugin We should probably resize these at some point, but I figured it is better to start with a higher resolution. Testing Done: Called in the turtles as we don't have anything to display these yet. Bugs closed: PIDGIN-17931 Reviewed at https://reviews.imfreedom.org/r/3669/ diff -r 54cb1cfca9ae -r d6d76c53fc95 protocols/demo/purpledemoprotocolconversation.c --- 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); diff -r 54cb1cfca9ae -r d6d76c53fc95 protocols/demo/resources/contacts.json --- a/protocols/demo/resources/contacts.json Fri Nov 22 00:21:51 2024 -0600 +++ b/protocols/demo/resources/contacts.json Fri Nov 22 00:49:59 2024 -0600 @@ -11,6 +11,7 @@ }, "username": "Gary", "tags": [ + "demo-badge:lead-developer", "group:Family" ], "profile": "Pidgin 3 will be ready when it is ready! 🗿" @@ -24,6 +25,7 @@ "primitive": "away" }, "tags": [ + "demo-badge:developer", "group:Friends" ], "username": "John", @@ -38,6 +40,7 @@ "message": "Coding..." }, "tags": [ + "demo-badge:developer", "group:Work" ], "username": "Elliott" @@ -50,6 +53,7 @@ "primitive": "available" }, "tags": [ + "demo-badge:developer", "group:Work" ], "username": "Richard" @@ -63,6 +67,7 @@ "message": "Writing crazy patches!" }, "tags": [ + "demo-badge:crazy-patch-writer", "group:School" ], "username": "Eion" @@ -76,6 +81,7 @@ "message": "Running all the things in valgrind..." }, "tags": [ + "demo-badge:crazy-patch-writer", "group:School" ], "username": "Markus" diff -r 54cb1cfca9ae -r d6d76c53fc95 protocols/demo/resources/icons/128x128/badges/demo-badge-crazy-patch-writer.png Binary file protocols/demo/resources/icons/128x128/badges/demo-badge-crazy-patch-writer.png has changed diff -r 54cb1cfca9ae -r d6d76c53fc95 protocols/demo/resources/icons/128x128/badges/demo-badge-developer.png Binary file protocols/demo/resources/icons/128x128/badges/demo-badge-developer.png has changed diff -r 54cb1cfca9ae -r d6d76c53fc95 protocols/demo/resources/icons/128x128/badges/demo-badge-lead-developer.png Binary file protocols/demo/resources/icons/128x128/badges/demo-badge-lead-developer.png has changed diff -r 54cb1cfca9ae -r d6d76c53fc95 protocols/demo/resources/purpledemo.gresource.xml --- a/protocols/demo/resources/purpledemo.gresource.xml Fri Nov 22 00:21:51 2024 -0600 +++ b/protocols/demo/resources/purpledemo.gresource.xml Fri Nov 22 00:49:59 2024 -0600 @@ -2,6 +2,9 @@ contacts.json + icons/128x128/badges/demo-badge-crazy-patch-writer.png + icons/128x128/badges/demo-badge-developer.png + icons/128x128/badges/demo-badge-lead-developer.png icons/16x16/apps/im-purple-demo.png icons/22x22/apps/im-purple-demo.png icons/48x48/apps/im-purple-demo.png