Mercurial > pidgin
comparison src/blist.c @ 13867:a092ea4edd4e
[gaim-migrate @ 16333]
Patch #1511180: Buddy list ui_ops fix
I had a hard time figuring out why things were not
working even after I set the blist-uiops using
gaim_blist_set_ui_ops. This patch is a fix for it.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sat, 24 Jun 2006 22:25:22 +0000 |
parents | 8f299b9cd184 |
children | 085b15c33ca4 |
comparison
equal
deleted
inserted
replaced
13866:cf6f32628f8f | 13867:a092ea4edd4e |
---|---|
653 * Public API functions * | 653 * Public API functions * |
654 *****************************************************************************/ | 654 *****************************************************************************/ |
655 | 655 |
656 GaimBuddyList *gaim_blist_new() | 656 GaimBuddyList *gaim_blist_new() |
657 { | 657 { |
658 GaimBlistUiOps *ui_ops; | |
658 GaimBuddyList *gbl = g_new0(GaimBuddyList, 1); | 659 GaimBuddyList *gbl = g_new0(GaimBuddyList, 1); |
659 GAIM_DBUS_REGISTER_POINTER(gbl, GaimBuddyList); | 660 GAIM_DBUS_REGISTER_POINTER(gbl, GaimBuddyList); |
660 | 661 |
661 gbl->ui_ops = gaim_blist_get_ui_ops(); | 662 ui_ops = gaim_blist_get_ui_ops(); |
662 | 663 |
663 gbl->buddies = g_hash_table_new_full((GHashFunc)_gaim_blist_hbuddy_hash, | 664 gbl->buddies = g_hash_table_new_full((GHashFunc)_gaim_blist_hbuddy_hash, |
664 (GEqualFunc)_gaim_blist_hbuddy_equal, | 665 (GEqualFunc)_gaim_blist_hbuddy_equal, |
665 (GDestroyNotify)_gaim_blist_hbuddy_free_key, NULL); | 666 (GDestroyNotify)_gaim_blist_hbuddy_free_key, NULL); |
666 | 667 |
667 if (gbl->ui_ops != NULL && gbl->ui_ops->new_list != NULL) | 668 if (ui_ops != NULL && ui_ops->new_list != NULL) |
668 gbl->ui_ops->new_list(gbl); | 669 ui_ops->new_list(gbl); |
669 | 670 |
670 return gbl; | 671 return gbl; |
671 } | 672 } |
672 | 673 |
673 void | 674 void |
688 return gaimbuddylist ? gaimbuddylist->root : NULL; | 689 return gaimbuddylist ? gaimbuddylist->root : NULL; |
689 } | 690 } |
690 | 691 |
691 void gaim_blist_show() | 692 void gaim_blist_show() |
692 { | 693 { |
693 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 694 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
694 | 695 |
695 if (ops && ops->show) | 696 if (ops && ops->show) |
696 ops->show(gaimbuddylist); | 697 ops->show(gaimbuddylist); |
697 } | 698 } |
698 | 699 |
699 void gaim_blist_destroy() | 700 void gaim_blist_destroy() |
700 { | 701 { |
701 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 702 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
702 | 703 |
703 gaim_debug(GAIM_DEBUG_INFO, "blist", "Destroying\n"); | 704 gaim_debug(GAIM_DEBUG_INFO, "blist", "Destroying\n"); |
704 | 705 |
705 if (ops && ops->destroy) | 706 if (ops && ops->destroy) |
706 ops->destroy(gaimbuddylist); | 707 ops->destroy(gaimbuddylist); |
707 } | 708 } |
708 | 709 |
709 void gaim_blist_set_visible(gboolean show) | 710 void gaim_blist_set_visible(gboolean show) |
710 { | 711 { |
711 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 712 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
712 | 713 |
713 if (ops && ops->set_visible) | 714 if (ops && ops->set_visible) |
714 ops->set_visible(gaimbuddylist, show); | 715 ops->set_visible(gaimbuddylist, show); |
715 } | 716 } |
716 | 717 |
742 } | 743 } |
743 | 744 |
744 void | 745 void |
745 gaim_blist_update_buddy_status(GaimBuddy *buddy, GaimStatus *old_status) | 746 gaim_blist_update_buddy_status(GaimBuddy *buddy, GaimStatus *old_status) |
746 { | 747 { |
747 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 748 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
748 GaimPresence *presence; | 749 GaimPresence *presence; |
749 GaimStatus *status; | 750 GaimStatus *status; |
750 | 751 |
751 g_return_if_fail(buddy != NULL); | 752 g_return_if_fail(buddy != NULL); |
752 | 753 |
792 ops->update(gaimbuddylist, (GaimBlistNode *)buddy); | 793 ops->update(gaimbuddylist, (GaimBlistNode *)buddy); |
793 } | 794 } |
794 | 795 |
795 void gaim_blist_update_buddy_icon(GaimBuddy *buddy) | 796 void gaim_blist_update_buddy_icon(GaimBuddy *buddy) |
796 { | 797 { |
797 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 798 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
798 | 799 |
799 g_return_if_fail(buddy != NULL); | 800 g_return_if_fail(buddy != NULL); |
800 | 801 |
801 if (ops && ops->update) | 802 if (ops && ops->update) |
802 ops->update(gaimbuddylist, (GaimBlistNode *)buddy); | 803 ops->update(gaimbuddylist, (GaimBlistNode *)buddy); |
806 * TODO: Maybe remove the call to this from server.c and call it | 807 * TODO: Maybe remove the call to this from server.c and call it |
807 * from oscar.c and toc.c instead? | 808 * from oscar.c and toc.c instead? |
808 */ | 809 */ |
809 void gaim_blist_rename_buddy(GaimBuddy *buddy, const char *name) | 810 void gaim_blist_rename_buddy(GaimBuddy *buddy, const char *name) |
810 { | 811 { |
811 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 812 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
812 struct _gaim_hbuddy *hb; | 813 struct _gaim_hbuddy *hb; |
813 | 814 |
814 g_return_if_fail(buddy != NULL); | 815 g_return_if_fail(buddy != NULL); |
815 | 816 |
816 hb = g_new(struct _gaim_hbuddy, 1); | 817 hb = g_new(struct _gaim_hbuddy, 1); |
832 ops->update(gaimbuddylist, (GaimBlistNode *)buddy); | 833 ops->update(gaimbuddylist, (GaimBlistNode *)buddy); |
833 } | 834 } |
834 | 835 |
835 void gaim_blist_alias_contact(GaimContact *contact, const char *alias) | 836 void gaim_blist_alias_contact(GaimContact *contact, const char *alias) |
836 { | 837 { |
837 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 838 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
838 GaimConversation *conv; | 839 GaimConversation *conv; |
839 char *old_alias = contact->alias; | 840 char *old_alias = contact->alias; |
840 GaimBlistNode *bnode; | 841 GaimBlistNode *bnode; |
841 | 842 |
842 g_return_if_fail(contact != NULL); | 843 g_return_if_fail(contact != NULL); |
866 g_free(old_alias); | 867 g_free(old_alias); |
867 } | 868 } |
868 | 869 |
869 void gaim_blist_alias_chat(GaimChat *chat, const char *alias) | 870 void gaim_blist_alias_chat(GaimChat *chat, const char *alias) |
870 { | 871 { |
871 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 872 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
872 char *old_alias = chat->alias; | 873 char *old_alias = chat->alias; |
873 | 874 |
874 g_return_if_fail(chat != NULL); | 875 g_return_if_fail(chat != NULL); |
875 | 876 |
876 if ((alias != NULL) && (*alias != '\0')) | 877 if ((alias != NULL) && (*alias != '\0')) |
888 g_free(old_alias); | 889 g_free(old_alias); |
889 } | 890 } |
890 | 891 |
891 void gaim_blist_alias_buddy(GaimBuddy *buddy, const char *alias) | 892 void gaim_blist_alias_buddy(GaimBuddy *buddy, const char *alias) |
892 { | 893 { |
893 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 894 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
894 GaimConversation *conv; | 895 GaimConversation *conv; |
895 char *old_alias = buddy->alias; | 896 char *old_alias = buddy->alias; |
896 | 897 |
897 g_return_if_fail(buddy != NULL); | 898 g_return_if_fail(buddy != NULL); |
898 | 899 |
916 g_free(old_alias); | 917 g_free(old_alias); |
917 } | 918 } |
918 | 919 |
919 void gaim_blist_server_alias_buddy(GaimBuddy *buddy, const char *alias) | 920 void gaim_blist_server_alias_buddy(GaimBuddy *buddy, const char *alias) |
920 { | 921 { |
921 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 922 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
922 GaimConversation *conv; | 923 GaimConversation *conv; |
923 char *old_alias = buddy->server_alias; | 924 char *old_alias = buddy->server_alias; |
924 | 925 |
925 g_return_if_fail(buddy != NULL); | 926 g_return_if_fail(buddy != NULL); |
926 | 927 |
947 /* | 948 /* |
948 * TODO: If merging, prompt the user if they want to merge. | 949 * TODO: If merging, prompt the user if they want to merge. |
949 */ | 950 */ |
950 void gaim_blist_rename_group(GaimGroup *source, const char *new_name) | 951 void gaim_blist_rename_group(GaimGroup *source, const char *new_name) |
951 { | 952 { |
952 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 953 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
953 GaimGroup *dest; | 954 GaimGroup *dest; |
954 gchar *old_name; | 955 gchar *old_name; |
955 GList *moved_buddies = NULL; | 956 GList *moved_buddies = NULL; |
956 GSList *accts; | 957 GSList *accts; |
957 | 958 |
1069 | 1070 |
1070 static void gaim_blist_node_initialize_settings(GaimBlistNode *node); | 1071 static void gaim_blist_node_initialize_settings(GaimBlistNode *node); |
1071 | 1072 |
1072 GaimChat *gaim_chat_new(GaimAccount *account, const char *alias, GHashTable *components) | 1073 GaimChat *gaim_chat_new(GaimAccount *account, const char *alias, GHashTable *components) |
1073 { | 1074 { |
1074 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1075 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1075 GaimChat *chat; | 1076 GaimChat *chat; |
1076 | 1077 |
1077 g_return_val_if_fail(account != NULL, FALSE); | 1078 g_return_val_if_fail(account != NULL, FALSE); |
1078 g_return_val_if_fail(components != NULL, FALSE); | 1079 g_return_val_if_fail(components != NULL, FALSE); |
1079 | 1080 |
1092 return chat; | 1093 return chat; |
1093 } | 1094 } |
1094 | 1095 |
1095 GaimBuddy *gaim_buddy_new(GaimAccount *account, const char *screenname, const char *alias) | 1096 GaimBuddy *gaim_buddy_new(GaimAccount *account, const char *screenname, const char *alias) |
1096 { | 1097 { |
1097 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1098 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1098 GaimBuddy *buddy; | 1099 GaimBuddy *buddy; |
1099 | 1100 |
1100 g_return_val_if_fail(account != NULL, FALSE); | 1101 g_return_val_if_fail(account != NULL, FALSE); |
1101 g_return_val_if_fail(screenname != NULL, FALSE); | 1102 g_return_val_if_fail(screenname != NULL, FALSE); |
1102 | 1103 |
1167 } | 1168 } |
1168 | 1169 |
1169 void gaim_blist_add_chat(GaimChat *chat, GaimGroup *group, GaimBlistNode *node) | 1170 void gaim_blist_add_chat(GaimChat *chat, GaimGroup *group, GaimBlistNode *node) |
1170 { | 1171 { |
1171 GaimBlistNode *cnode = (GaimBlistNode*)chat; | 1172 GaimBlistNode *cnode = (GaimBlistNode*)chat; |
1172 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1173 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1173 | 1174 |
1174 g_return_if_fail(chat != NULL); | 1175 g_return_if_fail(chat != NULL); |
1175 g_return_if_fail(GAIM_BLIST_NODE_IS_CHAT((GaimBlistNode *)chat)); | 1176 g_return_if_fail(GAIM_BLIST_NODE_IS_CHAT((GaimBlistNode *)chat)); |
1176 | 1177 |
1177 if (node == NULL) { | 1178 if (node == NULL) { |
1249 void gaim_blist_add_buddy(GaimBuddy *buddy, GaimContact *contact, GaimGroup *group, GaimBlistNode *node) | 1250 void gaim_blist_add_buddy(GaimBuddy *buddy, GaimContact *contact, GaimGroup *group, GaimBlistNode *node) |
1250 { | 1251 { |
1251 GaimBlistNode *cnode, *bnode; | 1252 GaimBlistNode *cnode, *bnode; |
1252 GaimGroup *g; | 1253 GaimGroup *g; |
1253 GaimContact *c; | 1254 GaimContact *c; |
1254 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1255 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1255 struct _gaim_hbuddy *hb; | 1256 struct _gaim_hbuddy *hb; |
1256 | 1257 |
1257 g_return_if_fail(buddy != NULL); | 1258 g_return_if_fail(buddy != NULL); |
1258 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY((GaimBlistNode*)buddy)); | 1259 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY((GaimBlistNode*)buddy)); |
1259 | 1260 |
1398 return contact; | 1399 return contact; |
1399 } | 1400 } |
1400 | 1401 |
1401 void gaim_contact_set_alias(GaimContact *contact, const char *alias) | 1402 void gaim_contact_set_alias(GaimContact *contact, const char *alias) |
1402 { | 1403 { |
1403 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1404 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1404 char *old_alias = contact->alias; | 1405 char *old_alias = contact->alias; |
1405 | 1406 |
1406 g_return_if_fail(contact != NULL); | 1407 g_return_if_fail(contact != NULL); |
1407 | 1408 |
1408 if ((alias != NULL) && (*alias != '\0')) | 1409 if ((alias != NULL) && (*alias != '\0')) |
1484 return group; | 1485 return group; |
1485 } | 1486 } |
1486 | 1487 |
1487 void gaim_blist_add_contact(GaimContact *contact, GaimGroup *group, GaimBlistNode *node) | 1488 void gaim_blist_add_contact(GaimContact *contact, GaimGroup *group, GaimBlistNode *node) |
1488 { | 1489 { |
1489 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1490 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1490 GaimGroup *g; | 1491 GaimGroup *g; |
1491 GaimBlistNode *gnode, *cnode, *bnode; | 1492 GaimBlistNode *gnode, *cnode, *bnode; |
1492 | 1493 |
1493 g_return_if_fail(contact != NULL); | 1494 g_return_if_fail(contact != NULL); |
1494 g_return_if_fail(GAIM_BLIST_NODE_IS_CONTACT((GaimBlistNode*)contact)); | 1495 g_return_if_fail(GAIM_BLIST_NODE_IS_CONTACT((GaimBlistNode*)contact)); |
1650 GaimBlistNode *gnode = (GaimBlistNode*)group; | 1651 GaimBlistNode *gnode = (GaimBlistNode*)group; |
1651 | 1652 |
1652 g_return_if_fail(group != NULL); | 1653 g_return_if_fail(group != NULL); |
1653 g_return_if_fail(GAIM_BLIST_NODE_IS_GROUP((GaimBlistNode *)group)); | 1654 g_return_if_fail(GAIM_BLIST_NODE_IS_GROUP((GaimBlistNode *)group)); |
1654 | 1655 |
1655 ops = gaimbuddylist->ui_ops; | 1656 ops = gaim_blist_get_ui_ops(); |
1656 | 1657 |
1657 if (!gaimbuddylist->root) { | 1658 if (!gaimbuddylist->root) { |
1658 gaimbuddylist->root = gnode; | 1659 gaimbuddylist->root = gnode; |
1659 return; | 1660 return; |
1660 } | 1661 } |
1700 } | 1701 } |
1701 } | 1702 } |
1702 | 1703 |
1703 void gaim_blist_remove_contact(GaimContact *contact) | 1704 void gaim_blist_remove_contact(GaimContact *contact) |
1704 { | 1705 { |
1705 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1706 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1706 GaimBlistNode *node, *gnode; | 1707 GaimBlistNode *node, *gnode; |
1707 | 1708 |
1708 g_return_if_fail(contact != NULL); | 1709 g_return_if_fail(contact != NULL); |
1709 | 1710 |
1710 node = (GaimBlistNode *)contact; | 1711 node = (GaimBlistNode *)contact; |
1747 } | 1748 } |
1748 } | 1749 } |
1749 | 1750 |
1750 void gaim_blist_remove_buddy(GaimBuddy *buddy) | 1751 void gaim_blist_remove_buddy(GaimBuddy *buddy) |
1751 { | 1752 { |
1752 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1753 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1753 GaimBlistNode *node, *cnode, *gnode; | 1754 GaimBlistNode *node, *cnode, *gnode; |
1754 GaimContact *contact; | 1755 GaimContact *contact; |
1755 GaimGroup *group; | 1756 GaimGroup *group; |
1756 struct _gaim_hbuddy hb; | 1757 struct _gaim_hbuddy hb; |
1757 | 1758 |
1835 gaim_blist_remove_contact(contact); | 1836 gaim_blist_remove_contact(contact); |
1836 } | 1837 } |
1837 | 1838 |
1838 void gaim_blist_remove_chat(GaimChat *chat) | 1839 void gaim_blist_remove_chat(GaimChat *chat) |
1839 { | 1840 { |
1840 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1841 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1841 GaimBlistNode *node, *gnode; | 1842 GaimBlistNode *node, *gnode; |
1842 GaimGroup *group; | 1843 GaimGroup *group; |
1843 | 1844 |
1844 g_return_if_fail(chat != NULL); | 1845 g_return_if_fail(chat != NULL); |
1845 | 1846 |
1879 g_free(chat); | 1880 g_free(chat); |
1880 } | 1881 } |
1881 | 1882 |
1882 void gaim_blist_remove_group(GaimGroup *group) | 1883 void gaim_blist_remove_group(GaimGroup *group) |
1883 { | 1884 { |
1884 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 1885 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
1885 GaimBlistNode *node; | 1886 GaimBlistNode *node; |
1886 GList *l; | 1887 GList *l; |
1887 | 1888 |
1888 g_return_if_fail(group != NULL); | 1889 g_return_if_fail(group != NULL); |
1889 | 1890 |
2242 return l; | 2243 return l; |
2243 } | 2244 } |
2244 | 2245 |
2245 void gaim_blist_add_account(GaimAccount *account) | 2246 void gaim_blist_add_account(GaimAccount *account) |
2246 { | 2247 { |
2247 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 2248 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
2248 GaimBlistNode *gnode, *cnode, *bnode; | 2249 GaimBlistNode *gnode, *cnode, *bnode; |
2249 | 2250 |
2250 g_return_if_fail(gaimbuddylist != NULL); | 2251 g_return_if_fail(gaimbuddylist != NULL); |
2251 | 2252 |
2252 if (!ops || !ops->update) | 2253 if (!ops || !ops->update) |
2284 } | 2285 } |
2285 } | 2286 } |
2286 | 2287 |
2287 void gaim_blist_remove_account(GaimAccount *account) | 2288 void gaim_blist_remove_account(GaimAccount *account) |
2288 { | 2289 { |
2289 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; | 2290 GaimBlistUiOps *ops = gaim_blist_get_ui_ops(); |
2290 GaimBlistNode *gnode, *cnode, *bnode; | 2291 GaimBlistNode *gnode, *cnode, *bnode; |
2291 GaimBuddy *buddy; | 2292 GaimBuddy *buddy; |
2292 GaimChat *chat; | 2293 GaimChat *chat; |
2293 GaimContact *contact; | 2294 GaimContact *contact; |
2294 GaimGroup *group; | 2295 GaimGroup *group; |