Sun, 15 Apr 2007 02:10:37 +0000
propagate from branch 'im.pidgin.gaim' (head b2836a24d81e7a1bd1d21b3aea8794b094391344)
to branch 'im.pidgin.rlaager.merging.soc-msnp13-to-svn18164' (head 463b4fa9f067b279f843520d95a822adc86a0a1b)
| 981 | 1 | /* |
| 2 | * gaim | |
| 3 | * | |
| 8046 | 4 | * Gaim is the legal property of its developers, whose names are too numerous |
| 5 | * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 6 | * source distribution. | |
|
6460
fc288e7221ca
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
7 | * |
| 981 | 8 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 12 | * | |
| 13 | * This program is distributed in the hope that it will be useful, | |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 19 | * along with this program; if not, write to the Free Software | |
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 21 | * | |
| 22 | */ | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
23 | #include "internal.h" |
|
5945
941f14d90d22
[gaim-migrate @ 6386]
Christian Hammond <chipx86@chipx86.com>
parents:
5943
diff
changeset
|
24 | #include "conversation.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
25 | #include "debug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
26 | #include "notify.h" |
| 981 | 27 | #include "prpl.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
28 | #include "request.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5717
diff
changeset
|
29 | #include "util.h" |
| 3738 | 30 | |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
31 | /**************************************************************************/ |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
32 | /** @name Protocol Plugin API */ |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
33 | /**************************************************************************/ |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
34 | void |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
35 | gaim_prpl_got_account_idle(GaimAccount *account, gboolean idle, |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
36 | time_t idle_time) |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
37 | { |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
38 | g_return_if_fail(account != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
39 | g_return_if_fail(gaim_account_is_connected(account)); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
40 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
41 | gaim_presence_set_idle(gaim_account_get_presence(account), |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
42 | idle, idle_time); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
43 | } |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
44 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
45 | void |
|
10870
028006831b79
[gaim-migrate @ 12557]
Mark Doliner <markdoliner@pidgin.im>
parents:
10554
diff
changeset
|
46 | gaim_prpl_got_account_login_time(GaimAccount *account, time_t login_time) |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
47 | { |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
48 | GaimPresence *presence; |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
49 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
50 | g_return_if_fail(account != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
51 | g_return_if_fail(gaim_account_is_connected(account)); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
52 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
53 | if (login_time == 0) |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
54 | login_time = time(NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
55 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
56 | presence = gaim_account_get_presence(account); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
57 | |
|
10007
2dfaf7384d90
[gaim-migrate @ 10924]
Mark Doliner <markdoliner@pidgin.im>
parents:
10006
diff
changeset
|
58 | gaim_presence_set_login_time(presence, login_time); |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
59 | } |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
60 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
61 | void |
|
13374
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
62 | gaim_prpl_got_account_status(GaimAccount *account, const char *status_id, ...) |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
63 | { |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
64 | GaimPresence *presence; |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
65 | GaimStatus *status; |
|
13374
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
66 | va_list args; |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
67 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
68 | g_return_if_fail(account != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
69 | g_return_if_fail(status_id != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
70 | g_return_if_fail(gaim_account_is_connected(account)); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
71 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
72 | presence = gaim_account_get_presence(account); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
73 | status = gaim_presence_get_status(presence, status_id); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
74 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
75 | g_return_if_fail(status != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
76 | |
|
13374
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
77 | va_start(args, status_id); |
|
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
78 | gaim_status_set_active_with_attrs(status, TRUE, args); |
|
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
79 | va_end(args); |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
80 | } |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
81 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
82 | void |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
83 | gaim_prpl_got_user_idle(GaimAccount *account, const char *name, |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
84 | gboolean idle, time_t idle_time) |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
85 | { |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
86 | GaimBuddy *buddy; |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
87 | GaimPresence *presence; |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
88 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
89 | g_return_if_fail(account != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
90 | g_return_if_fail(name != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
91 | g_return_if_fail(gaim_account_is_connected(account)); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
92 | |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
93 | if ((buddy = gaim_find_buddy(account, name)) == NULL) |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
94 | return; |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
95 | |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
96 | presence = gaim_buddy_get_presence(buddy); |
|
10554
18efa4802ed5
[gaim-migrate @ 11931]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10447
diff
changeset
|
97 | |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
98 | gaim_presence_set_idle(presence, idle, idle_time); |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
99 | } |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
100 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
101 | void |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
102 | gaim_prpl_got_user_login_time(GaimAccount *account, const char *name, |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
103 | time_t login_time) |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
104 | { |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
105 | GaimBuddy *buddy; |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
106 | GaimPresence *presence; |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
107 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
108 | g_return_if_fail(account != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
109 | g_return_if_fail(name != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
110 | |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
111 | if ((buddy = gaim_find_buddy(account, name)) == NULL) |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
112 | return; |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
113 | |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
114 | if (login_time == 0) |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
115 | login_time = time(NULL); |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
116 | |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
117 | presence = gaim_buddy_get_presence(buddy); |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
118 | |
|
15311
f5cf28c6e665
[gaim-migrate @ 18039]
Evan Schoenberg <evands@pidgin.im>
parents:
15212
diff
changeset
|
119 | if (gaim_presence_get_login_time(presence) != login_time) |
|
f5cf28c6e665
[gaim-migrate @ 18039]
Evan Schoenberg <evands@pidgin.im>
parents:
15212
diff
changeset
|
120 | { |
|
f5cf28c6e665
[gaim-migrate @ 18039]
Evan Schoenberg <evands@pidgin.im>
parents:
15212
diff
changeset
|
121 | gaim_presence_set_login_time(presence, login_time); |
|
15212
2919bfea7c4a
[gaim-migrate @ 17936]
Evan Schoenberg <evands@pidgin.im>
parents:
14254
diff
changeset
|
122 | |
|
15311
f5cf28c6e665
[gaim-migrate @ 18039]
Evan Schoenberg <evands@pidgin.im>
parents:
15212
diff
changeset
|
123 | gaim_signal_emit(gaim_blist_get_handle(), "buddy-got-login-time", buddy); |
|
f5cf28c6e665
[gaim-migrate @ 18039]
Evan Schoenberg <evands@pidgin.im>
parents:
15212
diff
changeset
|
124 | } |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
125 | } |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
126 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
127 | void |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
128 | gaim_prpl_got_user_status(GaimAccount *account, const char *name, |
|
13374
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
129 | const char *status_id, ...) |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
130 | { |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13374
diff
changeset
|
131 | GSList *list; |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
132 | GaimBuddy *buddy; |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
133 | GaimPresence *presence; |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
134 | GaimStatus *status; |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
135 | GaimStatus *old_status; |
|
13374
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
136 | va_list args; |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
137 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
138 | g_return_if_fail(account != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
139 | g_return_if_fail(name != NULL); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
140 | g_return_if_fail(status_id != NULL); |
| 12377 | 141 | g_return_if_fail(gaim_account_is_connected(account) || gaim_account_is_connecting(account)); |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
142 | |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
143 | if ((buddy = gaim_find_buddy(account, name)) == NULL) |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
144 | return; |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
145 | |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
146 | presence = gaim_buddy_get_presence(buddy); |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
147 | status = gaim_presence_get_status(presence, status_id); |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
148 | |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
149 | g_return_if_fail(status != NULL); |
|
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
150 | |
|
13374
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
151 | old_status = gaim_presence_get_active_status(presence); |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
152 | |
|
13374
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
153 | va_start(args, status_id); |
|
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
154 | gaim_status_set_active_with_attrs(status, TRUE, args); |
|
e5da5325b1fa
[gaim-migrate @ 15746]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13335
diff
changeset
|
155 | va_end(args); |
|
12176
ee1aea253ce3
[gaim-migrate @ 14478]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12126
diff
changeset
|
156 | |
|
12126
3b70215e9630
[gaim-migrate @ 14426]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12108
diff
changeset
|
157 | list = gaim_find_buddies(account, name); |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13374
diff
changeset
|
158 | g_slist_foreach(list, (GFunc)gaim_blist_update_buddy_status, old_status); |
|
12126
3b70215e9630
[gaim-migrate @ 14426]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12108
diff
changeset
|
159 | g_slist_free(list); |
|
12654
2e25e75190c4
[gaim-migrate @ 14997]
Mark Doliner <markdoliner@pidgin.im>
parents:
12377
diff
changeset
|
160 | |
|
2e25e75190c4
[gaim-migrate @ 14997]
Mark Doliner <markdoliner@pidgin.im>
parents:
12377
diff
changeset
|
161 | if (!gaim_status_is_online(status)) |
|
2e25e75190c4
[gaim-migrate @ 14997]
Mark Doliner <markdoliner@pidgin.im>
parents:
12377
diff
changeset
|
162 | serv_got_typing_stopped(gaim_account_get_connection(account), name); |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
163 | } |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
164 | |
|
12304
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
165 | static void |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
166 | do_prpl_change_account_status(GaimAccount *account, |
|
10447
887380ec66f5
[gaim-migrate @ 11712]
Mark Doliner <markdoliner@pidgin.im>
parents:
10052
diff
changeset
|
167 | GaimStatus *old_status, GaimStatus *new_status) |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
168 | { |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
169 | GaimPlugin *prpl; |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
170 | GaimPluginProtocolInfo *prpl_info; |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
171 | |
|
11718
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11628
diff
changeset
|
172 | if (gaim_status_is_online(new_status) && |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11628
diff
changeset
|
173 | gaim_account_is_disconnected(account)) |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11628
diff
changeset
|
174 | { |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11628
diff
changeset
|
175 | gaim_account_connect(account); |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11628
diff
changeset
|
176 | return; |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11628
diff
changeset
|
177 | } |
|
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11628
diff
changeset
|
178 | |
|
14224
d6d41ff969df
[gaim-migrate @ 16810]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14097
diff
changeset
|
179 | if (!gaim_status_is_online(new_status)) |
|
d6d41ff969df
[gaim-migrate @ 16810]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14097
diff
changeset
|
180 | { |
|
d6d41ff969df
[gaim-migrate @ 16810]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14097
diff
changeset
|
181 | if (!gaim_account_is_disconnected(account)) |
|
d6d41ff969df
[gaim-migrate @ 16810]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14097
diff
changeset
|
182 | gaim_account_disconnect(account); |
|
d6d41ff969df
[gaim-migrate @ 16810]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14097
diff
changeset
|
183 | return; |
|
d6d41ff969df
[gaim-migrate @ 16810]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
14097
diff
changeset
|
184 | } |
|
11718
90804d019837
[gaim-migrate @ 14009]
Mark Doliner <markdoliner@pidgin.im>
parents:
11628
diff
changeset
|
185 | |
|
12108
a74fd0d6b79c
[gaim-migrate @ 14408]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11948
diff
changeset
|
186 | if (gaim_account_is_connecting(account)) |
|
a74fd0d6b79c
[gaim-migrate @ 14408]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11948
diff
changeset
|
187 | /* |
|
a74fd0d6b79c
[gaim-migrate @ 14408]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11948
diff
changeset
|
188 | * We don't need to call the set_status PRPL function because |
|
a74fd0d6b79c
[gaim-migrate @ 14408]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11948
diff
changeset
|
189 | * the PRPL will take care of setting its status during the |
|
a74fd0d6b79c
[gaim-migrate @ 14408]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11948
diff
changeset
|
190 | * connection process. |
|
a74fd0d6b79c
[gaim-migrate @ 14408]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11948
diff
changeset
|
191 | */ |
|
a74fd0d6b79c
[gaim-migrate @ 14408]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11948
diff
changeset
|
192 | return; |
|
a74fd0d6b79c
[gaim-migrate @ 14408]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11948
diff
changeset
|
193 | |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
194 | prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
195 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
196 | if (prpl == NULL) |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
197 | return; |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
198 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
199 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
200 | |
|
13335
49bcdb576d8b
[gaim-migrate @ 15704]
Daniel Atallah <datallah@pidgin.im>
parents:
13331
diff
changeset
|
201 | if (!gaim_account_is_disconnected(account) && prpl_info->set_status != NULL) |
|
11628
cdd5df7cfbc1
[gaim-migrate @ 13903]
Casey Harkins <charkins@pidgin.im>
parents:
11257
diff
changeset
|
202 | { |
|
10447
887380ec66f5
[gaim-migrate @ 11712]
Mark Doliner <markdoliner@pidgin.im>
parents:
10052
diff
changeset
|
203 | prpl_info->set_status(account, new_status); |
|
11628
cdd5df7cfbc1
[gaim-migrate @ 13903]
Casey Harkins <charkins@pidgin.im>
parents:
11257
diff
changeset
|
204 | } |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
205 | } |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
206 | |
|
12304
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
207 | void |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
208 | gaim_prpl_change_account_status(GaimAccount *account, |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
209 | GaimStatus *old_status, GaimStatus *new_status) |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
210 | { |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
211 | g_return_if_fail(account != NULL); |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
212 | g_return_if_fail(old_status != NULL); |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
213 | g_return_if_fail(new_status != NULL); |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
214 | |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
215 | do_prpl_change_account_status(account, old_status, new_status); |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
216 | |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
217 | gaim_signal_emit(gaim_accounts_get_handle(), "account-status-changed", |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
218 | account, old_status, new_status); |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
219 | } |
|
e849bc5e8d5d
[gaim-migrate @ 14608]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12176
diff
changeset
|
220 | |
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
221 | GList * |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
222 | gaim_prpl_get_statuses(GaimAccount *account, GaimPresence *presence) |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
223 | { |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
224 | GaimPlugin *prpl; |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
225 | GaimPluginProtocolInfo *prpl_info; |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
226 | GList *statuses = NULL; |
|
11730
649c38d2a8ab
[gaim-migrate @ 14021]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11718
diff
changeset
|
227 | GList *l, *list; |
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
228 | GaimStatus *status; |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
229 | |
|
10447
887380ec66f5
[gaim-migrate @ 11712]
Mark Doliner <markdoliner@pidgin.im>
parents:
10052
diff
changeset
|
230 | g_return_val_if_fail(account != NULL, NULL); |
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
231 | g_return_val_if_fail(presence != NULL, NULL); |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
232 | |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
233 | prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); |
|
10046
7e9175ee9b63
[gaim-migrate @ 11007]
Mark Doliner <markdoliner@pidgin.im>
parents:
10036
diff
changeset
|
234 | |
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
235 | if (prpl == NULL) |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
236 | return NULL; |
|
10046
7e9175ee9b63
[gaim-migrate @ 11007]
Mark Doliner <markdoliner@pidgin.im>
parents:
10036
diff
changeset
|
237 | |
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
238 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
239 | if (prpl_info == NULL || prpl_info->status_types == NULL) |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
240 | return NULL; |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
241 | |
|
11730
649c38d2a8ab
[gaim-migrate @ 14021]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11718
diff
changeset
|
242 | for (l = list = prpl_info->status_types(account); l != NULL; l = l->next) |
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
243 | { |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
244 | status = gaim_status_new((GaimStatusType *)l->data, presence); |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
245 | statuses = g_list_append(statuses, status); |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
246 | } |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
247 | |
|
11730
649c38d2a8ab
[gaim-migrate @ 14021]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11718
diff
changeset
|
248 | g_list_free(list); |
|
649c38d2a8ab
[gaim-migrate @ 14021]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11718
diff
changeset
|
249 | |
|
10006
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
250 | return statuses; |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
251 | } |
|
800a81666868
[gaim-migrate @ 10923]
Dave West <kat@users.sourceforge.net>
parents:
9949
diff
changeset
|
252 | |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
253 | |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
254 | /************************************************************************** |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
255 | * Protocol Plugin Subsystem API |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
256 | **************************************************************************/ |
|
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9460
diff
changeset
|
257 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
258 | GaimPlugin * |
| 7956 | 259 | gaim_find_prpl(const char *id) |
| 981 | 260 | { |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
261 | GList *l; |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
262 | GaimPlugin *plugin; |
| 981 | 263 | |
|
10036
743f585a1141
[gaim-migrate @ 10995]
Luke Schierer <lschiere@pidgin.im>
parents:
10023
diff
changeset
|
264 | g_return_val_if_fail(id != NULL, NULL); |
|
743f585a1141
[gaim-migrate @ 10995]
Luke Schierer <lschiere@pidgin.im>
parents:
10023
diff
changeset
|
265 | |
|
5573
633880e3f137
[gaim-migrate @ 5976]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
266 | for (l = gaim_plugins_get_protocols(); l != NULL; l = l->next) { |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
267 | plugin = (GaimPlugin *)l->data; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
268 | |
|
11948
94b27c352128
[gaim-migrate @ 14239]
Mark Doliner <markdoliner@pidgin.im>
parents:
11927
diff
changeset
|
269 | if (!strcmp(plugin->info->id, id)) |
|
94b27c352128
[gaim-migrate @ 14239]
Mark Doliner <markdoliner@pidgin.im>
parents:
11927
diff
changeset
|
270 | return plugin; |
| 981 | 271 | } |
| 272 | ||
| 273 | return NULL; | |
| 274 | } |