libpurple/status.c

Mon, 07 Sep 2009 19:33:39 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Mon, 07 Sep 2009 19:33:39 +0000
changeset 28526
c1076c05206b
parent 28176
6262a177af69
child 29304
6a941ac152e3
permissions
-rw-r--r--

merge of '6942d82d575944b6f6c28653bde5673c80f15bb5'
and '71cb694c7b56ef35b47abdd013200f7127c36198'

9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9791
diff changeset
1 /**
10067
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
2 * @file status.c Status API
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9791
diff changeset
3 * @ingroup core
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20055
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20055
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20055
diff changeset
6 /* purple
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
8 * Purple is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 6371
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 6371
diff changeset
10 * source distribution.
9944
71ef020ec4b0 [gaim-migrate @ 10838]
Christian Hammond <chipx86@chipx86.com>
parents: 9791
diff changeset
11 *
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 *
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 *
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18284
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25 */
25893
77f655480a0f Slap some PURPLE_DISABLE_DEPRECATED checks around the functions Mark just
Richard Laager <rlaager@pidgin.im>
parents: 25871
diff changeset
26 #define _PURPLE_STATUS_C_
77f655480a0f Slap some PURPLE_DISABLE_DEPRECATED checks around the functions Mark just
Richard Laager <rlaager@pidgin.im>
parents: 25871
diff changeset
27
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
28 #include "internal.h"
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
30 #include "blist.h"
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10378
diff changeset
31 #include "core.h"
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11033
diff changeset
32 #include "dbus-maybe.h"
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
33 #include "debug.h"
10337
778231f38df6 [gaim-migrate @ 11545]
Mark Doliner <markdoliner@pidgin.im>
parents: 10322
diff changeset
34 #include "notify.h"
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
35 #include "prefs.h"
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
36 #include "status.h"
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
37
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
38 /**
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
39 * A type of status.
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
40 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
41 struct _PurpleStatusType
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
42 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
43 PurpleStatusPrimitive primitive;
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6321
diff changeset
44
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
45 char *id;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
46 char *name;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
47 char *primary_attr_id;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
48
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
49 gboolean saveable;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
50 gboolean user_settable;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
51 gboolean independent;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
52
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
53 GList *attrs;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
54 };
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6321
diff changeset
55
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
56 /**
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
57 * A status attribute.
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
58 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
59 struct _PurpleStatusAttr
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
60 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
61 char *id;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
62 char *name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
63 PurpleValue *value_type;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
64 };
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
65
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
66 /**
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
67 * A list of statuses.
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
68 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
69 struct _PurplePresence
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
70 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
71 PurplePresenceContext context;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
72
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
73 gboolean idle;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
74 time_t idle_time;
11249
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
75 time_t login_time;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
76
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
77 GList *statuses;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
78 GHashTable *status_table;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
79
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
80 PurpleStatus *active_status;
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
81
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
82 union
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
83 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
84 PurpleAccount *account;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
85
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
86 struct
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
87 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
88 PurpleConversation *conv;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
89 char *user;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
90
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
91 } chat;
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
92
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
93 struct
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
94 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
95 PurpleAccount *account;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
96 char *name;
16856
3e42fed1dd43 Change some of the PurplePresence stuff to reflect how it's actually used
Sean Egan <seanegan@pidgin.im>
parents: 16592
diff changeset
97 PurpleBuddy *buddy;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
98
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
99 } buddy;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
100
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
101 } u;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
102 };
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
103
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
104 /**
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
105 * An active status.
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
106 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
107 struct _PurpleStatus
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
108 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
109 PurpleStatusType *type;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
110 PurplePresence *presence;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
111
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
112 gboolean active;
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
113
23236
e6acfffcc51b Borrow a reference to a string instead of g_strdup'ing it. The
Mark Doliner <markdoliner@pidgin.im>
parents: 22793
diff changeset
114 /*
e6acfffcc51b Borrow a reference to a string instead of g_strdup'ing it. The
Mark Doliner <markdoliner@pidgin.im>
parents: 22793
diff changeset
115 * The current values of the attributes for this status. The
e6acfffcc51b Borrow a reference to a string instead of g_strdup'ing it. The
Mark Doliner <markdoliner@pidgin.im>
parents: 22793
diff changeset
116 * key is a string containing the name of the attribute. It is
e6acfffcc51b Borrow a reference to a string instead of g_strdup'ing it. The
Mark Doliner <markdoliner@pidgin.im>
parents: 22793
diff changeset
117 * a borrowed reference from the list of attrs in the
e6acfffcc51b Borrow a reference to a string instead of g_strdup'ing it. The
Mark Doliner <markdoliner@pidgin.im>
parents: 22793
diff changeset
118 * PurpleStatusType. The value is a PurpleValue.
e6acfffcc51b Borrow a reference to a string instead of g_strdup'ing it. The
Mark Doliner <markdoliner@pidgin.im>
parents: 22793
diff changeset
119 */
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
120 GHashTable *attr_values;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
121 };
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
122
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
123 typedef struct
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
124 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
125 PurpleAccount *account;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
126 char *name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
127 } PurpleStatusBuddyKey;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
128
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
129 static int primitive_scores[] =
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
130 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
131 0, /* unset */
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
132 -500, /* offline */
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
133 100, /* available */
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
134 -75, /* unavailable */
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
135 -50, /* invisible */
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
136 -100, /* away */
10860
8f600347b9e4 [gaim-migrate @ 12543]
Palmer Cox <enix@users.sourceforge.net>
parents: 10760
diff changeset
137 -200, /* extended away */
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
138 -400, /* mobile */
22793
b58dbbc5955e Patch from Maiku: "When the buddy list is set to sort contacts by status,
Will Thompson <resiak@pidgin.im>
parents: 22765
diff changeset
139 0, /* tune */
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
140 -10, /* idle, special case. */
16856
3e42fed1dd43 Change some of the PurplePresence stuff to reflect how it's actually used
Sean Egan <seanegan@pidgin.im>
parents: 16592
diff changeset
141 -5, /* idle time, special case. */
3e42fed1dd43 Change some of the PurplePresence stuff to reflect how it's actually used
Sean Egan <seanegan@pidgin.im>
parents: 16592
diff changeset
142 10 /* Offline messageable */
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
143 };
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
144
22793
b58dbbc5955e Patch from Maiku: "When the buddy list is set to sort contacts by status,
Will Thompson <resiak@pidgin.im>
parents: 22765
diff changeset
145 #define SCORE_IDLE 9
b58dbbc5955e Patch from Maiku: "When the buddy list is set to sort contacts by status,
Will Thompson <resiak@pidgin.im>
parents: 22765
diff changeset
146 #define SCORE_IDLE_TIME 10
b58dbbc5955e Patch from Maiku: "When the buddy list is set to sort contacts by status,
Will Thompson <resiak@pidgin.im>
parents: 22765
diff changeset
147 #define SCORE_OFFLINE_MESSAGE 11
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
148
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
149 /**************************************************************************
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
150 * PurpleStatusPrimitive API
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
151 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
152 static struct PurpleStatusPrimitiveMap
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
153 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
154 PurpleStatusPrimitive type;
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
155 const char *id;
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
156 const char *name;
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
157
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
158 } const status_primitive_map[] =
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
159 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
160 { PURPLE_STATUS_UNSET, "unset", N_("Unset") },
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
161 { PURPLE_STATUS_OFFLINE, "offline", N_("Offline") },
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
162 { PURPLE_STATUS_AVAILABLE, "available", N_("Available") },
18284
bb5c34304dea Add UNAVAILABLE to statusbox defaults (as it's probably used more than invisible is) and rename it to 'do not disturb,' which I think it a better name for it. Agreed?
Sean Egan <seanegan@pidgin.im>
parents: 18190
diff changeset
163 { PURPLE_STATUS_UNAVAILABLE, "unavailable", N_("Do not disturb") },
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
164 { PURPLE_STATUS_INVISIBLE, "invisible", N_("Invisible") },
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
165 { PURPLE_STATUS_AWAY, "away", N_("Away") },
18284
bb5c34304dea Add UNAVAILABLE to statusbox defaults (as it's probably used more than invisible is) and rename it to 'do not disturb,' which I think it a better name for it. Agreed?
Sean Egan <seanegan@pidgin.im>
parents: 18190
diff changeset
166 { PURPLE_STATUS_EXTENDED_AWAY, "extended_away", N_("Extended away") },
21201
493e5846c38d Add PURPLE_STATUS_TUNE to status_primitive_map so that it has a name
Mark Doliner <markdoliner@pidgin.im>
parents: 21193
diff changeset
167 { PURPLE_STATUS_MOBILE, "mobile", N_("Mobile") },
493e5846c38d Add PURPLE_STATUS_TUNE to status_primitive_map so that it has a name
Mark Doliner <markdoliner@pidgin.im>
parents: 21193
diff changeset
168 { PURPLE_STATUS_TUNE, "tune", N_("Listening to music") }
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
169 };
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
170
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
171 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
172 purple_primitive_get_id_from_type(PurpleStatusPrimitive type)
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
173 {
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
174 int i;
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
175
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
176 for (i = 0; i < PURPLE_STATUS_NUM_PRIMITIVES; i++)
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
177 {
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
178 if (type == status_primitive_map[i].type)
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
179 return status_primitive_map[i].id;
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
180 }
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
181
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
182 return status_primitive_map[0].id;
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
183 }
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
184
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
185 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
186 purple_primitive_get_name_from_type(PurpleStatusPrimitive type)
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
187 {
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
188 int i;
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
189
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
190 for (i = 0; i < PURPLE_STATUS_NUM_PRIMITIVES; i++)
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
191 {
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
192 if (type == status_primitive_map[i].type)
13249
b3cc208601b5 [gaim-migrate @ 15614]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13193
diff changeset
193 return _(status_primitive_map[i].name);
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
194 }
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
195
13249
b3cc208601b5 [gaim-migrate @ 15614]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13193
diff changeset
196 return _(status_primitive_map[0].name);
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
197 }
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
198
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
199 PurpleStatusPrimitive
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
200 purple_primitive_get_type_from_id(const char *id)
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
201 {
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
202 int i;
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
203
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
204 g_return_val_if_fail(id != NULL, PURPLE_STATUS_UNSET);
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
205
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
206 for (i = 0; i < PURPLE_STATUS_NUM_PRIMITIVES; i++)
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
207 {
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24955
diff changeset
208 if (purple_strequal(id, status_primitive_map[i].id))
10419
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
209 return status_primitive_map[i].type;
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
210 }
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
211
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
212 return status_primitive_map[0].type;
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
213 }
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
214
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
215
cb6b7316fdba [gaim-migrate @ 11670]
Mark Doliner <markdoliner@pidgin.im>
parents: 10418
diff changeset
216 /**************************************************************************
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
217 * PurpleStatusType API
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
218 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
219 PurpleStatusType *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
220 purple_status_type_new_full(PurpleStatusPrimitive primitive, const char *id,
10009
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 10006
diff changeset
221 const char *name, gboolean saveable,
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 10006
diff changeset
222 gboolean user_settable, gboolean independent)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
223 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
224 PurpleStatusType *status_type;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
225
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
226 g_return_val_if_fail(primitive != PURPLE_STATUS_UNSET, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
227
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
228 status_type = g_new0(PurpleStatusType, 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
229 PURPLE_DBUS_REGISTER_POINTER(status_type, PurpleStatusType);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
230
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
231 status_type->primitive = primitive;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
232 status_type->saveable = saveable;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
233 status_type->user_settable = user_settable;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
234 status_type->independent = independent;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
235
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
236 if (id != NULL)
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
237 status_type->id = g_strdup(id);
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
238 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
239 status_type->id = g_strdup(purple_primitive_get_id_from_type(primitive));
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
240
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
241 if (name != NULL)
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
242 status_type->name = g_strdup(name);
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
243 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
244 status_type->name = g_strdup(purple_primitive_get_name_from_type(primitive));
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12587
diff changeset
245
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
246 return status_type;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
247 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
248
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
249 PurpleStatusType *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
250 purple_status_type_new(PurpleStatusPrimitive primitive, const char *id,
10009
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 10006
diff changeset
251 const char *name, gboolean user_settable)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
252 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
253 g_return_val_if_fail(primitive != PURPLE_STATUS_UNSET, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
254
25445
b36f23e05c50 Thomas Gibson-Robinson noticed that the "saveable" attribute of a status type
Daniel Atallah <datallah@pidgin.im>
parents: 23389
diff changeset
255 return purple_status_type_new_full(primitive, id, name, TRUE,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
256 user_settable, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
257 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
258
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
259 PurpleStatusType *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
260 purple_status_type_new_with_attrs(PurpleStatusPrimitive primitive,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
261 const char *id, const char *name,
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
262 gboolean saveable, gboolean user_settable,
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
263 gboolean independent, const char *attr_id,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
264 const char *attr_name, PurpleValue *attr_value,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
265 ...)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
266 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
267 PurpleStatusType *status_type;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
268 va_list args;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
269
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
270 g_return_val_if_fail(primitive != PURPLE_STATUS_UNSET, NULL);
10012
da9fdfbf4c5a [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10010
diff changeset
271 g_return_val_if_fail(attr_id != NULL, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
272 g_return_val_if_fail(attr_name != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
273 g_return_val_if_fail(attr_value != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
274
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
275 status_type = purple_status_type_new_full(primitive, id, name, saveable,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
276 user_settable, independent);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
277
10010
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
278 /* Add the first attribute */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
279 purple_status_type_add_attr(status_type, attr_id, attr_name, attr_value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
280
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
281 va_start(args, attr_value);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
282 purple_status_type_add_attrs_vargs(status_type, args);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
283 va_end(args);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
284
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
285 return status_type;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
286 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
287
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
288 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
289 purple_status_type_destroy(PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
290 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
291 g_return_if_fail(status_type != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
292
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
293 g_free(status_type->id);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
294 g_free(status_type->name);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13929
diff changeset
295 g_free(status_type->primary_attr_id);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
296
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
297 g_list_foreach(status_type->attrs, (GFunc)purple_status_attr_destroy, NULL);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13929
diff changeset
298 g_list_free(status_type->attrs);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
299
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
300 PURPLE_DBUS_UNREGISTER_POINTER(status_type);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
301 g_free(status_type);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
302 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
303
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
304 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
305 purple_status_type_set_primary_attr(PurpleStatusType *status_type, const char *id)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
306 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
307 g_return_if_fail(status_type != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
308
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13929
diff changeset
309 g_free(status_type->primary_attr_id);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13929
diff changeset
310 status_type->primary_attr_id = g_strdup(id);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
311 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
312
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
313 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
314 purple_status_type_add_attr(PurpleStatusType *status_type, const char *id,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
315 const char *name, PurpleValue *value)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
316 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
317 PurpleStatusAttr *attr;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
318
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
319 g_return_if_fail(status_type != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
320 g_return_if_fail(id != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
321 g_return_if_fail(name != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
322 g_return_if_fail(value != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
323
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
324 attr = purple_status_attr_new(id, name, value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
325
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
326 status_type->attrs = g_list_append(status_type->attrs, attr);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
327 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
328
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
329 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
330 purple_status_type_add_attrs_vargs(PurpleStatusType *status_type, va_list args)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
331 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
332 const char *id, *name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
333 PurpleValue *value;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
334
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
335 g_return_if_fail(status_type != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
336
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
337 while ((id = va_arg(args, const char *)) != NULL)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
338 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
339 name = va_arg(args, const char *);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
340 g_return_if_fail(name != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
341
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
342 value = va_arg(args, PurpleValue *);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
343 g_return_if_fail(value != NULL);
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
344
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
345 purple_status_type_add_attr(status_type, id, name, value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
346 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
347 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
348
10010
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
349 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
350 purple_status_type_add_attrs(PurpleStatusType *status_type, const char *id,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
351 const char *name, PurpleValue *value, ...)
10010
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
352 {
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
353 va_list args;
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
354
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
355 g_return_if_fail(status_type != NULL);
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
356 g_return_if_fail(id != NULL);
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
357 g_return_if_fail(name != NULL);
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
358 g_return_if_fail(value != NULL);
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
359
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
360 /* Add the first attribute */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
361 purple_status_type_add_attr(status_type, id, name, value);
10010
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
362
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
363 va_start(args, value);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
364 purple_status_type_add_attrs_vargs(status_type, args);
10010
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
365 va_end(args);
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
366 }
d9ee01f0659a [gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
367
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
368 PurpleStatusPrimitive
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
369 purple_status_type_get_primitive(const PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
370 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
371 g_return_val_if_fail(status_type != NULL, PURPLE_STATUS_UNSET);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
372
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
373 return status_type->primitive;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
374 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
375
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
376 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
377 purple_status_type_get_id(const PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
378 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
379 g_return_val_if_fail(status_type != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
380
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
381 return status_type->id;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
382 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
383
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
384 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
385 purple_status_type_get_name(const PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
386 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
387 g_return_val_if_fail(status_type != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
388
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
389 return status_type->name;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
390 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
391
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
392 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
393 purple_status_type_is_saveable(const PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
394 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
395 g_return_val_if_fail(status_type != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
396
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
397 return status_type->saveable;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
398 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
399
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
400 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
401 purple_status_type_is_user_settable(const PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
402 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
403 g_return_val_if_fail(status_type != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
404
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
405 return status_type->user_settable;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
406 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
407
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
408 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
409 purple_status_type_is_independent(const PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
410 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
411 g_return_val_if_fail(status_type != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
412
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
413 return status_type->independent;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
414 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
415
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
416 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
417 purple_status_type_is_exclusive(const PurpleStatusType *status_type)
10067
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
418 {
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
419 g_return_val_if_fail(status_type != NULL, FALSE);
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
420
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
421 return !status_type->independent;
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
422 }
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
423
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
424 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
425 purple_status_type_is_available(const PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
426 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
427 PurpleStatusPrimitive primitive;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
428
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
429 g_return_val_if_fail(status_type != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
430
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
431 primitive = purple_status_type_get_primitive(status_type);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
432
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
433 return (primitive == PURPLE_STATUS_AVAILABLE);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
434 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
435
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
436 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
437 purple_status_type_get_primary_attr(const PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
438 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
439 g_return_val_if_fail(status_type != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
440
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
441 return status_type->primary_attr_id;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
442 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
443
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
444 PurpleStatusAttr *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
445 purple_status_type_get_attr(const PurpleStatusType *status_type, const char *id)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
446 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
447 GList *l;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
448
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
449 g_return_val_if_fail(status_type != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
450 g_return_val_if_fail(id != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
451
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
452 for (l = status_type->attrs; l != NULL; l = l->next)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
453 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
454 PurpleStatusAttr *attr = (PurpleStatusAttr *)l->data;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
455
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24955
diff changeset
456 if (purple_strequal(purple_status_attr_get_id(attr), id))
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
457 return attr;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
458 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
459
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
460 return NULL;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
461 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
462
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17515
diff changeset
463 GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
464 purple_status_type_get_attrs(const PurpleStatusType *status_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
465 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
466 g_return_val_if_fail(status_type != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
467
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
468 return status_type->attrs;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
469 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
470
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
471 const PurpleStatusType *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
472 purple_status_type_find_with_id(GList *status_types, const char *id)
10348
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
473 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
474 PurpleStatusType *status_type;
10348
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
475
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
476 g_return_val_if_fail(id != NULL, NULL);
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
477
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
478 while (status_types != NULL)
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
479 {
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
480 status_type = status_types->data;
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
481
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24955
diff changeset
482 if (purple_strequal(id, status_type->id))
10348
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
483 return status_type;
10895
afb9f109e5c6 [gaim-migrate @ 12609]
Rainer Blessing
parents: 10860
diff changeset
484
afb9f109e5c6 [gaim-migrate @ 12609]
Rainer Blessing
parents: 10860
diff changeset
485 status_types = status_types->next;
10348
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
486 }
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
487
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
488 return NULL;
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
489 }
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
490
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
491
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
492 /**************************************************************************
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
493 * PurpleStatusAttr API
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
494 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
495 PurpleStatusAttr *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
496 purple_status_attr_new(const char *id, const char *name, PurpleValue *value_type)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
497 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
498 PurpleStatusAttr *attr;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
499
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
500 g_return_val_if_fail(id != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
501 g_return_val_if_fail(name != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
502 g_return_val_if_fail(value_type != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
503
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
504 attr = g_new0(PurpleStatusAttr, 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
505 PURPLE_DBUS_REGISTER_POINTER(attr, PurpleStatusAttr);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
506
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
507 attr->id = g_strdup(id);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
508 attr->name = g_strdup(name);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
509 attr->value_type = value_type;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
510
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
511 return attr;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
512 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
513
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
514 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
515 purple_status_attr_destroy(PurpleStatusAttr *attr)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
516 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
517 g_return_if_fail(attr != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
518
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
519 g_free(attr->id);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
520 g_free(attr->name);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
521
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
522 purple_value_destroy(attr->value_type);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
523
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
524 PURPLE_DBUS_UNREGISTER_POINTER(attr);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
525 g_free(attr);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
526 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
527
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
528 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
529 purple_status_attr_get_id(const PurpleStatusAttr *attr)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
530 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
531 g_return_val_if_fail(attr != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
532
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
533 return attr->id;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
534 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
535
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
536 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
537 purple_status_attr_get_name(const PurpleStatusAttr *attr)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
538 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
539 g_return_val_if_fail(attr != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
540
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
541 return attr->name;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
542 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
543
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
544 PurpleValue *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
545 purple_status_attr_get_value(const PurpleStatusAttr *attr)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
546 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
547 g_return_val_if_fail(attr != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
548
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
549 return attr->value_type;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
550 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
551
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
552
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
553 /**************************************************************************
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
554 * PurpleStatus API
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
555 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
556 PurpleStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
557 purple_status_new(PurpleStatusType *status_type, PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
558 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
559 PurpleStatus *status;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17515
diff changeset
560 GList *l;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
561
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
562 g_return_val_if_fail(status_type != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
563 g_return_val_if_fail(presence != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
564
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
565 status = g_new0(PurpleStatus, 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
566 PURPLE_DBUS_REGISTER_POINTER(status, PurpleStatus);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
567
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
568 status->type = status_type;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
569 status->presence = presence;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
570
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
571 status->attr_values =
23236
e6acfffcc51b Borrow a reference to a string instead of g_strdup'ing it. The
Mark Doliner <markdoliner@pidgin.im>
parents: 22793
diff changeset
572 g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
573 (GDestroyNotify)purple_value_destroy);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
574
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
575 for (l = purple_status_type_get_attrs(status_type); l != NULL; l = l->next)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
576 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
577 PurpleStatusAttr *attr = (PurpleStatusAttr *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
578 PurpleValue *value = purple_status_attr_get_value(attr);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
579 PurpleValue *new_value = purple_value_dup(value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
580
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
581 g_hash_table_insert(status->attr_values,
23236
e6acfffcc51b Borrow a reference to a string instead of g_strdup'ing it. The
Mark Doliner <markdoliner@pidgin.im>
parents: 22793
diff changeset
582 (char *)purple_status_attr_get_id(attr),
10197
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
583 new_value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
584 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
585
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
586 return status;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
587 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
588
10754
d5f1ddb4146f [gaim-migrate @ 12357]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
589 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
590 * TODO: If the PurpleStatus is in a PurplePresence, then
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
591 * remove it from the PurplePresence?
10754
d5f1ddb4146f [gaim-migrate @ 12357]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
592 */
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
593 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
594 purple_status_destroy(PurpleStatus *status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
595 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
596 g_return_if_fail(status != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
597
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
598 g_hash_table_destroy(status->attr_values);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
599
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
600 PURPLE_DBUS_UNREGISTER_POINTER(status);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
601 g_free(status);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
602 }
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
603
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
604 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
605 notify_buddy_status_update(PurpleBuddy *buddy, PurplePresence *presence,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
606 PurpleStatus *old_status, PurpleStatus *new_status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
607 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
608 if (purple_prefs_get_bool("/purple/logging/log_system"))
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
609 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
610 time_t current_time = time(NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
611 const char *buddy_alias = purple_buddy_get_alias(buddy);
20369
b86fcf0d82e6 Include real names in system log messags. Fixes #3130
Sean Egan <seanegan@pidgin.im>
parents: 20147
diff changeset
612 char *tmp, *logtmp;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
613 PurpleLog *log;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
614
13538
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
615 if (old_status != NULL)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
616 {
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
617 tmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias,
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
618 purple_buddy_get_name(buddy),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
619 purple_status_get_name(old_status),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
620 purple_status_get_name(new_status));
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
621 logtmp = g_markup_escape_text(tmp, -1);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
622 }
13538
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
623 else
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
624 {
13538
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
625 /* old_status == NULL when an independent status is toggled. */
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
626
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
627 if (purple_status_is_active(new_status))
13538
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
628 {
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
629 tmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias,
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
630 purple_buddy_get_name(buddy),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
631 purple_status_get_name(new_status));
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
632 logtmp = g_markup_escape_text(tmp, -1);
13538
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
633 }
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
634 else
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
635 {
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
636 tmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias,
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
637 purple_buddy_get_name(buddy),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
638 purple_status_get_name(new_status));
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
639 logtmp = g_markup_escape_text(tmp, -1);
13538
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
640 }
13507
30967205df90 [gaim-migrate @ 15882]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13374
diff changeset
641 }
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
642
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
643 log = purple_account_get_log(purple_buddy_get_account(buddy), FALSE);
13538
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
644 if (log != NULL)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
645 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
646 purple_log_write(log, PURPLE_MESSAGE_SYSTEM, buddy_alias,
20369
b86fcf0d82e6 Include real names in system log messags. Fixes #3130
Sean Egan <seanegan@pidgin.im>
parents: 20147
diff changeset
647 current_time, logtmp);
13538
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
648 }
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
649
13538
b8d9f7abeb7f [gaim-migrate @ 15914]
Richard Laager <rlaager@pidgin.im>
parents: 13516
diff changeset
650 g_free(tmp);
20369
b86fcf0d82e6 Include real names in system log messags. Fixes #3130
Sean Egan <seanegan@pidgin.im>
parents: 20147
diff changeset
651 g_free(logtmp);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
652 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
653 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
654
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
655 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
656 notify_status_update(PurplePresence *presence, PurpleStatus *old_status,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
657 PurpleStatus *new_status)
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
658 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
659 PurplePresenceContext context = purple_presence_get_context(presence);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
660
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
661 if (context == PURPLE_PRESENCE_CONTEXT_ACCOUNT)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
662 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
663 PurpleAccount *account = purple_presence_get_account(presence);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
664 PurpleAccountUiOps *ops = purple_accounts_get_ui_ops();
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
665
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
666 if (purple_account_get_enabled(account, purple_core_get_ui()))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
667 purple_prpl_change_account_status(account, old_status, new_status);
10176
753b4c93479d [gaim-migrate @ 11291]
Christian Hammond <chipx86@chipx86.com>
parents: 10153
diff changeset
668
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
669 if (ops != NULL && ops->status_changed != NULL)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
670 {
10176
753b4c93479d [gaim-migrate @ 11291]
Christian Hammond <chipx86@chipx86.com>
parents: 10153
diff changeset
671 ops->status_changed(account, new_status);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
672 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
673 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
674 else if (context == PURPLE_PRESENCE_CONTEXT_BUDDY)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
675 {
16856
3e42fed1dd43 Change some of the PurplePresence stuff to reflect how it's actually used
Sean Egan <seanegan@pidgin.im>
parents: 16592
diff changeset
676 notify_buddy_status_update(purple_presence_get_buddy(presence), presence,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
677 old_status, new_status);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
678 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
679 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
680
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
681 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
682 status_has_changed(PurpleStatus *status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
683 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
684 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
685 PurpleStatus *old_status;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
686
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
687 presence = purple_status_get_presence(status);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
688
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
689 /*
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
690 * If this status is exclusive, then we must be setting it to "active."
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
691 * Since we are setting it to active, we want to set the currently
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
692 * active status to "inactive."
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
693 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
694 if (purple_status_is_exclusive(status))
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
695 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
696 old_status = purple_presence_get_active_status(presence);
10760
36ed17d3ad9d [gaim-migrate @ 12363]
Mark Doliner <markdoliner@pidgin.im>
parents: 10754
diff changeset
697 if (old_status != NULL && (old_status != status))
10754
d5f1ddb4146f [gaim-migrate @ 12357]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
698 old_status->active = FALSE;
d5f1ddb4146f [gaim-migrate @ 12357]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
699 presence->active_status = status;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
700 }
10754
d5f1ddb4146f [gaim-migrate @ 12357]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
701 else
d5f1ddb4146f [gaim-migrate @ 12357]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
702 old_status = NULL;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
703
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
704 notify_status_update(presence, old_status, status);
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
705 }
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
706
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
707 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
708 purple_status_set_active(PurpleStatus *status, gboolean active)
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
709 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
710 purple_status_set_active_with_attrs_list(status, active, NULL);
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
711 }
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
712
11249
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
713 /*
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
714 * This used to parse the va_list directly, but now it creates a GList
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
715 * and passes it to purple_status_set_active_with_attrs_list(). That
11249
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
716 * function was created because accounts.c needs to pass a GList of
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
717 * attributes to the status API.
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
718 */
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
719 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
720 purple_status_set_active_with_attrs(PurpleStatus *status, gboolean active, va_list args)
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
721 {
11249
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
722 GList *attrs = NULL;
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
723 const gchar *id;
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
724 gpointer data;
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
725
14705
c7b02232f020 [gaim-migrate @ 17389]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
726 while ((id = va_arg(args, const char *)) != NULL)
11249
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
727 {
14705
c7b02232f020 [gaim-migrate @ 17389]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
728 attrs = g_list_append(attrs, (char *)id);
c7b02232f020 [gaim-migrate @ 17389]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
729 data = va_arg(args, void *);
c7b02232f020 [gaim-migrate @ 17389]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
730 attrs = g_list_append(attrs, data);
11249
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
731 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
732 purple_status_set_active_with_attrs_list(status, active, attrs);
11249
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
733 g_list_free(attrs);
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
734 }
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
735
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
736 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
737 purple_status_set_active_with_attrs_list(PurpleStatus *status, gboolean active,
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17515
diff changeset
738 GList *attrs)
11249
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
739 {
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
740 gboolean changed = FALSE;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17515
diff changeset
741 GList *l;
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
742 GList *specified_attr_ids = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
743 PurpleStatusType *status_type;
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
744
10714
12d85e127f8e [gaim-migrate @ 12308]
Mark Doliner <markdoliner@pidgin.im>
parents: 10713
diff changeset
745 g_return_if_fail(status != NULL);
12d85e127f8e [gaim-migrate @ 12308]
Mark Doliner <markdoliner@pidgin.im>
parents: 10713
diff changeset
746
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
747 if (!active && purple_status_is_exclusive(status))
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
748 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
749 purple_debug_error("status",
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
750 "Cannot deactivate an exclusive status (%s).\n",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
751 purple_status_get_id(status));
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
752 return;
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
753 }
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
754
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
755 if (status->active != active)
10738
63ca8277c234 [gaim-migrate @ 12340]
Mark Doliner <markdoliner@pidgin.im>
parents: 10714
diff changeset
756 {
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
757 changed = TRUE;
10738
63ca8277c234 [gaim-migrate @ 12340]
Mark Doliner <markdoliner@pidgin.im>
parents: 10714
diff changeset
758 }
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
759
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
760 status->active = active;
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
761
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
762 /* Set any attributes */
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
763 l = attrs;
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
764 while (l != NULL)
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
765 {
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
766 const gchar *id;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
767 PurpleValue *value;
11249
efc82f3e1bd3 [gaim-migrate @ 13418]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11187
diff changeset
768
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
769 id = l->data;
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
770 l = l->next;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
771 value = purple_status_get_attr_value(status, id);
10713
648a49b350f2 [gaim-migrate @ 12307]
Mark Doliner <markdoliner@pidgin.im>
parents: 10580
diff changeset
772 if (value == NULL)
648a49b350f2 [gaim-migrate @ 12307]
Mark Doliner <markdoliner@pidgin.im>
parents: 10580
diff changeset
773 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
774 purple_debug_warning("status", "The attribute \"%s\" on the status \"%s\" is "
10714
12d85e127f8e [gaim-migrate @ 12308]
Mark Doliner <markdoliner@pidgin.im>
parents: 10713
diff changeset
775 "not supported.\n", id, status->type->name);
10713
648a49b350f2 [gaim-migrate @ 12307]
Mark Doliner <markdoliner@pidgin.im>
parents: 10580
diff changeset
776 /* Skip over the data and move on to the next attribute */
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
777 l = l->next;
10713
648a49b350f2 [gaim-migrate @ 12307]
Mark Doliner <markdoliner@pidgin.im>
parents: 10580
diff changeset
778 continue;
648a49b350f2 [gaim-migrate @ 12307]
Mark Doliner <markdoliner@pidgin.im>
parents: 10580
diff changeset
779 }
648a49b350f2 [gaim-migrate @ 12307]
Mark Doliner <markdoliner@pidgin.im>
parents: 10580
diff changeset
780
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
781 specified_attr_ids = g_list_prepend(specified_attr_ids, (gpointer)id);
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
782
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
783 if (value->type == PURPLE_TYPE_STRING)
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
784 {
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
785 const gchar *string_data = l->data;
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
786 l = l->next;
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24955
diff changeset
787 if (purple_strequal(string_data, value->data.string_data))
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
788 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
789 purple_status_set_attr_string(status, id, string_data);
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
790 changed = TRUE;
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
791 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
792 else if (value->type == PURPLE_TYPE_INT)
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
793 {
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
794 int int_data = GPOINTER_TO_INT(l->data);
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
795 l = l->next;
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
796 if (int_data == value->data.int_data)
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
797 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
798 purple_status_set_attr_int(status, id, int_data);
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
799 changed = TRUE;
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
800 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
801 else if (value->type == PURPLE_TYPE_BOOLEAN)
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
802 {
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
803 gboolean boolean_data = GPOINTER_TO_INT(l->data);
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
804 l = l->next;
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
805 if (boolean_data == value->data.boolean_data)
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
806 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
807 purple_status_set_attr_boolean(status, id, boolean_data);
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
808 changed = TRUE;
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
809 }
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
810 else
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
811 {
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
812 /* We don't know what the data is--skip over it */
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
813 l = l->next;
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
814 }
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
815 }
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
816
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
817 /* Reset any unspecified attributes to their default value */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
818 status_type = purple_status_get_type(status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
819 l = purple_status_type_get_attrs(status_type);
25471
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
820 while (l != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
821 PurpleStatusAttr *attr;
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
822
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
823 attr = l->data;
25471
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
824 l = l->next;
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
825
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
826 if (!g_list_find_custom(specified_attr_ids, attr->id, (GCompareFunc)strcmp)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
827 PurpleValue *default_value;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
828 default_value = purple_status_attr_get_value(attr);
25471
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
829 if (default_value->type == PURPLE_TYPE_STRING) {
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
830 const char *cur = purple_status_get_attr_string(status, attr->id);
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
831 const char *def = purple_value_get_string(default_value);
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
832 if ((cur == NULL && def == NULL)
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
833 || (cur != NULL && def != NULL
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
834 && !strcmp(cur, def))) {
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
835 continue;
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
836 }
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
837
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
838 purple_status_set_attr_string(status, attr->id, def);
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
839 } else if (default_value->type == PURPLE_TYPE_INT) {
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
840 int cur = purple_status_get_attr_int(status, attr->id);
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
841 int def = purple_value_get_int(default_value);
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
842 if (cur == def)
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
843 continue;
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
844
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
845 purple_status_set_attr_int(status, attr->id, def);
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
846 } else if (default_value->type == PURPLE_TYPE_BOOLEAN) {
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
847 gboolean cur = purple_status_get_attr_boolean(status, attr->id);
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
848 gboolean def = purple_value_get_boolean(default_value);
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
849 if (cur == def)
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
850 continue;
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
851
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
852 purple_status_set_attr_boolean(status, attr->id, def);
e67902dda5bd A slightly "warmenhoved" patch from Jon Turney to prevent some unnecessary
Daniel Atallah <datallah@pidgin.im>
parents: 25445
diff changeset
853 }
13374
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
854 changed = TRUE;
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
855 }
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
856 }
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
857 g_list_free(specified_attr_ids);
e5da5325b1fa [gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13249
diff changeset
858
10204
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
859 if (!changed)
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
860 return;
874e91e2a3b3 [gaim-migrate @ 11325]
Mark Doliner <markdoliner@pidgin.im>
parents: 10200
diff changeset
861 status_has_changed(status);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
862 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
863
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
864 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
865 purple_status_set_attr_boolean(PurpleStatus *status, const char *id,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
866 gboolean value)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
867 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
868 PurpleValue *attr_value;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
869
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
870 g_return_if_fail(status != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
871 g_return_if_fail(id != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
872
10197
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
873 /* Make sure this attribute exists and is the correct type. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
874 attr_value = purple_status_get_attr_value(status, id);
10197
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
875 g_return_if_fail(attr_value != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
876 g_return_if_fail(purple_value_get_type(attr_value) == PURPLE_TYPE_BOOLEAN);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
877
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
878 purple_value_set_boolean(attr_value, value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
879 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
880
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
881 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
882 purple_status_set_attr_int(PurpleStatus *status, const char *id, int value)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
883 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
884 PurpleValue *attr_value;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
885
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
886 g_return_if_fail(status != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
887 g_return_if_fail(id != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
888
10197
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
889 /* Make sure this attribute exists and is the correct type. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
890 attr_value = purple_status_get_attr_value(status, id);
10197
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
891 g_return_if_fail(attr_value != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
892 g_return_if_fail(purple_value_get_type(attr_value) == PURPLE_TYPE_INT);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
893
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
894 purple_value_set_int(attr_value, value);
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
895 }
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
896
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
897 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
898 purple_status_set_attr_string(PurpleStatus *status, const char *id,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
899 const char *value)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
900 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
901 PurpleValue *attr_value;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
902
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
903 g_return_if_fail(status != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
904 g_return_if_fail(id != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
905
10197
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
906 /* Make sure this attribute exists and is the correct type. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
907 attr_value = purple_status_get_attr_value(status, id);
12434
4d5a0e2f9bad [gaim-migrate @ 14741]
Ethan Blanton <elb@pidgin.im>
parents: 12164
diff changeset
908 /* This used to be g_return_if_fail, but it's failing a LOT, so
4d5a0e2f9bad [gaim-migrate @ 14741]
Ethan Blanton <elb@pidgin.im>
parents: 12164
diff changeset
909 * let's generate a log error for now. */
4d5a0e2f9bad [gaim-migrate @ 14741]
Ethan Blanton <elb@pidgin.im>
parents: 12164
diff changeset
910 /* g_return_if_fail(attr_value != NULL); */
4d5a0e2f9bad [gaim-migrate @ 14741]
Ethan Blanton <elb@pidgin.im>
parents: 12164
diff changeset
911 if (attr_value == NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
912 purple_debug_error("status",
12434
4d5a0e2f9bad [gaim-migrate @ 14741]
Ethan Blanton <elb@pidgin.im>
parents: 12164
diff changeset
913 "Attempted to set status attribute '%s' for "
4d5a0e2f9bad [gaim-migrate @ 14741]
Ethan Blanton <elb@pidgin.im>
parents: 12164
diff changeset
914 "status '%s', which is not legal. Fix "
4d5a0e2f9bad [gaim-migrate @ 14741]
Ethan Blanton <elb@pidgin.im>
parents: 12164
diff changeset
915 "this!\n", id,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
916 purple_status_type_get_name(purple_status_get_type(status)));
12434
4d5a0e2f9bad [gaim-migrate @ 14741]
Ethan Blanton <elb@pidgin.im>
parents: 12164
diff changeset
917 return;
4d5a0e2f9bad [gaim-migrate @ 14741]
Ethan Blanton <elb@pidgin.im>
parents: 12164
diff changeset
918 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
919 g_return_if_fail(purple_value_get_type(attr_value) == PURPLE_TYPE_STRING);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
920
21193
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20369
diff changeset
921 /* XXX: Check if the value has actually changed. If it has, and the status
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20369
diff changeset
922 * is active, should this trigger 'status_has_changed'? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
923 purple_value_set_string(attr_value, value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
924 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
925
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
926 PurpleStatusType *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
927 purple_status_get_type(const PurpleStatus *status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
928 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
929 g_return_val_if_fail(status != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
930
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
931 return status->type;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
932 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
933
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
934 PurplePresence *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
935 purple_status_get_presence(const PurpleStatus *status)
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
936 {
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
937 g_return_val_if_fail(status != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
938
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
939 return status->presence;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
940 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
941
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
942 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
943 purple_status_get_id(const PurpleStatus *status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
944 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
945 g_return_val_if_fail(status != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
946
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
947 return purple_status_type_get_id(purple_status_get_type(status));
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
948 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
950 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
951 purple_status_get_name(const PurpleStatus *status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
952 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
953 g_return_val_if_fail(status != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
954
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
955 return purple_status_type_get_name(purple_status_get_type(status));
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
956 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
957
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
958 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
959 purple_status_is_independent(const PurpleStatus *status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
960 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
961 g_return_val_if_fail(status != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
962
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
963 return purple_status_type_is_independent(purple_status_get_type(status));
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
964 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
965
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
966 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
967 purple_status_is_exclusive(const PurpleStatus *status)
10067
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
968 {
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
969 g_return_val_if_fail(status != NULL, FALSE);
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
970
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
971 return purple_status_type_is_exclusive(purple_status_get_type(status));
10067
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
972 }
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
973
d04171b6f098 [gaim-migrate @ 11043]
Mark Doliner <markdoliner@pidgin.im>
parents: 10056
diff changeset
974 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
975 purple_status_is_available(const PurpleStatus *status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
976 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
977 g_return_val_if_fail(status != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
978
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
979 return purple_status_type_is_available(purple_status_get_type(status));
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
980 }
6216
38918d33547e [gaim-migrate @ 6702]
Nathan Walp <nwalp@pidgin.im>
parents: 6113
diff changeset
981
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
982 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
983 purple_status_is_active(const PurpleStatus *status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
984 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
985 g_return_val_if_fail(status != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
986
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
987 return status->active;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
988 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
989
10040
b74aeb350fc5 [gaim-migrate @ 10999]
Dave West <kat@users.sourceforge.net>
parents: 10013
diff changeset
990 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
991 purple_status_is_online(const PurpleStatus *status)
10040
b74aeb350fc5 [gaim-migrate @ 10999]
Dave West <kat@users.sourceforge.net>
parents: 10013
diff changeset
992 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
993 PurpleStatusPrimitive primitive;
10040
b74aeb350fc5 [gaim-migrate @ 10999]
Dave West <kat@users.sourceforge.net>
parents: 10013
diff changeset
994
b74aeb350fc5 [gaim-migrate @ 10999]
Dave West <kat@users.sourceforge.net>
parents: 10013
diff changeset
995 g_return_val_if_fail( status != NULL, FALSE);
b74aeb350fc5 [gaim-migrate @ 10999]
Dave West <kat@users.sourceforge.net>
parents: 10013
diff changeset
996
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
997 primitive = purple_status_type_get_primitive(purple_status_get_type(status));
10040
b74aeb350fc5 [gaim-migrate @ 10999]
Dave West <kat@users.sourceforge.net>
parents: 10013
diff changeset
998
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
999 return (primitive != PURPLE_STATUS_UNSET &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1000 primitive != PURPLE_STATUS_OFFLINE);
10040
b74aeb350fc5 [gaim-migrate @ 10999]
Dave West <kat@users.sourceforge.net>
parents: 10013
diff changeset
1001 }
b74aeb350fc5 [gaim-migrate @ 10999]
Dave West <kat@users.sourceforge.net>
parents: 10013
diff changeset
1002
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1003 PurpleValue *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1004 purple_status_get_attr_value(const PurpleStatus *status, const char *id)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1005 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1006 g_return_val_if_fail(status != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1007 g_return_val_if_fail(id != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1008
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1009 return (PurpleValue *)g_hash_table_lookup(status->attr_values, id);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1010 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1011
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1012 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1013 purple_status_get_attr_boolean(const PurpleStatus *status, const char *id)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1014 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1015 const PurpleValue *value;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1016
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1017 g_return_val_if_fail(status != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1018 g_return_val_if_fail(id != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1019
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1020 if ((value = purple_status_get_attr_value(status, id)) == NULL)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1021 return FALSE;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1022
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1023 g_return_val_if_fail(purple_value_get_type(value) == PURPLE_TYPE_BOOLEAN, FALSE);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1024
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1025 return purple_value_get_boolean(value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1026 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1027
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1028 int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1029 purple_status_get_attr_int(const PurpleStatus *status, const char *id)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1030 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1031 const PurpleValue *value;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1032
10507
57c7cdf1fb73 [gaim-migrate @ 11801]
Nathan Walp <nwalp@pidgin.im>
parents: 10504
diff changeset
1033 g_return_val_if_fail(status != NULL, 0);
57c7cdf1fb73 [gaim-migrate @ 11801]
Nathan Walp <nwalp@pidgin.im>
parents: 10504
diff changeset
1034 g_return_val_if_fail(id != NULL, 0);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1035
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1036 if ((value = purple_status_get_attr_value(status, id)) == NULL)
10507
57c7cdf1fb73 [gaim-migrate @ 11801]
Nathan Walp <nwalp@pidgin.im>
parents: 10504
diff changeset
1037 return 0;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1038
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1039 g_return_val_if_fail(purple_value_get_type(value) == PURPLE_TYPE_INT, 0);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1040
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1041 return purple_value_get_int(value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1042 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1043
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1044 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1045 purple_status_get_attr_string(const PurpleStatus *status, const char *id)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1046 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1047 const PurpleValue *value;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1048
10507
57c7cdf1fb73 [gaim-migrate @ 11801]
Nathan Walp <nwalp@pidgin.im>
parents: 10504
diff changeset
1049 g_return_val_if_fail(status != NULL, NULL);
57c7cdf1fb73 [gaim-migrate @ 11801]
Nathan Walp <nwalp@pidgin.im>
parents: 10504
diff changeset
1050 g_return_val_if_fail(id != NULL, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1051
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1052 if ((value = purple_status_get_attr_value(status, id)) == NULL)
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10500
diff changeset
1053 return NULL;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1054
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1055 g_return_val_if_fail(purple_value_get_type(value) == PURPLE_TYPE_STRING, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1056
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1057 return purple_value_get_string(value);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1058 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1059
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1060 gint
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1061 purple_status_compare(const PurpleStatus *status1, const PurpleStatus *status2)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1062 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1063 PurpleStatusType *type1, *type2;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1064 int score1 = 0, score2 = 0;
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1065
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1066 if ((status1 == NULL && status2 == NULL) ||
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1067 (status1 == status2))
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1068 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1069 return 0;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1070 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1071 else if (status1 == NULL)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1072 return 1;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1073 else if (status2 == NULL)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1074 return -1;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1075
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1076 type1 = purple_status_get_type(status1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1077 type2 = purple_status_get_type(status2);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1078
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1079 if (purple_status_is_active(status1))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1080 score1 = primitive_scores[purple_status_type_get_primitive(type1)];
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1081
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1082 if (purple_status_is_active(status2))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1083 score2 = primitive_scores[purple_status_type_get_primitive(type2)];
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1084
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1085 if (score1 > score2)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1086 return -1;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1087 else if (score1 < score2)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1088 return 1;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1089
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1090 return 0;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1091 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1092
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1093
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1094 /**************************************************************************
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1095 * PurplePresence API
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1096 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1097 PurplePresence *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1098 purple_presence_new(PurplePresenceContext context)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1099 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1100 PurplePresence *presence;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1101
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1102 g_return_val_if_fail(context != PURPLE_PRESENCE_CONTEXT_UNSET, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1103
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1104 presence = g_new0(PurplePresence, 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1105 PURPLE_DBUS_REGISTER_POINTER(presence, PurplePresence);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1106
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1107 presence->context = context;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1108
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1109 presence->status_table =
10009
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 10006
diff changeset
1110 g_hash_table_new_full(g_str_hash, g_str_equal,
11638
1821b40269a3 [gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11634
diff changeset
1111 g_free, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1112
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1113 return presence;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1114 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1115
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1116 PurplePresence *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1117 purple_presence_new_for_account(PurpleAccount *account)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1118 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1119 PurplePresence *presence = NULL;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1120 g_return_val_if_fail(account != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1121
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1122 presence = purple_presence_new(PURPLE_PRESENCE_CONTEXT_ACCOUNT);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1123 presence->u.account = account;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1124 presence->statuses = purple_prpl_get_statuses(account, presence);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1125
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1126 return presence;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1127 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1128
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1129 PurplePresence *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1130 purple_presence_new_for_conv(PurpleConversation *conv)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1131 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1132 PurplePresence *presence;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1133
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1134 g_return_val_if_fail(conv != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1135
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1136 presence = purple_presence_new(PURPLE_PRESENCE_CONTEXT_CONV);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1137 presence->u.chat.conv = conv;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1138 /* presence->statuses = purple_prpl_get_statuses(conv->account, presence); ? */
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1139
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1140 return presence;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1141 }
6216
38918d33547e [gaim-migrate @ 6702]
Nathan Walp <nwalp@pidgin.im>
parents: 6113
diff changeset
1142
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1143 PurplePresence *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1144 purple_presence_new_for_buddy(PurpleBuddy *buddy)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1145 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1146 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1147 PurpleAccount *account;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1148
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1149 g_return_val_if_fail(buddy != NULL, NULL);
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
1150 account = purple_buddy_get_account(buddy);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1151
16958
c95f16df72f6 this should fix 647, and a few others
Nathan Walp <nwalp@pidgin.im>
parents: 16874
diff changeset
1152 presence = purple_presence_new(PURPLE_PRESENCE_CONTEXT_BUDDY);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1153
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
1154 presence->u.buddy.name = g_strdup(purple_buddy_get_name(buddy));
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
1155 presence->u.buddy.account = account;
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
1156 presence->statuses = purple_prpl_get_statuses(account, presence);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1157
16856
3e42fed1dd43 Change some of the PurplePresence stuff to reflect how it's actually used
Sean Egan <seanegan@pidgin.im>
parents: 16592
diff changeset
1158 presence->u.buddy.buddy = buddy;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1159
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1160 return presence;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1161 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1162
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1163 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1164 purple_presence_destroy(PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1165 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1166 g_return_if_fail(presence != NULL);
6216
38918d33547e [gaim-migrate @ 6702]
Nathan Walp <nwalp@pidgin.im>
parents: 6113
diff changeset
1167
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1168 if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_BUDDY)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1169 {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13929
diff changeset
1170 g_free(presence->u.buddy.name);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1171 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1172 else if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_CONV)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1173 {
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13929
diff changeset
1174 g_free(presence->u.chat.user);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1175 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1176
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1177 g_list_foreach(presence->statuses, (GFunc)purple_status_destroy, NULL);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13929
diff changeset
1178 g_list_free(presence->statuses);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1179
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1180 g_hash_table_destroy(presence->status_table);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1181
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1182 PURPLE_DBUS_UNREGISTER_POINTER(presence);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1183 g_free(presence);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1184 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1185
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1186 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1187 purple_presence_add_status(PurplePresence *presence, PurpleStatus *status)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1188 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1189 g_return_if_fail(presence != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1190 g_return_if_fail(status != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1191
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1192 presence->statuses = g_list_append(presence->statuses, status);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1193
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1194 g_hash_table_insert(presence->status_table,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1195 g_strdup(purple_status_get_id(status)), status);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1196 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1197
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1198 void
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17515
diff changeset
1199 purple_presence_add_list(PurplePresence *presence, GList *source_list)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1200 {
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17515
diff changeset
1201 GList *l;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1202
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1203 g_return_if_fail(presence != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1204 g_return_if_fail(source_list != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1205
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1206 for (l = source_list; l != NULL; l = l->next)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1207 purple_presence_add_status(presence, (PurpleStatus *)l->data);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1208 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1209
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1210 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1211 purple_presence_set_status_active(PurplePresence *presence, const char *status_id,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1212 gboolean active)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1213 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1214 PurpleStatus *status;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1215
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1216 g_return_if_fail(presence != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1217 g_return_if_fail(status_id != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1218
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1219 status = purple_presence_get_status(presence, status_id);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1220
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1221 g_return_if_fail(status != NULL);
10348
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
1222 /* TODO: Should we do the following? */
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10343
diff changeset
1223 /* g_return_if_fail(active == status->active); */
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1224
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1225 if (purple_status_is_exclusive(status))
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1226 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1227 if (!active)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1228 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1229 purple_debug_warning("status",
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1230 "Attempted to set a non-independent status "
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1231 "(%s) inactive. Only independent statuses "
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1232 "can be specifically marked inactive.",
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1233 status_id);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1234 return;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1235 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1236 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1237
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1238 purple_status_set_active(status, active);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1239 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1240
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1241 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1242 purple_presence_switch_status(PurplePresence *presence, const char *status_id)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1243 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1244 purple_presence_set_status_active(presence, status_id, TRUE);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1245 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1246
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1247 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1248 update_buddy_idle(PurpleBuddy *buddy, PurplePresence *presence,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1249 time_t current_time, gboolean old_idle, gboolean idle)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1250 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1251 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
1252 PurpleAccount *account = purple_buddy_get_account(buddy);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1253
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1254 if (!old_idle && idle)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1255 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1256 if (purple_prefs_get_bool("/purple/logging/log_system"))
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1257 {
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
1258 PurpleLog *log = purple_account_get_log(account, FALSE);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1259
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1260 if (log != NULL)
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1261 {
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1262 char *tmp, *tmp2;
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1263 tmp = g_strdup_printf(_("%s became idle"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1264 purple_buddy_get_alias(buddy));
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1265 tmp2 = g_markup_escape_text(tmp, -1);
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1266 g_free(tmp);
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1267
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1268 purple_log_write(log, PURPLE_MESSAGE_SYSTEM,
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1269 purple_buddy_get_alias(buddy), current_time, tmp2);
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1270 g_free(tmp2);
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1271 }
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1272 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1273 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1274 else if (old_idle && !idle)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1275 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1276 if (purple_prefs_get_bool("/purple/logging/log_system"))
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1277 {
24955
77727fac30c6 Finish off the libpurple updates for the hidden blist structs
Gary Kramlich <grim@reaperworld.com>
parents: 23389
diff changeset
1278 PurpleLog *log = purple_account_get_log(account, FALSE);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1279
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1280 if (log != NULL)
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1281 {
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1282 char *tmp, *tmp2;
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1283 tmp = g_strdup_printf(_("%s became unidle"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1284 purple_buddy_get_alias(buddy));
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1285 tmp2 = g_markup_escape_text(tmp, -1);
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1286 g_free(tmp);
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1287
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1288 purple_log_write(log, PURPLE_MESSAGE_SYSTEM,
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1289 purple_buddy_get_alias(buddy), current_time, tmp2);
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1290 g_free(tmp2);
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1291 }
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1292 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1293 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1294
11935
1d95c7294577 [gaim-migrate @ 14226]
Etan Reisner <deryni@pidgin.im>
parents: 11905
diff changeset
1295 if (old_idle != idle)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1296 purple_signal_emit(purple_blist_get_handle(), "buddy-idle-changed", buddy,
11935
1d95c7294577 [gaim-migrate @ 14226]
Etan Reisner <deryni@pidgin.im>
parents: 11905
diff changeset
1297 old_idle, idle);
1d95c7294577 [gaim-migrate @ 14226]
Etan Reisner <deryni@pidgin.im>
parents: 11905
diff changeset
1298
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1299 purple_contact_invalidate_priority_buddy(purple_buddy_get_contact(buddy));
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1300
12015
894ea8a36478 [gaim-migrate @ 14308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11975
diff changeset
1301 /* Should this be done here? It'd perhaps make more sense to
894ea8a36478 [gaim-migrate @ 14308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11975
diff changeset
1302 * connect to buddy-[un]idle signals and update from there
894ea8a36478 [gaim-migrate @ 14308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11975
diff changeset
1303 */
894ea8a36478 [gaim-migrate @ 14308]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11975
diff changeset
1304
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1305 if (ops != NULL && ops->update != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1306 ops->update(purple_get_blist(), (PurpleBlistNode *)buddy);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1307 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1308
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1309 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1310 purple_presence_set_idle(PurplePresence *presence, gboolean idle, time_t idle_time)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1311 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1312 gboolean old_idle;
17515
d96963b3074e A patch from QuLogic to fix a bug with a zero timestamp for unidle notices
Richard Laager <rlaager@pidgin.im>
parents: 17514
diff changeset
1313 time_t current_time;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1314
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1315 g_return_if_fail(presence != NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1316
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1317 if (presence->idle == idle && presence->idle_time == idle_time)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1318 return;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1319
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1320 old_idle = presence->idle;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1321 presence->idle = idle;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1322 presence->idle_time = (idle ? idle_time : 0);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1323
17515
d96963b3074e A patch from QuLogic to fix a bug with a zero timestamp for unidle notices
Richard Laager <rlaager@pidgin.im>
parents: 17514
diff changeset
1324 current_time = time(NULL);
d96963b3074e A patch from QuLogic to fix a bug with a zero timestamp for unidle notices
Richard Laager <rlaager@pidgin.im>
parents: 17514
diff changeset
1325
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1326 if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_BUDDY)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1327 {
16856
3e42fed1dd43 Change some of the PurplePresence stuff to reflect how it's actually used
Sean Egan <seanegan@pidgin.im>
parents: 16592
diff changeset
1328 update_buddy_idle(purple_presence_get_buddy(presence), presence, current_time,
17515
d96963b3074e A patch from QuLogic to fix a bug with a zero timestamp for unidle notices
Richard Laager <rlaager@pidgin.im>
parents: 17514
diff changeset
1329 old_idle, idle);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1330 }
17515
d96963b3074e A patch from QuLogic to fix a bug with a zero timestamp for unidle notices
Richard Laager <rlaager@pidgin.im>
parents: 17514
diff changeset
1331 else if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_ACCOUNT)
11551
ba20005d8f78 [gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents: 11522
diff changeset
1332 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1333 PurpleAccount *account;
22390
d22357d5c7ba Kill off gc->prpl in the core everywhere but connection.c (when the struct
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21965
diff changeset
1334 PurpleConnection *gc = NULL;
d22357d5c7ba Kill off gc->prpl in the core everywhere but connection.c (when the struct
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21965
diff changeset
1335 PurplePlugin *prpl = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1336 PurplePluginProtocolInfo *prpl_info = NULL;
11551
ba20005d8f78 [gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents: 11522
diff changeset
1337
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1338 account = purple_presence_get_account(presence);
12145
25b628495c37 [gaim-migrate @ 14446]
Kevin Stange <kstange@pidgin.im>
parents: 12123
diff changeset
1339
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1340 if (purple_prefs_get_bool("/purple/logging/log_system"))
12145
25b628495c37 [gaim-migrate @ 14446]
Kevin Stange <kstange@pidgin.im>
parents: 12123
diff changeset
1341 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1342 PurpleLog *log = purple_account_get_log(account, FALSE);
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1343
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1344 if (log != NULL)
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1345 {
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1346 char *msg, *tmp;
11975
0abdd0c63f0f [gaim-migrate @ 14268]
Mark Doliner <markdoliner@pidgin.im>
parents: 11973
diff changeset
1347
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1348 if (idle)
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1349 tmp = g_strdup_printf(_("+++ %s became idle"), purple_account_get_username(account));
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1350 else
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1351 tmp = g_strdup_printf(_("+++ %s became unidle"), purple_account_get_username(account));
17515
d96963b3074e A patch from QuLogic to fix a bug with a zero timestamp for unidle notices
Richard Laager <rlaager@pidgin.im>
parents: 17514
diff changeset
1352
21965
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1353 msg = g_markup_escape_text(tmp, -1);
fded473be12a Escape system log messages before sending to the loggers. Fixes #4426
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21201
diff changeset
1354 g_free(tmp);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1355 purple_log_write(log, PURPLE_MESSAGE_SYSTEM,
17515
d96963b3074e A patch from QuLogic to fix a bug with a zero timestamp for unidle notices
Richard Laager <rlaager@pidgin.im>
parents: 17514
diff changeset
1356 purple_account_get_username(account),
d96963b3074e A patch from QuLogic to fix a bug with a zero timestamp for unidle notices
Richard Laager <rlaager@pidgin.im>
parents: 17514
diff changeset
1357 (idle ? idle_time : current_time), msg);
13508
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1358 g_free(msg);
3c66c5a0ca7c [gaim-migrate @ 15883]
Richard Laager <rlaager@pidgin.im>
parents: 13507
diff changeset
1359 }
12145
25b628495c37 [gaim-migrate @ 14446]
Kevin Stange <kstange@pidgin.im>
parents: 12123
diff changeset
1360 }
11975
0abdd0c63f0f [gaim-migrate @ 14268]
Mark Doliner <markdoliner@pidgin.im>
parents: 11973
diff changeset
1361
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1362 gc = purple_account_get_connection(account);
11975
0abdd0c63f0f [gaim-migrate @ 14268]
Mark Doliner <markdoliner@pidgin.im>
parents: 11973
diff changeset
1363
22390
d22357d5c7ba Kill off gc->prpl in the core everywhere but connection.c (when the struct
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21965
diff changeset
1364 if(gc)
d22357d5c7ba Kill off gc->prpl in the core everywhere but connection.c (when the struct
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21965
diff changeset
1365 prpl = purple_connection_get_prpl(gc);
d22357d5c7ba Kill off gc->prpl in the core everywhere but connection.c (when the struct
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21965
diff changeset
1366
d22357d5c7ba Kill off gc->prpl in the core everywhere but connection.c (when the struct
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21965
diff changeset
1367 if(PURPLE_CONNECTION_IS_CONNECTED(gc) && prpl != NULL)
d22357d5c7ba Kill off gc->prpl in the core everywhere but connection.c (when the struct
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21965
diff changeset
1368 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
11551
ba20005d8f78 [gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents: 11522
diff changeset
1369
14453
1cc75906700c [gaim-migrate @ 17098]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
1370 if (prpl_info && prpl_info->set_idle)
17515
d96963b3074e A patch from QuLogic to fix a bug with a zero timestamp for unidle notices
Richard Laager <rlaager@pidgin.im>
parents: 17514
diff changeset
1371 prpl_info->set_idle(gc, (idle ? (current_time - idle_time) : 0));
11551
ba20005d8f78 [gaim-migrate @ 13806]
Luke Schierer <lschiere@pidgin.im>
parents: 11522
diff changeset
1372 }
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1373 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1374
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1375 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1376 purple_presence_set_login_time(PurplePresence *presence, time_t login_time)
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1377 {
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1378 g_return_if_fail(presence != NULL);
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1379
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1380 if (presence->login_time == login_time)
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1381 return;
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1382
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1383 presence->login_time = login_time;
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1384 }
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1385
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1386 PurplePresenceContext
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1387 purple_presence_get_context(const PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1388 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1389 g_return_val_if_fail(presence != NULL, PURPLE_PRESENCE_CONTEXT_UNSET);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1390
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1391 return presence->context;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1392 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1393
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1394 PurpleAccount *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1395 purple_presence_get_account(const PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1396 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1397 PurplePresenceContext context;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1398
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1399 g_return_val_if_fail(presence != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1400
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1401 context = purple_presence_get_context(presence);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1402
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1403 g_return_val_if_fail(context == PURPLE_PRESENCE_CONTEXT_ACCOUNT ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1404 context == PURPLE_PRESENCE_CONTEXT_BUDDY, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1405
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1406 return presence->u.account;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1407 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1408
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1409 PurpleConversation *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1410 purple_presence_get_conversation(const PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1411 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1412 g_return_val_if_fail(presence != NULL, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1413 g_return_val_if_fail(purple_presence_get_context(presence) ==
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1414 PURPLE_PRESENCE_CONTEXT_CONV, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1415
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1416 return presence->u.chat.conv;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1417 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1418
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1419 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1420 purple_presence_get_chat_user(const PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1421 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1422 g_return_val_if_fail(presence != NULL, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1423 g_return_val_if_fail(purple_presence_get_context(presence) ==
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1424 PURPLE_PRESENCE_CONTEXT_CONV, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1425
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1426 return presence->u.chat.user;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1427 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1428
16856
3e42fed1dd43 Change some of the PurplePresence stuff to reflect how it's actually used
Sean Egan <seanegan@pidgin.im>
parents: 16592
diff changeset
1429 PurpleBuddy *
3e42fed1dd43 Change some of the PurplePresence stuff to reflect how it's actually used
Sean Egan <seanegan@pidgin.im>
parents: 16592
diff changeset
1430 purple_presence_get_buddy(const PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1431 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1432 g_return_val_if_fail(presence != NULL, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1433 g_return_val_if_fail(purple_presence_get_context(presence) ==
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1434 PURPLE_PRESENCE_CONTEXT_BUDDY, NULL);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1435
16856
3e42fed1dd43 Change some of the PurplePresence stuff to reflect how it's actually used
Sean Egan <seanegan@pidgin.im>
parents: 16592
diff changeset
1436 return presence->u.buddy.buddy;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1437 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1438
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17515
diff changeset
1439 GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1440 purple_presence_get_statuses(const PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1441 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1442 g_return_val_if_fail(presence != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1443
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1444 return presence->statuses;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1445 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1446
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1447 PurpleStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1448 purple_presence_get_status(const PurplePresence *presence, const char *status_id)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1449 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1450 PurpleStatus *status;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17515
diff changeset
1451 GList *l = NULL;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1452
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1453 g_return_val_if_fail(presence != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1454 g_return_val_if_fail(status_id != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1455
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1456 /* What's the purpose of this hash table? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1457 status = (PurpleStatus *)g_hash_table_lookup(presence->status_table,
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1458 status_id);
10012
da9fdfbf4c5a [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10010
diff changeset
1459
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1460 if (status == NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1461 for (l = purple_presence_get_statuses(presence);
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1462 l != NULL && status == NULL; l = l->next)
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1463 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1464 PurpleStatus *temp_status = l->data;
10012
da9fdfbf4c5a [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10010
diff changeset
1465
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24955
diff changeset
1466 if (purple_strequal(status_id, purple_status_get_id(temp_status)))
10006
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1467 status = temp_status;
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1468 }
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1469
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1470 if (status != NULL)
800a81666868 [gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents: 9949
diff changeset
1471 g_hash_table_insert(presence->status_table,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1472 g_strdup(purple_status_get_id(status)), status);
10012
da9fdfbf4c5a [gaim-migrate @ 10929]
Nathan Walp <nwalp@pidgin.im>
parents: 10010
diff changeset
1473 }
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1474
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1475 return status;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1476 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1477
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1478 PurpleStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1479 purple_presence_get_active_status(const PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1480 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1481 g_return_val_if_fail(presence != NULL, NULL);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1482
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1483 return presence->active_status;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1484 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1485
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1486 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1487 purple_presence_is_available(const PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1488 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1489 PurpleStatus *status;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1490
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1491 g_return_val_if_fail(presence != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1492
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1493 status = purple_presence_get_active_status(presence);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1494
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1495 return ((status != NULL && purple_status_is_available(status)) &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1496 !purple_presence_is_idle(presence));
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1497 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1498
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1499 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1500 purple_presence_is_online(const PurplePresence *presence)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1501 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1502 PurpleStatus *status;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1503
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1504 g_return_val_if_fail(presence != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1505
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1506 if ((status = purple_presence_get_active_status(presence)) == NULL)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1507 return FALSE;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1508
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1509 return purple_status_is_online(status);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1510 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1511
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1512 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1513 purple_presence_is_status_active(const PurplePresence *presence,
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1514 const char *status_id)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1515 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1516 PurpleStatus *status;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1517
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1518 g_return_val_if_fail(presence != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1519 g_return_val_if_fail(status_id != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1520
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1521 status = purple_presence_get_status(presence, status_id);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1522
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1523 return (status != NULL && purple_status_is_active(status));
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1524 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1525
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1526 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1527 purple_presence_is_status_primitive_active(const PurplePresence *presence,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1528 PurpleStatusPrimitive primitive)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1529 {
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17515
diff changeset
1530 GList *l;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1531
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1532 g_return_val_if_fail(presence != NULL, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1533 g_return_val_if_fail(primitive != PURPLE_STATUS_UNSET, FALSE);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1534
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1535 for (l = purple_presence_get_statuses(presence);
27787
1cf1c2a3f0df This brace was a little goofy
Mark Doliner <markdoliner@pidgin.im>
parents: 25905
diff changeset
1536 l != NULL; l = l->next)
1cf1c2a3f0df This brace was a little goofy
Mark Doliner <markdoliner@pidgin.im>
parents: 25905
diff changeset
1537 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1538 PurpleStatus *temp_status = l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1539 PurpleStatusType *type = purple_status_get_type(temp_status);
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1540
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1541 if (purple_status_type_get_primitive(type) == primitive &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1542 purple_status_is_active(temp_status))
15588
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1543 return TRUE;
e6e89a427ed5 Use the status API to handle mobileness, and convert AIM to use it. This makes mobile buddies prioritze lower in Perons, and ensures the UI is notified of changes in mobileness. Other protocols to follow.
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1544 }
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1545 return FALSE;
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1546 }
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1547
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1548 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1549 purple_presence_is_idle(const PurplePresence *presence)
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1550 {
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1551 g_return_val_if_fail(presence != NULL, FALSE);
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1552
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1553 return purple_presence_is_online(presence) && presence->idle;
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1554 }
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1555
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1556 time_t
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1557 purple_presence_get_idle_time(const PurplePresence *presence)
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1558 {
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1559 g_return_val_if_fail(presence != NULL, 0);
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1560
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1561 return presence->idle_time;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1562 }
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1563
10567
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10519
diff changeset
1564 time_t
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1565 purple_presence_get_login_time(const PurplePresence *presence)
10567
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10519
diff changeset
1566 {
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10519
diff changeset
1567 g_return_val_if_fail(presence != NULL, 0);
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10519
diff changeset
1568
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1569 return purple_presence_is_online(presence) ? presence->login_time : 0;
10567
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10519
diff changeset
1570 }
87b02dd40349 [gaim-migrate @ 11951]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10519
diff changeset
1571
22765
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1572 static int
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1573 purple_presence_compute_score(const PurplePresence *presence)
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1574 {
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1575 GList *l;
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1576 int score = 0;
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1577
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1578 for (l = purple_presence_get_statuses(presence); l != NULL; l = l->next) {
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1579 PurpleStatus *status = (PurpleStatus *)l->data;
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1580 PurpleStatusType *type = purple_status_get_type(status);
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1581
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1582 if (purple_status_is_active(status)) {
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1583 score += primitive_scores[purple_status_type_get_primitive(type)];
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1584 if (!purple_status_is_online(status)) {
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1585 PurpleBuddy *b = purple_presence_get_buddy(presence);
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1586 if (b && purple_account_supports_offline_message(purple_buddy_get_account(b), b))
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1587 score += primitive_scores[SCORE_OFFLINE_MESSAGE];
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1588 }
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1589 }
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1590 }
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1591 score += purple_account_get_int(purple_presence_get_account(presence), "score", 0);
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1592 if (purple_presence_is_idle(presence))
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1593 score += primitive_scores[SCORE_IDLE];
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1594 return score;
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1595 }
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1596
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1597 gint
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1598 purple_presence_compare(const PurplePresence *presence1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1599 const PurplePresence *presence2)
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1600 {
10860
8f600347b9e4 [gaim-migrate @ 12543]
Palmer Cox <enix@users.sourceforge.net>
parents: 10760
diff changeset
1601 time_t idle_time_1, idle_time_2;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1602 int score1 = 0, score2 = 0;
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1603
12164
b39dc890f640 [gaim-migrate @ 14465]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12145
diff changeset
1604 if (presence1 == presence2)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1605 return 0;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1606 else if (presence1 == NULL)
10151
e6c455f7ccf6 [gaim-migrate @ 11228]
Andrew Hart <arhart@users.sourceforge.net>
parents: 10087
diff changeset
1607 return 1;
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1608 else if (presence2 == NULL)
10151
e6c455f7ccf6 [gaim-migrate @ 11228]
Andrew Hart <arhart@users.sourceforge.net>
parents: 10087
diff changeset
1609 return -1;
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1610
22765
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1611 if (purple_presence_is_online(presence1) &&
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1612 !purple_presence_is_online(presence2))
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1613 return -1;
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1614 else if (purple_presence_is_online(presence2) &&
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1615 !purple_presence_is_online(presence1))
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1616 return 1;
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1617
22765
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1618 /* Compute the score of the first set of statuses. */
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1619 score1 = purple_presence_compute_score(presence1);
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1620
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1621 /* Compute the score of the second set of statuses. */
22765
fa78f0291dee Between an offline presence with offline-message capability, and a mobile online presence, choose the latter over the former when sending an instant message.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22390
diff changeset
1622 score2 = purple_presence_compute_score(presence2);
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1623
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1624 idle_time_1 = time(NULL) - purple_presence_get_idle_time(presence1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1625 idle_time_2 = time(NULL) - purple_presence_get_idle_time(presence2);
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1626
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1627 if (idle_time_1 > idle_time_2)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1628 score1 += primitive_scores[SCORE_IDLE_TIME];
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1629 else if (idle_time_1 < idle_time_2)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1630 score2 += primitive_scores[SCORE_IDLE_TIME];
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1631
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1632 if (score1 < score2)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1633 return 1;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1634 else if (score1 > score2)
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1635 return -1;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1636
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1637 return 0;
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1638 }
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1639
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1640
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1641 /**************************************************************************
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1642 * Status subsystem
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1643 **************************************************************************/
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1644 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1645 score_pref_changed_cb(const char *name, PurplePrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12797
diff changeset
1646 gconstpointer value, gpointer data)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1647 {
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1648 int index = GPOINTER_TO_INT(data);
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1649
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1650 primitive_scores[index] = GPOINTER_TO_INT(value);
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1651 }
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1652
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10077
diff changeset
1653 void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1654 purple_status_get_handle(void) {
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10077
diff changeset
1655 static int handle;
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10077
diff changeset
1656
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10077
diff changeset
1657 return &handle;
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10077
diff changeset
1658 }
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10077
diff changeset
1659
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1660 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1661 purple_status_init(void)
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1662 {
28176
6262a177af69 This was wrong, right? How did it work?
Paul Aurich <darkrain42@pidgin.im>
parents: 27787
diff changeset
1663 void *handle = purple_status_get_handle();
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10077
diff changeset
1664
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1665 purple_prefs_add_none("/purple/status");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1666 purple_prefs_add_none("/purple/status/scores");
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1667
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1668 purple_prefs_add_int("/purple/status/scores/offline",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1669 primitive_scores[PURPLE_STATUS_OFFLINE]);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1670 purple_prefs_add_int("/purple/status/scores/available",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1671 primitive_scores[PURPLE_STATUS_AVAILABLE]);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1672 purple_prefs_add_int("/purple/status/scores/invisible",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1673 primitive_scores[PURPLE_STATUS_INVISIBLE]);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1674 purple_prefs_add_int("/purple/status/scores/away",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1675 primitive_scores[PURPLE_STATUS_AWAY]);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1676 purple_prefs_add_int("/purple/status/scores/extended_away",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1677 primitive_scores[PURPLE_STATUS_EXTENDED_AWAY]);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1678 purple_prefs_add_int("/purple/status/scores/idle",
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1679 primitive_scores[SCORE_IDLE]);
16857
10072d5790f4 Give offline buddies that support offline messaging a higher score than offline buddies that don't.
Sean Egan <seanegan@pidgin.im>
parents: 16856
diff changeset
1680 purple_prefs_add_int("/purple/status/scores/offline_msg",
10072d5790f4 Give offline buddies that support offline messaging a higher score than offline buddies that don't.
Sean Egan <seanegan@pidgin.im>
parents: 16856
diff changeset
1681 primitive_scores[SCORE_OFFLINE_MESSAGE]);
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1682
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1683 purple_prefs_connect_callback(handle, "/purple/status/scores/offline",
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1684 score_pref_changed_cb,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1685 GINT_TO_POINTER(PURPLE_STATUS_OFFLINE));
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1686 purple_prefs_connect_callback(handle, "/purple/status/scores/available",
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1687 score_pref_changed_cb,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1688 GINT_TO_POINTER(PURPLE_STATUS_AVAILABLE));
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1689 purple_prefs_connect_callback(handle, "/purple/status/scores/invisible",
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1690 score_pref_changed_cb,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1691 GINT_TO_POINTER(PURPLE_STATUS_INVISIBLE));
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1692 purple_prefs_connect_callback(handle, "/purple/status/scores/away",
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1693 score_pref_changed_cb,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1694 GINT_TO_POINTER(PURPLE_STATUS_AWAY));
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1695 purple_prefs_connect_callback(handle, "/purple/status/scores/extended_away",
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1696 score_pref_changed_cb,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1697 GINT_TO_POINTER(PURPLE_STATUS_EXTENDED_AWAY));
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1698 purple_prefs_connect_callback(handle, "/purple/status/scores/idle",
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1699 score_pref_changed_cb,
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1700 GINT_TO_POINTER(SCORE_IDLE));
16857
10072d5790f4 Give offline buddies that support offline messaging a higher score than offline buddies that don't.
Sean Egan <seanegan@pidgin.im>
parents: 16856
diff changeset
1701 purple_prefs_connect_callback(handle, "/purple/status/scores/offline_msg",
10072d5790f4 Give offline buddies that support offline messaging a higher score than offline buddies that don't.
Sean Egan <seanegan@pidgin.im>
parents: 16856
diff changeset
1702 score_pref_changed_cb,
10072d5790f4 Give offline buddies that support offline messaging a higher score than offline buddies that don't.
Sean Egan <seanegan@pidgin.im>
parents: 16856
diff changeset
1703 GINT_TO_POINTER(SCORE_OFFLINE_MESSAGE));
20055
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
1704
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
1705 purple_prefs_trigger_callback("/purple/status/scores/offline");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
1706 purple_prefs_trigger_callback("/purple/status/scores/available");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
1707 purple_prefs_trigger_callback("/purple/status/scores/invisible");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
1708 purple_prefs_trigger_callback("/purple/status/scores/away");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
1709 purple_prefs_trigger_callback("/purple/status/scores/extended_away");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
1710 purple_prefs_trigger_callback("/purple/status/scores/idle");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
1711 purple_prefs_trigger_callback("/purple/status/scores/offline_msg");
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1712 }
6065
ccd9672f9636 [gaim-migrate @ 6515]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1713
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1714 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15657
diff changeset
1715 purple_status_uninit(void)
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1716 {
28176
6262a177af69 This was wrong, right? How did it work?
Paul Aurich <darkrain42@pidgin.im>
parents: 27787
diff changeset
1717 purple_prefs_disconnect_by_handle(purple_prefs_get_handle());
9949
377cd65fab3d [gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents: 9944
diff changeset
1718 }

mercurial