Mon, 08 Jul 2013 14:41:14 +0530
GObjectified PurpleChat.
* Added purple_chat_set_alias()
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1 | /* |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
2 | * purple |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
3 | * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
4 | * Purple is the legal property of its developers, whose names are too numerous |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
6 | * source distribution. |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
7 | * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
8 | * This program is free software; you can redistribute it and/or modify |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
9 | * it under the terms of the GNU General Public License as published by |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
10 | * the Free Software Foundation; either version 2 of the License, or |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
11 | * (at your option) any later version. |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
12 | * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
13 | * This program is distributed in the hope that it will be useful, |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
16 | * GNU General Public License for more details. |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
17 | * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
18 | * You should have received a copy of the GNU General Public License |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
19 | * along with this program; if not, write to the Free Software |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
21 | * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
22 | */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
23 | #include "blistnodetypes.h" |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
24 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
25 | #define PURPLE_BUDDY_GET_PRIVATE(obj) \ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
26 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_BUDDY, PurpleBuddyPrivate)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
27 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
28 | /** @copydoc _PurpleBuddyPrivate */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
29 | typedef struct _PurpleBuddyPrivate PurpleBuddyPrivate; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
30 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
31 | #define PURPLE_CONTACT_GET_PRIVATE(obj) \ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
32 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_CONTACT, PurpleContactPrivate)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
33 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
34 | /** @copydoc _PurpleContactPrivate */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
35 | typedef struct _PurpleContactPrivate PurpleContactPrivate; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
36 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
37 | #define PURPLE_GROUP_GET_PRIVATE(obj) \ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
38 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_GROUP, PurpleGroupPrivate)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
39 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
40 | /** @copydoc _PurpleGroupPrivate */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
41 | typedef struct _PurpleGroupPrivate PurpleGroupPrivate; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
42 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
43 | #define PURPLE_CHAT_GET_PRIVATE(obj) \ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
44 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_CHAT, PurpleChatPrivate)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
45 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
46 | /** @copydoc _PurpleChatPrivate */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
47 | typedef struct _PurpleChatPrivate PurpleChatPrivate; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
48 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
49 | /**************************************************************************/ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
50 | /* Private data */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
51 | /**************************************************************************/ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
52 | /** Private data for a buddy. */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
53 | struct _PurpleBuddyPrivate { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
54 | char *name; /**< The name of the buddy. */ |
| 34714 | 55 | char *local_alias; /**< The user-set alias of the buddy */ |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
56 | char *server_alias; /**< The server-specified alias of the buddy. |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
57 | (i.e. MSN "Friendly Names") */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
58 | void *proto_data; /**< TODO remove - use protocol subclasses |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
59 | This allows the prpl to associate |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
60 | whatever data it wants with a buddy */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
61 | PurpleBuddyIcon *icon; /**< The buddy icon. */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
62 | PurpleAccount *account; /**< the account this buddy belongs to */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
63 | PurplePresence *presence; /**< Presense information of the buddy */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
64 | PurpleMediaCaps media_caps; /**< The media capabilities of the buddy. */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
65 | }; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
66 | |
| 34714 | 67 | /* Buddy property enums */ |
| 68 | enum | |
| 69 | { | |
| 70 | BUDDY_PROP_0, | |
| 71 | BUDDY_PROP_NAME, | |
| 72 | BUDDY_PROP_LOCAL_ALIAS, | |
| 73 | BUDDY_PROP_SERVER_ALIAS, | |
| 74 | BUDDY_PROP_ICON, | |
| 75 | BUDDY_PROP_ACCOUNT, | |
| 76 | BUDDY_PROP_PRESENCE, | |
| 77 | BUDDY_PROP_MEDIA_CAPS, | |
| 78 | BUDDY_PROP_LAST | |
| 79 | }; | |
| 80 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
81 | /** Private data for a contact TODO: move counts to PurpleCountingNode */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
82 | struct _PurpleContactPrivate { |
| 34718 | 83 | char *alias; /**< The user-set alias of the contact */ |
| 84 | int totalsize; /**< The number of buddies in this contact */ | |
| 85 | int currentsize; /**< The number of buddies in this contact | |
| 86 | corresponding to online accounts */ | |
| 87 | int onlinecount; /**< The number of buddies in this contact | |
| 88 | who are currently online */ | |
| 89 | PurpleBuddy *priority_buddy; /**< The "top" buddy for this contact */ | |
| 90 | gboolean priority_valid; /**< Is priority valid? */ | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
91 | }; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
92 | |
| 34714 | 93 | /* Contact property enums */ |
| 94 | enum | |
| 95 | { | |
| 96 | CONTACT_PROP_0, | |
| 97 | CONTACT_PROP_ALIAS, | |
| 98 | CONTACT_PROP_PRIORITY_BUDDY, | |
| 99 | CONTACT_PROP_LAST | |
| 100 | }; | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
101 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
102 | /** Private data for a group TODO: move counts to PurpleCountingNode */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
103 | struct _PurpleGroupPrivate { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
104 | char *name; /**< The name of this group. */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
105 | int totalsize; /**< The number of chats and contacts in this group */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
106 | int currentsize; /**< The number of chats and contacts in this group |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
107 | corresponding to online accounts */ |
| 34718 | 108 | int onlinecount; /**< The number of chats and contacts in this group who |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
109 | are currently online */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
110 | }; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
111 | |
| 34714 | 112 | /* Group property enums */ |
| 113 | enum | |
| 114 | { | |
| 115 | GROUP_PROP_0, | |
| 116 | GROUP_PROP_NAME, | |
| 117 | GROUP_PROP_LAST | |
| 118 | }; | |
| 119 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
120 | /** Private data for a chat node */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
121 | struct _PurpleChatPrivate { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
122 | char *alias; /**< The display name of this chat. */ |
| 34719 | 123 | PurpleAccount *account; /**< The account this chat is attached to */ |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
124 | GHashTable *components; /**< the stuff the protocol needs to know to join |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
125 | the chat */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
126 | }; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
127 | |
| 34714 | 128 | /* Chat property enums */ |
| 129 | enum | |
| 130 | { | |
| 131 | CHAT_PROP_0, | |
| 132 | CHAT_PROP_ALIAS, | |
| 133 | CHAT_PROP_ACCOUNT, | |
| 34719 | 134 | CHAT_PROP_COMPONENTS, |
| 34714 | 135 | CHAT_PROP_LAST |
| 136 | }; | |
| 137 | ||
| 138 | static PurpleBListNode *parent_class; | |
| 139 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
140 | /**************************************************************************/ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
141 | /* Buddy API */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
142 | /**************************************************************************/ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
143 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
144 | void |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
145 | purple_buddy_set_icon(PurpleBuddy *buddy, PurpleBuddyIcon *icon) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
146 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
147 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
148 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
149 | g_return_if_fail(priv != NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
150 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
151 | if (priv->icon != icon) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
152 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
153 | purple_buddy_icon_unref(priv->icon); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
154 | priv->icon = (icon != NULL ? purple_buddy_icon_ref(icon) : NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
155 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
156 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
157 | purple_signal_emit(purple_blist_get_handle(), "buddy-icon-changed", buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
158 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
159 | purple_blist_update_node_icon(PURPLE_BLIST_NODE(buddy)); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
160 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
161 | |
| 34714 | 162 | PurpleBuddyIcon * |
| 163 | purple_buddy_get_icon(const PurpleBuddy *buddy) | |
| 164 | { | |
| 165 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); | |
| 166 | ||
| 167 | g_return_val_if_fail(priv != NULL, NULL); | |
| 168 | ||
| 169 | return priv->icon; | |
| 170 | } | |
| 171 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
172 | PurpleAccount * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
173 | purple_buddy_get_account(const PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
174 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
175 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
176 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
177 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
178 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
179 | return priv->account; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
180 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
181 | |
| 34714 | 182 | void |
| 183 | purple_buddy_set_name(PurpleBuddy *buddy, const char *name) | |
| 184 | { | |
| 185 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); | |
| 186 | ||
| 187 | g_return_if_fail(priv != NULL); | |
| 188 | ||
| 34719 | 189 | g_free(priv->name); |
| 34714 | 190 | priv->name = purple_utf8_strip_unprintables(name); |
| 191 | } | |
| 192 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
193 | const char * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
194 | purple_buddy_get_name(const PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
195 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
196 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
197 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
198 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
199 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
200 | return priv->name; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
201 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
202 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
203 | gpointer |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
204 | purple_buddy_get_protocol_data(const PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
205 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
206 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
207 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
208 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
209 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
210 | return priv->proto_data; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
211 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
212 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
213 | void |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
214 | purple_buddy_set_protocol_data(PurpleBuddy *buddy, gpointer data) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
215 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
216 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
217 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
218 | g_return_if_fail(priv != NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
219 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
220 | priv->proto_data = data; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
221 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
222 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
223 | const char *purple_buddy_get_alias_only(PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
224 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
225 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
226 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
227 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
228 | |
| 34714 | 229 | if ((priv->local_alias != NULL) && (*priv->local_alias != '\0')) { |
| 230 | return priv->local_alias; | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
231 | } else if ((priv->server_alias != NULL) && |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
232 | (*priv->server_alias != '\0')) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
233 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
234 | return priv->server_alias; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
235 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
236 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
237 | return NULL; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
238 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
239 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
240 | const char *purple_buddy_get_contact_alias(PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
241 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
242 | PurpleContact *c; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
243 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
244 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
245 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
246 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
247 | /* Search for an alias for the buddy. In order of precedence: */ |
| 34714 | 248 | /* The local buddy alias */ |
| 249 | if (priv->local_alias != NULL) | |
| 250 | return priv->local_alias; | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
251 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
252 | /* The contact alias */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
253 | c = purple_buddy_get_contact(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
254 | if ((c != NULL) && (purple_contact_get_alias(c) != NULL)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
255 | return purple_contact_get_alias(c); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
256 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
257 | /* The server alias */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
258 | if ((priv->server_alias) && (*priv->server_alias)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
259 | return priv->server_alias; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
260 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
261 | /* The buddy's user name (i.e. no alias) */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
262 | return priv->name; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
263 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
264 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
265 | const char *purple_buddy_get_alias(PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
266 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
267 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
268 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
269 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
270 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
271 | /* Search for an alias for the buddy. In order of precedence: */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
272 | /* The buddy alias */ |
| 34714 | 273 | if (priv->local_alias != NULL) |
| 274 | return priv->local_alias; | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
275 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
276 | /* The server alias */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
277 | if ((priv->server_alias) && (*priv->server_alias)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
278 | return priv->server_alias; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
279 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
280 | /* The buddy's user name (i.e. no alias) */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
281 | return priv->name; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
282 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
283 | |
| 34714 | 284 | void |
| 285 | purple_buddy_set_local_alias(PurpleBuddy *buddy, const char *alias) | |
| 286 | { | |
| 287 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); | |
| 288 | ||
| 289 | g_return_if_fail(priv != NULL); | |
| 290 | ||
| 34719 | 291 | g_free(priv->local_alias); |
| 34714 | 292 | priv->local_alias = purple_utf8_strip_unprintables(alias); |
| 293 | } | |
| 294 | ||
| 295 | const char *purple_buddy_get_local_alias(PurpleBuddy *buddy) | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
296 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
297 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
298 | |
| 34714 | 299 | g_return_val_if_fail(priv != NULL, NULL); |
| 300 | ||
| 301 | return priv->local_alias; | |
| 302 | } | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
303 | |
| 34714 | 304 | void |
| 305 | purple_buddy_set_server_alias(PurpleBuddy *buddy, const char *server_alias) | |
| 306 | { | |
| 307 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); | |
| 308 | ||
| 309 | g_return_if_fail(priv != NULL); | |
| 310 | ||
| 34719 | 311 | g_free(priv->server_alias); |
| 312 | priv->server_alias = NULL; | |
| 313 | ||
| 314 | if ((server_alias) && (*server_alias)) | |
| 315 | priv->server_alias = purple_utf8_strip_unprintables(server_alias); | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
316 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
317 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
318 | const char *purple_buddy_get_server_alias(PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
319 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
320 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
321 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
322 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
323 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
324 | if ((priv->server_alias) && (*priv->server_alias)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
325 | return priv->server_alias; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
326 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
327 | return NULL; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
328 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
329 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
330 | PurpleContact *purple_buddy_get_contact(PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
331 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
332 | g_return_val_if_fail(buddy != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
333 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
334 | return PURPLE_CONTACT(PURPLE_BLIST_NODE(buddy)->parent); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
335 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
336 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
337 | PurplePresence *purple_buddy_get_presence(const PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
338 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
339 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
340 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
341 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
342 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
343 | return priv->presence; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
344 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
345 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
346 | PurpleMediaCaps purple_buddy_get_media_caps(const PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
347 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
348 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
349 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
350 | g_return_val_if_fail(priv != NULL, 0); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
351 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
352 | return priv->media_caps; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
353 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
354 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
355 | void purple_buddy_set_media_caps(PurpleBuddy *buddy, PurpleMediaCaps media_caps) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
356 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
357 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
358 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
359 | g_return_if_fail(priv != NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
360 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
361 | priv->media_caps = media_caps; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
362 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
363 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
364 | PurpleGroup *purple_buddy_get_group(PurpleBuddy *buddy) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
365 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
366 | g_return_val_if_fail(buddy != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
367 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
368 | if (PURPLE_BLIST_NODE(buddy)->parent == NULL) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
369 | return NULL; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
370 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
371 | return PURPLE_GROUP(PURPLE_BLIST_NODE(buddy)->parent->parent); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
372 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
373 | |
| 34714 | 374 | /************************************************************************** |
| 375 | * GObject code for PurpleBuddy | |
| 376 | **************************************************************************/ | |
| 377 | ||
| 378 | /* GObject Property names */ | |
| 379 | #define BUDDY_PROP_NAME_S "name" | |
| 380 | #define BUDDY_PROP_LOCAL_ALIAS_S "local-alias" | |
| 381 | #define BUDDY_PROP_SERVER_ALIAS_S "server-alias" | |
| 382 | #define BUDDY_PROP_ICON_S "icon" | |
| 383 | #define BUDDY_PROP_ACCOUNT_S "account" | |
| 384 | #define BUDDY_PROP_PRESENCE_S "presence" | |
| 385 | #define BUDDY_PROP_MEDIA_CAPS_S "media-caps" | |
| 386 | ||
| 387 | /* Set method for GObject properties */ | |
| 388 | static void | |
| 389 | purple_buddy_set_property(GObject *obj, guint param_id, const GValue *value, | |
| 390 | GParamSpec *pspec) | |
| 391 | { | |
| 392 | PurpleBuddy *buddy = PURPLE_BUDDY(obj); | |
| 393 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); | |
| 394 | ||
| 395 | switch (param_id) { | |
| 396 | case BUDDY_PROP_NAME: | |
| 397 | purple_buddy_set_name(buddy, g_value_get_string(value)); | |
| 398 | break; | |
| 399 | case BUDDY_PROP_LOCAL_ALIAS: | |
| 400 | purple_buddy_set_local_alias(buddy, g_value_get_string(value)); | |
| 401 | break; | |
| 402 | case BUDDY_PROP_SERVER_ALIAS: | |
| 403 | purple_buddy_set_server_alias(buddy, g_value_get_string(value)); | |
| 404 | break; | |
| 405 | case BUDDY_PROP_ICON: | |
| 406 | purple_buddy_set_icon(buddy, g_value_get_pointer(value)); | |
| 407 | break; | |
| 408 | case BUDDY_PROP_ACCOUNT: | |
| 409 | priv->account = g_value_get_object(value); | |
| 410 | break; | |
| 411 | case BUDDY_PROP_MEDIA_CAPS: | |
| 412 | purple_buddy_set_media_caps(buddy, g_value_get_enum(value)); | |
| 413 | break; | |
| 414 | default: | |
| 415 | G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); | |
| 416 | break; | |
| 417 | } | |
| 418 | } | |
| 419 | ||
| 420 | /* Get method for GObject properties */ | |
| 421 | static void | |
| 422 | purple_buddy_get_property(GObject *obj, guint param_id, GValue *value, | |
| 423 | GParamSpec *pspec) | |
| 424 | { | |
| 425 | PurpleBuddy *buddy = PURPLE_BUDDY(obj); | |
| 426 | ||
| 427 | switch (param_id) { | |
| 428 | case BUDDY_PROP_NAME: | |
| 429 | g_value_set_string(value, purple_buddy_get_name(buddy)); | |
| 430 | break; | |
| 431 | case BUDDY_PROP_LOCAL_ALIAS: | |
| 432 | g_value_set_string(value, purple_buddy_get_local_alias(buddy)); | |
| 433 | break; | |
| 434 | case BUDDY_PROP_SERVER_ALIAS: | |
| 435 | g_value_set_string(value, purple_buddy_get_server_alias(buddy)); | |
| 436 | break; | |
| 437 | case BUDDY_PROP_ICON: | |
| 438 | g_value_set_pointer(value, purple_buddy_get_icon(buddy)); | |
| 439 | break; | |
| 440 | case BUDDY_PROP_ACCOUNT: | |
| 441 | g_value_set_object(value, purple_buddy_get_account(buddy)); | |
| 442 | break; | |
| 443 | case BUDDY_PROP_PRESENCE: | |
| 444 | #warning TODO: change set_pointer to set_object when PurplePresence is a GObject | |
| 445 | g_value_set_pointer(value, purple_buddy_get_presence(buddy)); | |
| 446 | break; | |
| 447 | case BUDDY_PROP_MEDIA_CAPS: | |
| 448 | g_value_set_enum(value, purple_buddy_get_media_caps(buddy)); | |
| 449 | break; | |
| 450 | default: | |
| 451 | G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); | |
| 452 | break; | |
| 453 | } | |
| 454 | } | |
| 455 | ||
| 456 | /* GObject initialization function */ | |
| 457 | static void | |
| 458 | purple_buddy_init(GTypeInstance *instance, gpointer klass) | |
| 459 | { | |
| 460 | PurpleBuddy *buddy = PURPLE_BUDDY(instance); | |
| 461 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); | |
| 462 | PurpleBListUiOps *ops = purple_blist_get_ui_ops(); | |
| 463 | ||
| 464 | priv->presence = purple_presence_new_for_buddy(buddy); | |
| 465 | purple_presence_set_status_active(priv->presence, "offline", TRUE); | |
| 466 | ||
| 467 | if (ops && ops->new_node) | |
| 468 | ops->new_node((PurpleBListNode *)buddy); | |
| 469 | ||
| 470 | PURPLE_DBUS_REGISTER_POINTER(buddy, PurpleBuddy); | |
| 471 | } | |
| 472 | ||
| 473 | /* GObject dispose function */ | |
| 474 | static void | |
| 475 | purple_buddy_dispose(GObject *object) | |
| 476 | { | |
| 477 | PurpleBuddy *buddy = PURPLE_BUDDY(object); | |
| 478 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy); | |
| 479 | PurplePlugin *prpl; | |
| 480 | PurplePluginProtocolInfo *prpl_info; | |
| 481 | ||
| 482 | /* | |
| 483 | * Tell the owner PRPL that we're about to free the buddy so it | |
| 484 | * can free proto_data | |
| 485 | */ | |
| 486 | prpl = purple_find_prpl(purple_account_get_protocol_id(priv->account)); | |
| 487 | if (prpl) { | |
| 488 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); | |
| 489 | if (prpl_info && prpl_info->buddy_free) | |
| 490 | prpl_info->buddy_free(buddy); | |
| 491 | } | |
| 492 | ||
| 493 | /* Delete the node */ | |
| 494 | purple_buddy_icon_unref(priv->icon); | |
| 495 | purple_presence_destroy(priv->presence); | |
| 496 | ||
| 497 | PURPLE_DBUS_UNREGISTER_POINTER(buddy); | |
| 498 | ||
| 499 | G_OBJECT_CLASS(parent_class)->dispose(object); | |
| 500 | } | |
| 501 | ||
| 502 | /* GObject finalize function */ | |
| 503 | static void | |
| 504 | purple_buddy_finalize(GObject *object) | |
| 505 | { | |
| 506 | PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(object); | |
| 507 | ||
| 508 | g_free(priv->name); | |
| 509 | g_free(priv->local_alias); | |
| 510 | g_free(priv->server_alias); | |
| 511 | ||
| 512 | G_OBJECT_CLASS(parent_class)->finalize(object); | |
| 513 | } | |
| 514 | ||
| 515 | /* Class initializer function */ | |
| 516 | static void purple_buddy_class_init(PurpleBuddyClass *klass) | |
| 517 | { | |
| 518 | GObjectClass *obj_class = G_OBJECT_CLASS(klass); | |
| 519 | ||
| 520 | parent_class = g_type_class_peek_parent(klass); | |
| 521 | ||
| 522 | obj_class->dispose = purple_buddy_dispose; | |
| 523 | obj_class->finalize = purple_buddy_finalize; | |
| 524 | ||
| 525 | /* Setup properties */ | |
| 526 | obj_class->get_property = purple_buddy_get_property; | |
| 527 | obj_class->set_property = purple_buddy_set_property; | |
| 528 | ||
| 529 | g_object_class_install_property(obj_class, BUDDY_PROP_NAME, | |
| 530 | g_param_spec_string(BUDDY_PROP_NAME_S, _("Name"), | |
| 531 | _("The name of the buddy."), NULL, | |
| 532 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT) | |
| 533 | ); | |
| 534 | ||
| 535 | g_object_class_install_property(obj_class, BUDDY_PROP_LOCAL_ALIAS, | |
| 536 | g_param_spec_string(BUDDY_PROP_LOCAL_ALIAS_S, _("Local alias"), | |
| 537 | _("Local alias of thee buddy."), NULL, | |
| 538 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT) | |
| 539 | ); | |
| 540 | ||
| 541 | g_object_class_install_property(obj_class, BUDDY_PROP_SERVER_ALIAS, | |
| 542 | g_param_spec_string(BUDDY_PROP_SERVER_ALIAS_S, _("Server alias"), | |
| 543 | _("Server-side alias of the buddy."), NULL, | |
| 544 | G_PARAM_READWRITE) | |
| 545 | ); | |
| 546 | ||
| 547 | g_object_class_install_property(obj_class, BUDDY_PROP_ICON, | |
| 548 | g_param_spec_pointer(BUDDY_PROP_ICON_S, _("Buddy icon"), | |
| 549 | _("The icon for the buddy."), | |
| 550 | G_PARAM_READWRITE) | |
| 551 | ); | |
| 552 | ||
| 553 | g_object_class_install_property(obj_class, BUDDY_PROP_ACCOUNT, | |
| 554 | g_param_spec_object(BUDDY_PROP_ACCOUNT_S, _("Account"), | |
| 555 | _("The account for the buddy."), PURPLE_TYPE_ACCOUNT, | |
| 556 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY) | |
| 557 | ); | |
| 558 | ||
| 559 | #warning TODO: change spec_pointer to spec_object when PurplePresence is a GObject | |
| 560 | g_object_class_install_property(obj_class, BUDDY_PROP_PRESENCE, | |
| 561 | g_param_spec_pointer(BUDDY_PROP_PRESENCE_S, _("Presence"), | |
| 562 | _("The status information for the buddy."), | |
| 563 | G_PARAM_READABLE) | |
| 564 | ); | |
| 565 | ||
| 566 | g_object_class_install_property(obj_class, BUDDY_PROP_MEDIA_CAPS, | |
| 567 | g_param_spec_enum(BUDDY_PROP_MEDIA_CAPS_S, _("Media capabilities"), | |
| 568 | _("The media capabilities of the buddy."), | |
| 569 | PURPLE_MEDIA_TYPE_CAPS, PURPLE_MEDIA_CAPS_NONE, | |
| 570 | G_PARAM_READWRITE) | |
| 571 | ); | |
| 572 | ||
| 573 | g_type_class_add_private(klass, sizeof(PurpleBuddyPrivate)); | |
| 574 | } | |
| 575 | ||
| 576 | GType | |
| 577 | purple_buddy_get_type(void) | |
| 578 | { | |
| 579 | static GType type = 0; | |
| 580 | ||
| 581 | if(type == 0) { | |
| 582 | static const GTypeInfo info = { | |
| 583 | sizeof(PurpleBuddyClass), | |
| 584 | NULL, | |
| 585 | NULL, | |
| 586 | (GClassInitFunc)purple_buddy_class_init, | |
| 587 | NULL, | |
| 588 | NULL, | |
| 589 | sizeof(PurpleBuddy), | |
| 590 | 0, | |
| 591 | (GInstanceInitFunc)purple_buddy_init, | |
| 592 | NULL, | |
| 593 | }; | |
| 594 | ||
| 595 | type = g_type_register_static(PURPLE_TYPE_BLIST_NODE, | |
| 596 | "PurpleBuddy", | |
| 597 | &info, 0); | |
| 598 | } | |
| 599 | ||
| 600 | return type; | |
| 601 | } | |
| 602 | ||
| 603 | PurpleBuddy * | |
| 604 | purple_buddy_new(PurpleAccount *account, const char *name, const char *alias) | |
| 605 | { | |
| 606 | g_return_val_if_fail(account != NULL, NULL); | |
| 607 | g_return_val_if_fail(name != NULL, NULL); | |
| 608 | ||
| 609 | return g_object_new(PURPLE_TYPE_BUDDY, | |
| 610 | BUDDY_PROP_ACCOUNT_S, account, | |
| 611 | BUDDY_PROP_NAME_S, name, | |
| 612 | BUDDY_PROP_LOCAL_ALIAS_S, alias, | |
| 613 | NULL); | |
| 614 | } | |
| 615 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
616 | /**************************************************************************/ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
617 | /* Contact API */ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
618 | /**************************************************************************/ |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
619 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
620 | static void |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
621 | purple_contact_compute_priority_buddy(PurpleContact *contact) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
622 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
623 | PurpleBListNode *bnode; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
624 | PurpleBuddy *new_priority = NULL; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
625 | PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
626 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
627 | g_return_if_fail(priv != NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
628 | |
| 34718 | 629 | priv->priority_buddy = NULL; |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
630 | for (bnode = PURPLE_BLIST_NODE(contact)->child; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
631 | bnode != NULL; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
632 | bnode = bnode->next) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
633 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
634 | PurpleBuddy *buddy; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
635 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
636 | if (!PURPLE_IS_BUDDY(bnode)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
637 | continue; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
638 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
639 | buddy = PURPLE_BUDDY(bnode); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
640 | if (new_priority == NULL) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
641 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
642 | new_priority = buddy; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
643 | continue; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
644 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
645 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
646 | if (purple_account_is_connected(purple_buddy_get_account(buddy))) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
647 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
648 | int cmp = 1; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
649 | if (purple_account_is_connected(purple_buddy_get_account(new_priority->account))) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
650 | cmp = purple_presence_compare(purple_buddy_get_presence(new_priority), |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
651 | purple_buddy_get_presence(buddy)); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
652 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
653 | if (cmp > 0 || (cmp == 0 && |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
654 | purple_prefs_get_bool("/purple/contact/last_match"))) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
655 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
656 | new_priority = buddy; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
657 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
658 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
659 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
660 | |
| 34718 | 661 | priv->priority_buddy = new_priority; |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
662 | priv->priority_valid = TRUE; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
663 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
664 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
665 | PurpleGroup * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
666 | purple_contact_get_group(const PurpleContact *contact) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
667 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
668 | g_return_val_if_fail(contact, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
669 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
670 | return PURPLE_GROUP(PURPLE_BLIST_NODE(contact)->parent); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
671 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
672 | |
| 34718 | 673 | void |
| 674 | purple_contact_set_alias(PurpleContact *contact, const char *alias) | |
| 675 | { | |
| 676 | PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact); | |
| 677 | ||
| 678 | g_return_if_fail(priv != NULL); | |
| 679 | ||
| 34719 | 680 | g_free(priv->alias); |
| 681 | priv->alias = purple_utf8_strip_unprintables(alias); | |
| 34718 | 682 | } |
| 683 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
684 | const char *purple_contact_get_alias(PurpleContact* contact) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
685 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
686 | PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
687 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
688 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
689 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
690 | if (priv->alias) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
691 | return priv->alias; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
692 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
693 | return purple_buddy_get_alias(purple_contact_get_priority_buddy(contact)); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
694 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
695 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
696 | gboolean purple_contact_on_account(PurpleContact *c, PurpleAccount *account) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
697 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
698 | PurpleBListNode *bnode, *cnode = (PurpleBListNode *) c; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
699 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
700 | g_return_val_if_fail(c != NULL, FALSE); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
701 | g_return_val_if_fail(account != NULL, FALSE); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
702 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
703 | for (bnode = cnode->child; bnode; bnode = bnode->next) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
704 | PurpleBuddy *buddy; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
705 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
706 | if (! PURPLE_IS_BUDDY(bnode)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
707 | continue; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
708 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
709 | buddy = (PurpleBuddy *)bnode; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
710 | if (purple_buddy_get_account(buddy) == account) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
711 | return TRUE; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
712 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
713 | return FALSE; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
714 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
715 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
716 | void purple_contact_invalidate_priority_buddy(PurpleContact *contact) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
717 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
718 | PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
719 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
720 | g_return_if_fail(priv != NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
721 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
722 | priv->priority_valid = FALSE; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
723 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
724 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
725 | int purple_contact_get_contact_size(PurpleContact *contact, gboolean offline) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
726 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
727 | PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
728 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
729 | g_return_val_if_fail(priv != NULL, 0); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
730 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
731 | return offline ? priv->totalsize : priv->currentsize; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
732 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
733 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
734 | PurpleBuddy *purple_contact_get_priority_buddy(PurpleContact *contact) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
735 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
736 | PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
737 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
738 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
739 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
740 | if (!priv->priority_valid) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
741 | purple_contact_compute_priority_buddy(contact); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
742 | |
| 34718 | 743 | return priv->priority_buddy; |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
744 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
745 | |
| 34714 | 746 | /************************************************************************** |
| 747 | * GObject code for PurpleContact | |
| 748 | **************************************************************************/ | |
| 749 | ||
| 750 | /* GObject Property names */ | |
| 751 | #define CONTACT_PROP_ALIAS_S "alias" | |
| 752 | #define CONTACT_PROP_PRIORITY_BUDDY_S "priority-buddy" | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
753 | |
| 34718 | 754 | /* Set method for GObject properties */ |
| 755 | static void | |
| 756 | purple_contact_set_property(GObject *obj, guint param_id, const GValue *value, | |
| 757 | GParamSpec *pspec) | |
| 758 | { | |
| 759 | PurpleContact *contact = PURPLE_CONTACT(obj); | |
| 760 | ||
| 761 | switch (param_id) { | |
| 762 | case CONTACT_PROP_ALIAS: | |
| 763 | purple_contact_set_alias(contact, g_value_get_string(value)); | |
| 764 | break; | |
| 765 | default: | |
| 766 | G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); | |
| 767 | break; | |
| 768 | } | |
| 769 | } | |
| 770 | ||
| 771 | /* Get method for GObject properties */ | |
| 772 | static void | |
| 773 | purple_contact_get_property(GObject *obj, guint param_id, GValue *value, | |
| 774 | GParamSpec *pspec) | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
775 | { |
| 34718 | 776 | PurpleContact *contact = PURPLE_CONTACT(obj); |
| 777 | ||
| 778 | switch (param_id) { | |
| 779 | case CONTACT_PROP_ALIAS: | |
| 780 | g_value_set_string(value, purple_contact_get_alias(contact)); | |
| 781 | break; | |
| 782 | case CONTACT_PROP_PRIORITY_BUDDY: | |
| 783 | g_value_set_object(value, purple_contact_get_priority_buddy(contact)); | |
| 784 | break; | |
| 785 | default: | |
| 786 | G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); | |
| 787 | break; | |
| 788 | } | |
| 789 | } | |
| 790 | ||
| 791 | /* GObject initialization function */ | |
| 792 | static void | |
| 793 | purple_contact_init(GTypeInstance *instance, gpointer klass) | |
| 794 | { | |
| 795 | PurpleContact *contact = PURPLE_CONTACT(instance); | |
| 796 | PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact); | |
|
34709
3484aac07f02
Replaced PurpleBlistUiOps with PurpleBListUiOps for uniform naming
Ankit Vani <a@nevitus.org>
parents:
34707
diff
changeset
|
797 | PurpleBListUiOps *ops = purple_blist_get_ui_ops(); |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
798 | |
| 34718 | 799 | priv->totalsize = 0; |
| 800 | priv->currentsize = 0; | |
| 801 | priv->onlinecount = 0; | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
802 | |
| 34714 | 803 | if (ops && ops->new_node) |
| 34718 | 804 | ops->new_node(PURPLE_BLIST_NODE(contact)); |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
805 | |
| 34714 | 806 | PURPLE_DBUS_REGISTER_POINTER(contact, PurpleContact); |
| 34718 | 807 | } |
| 808 | ||
| 809 | /* GObject dispose function */ | |
| 810 | static void | |
| 811 | purple_contact_dispose(GObject *object) | |
| 812 | { | |
| 813 | PURPLE_DBUS_UNREGISTER_POINTER(object); | |
| 814 | ||
| 815 | G_OBJECT_CLASS(parent_class)->dispose(object); | |
| 816 | } | |
| 817 | ||
| 818 | /* GObject finalize function */ | |
| 819 | static void | |
| 820 | purple_contact_finalize(GObject *object) | |
| 821 | { | |
| 822 | g_free(PURPLE_CONTACT_GET_PRIVATE(object)->alias); | |
| 823 | ||
| 824 | G_OBJECT_CLASS(parent_class)->finalize(object); | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
825 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
826 | |
| 34718 | 827 | /* Class initializer function */ |
| 828 | static void purple_contact_class_init(PurpleContactClass *klass) | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
829 | { |
| 34718 | 830 | GObjectClass *obj_class = G_OBJECT_CLASS(klass); |
| 831 | ||
| 832 | parent_class = g_type_class_peek_parent(klass); | |
| 833 | ||
| 834 | obj_class->dispose = purple_contact_dispose; | |
| 835 | obj_class->finalize = purple_contact_finalize; | |
| 836 | ||
| 837 | /* Setup properties */ | |
| 838 | obj_class->get_property = purple_contact_get_property; | |
| 839 | obj_class->set_property = purple_contact_set_property; | |
| 840 | ||
| 841 | g_object_class_install_property(obj_class, CONTACT_PROP_ALIAS, | |
| 842 | g_param_spec_string(CONTACT_PROP_ALIAS_S, _("Alias"), | |
| 843 | _("The alias for the contact."), NULL, | |
| 844 | G_PARAM_READWRITE) | |
| 845 | ); | |
| 846 | ||
| 847 | g_object_class_install_property(obj_class, CONTACT_PROP_PRIORITY_BUDDY, | |
| 848 | g_param_spec_object(CONTACT_PROP_PRIORITY_BUDDY_S, | |
| 849 | _("Priority buddy"), _("The priority buddy of the contact."), | |
| 34719 | 850 | PURPLE_TYPE_BUDDY, G_PARAM_READABLE) |
| 34718 | 851 | ); |
| 852 | ||
| 853 | g_type_class_add_private(klass, sizeof(PurpleContactPrivate)); | |
| 854 | } | |
| 855 | ||
| 856 | GType | |
| 857 | purple_contact_get_type(void) | |
| 858 | { | |
| 859 | static GType type = 0; | |
| 860 | ||
| 861 | if(type == 0) { | |
| 862 | static const GTypeInfo info = { | |
| 863 | sizeof(PurpleContactClass), | |
| 864 | NULL, | |
| 865 | NULL, | |
| 866 | (GClassInitFunc)purple_contact_class_init, | |
| 867 | NULL, | |
| 868 | NULL, | |
| 869 | sizeof(PurpleContact), | |
| 870 | 0, | |
| 871 | (GInstanceInitFunc)purple_contact_init, | |
| 872 | NULL, | |
| 873 | }; | |
| 874 | ||
| 875 | type = g_type_register_static(PURPLE_TYPE_BLIST_NODE, | |
| 876 | "PurpleContact", | |
| 877 | &info, 0); | |
| 878 | } | |
| 879 | ||
| 880 | return type; | |
| 881 | } | |
| 882 | ||
| 883 | PurpleContact * | |
| 884 | purple_contact_new(void) | |
| 885 | { | |
| 886 | return g_object_new(PURPLE_TYPE_CONTACT, NULL); | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
887 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
888 | |
| 34714 | 889 | /**************************************************************************/ |
| 890 | /* Chat API */ | |
| 891 | /**************************************************************************/ | |
| 892 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
893 | const char *purple_chat_get_name(PurpleChat *chat) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
894 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
895 | char *ret = NULL; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
896 | PurplePlugin *prpl; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
897 | PurplePluginProtocolInfo *prpl_info = NULL; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
898 | PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
899 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
900 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
901 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
902 | if ((priv->alias != NULL) && (*priv->alias != '\0')) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
903 | return priv->alias; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
904 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
905 | prpl = purple_find_prpl(purple_account_get_protocol_id(priv->account)); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
906 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
907 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
908 | if (prpl_info->chat_info) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
909 | struct proto_chat_entry *pce; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
910 | GList *parts = prpl_info->chat_info(purple_account_get_connection(priv->account)); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
911 | pce = parts->data; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
912 | ret = g_hash_table_lookup(priv->components, pce->identifier); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
913 | g_list_foreach(parts, (GFunc)g_free, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
914 | g_list_free(parts); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
915 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
916 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
917 | return ret; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
918 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
919 | |
| 34719 | 920 | void |
| 921 | purple_chat_set_alias(PurpleChat *chat, const char *alias) | |
| 922 | { | |
| 923 | PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); | |
| 924 | ||
| 925 | g_return_if_fail(priv != NULL); | |
| 926 | ||
| 927 | g_free(priv->alias); | |
| 928 | priv->alias = NULL; | |
| 929 | ||
| 930 | if ((alias != NULL) && (*alias != '\0')) | |
| 931 | priv->alias = purple_utf8_strip_unprintables(alias); | |
| 932 | } | |
| 933 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
934 | PurpleGroup * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
935 | purple_chat_get_group(PurpleChat *chat) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
936 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
937 | g_return_val_if_fail(chat != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
938 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
939 | return PURPLE_GROUP(PURPLE_BLIST_NODE(chat)->parent); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
940 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
941 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
942 | PurpleAccount * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
943 | purple_chat_get_account(PurpleChat *chat) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
944 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
945 | PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
946 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
947 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
948 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
949 | return priv->account; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
950 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
951 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
952 | GHashTable * |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
953 | purple_chat_get_components(PurpleChat *chat) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
954 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
955 | PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
956 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
957 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
958 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
959 | return priv->components; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
960 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
961 | |
| 34714 | 962 | /************************************************************************** |
| 963 | * GObject code for PurpleChat | |
| 964 | **************************************************************************/ | |
| 965 | ||
| 966 | /* GObject Property names */ | |
| 34719 | 967 | #define CHAT_PROP_ALIAS_S "alias" |
| 968 | #define CHAT_PROP_ACCOUNT_S "account" | |
| 969 | #define CHAT_PROP_COMPONENTS_S "components" | |
| 970 | ||
| 971 | /* Set method for GObject properties */ | |
| 972 | static void | |
| 973 | purple_chat_set_property(GObject *obj, guint param_id, const GValue *value, | |
| 974 | GParamSpec *pspec) | |
| 975 | { | |
| 976 | PurpleChat *chat = PURPLE_CHAT(obj); | |
| 977 | PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); | |
| 978 | ||
| 979 | switch (param_id) { | |
| 980 | case CHAT_PROP_ALIAS: | |
| 981 | purple_chat_set_alias(chat, g_value_get_string(value)); | |
| 982 | break; | |
| 983 | case CHAT_PROP_ACCOUNT: | |
| 984 | priv->account = g_value_get_object(value); | |
| 985 | break; | |
| 986 | case CHAT_PROP_COMPONENTS: | |
| 987 | priv->components = g_value_get_pointer(value); | |
| 988 | break; | |
| 989 | default: | |
| 990 | G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); | |
| 991 | break; | |
| 992 | } | |
| 993 | } | |
| 994 | ||
| 995 | /* Get method for GObject properties */ | |
| 996 | static void | |
| 997 | purple_chat_get_property(GObject *obj, guint param_id, GValue *value, | |
| 998 | GParamSpec *pspec) | |
| 999 | { | |
| 1000 | PurpleChat *chat = PURPLE_CHAT(obj); | |
| 1001 | PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat); | |
| 1002 | ||
| 1003 | switch (param_id) { | |
| 1004 | case CHAT_PROP_ALIAS: | |
| 1005 | g_value_set_string(value, priv->alias); | |
| 1006 | break; | |
| 1007 | case CHAT_PROP_ACCOUNT: | |
| 1008 | g_value_set_object(value, purple_chat_get_account(chat)); | |
| 1009 | break; | |
| 1010 | case CHAT_PROP_COMPONENTS: | |
| 1011 | g_value_set_pointer(value, purple_chat_get_components(chat)); | |
| 1012 | break; | |
| 1013 | default: | |
| 1014 | G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); | |
| 1015 | break; | |
| 1016 | } | |
| 1017 | } | |
| 1018 | ||
| 1019 | /* GObject initialization function */ | |
| 1020 | static void | |
| 1021 | purple_chat_init(GTypeInstance *instance, gpointer klass) | |
| 1022 | { | |
| 1023 | PurpleChat *chat = PURPLE_CHAT(instance); | |
| 1024 | PurpleBListUiOps *ops = purple_blist_get_ui_ops(); | |
| 1025 | ||
| 1026 | if (ops != NULL && ops->new_node != NULL) | |
| 1027 | ops->new_node(PURPLE_BLIST_NODE(chat)); | |
| 1028 | ||
| 1029 | PURPLE_DBUS_REGISTER_POINTER(chat, PurpleChat); | |
| 1030 | } | |
| 1031 | ||
| 1032 | /* GObject dispose function */ | |
| 1033 | static void | |
| 1034 | purple_chat_dispose(GObject *object) | |
| 1035 | { | |
| 1036 | PURPLE_DBUS_UNREGISTER_POINTER(object); | |
| 1037 | ||
| 1038 | G_OBJECT_CLASS(parent_class)->dispose(object); | |
| 1039 | } | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1040 | |
| 34719 | 1041 | /* GObject finalize function */ |
| 1042 | static void | |
| 1043 | purple_chat_finalize(GObject *object) | |
| 1044 | { | |
| 1045 | PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(object); | |
| 1046 | ||
| 1047 | g_free(priv->alias); | |
| 1048 | g_hash_table_destroy(priv->components); | |
| 1049 | ||
| 1050 | G_OBJECT_CLASS(parent_class)->finalize(object); | |
| 1051 | } | |
| 1052 | ||
| 1053 | /* Class initializer function */ | |
| 1054 | static void purple_chat_class_init(PurpleChatClass *klass) | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1055 | { |
| 34719 | 1056 | GObjectClass *obj_class = G_OBJECT_CLASS(klass); |
| 1057 | ||
| 1058 | parent_class = g_type_class_peek_parent(klass); | |
| 1059 | ||
| 1060 | obj_class->dispose = purple_chat_dispose; | |
| 1061 | obj_class->finalize = purple_chat_finalize; | |
| 1062 | ||
| 1063 | /* Setup properties */ | |
| 1064 | obj_class->get_property = purple_chat_get_property; | |
| 1065 | obj_class->set_property = purple_chat_set_property; | |
| 1066 | ||
| 1067 | g_object_class_install_property(obj_class, CHAT_PROP_ALIAS, | |
| 1068 | g_param_spec_string(CHAT_PROP_ALIAS_S, _("Alias"), | |
| 1069 | _("The alias for the chat."), NULL, | |
| 1070 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT) | |
| 1071 | ); | |
| 1072 | ||
| 1073 | g_object_class_install_property(obj_class, CHAT_PROP_ACCOUNT, | |
| 1074 | g_param_spec_object(CHAT_PROP_ACCOUNT_S, _("Account"), | |
| 1075 | _("The account that the chat belongs to."), PURPLE_TYPE_ACCOUNT, | |
| 1076 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY) | |
| 1077 | ); | |
| 1078 | ||
| 1079 | g_object_class_install_property(obj_class, CHAT_PROP_COMPONENTS, | |
| 1080 | g_param_spec_pointer(CHAT_PROP_COMPONENTS_S, _("Components"), | |
| 1081 | _("The protocol components of the chat."), | |
| 1082 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY) | |
| 1083 | ); | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1084 | |
| 34719 | 1085 | g_type_class_add_private(klass, sizeof(PurpleChatPrivate)); |
| 1086 | } | |
| 1087 | ||
| 1088 | GType | |
| 1089 | purple_chat_get_type(void) | |
| 1090 | { | |
| 1091 | static GType type = 0; | |
| 1092 | ||
| 1093 | if(type == 0) { | |
| 1094 | static const GTypeInfo info = { | |
| 1095 | sizeof(PurpleChatClass), | |
| 1096 | NULL, | |
| 1097 | NULL, | |
| 1098 | (GClassInitFunc)purple_chat_class_init, | |
| 1099 | NULL, | |
| 1100 | NULL, | |
| 1101 | sizeof(PurpleChat), | |
| 1102 | 0, | |
| 1103 | (GInstanceInitFunc)purple_chat_init, | |
| 1104 | NULL, | |
| 1105 | }; | |
| 1106 | ||
| 1107 | type = g_type_register_static(PURPLE_TYPE_BLIST_NODE, | |
| 1108 | "PurpleChat", | |
| 1109 | &info, 0); | |
| 1110 | } | |
| 1111 | ||
| 1112 | return type; | |
| 1113 | } | |
| 1114 | ||
| 1115 | PurpleChat * | |
| 1116 | purple_chat_new(PurpleAccount *account, const char *alias, GHashTable *components) | |
| 1117 | { | |
| 34714 | 1118 | g_return_val_if_fail(account != NULL, NULL); |
| 1119 | g_return_val_if_fail(components != NULL, NULL); | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1120 | |
| 34719 | 1121 | return g_object_new(PURPLE_TYPE_CHAT, |
| 1122 | CHAT_PROP_ACCOUNT_S, account, | |
| 1123 | CHAT_PROP_ALIAS_S, alias, | |
| 1124 | CHAT_PROP_COMPONENTS_S, components, | |
| 1125 | NULL); | |
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1126 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1127 | |
| 34714 | 1128 | /**************************************************************************/ |
| 1129 | /* Group API */ | |
| 1130 | /**************************************************************************/ | |
| 1131 | ||
|
34707
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1132 | GSList *purple_group_get_accounts(PurpleGroup *group) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1133 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1134 | GSList *l = NULL; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1135 | PurpleBListNode *gnode, *cnode, *bnode; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1136 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1137 | gnode = (PurpleBListNode *)group; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1138 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1139 | for (cnode = gnode->child; cnode; cnode = cnode->next) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1140 | if (PURPLE_IS_CHAT(cnode)) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1141 | if (!g_slist_find(l, purple_chat_get_account(PURPLE_CHAT(cnode)))) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1142 | l = g_slist_append(l, purple_chat_get_account(PURPLE_CHAT(cnode))); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1143 | } else if (PURPLE_IS_CONTACT(cnode)) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1144 | for (bnode = cnode->child; bnode; bnode = bnode->next) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1145 | if (PURPLE_IS_BUDDY(bnode)) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1146 | if (!g_slist_find(l, purple_buddy_get_account(PURPLE_BUDDY(bnode)))) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1147 | l = g_slist_append(l, purple_buddy_get_account(PURPLE_BUDDY(bnode))); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1148 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1149 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1150 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1151 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1152 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1153 | return l; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1154 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1155 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1156 | gboolean purple_group_on_account(PurpleGroup *g, PurpleAccount *account) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1157 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1158 | PurpleBListNode *cnode; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1159 | for (cnode = ((PurpleBListNode *)g)->child; cnode; cnode = cnode->next) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1160 | if (PURPLE_IS_CONTACT(cnode)) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1161 | if(purple_contact_on_account((PurpleContact *) cnode, account)) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1162 | return TRUE; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1163 | } else if (PURPLE_IS_CHAT(cnode)) { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1164 | PurpleChat *chat = (PurpleChat *)cnode; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1165 | if ((!account && purple_account_is_connected(purple_chat_get_account(chat))) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1166 | || purple_chat_get_account(chat) == account) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1167 | return TRUE; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1168 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1169 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1170 | return FALSE; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1171 | } |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1172 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1173 | const char *purple_group_get_name(PurpleGroup *group) |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1174 | { |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1175 | PurpleGroupPrivate *priv = PURPLE_GROUP_GET_PRIVATE(group); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1176 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1177 | g_return_val_if_fail(priv != NULL, NULL); |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1178 | |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1179 | return priv->name; |
|
d433bf40792a
Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff
changeset
|
1180 | } |
| 34714 | 1181 | |
| 1182 | /************************************************************************** | |
| 1183 | * GObject code for PurpleGroup | |
| 1184 | **************************************************************************/ | |
| 1185 | ||
| 1186 | /* GObject Property names */ | |
| 1187 | #define GROUP_PROP_NAME_S "name" | |
| 1188 | ||
| 1189 | /* TODO GObjectify */ | |
| 1190 | PurpleGroup *purple_group_new(const char *name) | |
| 1191 | { | |
| 1192 | PurpleBListUiOps *ops = purple_blist_get_ui_ops(); | |
| 1193 | PurpleGroup *group; | |
| 1194 | ||
| 1195 | g_return_val_if_fail(name != NULL, NULL); | |
| 1196 | g_return_val_if_fail(*name != '\0', NULL); | |
| 1197 | ||
| 1198 | group = purple_find_group(name); | |
| 1199 | if (group != NULL) | |
| 1200 | return group; | |
| 1201 | ||
| 1202 | group = g_new0(PurpleGroup, 1); | |
| 1203 | group->name = purple_utf8_strip_unprintables(name); | |
| 1204 | group->totalsize = 0; | |
| 1205 | group->currentsize = 0; | |
| 34718 | 1206 | group->onlinecount = 0; |
| 34714 | 1207 | |
| 1208 | if (ops && ops->new_node) | |
| 1209 | ops->new_node((PurpleBListNode *)group); | |
| 1210 | ||
| 1211 | PURPLE_DBUS_REGISTER_POINTER(group, PurpleGroup); | |
| 1212 | return group; | |
| 1213 | } | |
| 1214 | ||
| 1215 | /* TODO GObjectify */ | |
| 1216 | void | |
| 1217 | purple_group_destroy(PurpleGroup *group) | |
| 1218 | { | |
| 1219 | g_free(group->name); | |
| 1220 | PURPLE_DBUS_UNREGISTER_POINTER(group); | |
| 1221 | g_free(group); | |
| 1222 | } |