libpurple/blistnodetypes.c

Tue, 01 Oct 2013 17:29:45 +0530

author
Ankit Vani <a@nevitus.org>
date
Tue, 01 Oct 2013 17:29:45 +0530
branch
soc.2013.gobjectification
changeset 34986
894c29e33300
parent 34983
81638be26f41
child 35010
9c2d352b1d96
child 36846
d6e55ebf2820
permissions
-rw-r--r--

Move all object destruction code to finalize() methods and keep unrefs in dispose()

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"
34729
7f5a2fc8ef9c Refactored blistnodetypes and BuddyList.xs according to API changes
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
25 #include "debug.h"
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
26
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
27 #define PURPLE_BUDDY_GET_PRIVATE(obj) \
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
28 (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
29
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
30 /** @copydoc _PurpleBuddyPrivate */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
31 typedef struct _PurpleBuddyPrivate PurpleBuddyPrivate;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
32
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
33 #define PURPLE_CONTACT_GET_PRIVATE(obj) \
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
34 (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
35
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
36 /** @copydoc _PurpleContactPrivate */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
37 typedef struct _PurpleContactPrivate PurpleContactPrivate;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
38
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
39 #define PURPLE_GROUP_GET_PRIVATE(obj) \
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
40 (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
41
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
42 /** @copydoc _PurpleGroupPrivate */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
43 typedef struct _PurpleGroupPrivate PurpleGroupPrivate;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
44
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
45 #define PURPLE_CHAT_GET_PRIVATE(obj) \
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
46 (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
47
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
48 /** @copydoc _PurpleChatPrivate */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
49 typedef struct _PurpleChatPrivate PurpleChatPrivate;
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 /**************************************************************************/
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
52 /* Private data */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
53 /**************************************************************************/
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
54 /** Private data for a buddy. */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
55 struct _PurpleBuddyPrivate {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
56 char *name; /**< The name of the buddy. */
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
57 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
58 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
59 (i.e. MSN "Friendly Names") */
34744
fca907f6d892 Better text for reminder to subclass PurpleBuddy in protocols
Ankit Vani <a@nevitus.org>
parents: 34743
diff changeset
60 void *proto_data; /**< This allows the prpl to associate
34908
3689e16e47fb Removed an unnecessary note
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
61 whatever data it wants with a buddy. */
34707
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
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
68 /* Buddy property enums */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
69 enum
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
70 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
71 BUDDY_PROP_0,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
72 BUDDY_PROP_NAME,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
73 BUDDY_PROP_LOCAL_ALIAS,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
74 BUDDY_PROP_SERVER_ALIAS,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
75 BUDDY_PROP_ICON,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
76 BUDDY_PROP_ACCOUNT,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
77 BUDDY_PROP_PRESENCE,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
78 BUDDY_PROP_MEDIA_CAPS,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
79 BUDDY_PROP_LAST
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
80 };
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
81
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
82 /** Private data for a contact */
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
83 struct _PurpleContactPrivate {
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
84 char *alias; /**< The user-set alias of the contact */
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
85 PurpleBuddy *priority_buddy; /**< The "top" buddy for this contact */
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
86 gboolean priority_valid; /**< Is priority valid? */
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
87 };
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
88
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
89 /* Contact property enums */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
90 enum
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
91 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
92 CONTACT_PROP_0,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
93 CONTACT_PROP_ALIAS,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
94 CONTACT_PROP_PRIORITY_BUDDY,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
95 CONTACT_PROP_LAST
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
96 };
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
97
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
98 /** Private data for a group */
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
99 struct _PurpleGroupPrivate {
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
100 char *name; /**< The name of this group. */
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
101 };
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
102
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
103 /* Group property enums */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
104 enum
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
105 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
106 GROUP_PROP_0,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
107 GROUP_PROP_NAME,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
108 GROUP_PROP_LAST
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
109 };
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
110
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
111 /** Private data for a chat node */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
112 struct _PurpleChatPrivate {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
113 char *alias; /**< The display name of this chat. */
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
114 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
115 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
116 the chat */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
117 };
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
118
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
119 /* Chat property enums */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
120 enum
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
121 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
122 CHAT_PROP_0,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
123 CHAT_PROP_ALIAS,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
124 CHAT_PROP_ACCOUNT,
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
125 CHAT_PROP_COMPONENTS,
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
126 CHAT_PROP_LAST
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
127 };
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
128
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
129 static PurpleBlistNode *blistnode_parent_class;
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
130 static PurpleCountingNode *counting_parent_class;
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
131
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
132 static gboolean
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
133 purple_strings_are_different(const char *one, const char *two)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
134 {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
135 return !((one && two && g_utf8_collate(one, two) == 0) ||
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
136 ((one == NULL || *one == '\0') && (two == NULL || *two == '\0')));
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
137 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
138
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
139 PurpleBlistNode *_purple_blist_get_last_child(PurpleBlistNode *node);
34729
7f5a2fc8ef9c Refactored blistnodetypes and BuddyList.xs according to API changes
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
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 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
148 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
149 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
150
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
151 g_return_if_fail(priv != NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
152
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
153 if (priv->icon != icon)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
154 {
34831
da607046d658 Backed out changeset d9b286af48ba
Ankit Vani <a@nevitus.org>
parents: 34830
diff changeset
155 purple_buddy_icon_unref(priv->icon);
da607046d658 Backed out changeset d9b286af48ba
Ankit Vani <a@nevitus.org>
parents: 34830
diff changeset
156 priv->icon = (icon != NULL ? purple_buddy_icon_ref(icon) : NULL);
34707
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
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
159 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
160
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
161 if (ops && ops->update)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
162 ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(buddy));
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
163 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
164
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
165 PurpleBuddyIcon *
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
166 purple_buddy_get_icon(const PurpleBuddy *buddy)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
167 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
168 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
169
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
170 g_return_val_if_fail(priv != NULL, NULL);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
171
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
172 return priv->icon;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
173 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
174
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
175 PurpleAccount *
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
176 purple_buddy_get_account(const PurpleBuddy *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 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
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 g_return_val_if_fail(priv != NULL, NULL);
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 return priv->account;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
183 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
184
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
185 void
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
186 purple_buddy_set_name(PurpleBuddy *buddy, const char *name)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
187 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
188 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
189 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
190
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
191 g_return_if_fail(priv != NULL);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
192
34729
7f5a2fc8ef9c Refactored blistnodetypes and BuddyList.xs according to API changes
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
193 purple_blist_update_buddies_cache(buddy, name);
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
194
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
195 g_free(priv->name);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
196 priv->name = purple_utf8_strip_unprintables(name);
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
197
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
198 if (ops) {
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
199 if (ops->save_node)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
200 ops->save_node(PURPLE_BLIST_NODE(buddy));
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
201 if (ops->update)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
202 ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(buddy));
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
203 }
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
204 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
205
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
206 const char *
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
207 purple_buddy_get_name(const PurpleBuddy *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 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
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 g_return_val_if_fail(priv != NULL, NULL);
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 return priv->name;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
214 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
215
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
216 gpointer
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
217 purple_buddy_get_protocol_data(const PurpleBuddy *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 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
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 g_return_val_if_fail(priv != NULL, NULL);
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 return priv->proto_data;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
224 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
225
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
226 void
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
227 purple_buddy_set_protocol_data(PurpleBuddy *buddy, gpointer data)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
228 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
229 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
230
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
231 g_return_if_fail(priv != NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
232
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
233 priv->proto_data = data;
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
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
236 const char *purple_buddy_get_alias_only(PurpleBuddy *buddy)
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 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
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 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
241
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
242 if ((priv->local_alias != NULL) && (*priv->local_alias != '\0')) {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
243 return priv->local_alias;
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
244 } else if ((priv->server_alias != NULL) &&
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
245 (*priv->server_alias != '\0')) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
246
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
247 return priv->server_alias;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
248 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
249
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
250 return NULL;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
251 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
252
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
253 const char *purple_buddy_get_contact_alias(PurpleBuddy *buddy)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
254 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
255 PurpleContact *c;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
256 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
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 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
259
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
260 /* Search for an alias for the buddy. In order of precedence: */
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
261 /* The local buddy alias */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
262 if (priv->local_alias != NULL)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
263 return priv->local_alias;
34707
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 /* The contact alias */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
266 c = purple_buddy_get_contact(buddy);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
267 if ((c != NULL) && (purple_contact_get_alias(c) != NULL))
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
268 return purple_contact_get_alias(c);
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 /* The server alias */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
271 if ((priv->server_alias) && (*priv->server_alias))
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
272 return priv->server_alias;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
273
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
274 /* The buddy's user name (i.e. no alias) */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
275 return priv->name;
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
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
278 const char *purple_buddy_get_alias(PurpleBuddy *buddy)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
279 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
280 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
281
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
282 g_return_val_if_fail(priv != NULL, NULL);
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 /* 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
285 /* The buddy alias */
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
286 if (priv->local_alias != NULL)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
287 return priv->local_alias;
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
288
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
289 /* The server alias */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
290 if ((priv->server_alias) && (*priv->server_alias))
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
291 return priv->server_alias;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
292
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
293 /* The buddy's user name (i.e. no alias) */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
294 return priv->name;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
295 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
296
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
297 void
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
298 purple_buddy_set_local_alias(PurpleBuddy *buddy, const char *alias)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
299 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
300 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
301 PurpleIMConversation *im;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
302 char *old_alias;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
303 char *new_alias = NULL;
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
304 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
305
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
306 g_return_if_fail(priv != NULL);
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
307
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
308 if ((alias != NULL) && (*alias != '\0'))
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
309 new_alias = purple_utf8_strip_unprintables(alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
310
34729
7f5a2fc8ef9c Refactored blistnodetypes and BuddyList.xs according to API changes
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
311 if (!purple_strings_are_different(priv->local_alias, new_alias)) {
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
312 g_free(new_alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
313 return;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
314 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
315
34729
7f5a2fc8ef9c Refactored blistnodetypes and BuddyList.xs according to API changes
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
316 old_alias = priv->local_alias;
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
317
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
318 if ((new_alias != NULL) && (*new_alias != '\0'))
34729
7f5a2fc8ef9c Refactored blistnodetypes and BuddyList.xs according to API changes
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
319 priv->local_alias = new_alias;
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
320 else {
34729
7f5a2fc8ef9c Refactored blistnodetypes and BuddyList.xs according to API changes
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
321 priv->local_alias = NULL;
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
322 g_free(new_alias); /* could be "\0" */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
323 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
324
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
325 if (ops && ops->save_node)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
326 ops->save_node(PURPLE_BLIST_NODE(buddy));
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
327
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
328 if (ops && ops->update)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
329 ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(buddy));
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
330
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
331 im = purple_conversations_find_im_with_account(priv->name,
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
332 priv->account);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
333 if (im)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
334 purple_conversation_autoset_title(PURPLE_CONVERSATION(im));
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
335
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
336 purple_signal_emit(purple_blist_get_handle(), "blist-node-aliased",
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
337 buddy, old_alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
338 g_free(old_alias);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
339 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
340
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
341 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
342 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
343 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
344
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
345 g_return_val_if_fail(priv != NULL, NULL);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
346
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
347 return priv->local_alias;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
348 }
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
349
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
350 void
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
351 purple_buddy_set_server_alias(PurpleBuddy *buddy, const char *alias)
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
352 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
353 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
354 PurpleIMConversation *im;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
355 char *old_alias;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
356 char *new_alias = NULL;
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
357 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
358
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
359 g_return_if_fail(priv != NULL);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
360
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
361 if ((alias != NULL) && (*alias != '\0') && g_utf8_validate(alias, -1, NULL))
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
362 new_alias = purple_utf8_strip_unprintables(alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
363
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
364 if (!purple_strings_are_different(priv->server_alias, new_alias)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
365 g_free(new_alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
366 return;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
367 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
368
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
369 old_alias = priv->server_alias;
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
370
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
371 if ((new_alias != NULL) && (*new_alias != '\0'))
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
372 priv->server_alias = new_alias;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
373 else {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
374 priv->server_alias = NULL;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
375 g_free(new_alias); /* could be "\0"; */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
376 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
377
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
378 if (ops) {
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
379 if (ops->save_node)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
380 ops->save_node(PURPLE_BLIST_NODE(buddy));
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
381 if (ops->update)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
382 ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(buddy));
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
383 }
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
384
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
385 im = purple_conversations_find_im_with_account(priv->name,
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
386 priv->account);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
387 if (im)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
388 purple_conversation_autoset_title(PURPLE_CONVERSATION(im));
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
389
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
390 purple_signal_emit(purple_blist_get_handle(), "blist-node-aliased",
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
391 buddy, old_alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
392 g_free(old_alias);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
393 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
394
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
395 const char *purple_buddy_get_server_alias(PurpleBuddy *buddy)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
396 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
397 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
398
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
399 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
400
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
401 if ((priv->server_alias) && (*priv->server_alias))
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
402 return priv->server_alias;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
403
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
404 return NULL;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
405 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
406
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
407 PurpleContact *purple_buddy_get_contact(PurpleBuddy *buddy)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
408 {
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
409 g_return_val_if_fail(PURPLE_IS_BUDDY(buddy), NULL);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
410
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
411 return PURPLE_CONTACT(PURPLE_BLIST_NODE(buddy)->parent);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
412 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
413
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
414 PurplePresence *purple_buddy_get_presence(const PurpleBuddy *buddy)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
415 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
416 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
417
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
418 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
419
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
420 return priv->presence;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
421 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
422
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
423 void
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34727
diff changeset
424 purple_buddy_update_status(PurpleBuddy *buddy, PurpleStatus *old_status)
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
425 {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
426 PurpleStatus *status;
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
427 PurpleBlistNode *cnode;
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
428 PurpleContact *contact;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
429 PurpleCountingNode *contact_counter, *group_counter;
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
430 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
431 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
432
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
433 g_return_if_fail(priv != NULL);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
434
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
435 status = purple_presence_get_active_status(priv->presence);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
436
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
437 purple_debug_info("blist", "Updating buddy status for %s (%s)\n",
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
438 priv->name, purple_account_get_protocol_name(priv->account));
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
439
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
440 if (purple_status_is_online(status) &&
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
441 !purple_status_is_online(old_status)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
442
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
443 purple_signal_emit(purple_blist_get_handle(), "buddy-signed-on", buddy);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
444
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
445 cnode = PURPLE_BLIST_NODE(buddy)->parent;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
446 contact = PURPLE_CONTACT(cnode);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
447 contact_counter = PURPLE_COUNTING_NODE(contact);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
448 group_counter = PURPLE_COUNTING_NODE(cnode->parent);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
449
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
450 purple_counting_node_change_online_count(contact_counter, +1);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
451 if (purple_counting_node_get_online_count(contact_counter) == 1)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
452 purple_counting_node_change_online_count(group_counter, +1);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
453 } else if (!purple_status_is_online(status) &&
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
454 purple_status_is_online(old_status)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
455
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
456 purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "last_seen", time(NULL));
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
457 purple_signal_emit(purple_blist_get_handle(), "buddy-signed-off", buddy);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
458
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
459 cnode = PURPLE_BLIST_NODE(buddy)->parent;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
460 contact = PURPLE_CONTACT(cnode);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
461 contact_counter = PURPLE_COUNTING_NODE(contact);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
462 group_counter = PURPLE_COUNTING_NODE(cnode->parent);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
463
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
464 purple_counting_node_change_online_count(contact_counter, -1);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
465 if (purple_counting_node_get_online_count(contact_counter) == 0)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
466 purple_counting_node_change_online_count(group_counter, -1);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
467 } else {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
468 purple_signal_emit(purple_blist_get_handle(),
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
469 "buddy-status-changed", buddy, old_status,
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
470 status);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
471 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
472
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
473 /*
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
474 * This function used to only call the following two functions if one of
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
475 * the above signals had been triggered, but that's not good, because
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
476 * if someone's away message changes and they don't go from away to back
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
477 * to away then no signal is triggered.
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
478 *
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
479 * It's a safe assumption that SOMETHING called this function. PROBABLY
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
480 * because something, somewhere changed. Calling the stuff below
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
481 * certainly won't hurt anything. Unless you're on a K6-2 300.
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
482 */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
483 purple_contact_invalidate_priority_buddy(purple_buddy_get_contact(buddy));
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
484
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
485 if (ops && ops->update)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
486 ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(buddy));
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
487 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
488
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
489 PurpleMediaCaps purple_buddy_get_media_caps(const PurpleBuddy *buddy)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
490 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
491 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
492
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
493 g_return_val_if_fail(priv != NULL, 0);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
494
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
495 return priv->media_caps;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
496 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
497
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
498 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
499 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
500 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
501
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
502 g_return_if_fail(priv != NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
503
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
504 priv->media_caps = media_caps;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
505 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
506
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
507 PurpleGroup *purple_buddy_get_group(PurpleBuddy *buddy)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
508 {
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
509 g_return_val_if_fail(PURPLE_IS_BUDDY(buddy), NULL);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
510
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
511 if (PURPLE_BLIST_NODE(buddy)->parent == NULL)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
512 return NULL;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
513
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
514 return PURPLE_GROUP(PURPLE_BLIST_NODE(buddy)->parent->parent);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
515 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
516
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
517 /**************************************************************************
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
518 * GObject code for PurpleBuddy
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
519 **************************************************************************/
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
520
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
521 /* GObject Property names */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
522 #define BUDDY_PROP_NAME_S "name"
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
523 #define BUDDY_PROP_LOCAL_ALIAS_S "local-alias"
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
524 #define BUDDY_PROP_SERVER_ALIAS_S "server-alias"
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
525 #define BUDDY_PROP_ICON_S "icon"
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
526 #define BUDDY_PROP_ACCOUNT_S "account"
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
527 #define BUDDY_PROP_PRESENCE_S "presence"
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
528 #define BUDDY_PROP_MEDIA_CAPS_S "media-caps"
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
529
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
530 /* Set method for GObject properties */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
531 static void
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
532 purple_buddy_set_property(GObject *obj, guint param_id, const GValue *value,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
533 GParamSpec *pspec)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
534 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
535 PurpleBuddy *buddy = PURPLE_BUDDY(obj);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
536 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
537
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
538 switch (param_id) {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
539 case BUDDY_PROP_NAME:
34742
ad53075d1f42 Set construction strings directly
Ankit Vani <a@nevitus.org>
parents: 34737
diff changeset
540 priv->name = purple_utf8_strip_unprintables(g_value_get_string(value));
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
541 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
542 case BUDDY_PROP_LOCAL_ALIAS:
34742
ad53075d1f42 Set construction strings directly
Ankit Vani <a@nevitus.org>
parents: 34737
diff changeset
543 priv->local_alias = purple_utf8_strip_unprintables(g_value_get_string(value));
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
544 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
545 case BUDDY_PROP_SERVER_ALIAS:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
546 purple_buddy_set_server_alias(buddy, g_value_get_string(value));
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
547 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
548 case BUDDY_PROP_ICON:
34831
da607046d658 Backed out changeset d9b286af48ba
Ankit Vani <a@nevitus.org>
parents: 34830
diff changeset
549 purple_buddy_set_icon(buddy, g_value_get_pointer(value));
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
550 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
551 case BUDDY_PROP_ACCOUNT:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
552 priv->account = g_value_get_object(value);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
553 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
554 case BUDDY_PROP_MEDIA_CAPS:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
555 purple_buddy_set_media_caps(buddy, g_value_get_enum(value));
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
556 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
557 default:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
558 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
559 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
560 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
561 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
562
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
563 /* Get method for GObject properties */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
564 static void
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
565 purple_buddy_get_property(GObject *obj, guint param_id, GValue *value,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
566 GParamSpec *pspec)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
567 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
568 PurpleBuddy *buddy = PURPLE_BUDDY(obj);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
569
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
570 switch (param_id) {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
571 case BUDDY_PROP_NAME:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
572 g_value_set_string(value, purple_buddy_get_name(buddy));
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
573 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
574 case BUDDY_PROP_LOCAL_ALIAS:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
575 g_value_set_string(value, purple_buddy_get_local_alias(buddy));
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
576 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
577 case BUDDY_PROP_SERVER_ALIAS:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
578 g_value_set_string(value, purple_buddy_get_server_alias(buddy));
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
579 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
580 case BUDDY_PROP_ICON:
34831
da607046d658 Backed out changeset d9b286af48ba
Ankit Vani <a@nevitus.org>
parents: 34830
diff changeset
581 g_value_set_pointer(value, purple_buddy_get_icon(buddy));
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
582 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
583 case BUDDY_PROP_ACCOUNT:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
584 g_value_set_object(value, purple_buddy_get_account(buddy));
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
585 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
586 case BUDDY_PROP_PRESENCE:
34836
289bc0df25bb API changes for PurplePresence. See details.
Ankit Vani <a@nevitus.org>
parents: 34833
diff changeset
587 g_value_set_object(value, purple_buddy_get_presence(buddy));
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
588 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
589 case BUDDY_PROP_MEDIA_CAPS:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
590 g_value_set_enum(value, purple_buddy_get_media_caps(buddy));
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
591 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
592 default:
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
593 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
594 break;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
595 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
596 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
597
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
598 /* GObject initialization function */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
599 static void
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
600 purple_buddy_init(GTypeInstance *instance, gpointer klass)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
601 {
34743
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
602 PURPLE_DBUS_REGISTER_POINTER(PURPLE_BUDDY(instance), PurpleBuddy);
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
603 }
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
604
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
605 /* Called when done constructing */
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
606 static void
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
607 purple_buddy_constructed(GObject *object)
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
608 {
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
609 PurpleBuddy *buddy = PURPLE_BUDDY(object);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
610 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
611 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
612
34743
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
613 G_OBJECT_CLASS(blistnode_parent_class)->constructed(object);
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
614
34844
e341dbc04539 Refactored plugins, account, blistnodetypes to use the GObject presence API
Ankit Vani <a@nevitus.org>
parents: 34838
diff changeset
615 priv->presence = PURPLE_PRESENCE(purple_buddy_presence_new(buddy));
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
616 purple_presence_set_status_active(priv->presence, "offline", TRUE);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
617
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
618 if (ops && ops->new_node)
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
619 ops->new_node((PurpleBlistNode *)buddy);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
620 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
621
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
622 /* GObject dispose function */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
623 static void
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
624 purple_buddy_dispose(GObject *object)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
625 {
34986
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
626 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(object);
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
627
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
628 if (priv->icon) {
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
629 purple_buddy_icon_unref(priv->icon);
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
630 priv->icon = NULL;
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
631 }
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
632
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
633 if (priv->presence) {
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
634 g_object_unref(priv->presence);
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
635 priv->presence = NULL;
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
636 }
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
637
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
638 G_OBJECT_CLASS(blistnode_parent_class)->dispose(object);
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
639 }
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
640
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
641 /* GObject finalize function */
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
642 static void
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
643 purple_buddy_finalize(GObject *object)
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
644 {
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
645 PurpleBuddy *buddy = PURPLE_BUDDY(object);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
646 PurpleBuddyPrivate *priv = PURPLE_BUDDY_GET_PRIVATE(buddy);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
647 PurplePlugin *prpl;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
648 PurplePluginProtocolInfo *prpl_info;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
649
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
650 /*
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
651 * Tell the owner PRPL that we're about to free the buddy so it
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
652 * can free proto_data
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
653 */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
654 prpl = purple_find_prpl(purple_account_get_protocol_id(priv->account));
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
655 if (prpl) {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
656 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
657 if (prpl_info && prpl_info->buddy_free)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
658 prpl_info->buddy_free(buddy);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
659 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
660
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
661 g_free(priv->name);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
662 g_free(priv->local_alias);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
663 g_free(priv->server_alias);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
664
34986
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
665 PURPLE_DBUS_UNREGISTER_POINTER(buddy);
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
666
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
667 G_OBJECT_CLASS(blistnode_parent_class)->finalize(object);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
668 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
669
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
670 /* Class initializer function */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
671 static void purple_buddy_class_init(PurpleBuddyClass *klass)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
672 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
673 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
674
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
675 blistnode_parent_class = g_type_class_peek_parent(klass);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
676
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
677 obj_class->dispose = purple_buddy_dispose;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
678 obj_class->finalize = purple_buddy_finalize;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
679
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
680 /* Setup properties */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
681 obj_class->get_property = purple_buddy_get_property;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
682 obj_class->set_property = purple_buddy_set_property;
34743
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
683 obj_class->constructed = purple_buddy_constructed;
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
684
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
685 g_object_class_install_property(obj_class, BUDDY_PROP_NAME,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
686 g_param_spec_string(BUDDY_PROP_NAME_S, _("Name"),
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
687 _("The name of the buddy."), NULL,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
688 G_PARAM_READWRITE | G_PARAM_CONSTRUCT)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
689 );
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
690
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
691 g_object_class_install_property(obj_class, BUDDY_PROP_LOCAL_ALIAS,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
692 g_param_spec_string(BUDDY_PROP_LOCAL_ALIAS_S, _("Local alias"),
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
693 _("Local alias of thee buddy."), NULL,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
694 G_PARAM_READWRITE | G_PARAM_CONSTRUCT)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
695 );
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
696
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
697 g_object_class_install_property(obj_class, BUDDY_PROP_SERVER_ALIAS,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
698 g_param_spec_string(BUDDY_PROP_SERVER_ALIAS_S, _("Server alias"),
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
699 _("Server-side alias of the buddy."), NULL,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
700 G_PARAM_READWRITE)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
701 );
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
702
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
703 g_object_class_install_property(obj_class, BUDDY_PROP_ICON,
34831
da607046d658 Backed out changeset d9b286af48ba
Ankit Vani <a@nevitus.org>
parents: 34830
diff changeset
704 g_param_spec_pointer(BUDDY_PROP_ICON_S, _("Buddy icon"),
da607046d658 Backed out changeset d9b286af48ba
Ankit Vani <a@nevitus.org>
parents: 34830
diff changeset
705 _("The icon for the buddy."),
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
706 G_PARAM_READWRITE)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
707 );
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
708
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
709 g_object_class_install_property(obj_class, BUDDY_PROP_ACCOUNT,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
710 g_param_spec_object(BUDDY_PROP_ACCOUNT_S, _("Account"),
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
711 _("The account for the buddy."), PURPLE_TYPE_ACCOUNT,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
712 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
713 );
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
715 g_object_class_install_property(obj_class, BUDDY_PROP_PRESENCE,
34836
289bc0df25bb API changes for PurplePresence. See details.
Ankit Vani <a@nevitus.org>
parents: 34833
diff changeset
716 g_param_spec_object(BUDDY_PROP_PRESENCE_S, _("Presence"),
289bc0df25bb API changes for PurplePresence. See details.
Ankit Vani <a@nevitus.org>
parents: 34833
diff changeset
717 _("The status information for the buddy."), PURPLE_TYPE_PRESENCE,
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
718 G_PARAM_READABLE)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
719 );
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
720
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
721 g_object_class_install_property(obj_class, BUDDY_PROP_MEDIA_CAPS,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
722 g_param_spec_enum(BUDDY_PROP_MEDIA_CAPS_S, _("Media capabilities"),
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
723 _("The media capabilities of the buddy."),
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
724 PURPLE_MEDIA_TYPE_CAPS, PURPLE_MEDIA_CAPS_NONE,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
725 G_PARAM_READWRITE)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
726 );
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
727
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
728 g_type_class_add_private(klass, sizeof(PurpleBuddyPrivate));
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
729 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
730
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
731 GType
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
732 purple_buddy_get_type(void)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
733 {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
734 static GType type = 0;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
735
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
736 if(type == 0) {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
737 static const GTypeInfo info = {
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
738 sizeof(PurpleBuddyClass),
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
739 NULL,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
740 NULL,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
741 (GClassInitFunc)purple_buddy_class_init,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
742 NULL,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
743 NULL,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
744 sizeof(PurpleBuddy),
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
745 0,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
746 (GInstanceInitFunc)purple_buddy_init,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
747 NULL,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
748 };
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
749
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
750 type = g_type_register_static(PURPLE_TYPE_BLIST_NODE,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
751 "PurpleBuddy",
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
752 &info, 0);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
753 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
754
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
755 return type;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
756 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
757
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
758 PurpleBuddy *
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
759 purple_buddy_new(PurpleAccount *account, const char *name, const char *alias)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
760 {
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
761 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
762 g_return_val_if_fail(name != NULL, NULL);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
763
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
764 return g_object_new(PURPLE_TYPE_BUDDY,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
765 BUDDY_PROP_ACCOUNT_S, account,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
766 BUDDY_PROP_NAME_S, name,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
767 BUDDY_PROP_LOCAL_ALIAS_S, alias,
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
768 NULL);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
769 }
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
770
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
771 /**************************************************************************/
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
772 /* Contact API */
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
773 /**************************************************************************/
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
774
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
775 static void
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
776 purple_contact_compute_priority_buddy(PurpleContact *contact)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
777 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
778 PurpleBlistNode *bnode;
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
779 PurpleBuddy *new_priority = NULL;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
780 PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
781
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
782 g_return_if_fail(priv != NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
783
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
784 priv->priority_buddy = NULL;
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
785 for (bnode = PURPLE_BLIST_NODE(contact)->child;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
786 bnode != NULL;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
787 bnode = bnode->next)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
788 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
789 PurpleBuddy *buddy;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
790
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
791 if (!PURPLE_IS_BUDDY(bnode))
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
792 continue;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
793
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
794 buddy = PURPLE_BUDDY(bnode);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
795 if (new_priority == NULL)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
796 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
797 new_priority = buddy;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
798 continue;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
799 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
800
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
801 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
802 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
803 int cmp = 1;
34721
ad8974e1a268 Added includes and finished up blistnodetypes.c
Ankit Vani <a@nevitus.org>
parents: 34720
diff changeset
804 if (purple_account_is_connected(purple_buddy_get_account(new_priority)))
34846
dea8dd8343d5 Added GObject code to presenses.c.
Ankit Vani <a@nevitus.org>
parents: 34844
diff changeset
805 cmp = purple_buddy_presence_compare(
dea8dd8343d5 Added GObject code to presenses.c.
Ankit Vani <a@nevitus.org>
parents: 34844
diff changeset
806 PURPLE_BUDDY_PRESENCE(purple_buddy_get_presence(new_priority)),
dea8dd8343d5 Added GObject code to presenses.c.
Ankit Vani <a@nevitus.org>
parents: 34844
diff changeset
807 PURPLE_BUDDY_PRESENCE(purple_buddy_get_presence(buddy)));
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
808
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
809 if (cmp > 0 || (cmp == 0 &&
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
810 purple_prefs_get_bool("/purple/contact/last_match")))
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
811 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
812 new_priority = buddy;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
813 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
814 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
815 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
816
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
817 priv->priority_buddy = new_priority;
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
818 priv->priority_valid = TRUE;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
819 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
820
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
821 PurpleGroup *
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
822 purple_contact_get_group(const PurpleContact *contact)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
823 {
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
824 g_return_val_if_fail(PURPLE_IS_CONTACT(contact), NULL);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
825
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
826 return PURPLE_GROUP(PURPLE_BLIST_NODE(contact)->parent);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
827 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
828
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
829 void
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
830 purple_contact_set_alias(PurpleContact *contact, const char *alias)
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
831 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
832 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
833 PurpleIMConversation *im;
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
834 PurpleBlistNode *bnode;
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
835 char *old_alias;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
836 char *new_alias = NULL;
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
837 PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
838
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
839 g_return_if_fail(priv != NULL);
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
840
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
841 if ((alias != NULL) && (*alias != '\0'))
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
842 new_alias = purple_utf8_strip_unprintables(alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
843
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
844 if (!purple_strings_are_different(priv->alias, new_alias)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
845 g_free(new_alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
846 return;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
847 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
848
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
849 old_alias = priv->alias;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
850
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
851 if ((new_alias != NULL) && (*new_alias != '\0'))
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
852 priv->alias = new_alias;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
853 else {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
854 priv->alias = NULL;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
855 g_free(new_alias); /* could be "\0" */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
856 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
857
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
858 if (ops) {
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
859 if (ops->save_node)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
860 ops->save_node(PURPLE_BLIST_NODE(contact));
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
861 if (ops->update)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
862 ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(contact));
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
863 }
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
864
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
865 for(bnode = PURPLE_BLIST_NODE(contact)->child; bnode != NULL; bnode = bnode->next)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
866 {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
867 PurpleBuddy *buddy = PURPLE_BUDDY(bnode);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
868
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
869 im = purple_conversations_find_im_with_account(purple_buddy_get_name(buddy),
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
870 purple_buddy_get_account(buddy));
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
871 if (im)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
872 purple_conversation_autoset_title(PURPLE_CONVERSATION(im));
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
873 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
874
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
875 purple_signal_emit(purple_blist_get_handle(), "blist-node-aliased",
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
876 contact, old_alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
877 g_free(old_alias);
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
878 }
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
879
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
880 const char *purple_contact_get_alias(PurpleContact* contact)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
881 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
882 PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
883
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
884 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
885
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
886 if (priv->alias)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
887 return priv->alias;
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 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
890 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
891
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
892 gboolean purple_contact_on_account(PurpleContact *c, PurpleAccount *account)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
893 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
894 PurpleBlistNode *bnode, *cnode = (PurpleBlistNode *) c;
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
895
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
896 g_return_val_if_fail(PURPLE_IS_CONTACT(c), FALSE);
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
897 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), FALSE);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
898
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
899 for (bnode = cnode->child; bnode; bnode = bnode->next) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
900 PurpleBuddy *buddy;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
901
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
902 if (! PURPLE_IS_BUDDY(bnode))
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
903 continue;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
904
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
905 buddy = (PurpleBuddy *)bnode;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
906 if (purple_buddy_get_account(buddy) == account)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
907 return TRUE;
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 return FALSE;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
910 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
911
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
912 void purple_contact_invalidate_priority_buddy(PurpleContact *contact)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
913 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
914 PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
915
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
916 g_return_if_fail(priv != NULL);
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 priv->priority_valid = FALSE;
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
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
921 PurpleBuddy *purple_contact_get_priority_buddy(PurpleContact *contact)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
922 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
923 PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
924
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
925 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
926
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
927 if (!priv->priority_valid)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
928 purple_contact_compute_priority_buddy(contact);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
929
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
930 return priv->priority_buddy;
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
931 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
932
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
933 void purple_contact_merge(PurpleContact *source, PurpleBlistNode *node)
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
934 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
935 PurpleBlistNode *sourcenode = (PurpleBlistNode*)source;
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
936 PurpleBlistNode *prev, *cur, *next;
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
937 PurpleContact *target;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
938
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
939 g_return_if_fail(PURPLE_IS_CONTACT(source));
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
940 g_return_if_fail(PURPLE_IS_BLIST_NODE(node));
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
941
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
942 if (PURPLE_IS_CONTACT(node)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
943 target = (PurpleContact *)node;
34767
38a5613c3e26 Prepended functions private to a subsystem but used over multiple files by underscore
Ankit Vani <a@nevitus.org>
parents: 34744
diff changeset
944 prev = _purple_blist_get_last_child(node);
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
945 } else if (PURPLE_IS_BUDDY(node)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
946 target = (PurpleContact *)node->parent;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
947 prev = node;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
948 } else {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
949 return;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
950 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
951
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
952 if (source == target || !target)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
953 return;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
954
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
955 next = sourcenode->child;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
956
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
957 while (next) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
958 cur = next;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
959 next = cur->next;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
960 if (PURPLE_IS_BUDDY(cur)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
961 purple_blist_add_buddy((PurpleBuddy *)cur, target, NULL, prev);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
962 prev = cur;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
963 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
964 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
965 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
966
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
967 /**************************************************************************
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
968 * GObject code for PurpleContact
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
969 **************************************************************************/
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
970
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
971 /* GObject Property names */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
972 #define CONTACT_PROP_ALIAS_S "alias"
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
973 #define CONTACT_PROP_PRIORITY_BUDDY_S "priority-buddy"
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
974
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
975 /* Set method for GObject properties */
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
976 static void
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
977 purple_contact_set_property(GObject *obj, guint param_id, const GValue *value,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
978 GParamSpec *pspec)
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
979 {
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
980 PurpleContact *contact = PURPLE_CONTACT(obj);
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
981
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
982 switch (param_id) {
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
983 case CONTACT_PROP_ALIAS:
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
984 purple_contact_set_alias(contact, g_value_get_string(value));
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
985 break;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
986 default:
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
987 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
988 break;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
989 }
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
990 }
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
991
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
992 /* Get method for GObject properties */
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
993 static void
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
994 purple_contact_get_property(GObject *obj, guint param_id, GValue *value,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
995 GParamSpec *pspec)
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
996 {
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
997 PurpleContact *contact = PURPLE_CONTACT(obj);
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
998 PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
999
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1000 switch (param_id) {
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1001 case CONTACT_PROP_ALIAS:
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
1002 g_value_set_string(value, priv->alias);
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1003 break;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1004 case CONTACT_PROP_PRIORITY_BUDDY:
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1005 g_value_set_object(value, purple_contact_get_priority_buddy(contact));
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1006 break;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1007 default:
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1008 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1009 break;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1010 }
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1011 }
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1012
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1013 /* GObject initialization function */
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1014 static void
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1015 purple_contact_init(GTypeInstance *instance, gpointer klass)
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1016 {
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1017 PurpleContact *contact = PURPLE_CONTACT(instance);
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1018 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1019
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1020 if (ops && ops->new_node)
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1021 ops->new_node(PURPLE_BLIST_NODE(contact));
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1022
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1023 PURPLE_DBUS_REGISTER_POINTER(contact, PurpleContact);
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1024 }
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1025
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1026 /* GObject finalize function */
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1027 static void
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1028 purple_contact_finalize(GObject *object)
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1029 {
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1030 g_free(PURPLE_CONTACT_GET_PRIVATE(object)->alias);
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1031
34986
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
1032 PURPLE_DBUS_UNREGISTER_POINTER(object);
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
1033
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
1034 G_OBJECT_CLASS(counting_parent_class)->finalize(object);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1035 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1036
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1037 /* Class initializer function */
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1038 static void purple_contact_class_init(PurpleContactClass *klass)
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1039 {
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1040 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1041
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
1042 counting_parent_class = g_type_class_peek_parent(klass);
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1043
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1044 obj_class->finalize = purple_contact_finalize;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1045
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1046 /* Setup properties */
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1047 obj_class->get_property = purple_contact_get_property;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1048 obj_class->set_property = purple_contact_set_property;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1049
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1050 g_object_class_install_property(obj_class, CONTACT_PROP_ALIAS,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1051 g_param_spec_string(CONTACT_PROP_ALIAS_S, _("Alias"),
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1052 _("The alias for the contact."), NULL,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1053 G_PARAM_READWRITE)
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1054 );
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1055
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1056 g_object_class_install_property(obj_class, CONTACT_PROP_PRIORITY_BUDDY,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1057 g_param_spec_object(CONTACT_PROP_PRIORITY_BUDDY_S,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1058 _("Priority buddy"), _("The priority buddy of the contact."),
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1059 PURPLE_TYPE_BUDDY, G_PARAM_READABLE)
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1060 );
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1061
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1062 g_type_class_add_private(klass, sizeof(PurpleContactPrivate));
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1063 }
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1064
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1065 GType
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1066 purple_contact_get_type(void)
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1067 {
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1068 static GType type = 0;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1069
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1070 if(type == 0) {
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1071 static const GTypeInfo info = {
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1072 sizeof(PurpleContactClass),
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1073 NULL,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1074 NULL,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1075 (GClassInitFunc)purple_contact_class_init,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1076 NULL,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1077 NULL,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1078 sizeof(PurpleContact),
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1079 0,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1080 (GInstanceInitFunc)purple_contact_init,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1081 NULL,
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1082 };
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1083
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
1084 type = g_type_register_static(PURPLE_TYPE_COUNTING_NODE,
34718
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1085 "PurpleContact",
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1086 &info, 0);
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1087 }
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1088
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1089 return type;
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1090 }
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1091
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1092 PurpleContact *
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1093 purple_contact_new(void)
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1094 {
aa2019a5ccec GObjectified PurpleContact.
Ankit Vani <a@nevitus.org>
parents: 34716
diff changeset
1095 return g_object_new(PURPLE_TYPE_CONTACT, NULL);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1096 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1097
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1098 /**************************************************************************/
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1099 /* Chat API */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1100 /**************************************************************************/
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1101
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1102 const char *purple_chat_get_name(PurpleChat *chat)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1103 {
34737
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1104 PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat);
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1105
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1106 g_return_val_if_fail(priv != NULL, NULL);
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1107
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1108 if ((priv->alias != NULL) && (*priv->alias != '\0'))
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1109 return priv->alias;
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1110
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1111 return purple_chat_get_name_only(chat);
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1112 }
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1113
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1114 const char *purple_chat_get_name_only(PurpleChat *chat)
60d32106f808 Refactored finch to use the GObject BList API. Added purple_chat_get_name_only().
Ankit Vani <a@nevitus.org>
parents: 34730
diff changeset
1115 {
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1116 char *ret = NULL;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1117 PurplePlugin *prpl;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1118 PurplePluginProtocolInfo *prpl_info = NULL;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1119 PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1120
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1121 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1122
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1123 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
1124 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1125
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1126 if (prpl_info->chat_info) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1127 struct proto_chat_entry *pce;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1128 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
1129 pce = parts->data;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1130 ret = g_hash_table_lookup(priv->components, pce->identifier);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1131 g_list_foreach(parts, (GFunc)g_free, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1132 g_list_free(parts);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1133 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1134
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1135 return ret;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1136 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1137
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1138 void
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1139 purple_chat_set_alias(PurpleChat *chat, const char *alias)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1140 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1141 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1142 char *old_alias;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1143 char *new_alias = NULL;
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1144 PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1145
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1146 g_return_if_fail(priv != NULL);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1147
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1148 if ((alias != NULL) && (*alias != '\0'))
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1149 new_alias = purple_utf8_strip_unprintables(alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1150
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1151 if (!purple_strings_are_different(priv->alias, new_alias)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1152 g_free(new_alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1153 return;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1154 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1155
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1156 old_alias = priv->alias;
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1157
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1158 if ((new_alias != NULL) && (*new_alias != '\0'))
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1159 priv->alias = new_alias;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1160 else {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1161 priv->alias = NULL;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1162 g_free(new_alias); /* could be "\0" */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1163 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1164
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
1165 if (ops) {
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
1166 if (ops->save_node)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
1167 ops->save_node(PURPLE_BLIST_NODE(chat));
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
1168 if (ops->update)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
1169 ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(chat));
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
1170 }
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1171
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1172 purple_signal_emit(purple_blist_get_handle(), "blist-node-aliased",
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1173 chat, old_alias);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1174 g_free(old_alias);
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1175 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1176
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1177 PurpleGroup *
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1178 purple_chat_get_group(PurpleChat *chat)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1179 {
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
1180 g_return_val_if_fail(PURPLE_IS_CHAT(chat), NULL);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1181
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1182 return PURPLE_GROUP(PURPLE_BLIST_NODE(chat)->parent);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1183 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1184
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1185 PurpleAccount *
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1186 purple_chat_get_account(PurpleChat *chat)
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 PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat);
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 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1191
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1192 return priv->account;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1193 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1194
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1195 GHashTable *
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1196 purple_chat_get_components(PurpleChat *chat)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1197 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1198 PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1199
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1200 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1201
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1202 return priv->components;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1203 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1204
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1205 /**************************************************************************
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1206 * GObject code for PurpleChat
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1207 **************************************************************************/
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1208
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1209 /* GObject Property names */
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1210 #define CHAT_PROP_ALIAS_S "alias"
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1211 #define CHAT_PROP_ACCOUNT_S "account"
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1212 #define CHAT_PROP_COMPONENTS_S "components"
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1213
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1214 /* Set method for GObject properties */
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1215 static void
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1216 purple_chat_set_property(GObject *obj, guint param_id, const GValue *value,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1217 GParamSpec *pspec)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1218 {
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1219 PurpleChat *chat = PURPLE_CHAT(obj);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1220 PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1221
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1222 switch (param_id) {
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1223 case CHAT_PROP_ALIAS:
34742
ad53075d1f42 Set construction strings directly
Ankit Vani <a@nevitus.org>
parents: 34737
diff changeset
1224 priv->alias = purple_utf8_strip_unprintables(g_value_get_string(value));
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1225 break;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1226 case CHAT_PROP_ACCOUNT:
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1227 priv->account = g_value_get_object(value);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1228 break;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1229 case CHAT_PROP_COMPONENTS:
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1230 priv->components = g_value_get_pointer(value);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1231 break;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1232 default:
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1233 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1234 break;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1235 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1236 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1237
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1238 /* Get method for GObject properties */
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1239 static void
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1240 purple_chat_get_property(GObject *obj, guint param_id, GValue *value,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1241 GParamSpec *pspec)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1242 {
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1243 PurpleChat *chat = PURPLE_CHAT(obj);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1244 PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(chat);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1245
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1246 switch (param_id) {
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1247 case CHAT_PROP_ALIAS:
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1248 g_value_set_string(value, priv->alias);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1249 break;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1250 case CHAT_PROP_ACCOUNT:
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1251 g_value_set_object(value, purple_chat_get_account(chat));
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1252 break;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1253 case CHAT_PROP_COMPONENTS:
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1254 g_value_set_pointer(value, purple_chat_get_components(chat));
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1255 break;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1256 default:
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1257 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1258 break;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1259 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1260 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1261
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1262 /* GObject initialization function */
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1263 static void
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1264 purple_chat_init(GTypeInstance *instance, gpointer klass)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1265 {
34743
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1266 PURPLE_DBUS_REGISTER_POINTER(PURPLE_CHAT(instance), PurpleChat);
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1267 }
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1268
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1269 /* Called when done constructing */
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1270 static void
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1271 purple_chat_constructed(GObject *object)
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1272 {
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1273 PurpleChat *chat = PURPLE_CHAT(object);
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1274 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1275
34743
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1276 G_OBJECT_CLASS(blistnode_parent_class)->constructed(object);
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1277
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1278 if (ops != NULL && ops->new_node != NULL)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1279 ops->new_node(PURPLE_BLIST_NODE(chat));
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1280 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1281
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1282 /* GObject finalize function */
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1283 static void
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1284 purple_chat_finalize(GObject *object)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1285 {
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1286 PurpleChatPrivate *priv = PURPLE_CHAT_GET_PRIVATE(object);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1287
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1288 g_free(priv->alias);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1289 g_hash_table_destroy(priv->components);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1290
34986
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
1291 PURPLE_DBUS_UNREGISTER_POINTER(object);
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
1292
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
1293 G_OBJECT_CLASS(blistnode_parent_class)->finalize(object);
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1294 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1295
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1296 /* Class initializer function */
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1297 static void purple_chat_class_init(PurpleChatClass *klass)
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1298 {
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1299 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1300
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
1301 blistnode_parent_class = g_type_class_peek_parent(klass);
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1302
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1303 obj_class->finalize = purple_chat_finalize;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1304
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1305 /* Setup properties */
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1306 obj_class->get_property = purple_chat_get_property;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1307 obj_class->set_property = purple_chat_set_property;
34743
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1308 obj_class->constructed = purple_chat_constructed;
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1309
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1310 g_object_class_install_property(obj_class, CHAT_PROP_ALIAS,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1311 g_param_spec_string(CHAT_PROP_ALIAS_S, _("Alias"),
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1312 _("The alias for the chat."), NULL,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1313 G_PARAM_READWRITE | G_PARAM_CONSTRUCT)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1314 );
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1315
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1316 g_object_class_install_property(obj_class, CHAT_PROP_ACCOUNT,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1317 g_param_spec_object(CHAT_PROP_ACCOUNT_S, _("Account"),
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1318 _("The account that the chat belongs to."), PURPLE_TYPE_ACCOUNT,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1319 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1320 );
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1321
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1322 g_object_class_install_property(obj_class, CHAT_PROP_COMPONENTS,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1323 g_param_spec_pointer(CHAT_PROP_COMPONENTS_S, _("Components"),
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1324 _("The protocol components of the chat."),
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1325 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1326 );
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1327
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1328 g_type_class_add_private(klass, sizeof(PurpleChatPrivate));
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1329 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1330
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1331 GType
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1332 purple_chat_get_type(void)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1333 {
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1334 static GType type = 0;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1335
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1336 if(type == 0) {
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1337 static const GTypeInfo info = {
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1338 sizeof(PurpleChatClass),
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1339 NULL,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1340 NULL,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1341 (GClassInitFunc)purple_chat_class_init,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1342 NULL,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1343 NULL,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1344 sizeof(PurpleChat),
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1345 0,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1346 (GInstanceInitFunc)purple_chat_init,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1347 NULL,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1348 };
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1349
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1350 type = g_type_register_static(PURPLE_TYPE_BLIST_NODE,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1351 "PurpleChat",
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1352 &info, 0);
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1353 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1354
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1355 return type;
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1356 }
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1357
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1358 PurpleChat *
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1359 purple_chat_new(PurpleAccount *account, const char *alias, GHashTable *components)
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1360 {
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34908
diff changeset
1361 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1362 g_return_val_if_fail(components != NULL, NULL);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1363
34719
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1364 return g_object_new(PURPLE_TYPE_CHAT,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1365 CHAT_PROP_ACCOUNT_S, account,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1366 CHAT_PROP_ALIAS_S, alias,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1367 CHAT_PROP_COMPONENTS_S, components,
714032ec3302 GObjectified PurpleChat.
Ankit Vani <a@nevitus.org>
parents: 34718
diff changeset
1368 NULL);
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1369 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1370
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1371 /**************************************************************************/
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1372 /* Group API */
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1373 /**************************************************************************/
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1374
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1375 GSList *purple_group_get_accounts(PurpleGroup *group)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1376 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1377 GSList *l = NULL;
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1378 PurpleBlistNode *gnode, *cnode, *bnode;
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1379
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1380 gnode = (PurpleBlistNode *)group;
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1381
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1382 for (cnode = gnode->child; cnode; cnode = cnode->next) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1383 if (PURPLE_IS_CHAT(cnode)) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1384 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
1385 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
1386 } else if (PURPLE_IS_CONTACT(cnode)) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1387 for (bnode = cnode->child; bnode; bnode = bnode->next) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1388 if (PURPLE_IS_BUDDY(bnode)) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1389 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
1390 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
1391 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1392 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1393 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1394 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1395
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1396 return l;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1397 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1398
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1399 gboolean purple_group_on_account(PurpleGroup *g, PurpleAccount *account)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1400 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1401 PurpleBlistNode *cnode;
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1402 for (cnode = ((PurpleBlistNode *)g)->child; cnode; cnode = cnode->next) {
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1403 if (PURPLE_IS_CONTACT(cnode)) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1404 if(purple_contact_on_account((PurpleContact *) cnode, account))
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1405 return TRUE;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1406 } else if (PURPLE_IS_CHAT(cnode)) {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1407 PurpleChat *chat = (PurpleChat *)cnode;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1408 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
1409 || purple_chat_get_account(chat) == account)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1410 return TRUE;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1411 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1412 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1413 return FALSE;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1414 }
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1415
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1416 /*
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1417 * TODO: If merging, prompt the user if they want to merge.
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1418 */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1419 void purple_group_set_name(PurpleGroup *source, const char *name)
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1420 {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1421 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1422 PurpleGroup *dest;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1423 gchar *old_name;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1424 gchar *new_name;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1425 GList *moved_buddies = NULL;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1426 GSList *accts;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1427 PurpleGroupPrivate *priv = PURPLE_GROUP_GET_PRIVATE(source);
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1428
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1429 g_return_if_fail(priv != NULL);
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1430 g_return_if_fail(name != NULL);
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1431
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1432 new_name = purple_utf8_strip_unprintables(name);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1433
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1434 if (*new_name == '\0' || purple_strequal(new_name, priv->name)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1435 g_free(new_name);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1436 return;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1437 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1438
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34727
diff changeset
1439 dest = purple_blist_find_group(new_name);
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1440 if (dest != NULL && purple_utf8_strcasecmp(priv->name,
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1441 PURPLE_GROUP_GET_PRIVATE(dest)->name) != 0) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1442 /* We're merging two groups */
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1443 PurpleBlistNode *prev, *child, *next;
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1444
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1445 prev = _purple_blist_get_last_child((PurpleBlistNode*)dest);
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1446 child = PURPLE_BLIST_NODE(source)->child;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1447
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1448 /*
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1449 * TODO: This seems like a dumb way to do this... why not just
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1450 * append all children from the old group to the end of the new
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1451 * one? PRPLs might be expecting to receive an add_buddy() for
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1452 * each moved buddy...
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1453 */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1454 while (child)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1455 {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1456 next = child->next;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1457 if (PURPLE_IS_CONTACT(child)) {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1458 PurpleBlistNode *bnode;
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1459 purple_blist_add_contact((PurpleContact *)child, dest, prev);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1460 for (bnode = child->child; bnode != NULL; bnode = bnode->next) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1461 purple_blist_add_buddy((PurpleBuddy *)bnode, (PurpleContact *)child,
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1462 NULL, bnode->prev);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1463 moved_buddies = g_list_append(moved_buddies, bnode);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1464 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1465 prev = child;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1466 } else if (PURPLE_IS_CHAT(child)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1467 purple_blist_add_chat((PurpleChat *)child, dest, prev);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1468 prev = child;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1469 } else {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1470 purple_debug(PURPLE_DEBUG_ERROR, "blist",
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1471 "Unknown child type in group %s\n", priv->name);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1472 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1473 child = next;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1474 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1475
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1476 /* Make a copy of the old group name and then delete the old group */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1477 old_name = g_strdup(priv->name);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1478 purple_blist_remove_group(source);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1479 source = dest;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1480 g_free(new_name);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1481 } else {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1482 /* A simple rename */
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1483 PurpleBlistNode *cnode, *bnode;
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1484
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1485 /* Build a GList of all buddies in this group */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1486 for (cnode = PURPLE_BLIST_NODE(source)->child; cnode != NULL; cnode = cnode->next) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1487 if (PURPLE_IS_CONTACT(cnode))
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1488 for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1489 moved_buddies = g_list_append(moved_buddies, bnode);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1490 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1491
34729
7f5a2fc8ef9c Refactored blistnodetypes and BuddyList.xs according to API changes
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
1492 purple_blist_update_groups_cache(source, new_name);
7f5a2fc8ef9c Refactored blistnodetypes and BuddyList.xs according to API changes
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
1493
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1494 old_name = priv->name;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1495 priv->name = new_name;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1496 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1497
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1498 /* Save our changes */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1499 if (ops && ops->save_node)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1500 ops->save_node(PURPLE_BLIST_NODE(source));
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1501
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1502 /* Update the UI */
34730
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
1503 if (ops && ops->update)
2406671e3c44 Buddy list now compiles.
Ankit Vani <a@nevitus.org>
parents: 34729
diff changeset
1504 ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(source));
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1505
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1506 /* Notify all PRPLs */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1507 /* TODO: Is this condition needed? Seems like it would always be TRUE */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1508 if(old_name && !purple_strequal(priv->name, old_name)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1509 for (accts = purple_group_get_accounts(source); accts; accts = g_slist_remove(accts, accts->data)) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1510 PurpleAccount *account = accts->data;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1511 PurpleConnection *gc = NULL;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1512 PurplePlugin *prpl = NULL;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1513 PurplePluginProtocolInfo *prpl_info = NULL;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1514 GList *l = NULL, *buddies = NULL;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1515
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1516 gc = purple_account_get_connection(account);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1517
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1518 if(gc)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1519 prpl = purple_connection_get_prpl(gc);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1520
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1521 if(gc && prpl)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1522 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1523
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1524 if(!prpl_info)
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1525 continue;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1526
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1527 for(l = moved_buddies; l; l = l->next) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1528 PurpleBuddy *buddy = PURPLE_BUDDY(l->data);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1529
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1530 if(buddy && purple_buddy_get_account(buddy) == account)
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1531 buddies = g_list_append(buddies, (PurpleBlistNode *)buddy);
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1532 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1533
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1534 if(prpl_info->rename_group) {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1535 prpl_info->rename_group(gc, old_name, source, buddies);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1536 } else {
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1537 GList *cur, *groups = NULL;
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1538
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1539 /* Make a list of what the groups each buddy is in */
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1540 for(cur = buddies; cur; cur = cur->next) {
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1541 PurpleBlistNode *node = (PurpleBlistNode *)cur->data;
34727
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1542 groups = g_list_prepend(groups, node->parent->parent);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1543 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1544
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1545 purple_account_remove_buddies(account, buddies, groups);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1546 g_list_free(groups);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1547 purple_account_add_buddies(account, buddies, NULL);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1548 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1549
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1550 g_list_free(buddies);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1551 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1552 }
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1553 g_list_free(moved_buddies);
579e9a8dbd5f Moved methods from buddylist.[ch] to the appropriate object files
Ankit Vani <a@nevitus.org>
parents: 34722
diff changeset
1554 g_free(old_name);
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1555 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1556
34707
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1557 const char *purple_group_get_name(PurpleGroup *group)
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1558 {
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1559 PurpleGroupPrivate *priv = PURPLE_GROUP_GET_PRIVATE(group);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1560
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1561 g_return_val_if_fail(priv != NULL, NULL);
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1562
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1563 return priv->name;
d433bf40792a Added blistnode.[ch] and blistnodetypes.[ch]
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1564 }
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1565
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1566 /**************************************************************************
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1567 * GObject code for PurpleGroup
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1568 **************************************************************************/
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1569
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1570 /* GObject Property names */
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1571 #define GROUP_PROP_NAME_S "name"
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1572
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1573 /* Set method for GObject properties */
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1574 static void
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1575 purple_group_set_property(GObject *obj, guint param_id, const GValue *value,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1576 GParamSpec *pspec)
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1577 {
34742
ad53075d1f42 Set construction strings directly
Ankit Vani <a@nevitus.org>
parents: 34737
diff changeset
1578 PurpleGroupPrivate *priv = PURPLE_GROUP_GET_PRIVATE(obj);
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1579
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1580 switch (param_id) {
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1581 case GROUP_PROP_NAME:
34742
ad53075d1f42 Set construction strings directly
Ankit Vani <a@nevitus.org>
parents: 34737
diff changeset
1582 priv->name = purple_utf8_strip_unprintables(g_value_get_string(value));
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1583 break;
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1584 default:
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1585 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1586 break;
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1587 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1588 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1589
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1590 /* Get method for GObject properties */
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1591 static void
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1592 purple_group_get_property(GObject *obj, guint param_id, GValue *value,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1593 GParamSpec *pspec)
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1594 {
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1595 PurpleGroup *group = PURPLE_GROUP(obj);
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1596
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1597 switch (param_id) {
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1598 case GROUP_PROP_NAME:
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1599 g_value_set_string(value, purple_group_get_name(group));
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1600 break;
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1601 default:
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1602 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1603 break;
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1604 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1605 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1606
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1607 /* GObject initialization function */
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1608 static void
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1609 purple_group_init(GTypeInstance *instance, gpointer klass)
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1610 {
34743
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1611 PURPLE_DBUS_REGISTER_POINTER(PURPLE_GROUP(instance), PurpleGroup);
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1612 }
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1613
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1614 /* Called when done constructing */
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1615 static void
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1616 purple_group_constructed(GObject *object)
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1617 {
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1618 PurpleGroup *group = PURPLE_GROUP(object);
34864
0e292d8887de Renamed PurpleBListNode back to PurpleBlistNode
Ankit Vani <a@nevitus.org>
parents: 34846
diff changeset
1619 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1620
34743
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1621 G_OBJECT_CLASS(counting_parent_class)->constructed(object);
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1622
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1623 if (ops && ops->new_node)
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1624 ops->new_node(PURPLE_BLIST_NODE(group));
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1625 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1626
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1627 /* GObject finalize function */
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1628 static void
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1629 purple_group_finalize(GObject *object)
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1630 {
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1631 g_free(PURPLE_GROUP_GET_PRIVATE(object)->name);
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1632
34986
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
1633 PURPLE_DBUS_UNREGISTER_POINTER(object);
894c29e33300 Move all object destruction code to finalize() methods and keep unrefs in dispose()
Ankit Vani <a@nevitus.org>
parents: 34983
diff changeset
1634
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
1635 G_OBJECT_CLASS(counting_parent_class)->finalize(object);
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1636 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1637
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1638 /* Class initializer function */
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1639 static void purple_group_class_init(PurpleGroupClass *klass)
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1640 {
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1641 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1642
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
1643 counting_parent_class = g_type_class_peek_parent(klass);
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1644
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1645 obj_class->finalize = purple_group_finalize;
34743
fccb496c385e Override GObject constructed method for PurpleBuddy, PurpleChat and PurpleGroup, to inform UI of creation
Ankit Vani <a@nevitus.org>
parents: 34742
diff changeset
1646 obj_class->constructed = purple_group_constructed;
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1647
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1648 /* Setup properties */
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1649 obj_class->get_property = purple_group_get_property;
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1650 obj_class->set_property = purple_group_set_property;
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1651
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1652 g_object_class_install_property(obj_class, GROUP_PROP_NAME,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1653 g_param_spec_string(GROUP_PROP_NAME_S, _("Name"),
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1654 _("Name of the group."), NULL,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1655 G_PARAM_READWRITE | G_PARAM_CONSTRUCT)
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1656 );
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1657
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1658 g_type_class_add_private(klass, sizeof(PurpleGroupPrivate));
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1659 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1660
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1661 GType
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1662 purple_group_get_type(void)
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1663 {
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1664 static GType type = 0;
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1665
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1666 if(type == 0) {
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1667 static const GTypeInfo info = {
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1668 sizeof(PurpleGroupClass),
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1669 NULL,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1670 NULL,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1671 (GClassInitFunc)purple_group_class_init,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1672 NULL,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1673 NULL,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1674 sizeof(PurpleGroup),
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1675 0,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1676 (GInstanceInitFunc)purple_group_init,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1677 NULL,
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1678 };
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1679
34722
32e636146d3f Added PurpleCountingNode to blistnodes.[ch]. PurpleContact and PurpleGroup inherit PurpleCountingNode.
Ankit Vani <a@nevitus.org>
parents: 34721
diff changeset
1680 type = g_type_register_static(PURPLE_TYPE_COUNTING_NODE,
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1681 "PurpleGroup",
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1682 &info, 0);
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1683 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1684
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1685 return type;
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1686 }
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1687
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1688 PurpleGroup *
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1689 purple_group_new(const char *name)
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1690 {
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1691 PurpleGroup *group;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1692
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1693 g_return_val_if_fail(name != NULL, NULL);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1694 g_return_val_if_fail(*name != '\0', NULL);
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1695
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34727
diff changeset
1696 group = purple_blist_find_group(name);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1697 if (group != NULL)
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1698 return group;
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1699
34720
456380cee8d5 GObjectified PurpleGroup.
Ankit Vani <a@nevitus.org>
parents: 34719
diff changeset
1700 return g_object_new(PURPLE_TYPE_GROUP, GROUP_PROP_NAME_S, name, NULL);
34714
9d1d1e5d19b4 GObjectified PurpleBuddy.
Ankit Vani <a@nevitus.org>
parents: 34709
diff changeset
1701 }

mercurial