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