--- a/libpurple/buddylist.h Mon Jul 15 16:48:29 2019 -0400 +++ b/libpurple/buddylist.h Tue Jul 16 03:34:30 2019 +0000 @@ -139,25 +139,27 @@ struct _PurpleBlistUiOps { void (*new_list)(PurpleBuddyList *list); - void (*new_node)(PurpleBlistNode *node); + void (*new_node)(PurpleBuddyList *list, PurpleBlistNode *node); void (*show)(PurpleBuddyList *list); void (*update)(PurpleBuddyList *list, PurpleBlistNode *node); void (*remove)(PurpleBuddyList *list, PurpleBlistNode *node); void (*destroy)(PurpleBuddyList *list); void (*set_visible)(PurpleBuddyList *list, gboolean show); - void (*request_add_buddy)(PurpleAccount *account, const char *username, - const char *group, const char *alias); - - void (*request_add_chat)(PurpleAccount *account, PurpleGroup *group, - const char *alias, const char *name); + void (*request_add_buddy)(PurpleBuddyList *list, PurpleAccount *account, + const char *username, const char *group, + const char *alias); - void (*request_add_group)(void); + void (*request_add_chat)(PurpleBuddyList *list, PurpleAccount *account, + PurpleGroup *group, const char *alias, + const char *name); - void (*save_node)(PurpleBlistNode *node); - void (*remove_node)(PurpleBlistNode *node); + void (*request_add_group)(PurpleBuddyList *list); - void (*save_account)(PurpleAccount *account); + void (*save_node)(PurpleBuddyList *list, PurpleBlistNode *node); + void (*remove_node)(PurpleBuddyList *list, PurpleBlistNode *node); + + void (*save_account)(PurpleBuddyList *list, PurpleAccount *account); /*< private >*/ void (*_purple_reserved1)(void); @@ -523,6 +525,64 @@ void purple_blist_request_add_group(void); /**************************************************************************/ +/* Buddy list UI Functions */ +/**************************************************************************/ + +/** + * purple_blist_new_node: + * @list: The list that contains the node. + * @node: The node to initialize. + * + * Sets UI-specific data on a node. + * + * This should usually only be run when initializing a @PurpleBlistNode + * instance. + * + * Since: 3.0.0 + */ +void purple_blist_new_node(PurpleBuddyList *list, PurpleBlistNode *node); + +/** + * purple_blist_update_node: + * @list: The buddy list to modify. + * @node: The node to update. + * + * Update a node in the buddy list in the UI. + * + * Since: 3.0.0 + */ +void purple_blist_update_node(PurpleBuddyList *list, PurpleBlistNode *node); + +/** + * purple_blist_save_node: + * @list: The list that contains the node. + * @node: The node which has been modified. + * + * This is called when a node has been modified and should be saved by the UI. + * + * If the UI does not implement a more specific method, it will be set to save + * data to <filename>blist.xml</filename> like in previous libpurple versions. + * + * Since: 3.0.0 + */ +void purple_blist_save_node(PurpleBuddyList *list, PurpleBlistNode *node); + +/** + * purple_blist_save_account: + * @list: The list that contains the account. + * @account: The account whose data to save. If %NULL, save all data for all + * accounts. + * + * Save all the data for an account. + * + * If the UI does not set a more specific method, it will be set to save data + * to <filename>blist.xml</filename> like in previous libpurple versions. + * + * Since: 3.0.0 + */ +void purple_blist_save_account(PurpleBuddyList *list, PurpleAccount *account); + +/**************************************************************************/ /* UI Registration Functions */ /**************************************************************************/