libpurple/protocols/sametime/sametime.c

Sat, 08 Dec 2018 21:06:37 -0600

author
Mike Ruprecht <cmaiku@gmail.com>
date
Sat, 08 Dec 2018 21:06:37 -0600
changeset 39404
dc8c71a301d0
parent 39005
6a56e1366809
child 39467
1f7525086da5
permissions
-rw-r--r--

libpurple: Drop capability to statically build prpls

The static building of protocol plugins has been completely broken
since switching to meson. Because of this and the prospect of GPlugin
growing capabilities for limiting allowed plugins, this patch drops
the remaining meson configuration for attempting to support static
protocol plugins.

10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3 Meanwhile Protocol Plugin for Purple
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4 Adds Lotus Sametime support to Purple using the Meanwhile library
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
6 Copyright (C) 2004 Christopher (siege) O'Brien <siege@preoccupied.net>
14170
f611621bc8a0 [gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents: 14151
diff changeset
7
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
8 This program is free software; you can redistribute it and/or modify
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
10 the Free Software Foundation; either version 2 of the License, or (at
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
11 your option) any later version.
14170
f611621bc8a0 [gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents: 14151
diff changeset
12
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
13 This program is distributed in the hope that it will be useful, but
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
14 WITHOUT ANY WARRANTY; without even the implied warranty of
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
16 General Public License for more details.
14170
f611621bc8a0 [gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents: 14151
diff changeset
17
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
19 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: 19586
diff changeset
20 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
21 USA.
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
22 */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
23
28981
4e3922ab4844 Include 'internal.h' before all other headers to make some non-gcc compilers happy.
Paul Aurich <darkrain42@pidgin.im>
parents: 27635
diff changeset
24 #include "internal.h"
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
25
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
26 /* system includes */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
27 #include <stdlib.h>
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
28 #include <time.h>
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
29
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
30 /* glib includes */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
31 #include <glib.h>
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
32
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
33 /* purple includes */
14013
86dac5633bd9 [gaim-migrate @ 16496]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
34 #include "account.h"
86dac5633bd9 [gaim-migrate @ 16496]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
35 #include "accountopt.h"
34570
ac513e5901eb Rename circbuffer files to circularbuffer files to match the object name
Ankit Vani <a@nevitus.org>
parents: 34529
diff changeset
36 #include "circularbuffer.h"
14013
86dac5633bd9 [gaim-migrate @ 16496]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
37 #include "conversation.h"
86dac5633bd9 [gaim-migrate @ 16496]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
38 #include "debug.h"
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
39 #include "image-store.h"
34910
60502558e400 Replacements for the GObject Xfer API
Ankit Vani <a@nevitus.org>
parents: 34894
diff changeset
40 #include "xfer.h"
14013
86dac5633bd9 [gaim-migrate @ 16496]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
41 #include "mime.h"
86dac5633bd9 [gaim-migrate @ 16496]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
42 #include "notify.h"
36367
891eea799578 Renamed plugin.[ch] to plugins.[ch], since we (will) no longer have a PurplePlugin structure.
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
43 #include "plugins.h"
36543
a8c3fecee2d3 Renamed prpl.[ch] to protocol.[ch]
Ankit Vani <a@nevitus.org>
parents: 36541
diff changeset
44 #include "protocol.h"
14013
86dac5633bd9 [gaim-migrate @ 16496]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
45 #include "request.h"
86dac5633bd9 [gaim-migrate @ 16496]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
46 #include "util.h"
86dac5633bd9 [gaim-migrate @ 16496]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
47 #include "version.h"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
48
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
49 /* meanwhile includes */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
50 #include <mw_cipher.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
51 #include <mw_common.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
52 #include <mw_error.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
53 #include <mw_service.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
54 #include <mw_session.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
55 #include <mw_srvc_aware.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
56 #include <mw_srvc_conf.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
57 #include <mw_srvc_ft.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
58 #include <mw_srvc_im.h>
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
59 #include <mw_srvc_place.h>
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
60 #include <mw_srvc_resolve.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
61 #include <mw_srvc_store.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
62 #include <mw_st_list.h>
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
63
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
64 /* plugin includes */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
65 #include "sametime.h"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
66
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
67
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
68 static PurpleProtocol *my_protocol = NULL;
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
69
37004
c8dce7bef0e6 Change protocol IDs to prpl-*
Ankit Vani <a@nevitus.org>
parents: 36985
diff changeset
70 #define PROTOCOL_ID "prpl-meanwhile"
36638
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
71 #define PROTOCOL_NAME "Sametime"
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
72
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
73
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36628
diff changeset
74 /* considering that there's no display of this information for protocols,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
75 I don't know why I even bother providing these. Oh valiant reader,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
76 I do it all for you. */
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36628
diff changeset
77 /* scratch that, I just added it to the protocol options panel */
36985
9faafe43603e Rename protocol plugin IDs to prpl-*
Ankit Vani <a@nevitus.org>
parents: 36984
diff changeset
78 #define PLUGIN_ID "prpl-sametime"
36638
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
79 #define PLUGIN_NAME "Sametime Protocol"
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
80 #define PLUGIN_CATEGORY "Protocol"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
81 #define PLUGIN_SUMMARY "Sametime Protocol Plugin"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
82 #define PLUGIN_DESC "Open implementation of a Lotus Sametime client"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
83 #define PLUGIN_HOMEPAGE "http://meanwhile.sourceforge.net/"
36642
b8ba53daa445 Updated libpurple to use current GPlugin
Ankit Vani <a@nevitus.org>
parents: 36638
diff changeset
84 #define PLUGIN_AUTHORS \
b8ba53daa445 Updated libpurple to use current GPlugin
Ankit Vani <a@nevitus.org>
parents: 36638
diff changeset
85 { "Christopher (siege) O'Brien <siege@preoccupied.net>", NULL }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
86
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
87
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
88 /* plugin preference names */
36984
1768a56dbcf4 Re-revert pref renames
Ankit Vani <a@nevitus.org>
parents: 36982
diff changeset
89 #define MW_PROTOCOL_OPT_BASE "/plugins/prpl/meanwhile"
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
90 #define MW_PROTOCOL_OPT_BLIST_ACTION MW_PROTOCOL_OPT_BASE "/blist_action"
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
91 #define MW_PROTOCOL_OPT_PSYCHIC MW_PROTOCOL_OPT_BASE "/psychic"
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
92 #define MW_PROTOCOL_OPT_FORCE_LOGIN MW_PROTOCOL_OPT_BASE "/force_login"
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
93 #define MW_PROTOCOL_OPT_SAVE_DYNAMIC MW_PROTOCOL_OPT_BASE "/save_dynamic"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
94
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
95
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
96 /* stages of connecting-ness */
13779
410869639392 [gaim-migrate @ 16189]
Christopher O'Brien <siege@pidgin.im>
parents: 13713
diff changeset
97 #define MW_CONNECT_STEPS 11
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
98
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
99
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
100 /* stages of conciousness */
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
101 #define MW_STATE_OFFLINE "offline"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
102 #define MW_STATE_ACTIVE "active"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
103 #define MW_STATE_AWAY "away"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
104 #define MW_STATE_BUSY "dnd"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
105 #define MW_STATE_MESSAGE "message"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
106 #define MW_STATE_ENLIGHTENED "buddha"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
107
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
108
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
109 /* keys to get/set chat information */
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
110 #define CHAT_KEY_CREATOR "chat.creator"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
111 #define CHAT_KEY_NAME "chat.name"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
112 #define CHAT_KEY_TOPIC "chat.topic"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
113 #define CHAT_KEY_INVITE "chat.invite"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
114 #define CHAT_KEY_IS_PLACE "chat.is_place"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
115
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
116
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
117 /* key for associating a mwLoginType with a buddy */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
118 #define BUDDY_KEY_CLIENT "meanwhile.client"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
119
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
120 /* store the remote alias so that we can re-create it easily */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
121 #define BUDDY_KEY_NAME "meanwhile.shortname"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
122
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
123 /* enum mwSametimeUserType */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
124 #define BUDDY_KEY_TYPE "meanwhile.type"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
125
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
126
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
127 /* key for the real group name for a meanwhile group */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
128 #define GROUP_KEY_NAME "meanwhile.group"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
129
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
130 /* enum mwSametimeGroupType */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
131 #define GROUP_KEY_TYPE "meanwhile.type"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
132
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
133 /* NAB group owning account */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
134 #define GROUP_KEY_OWNER "meanwhile.account"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
135
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
136 /* key gtk blist uses to indicate a collapsed group */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
137 #define GROUP_KEY_COLLAPSED "collapsed"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
138
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
139
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
140 /* verification replacement */
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
141 #define mwSession_NO_SECRET "meanwhile.no_secret"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
142
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
143
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
144 /* keys to get/set purple plugin information */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
145 #define MW_KEY_HOST "server"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
146 #define MW_KEY_PORT "port"
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
147 #define MW_KEY_FORCE "force_login"
12311
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
148 #define MW_KEY_FAKE_IT "fake_client_id"
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
149 #define MW_KEY_CLIENT "client_id_val"
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
150 #define MW_KEY_MAJOR "client_major"
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
151 #define MW_KEY_MINOR "client_minor"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
152
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
153
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
154 /** number of seconds from the first blist change before a save to the
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
155 storage service occurs. */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
156 #define BLIST_SAVE_SECONDS 15
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
157
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
158
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
159 /** the possible buddy list storage settings */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
160 enum blist_choice {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
161 blist_choice_LOCAL = 1, /**< local only */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
162 blist_choice_MERGE = 2, /**< merge from server */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
163 blist_choice_STORE = 3, /**< merge from and save to server */
25105
fe13c190ca13 Remove the commas at the end of enumerator lists. This resolves warnings
Florian Quèze <florian@instantbird.org>
parents: 24816
diff changeset
164 blist_choice_SYNCH = 4 /**< sync with server */
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
165 };
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
166
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
167
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
168 /** the default blist storage option */
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
169 #define BLIST_CHOICE_DEFAULT blist_choice_SYNCH
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
170
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
171
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
172 /* testing for the above */
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
173 #define BLIST_PREF_IS(n) (purple_prefs_get_int(MW_PROTOCOL_OPT_BLIST_ACTION)==(n))
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
174 #define BLIST_PREF_IS_LOCAL() BLIST_PREF_IS(blist_choice_LOCAL)
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
175 #define BLIST_PREF_IS_MERGE() BLIST_PREF_IS(blist_choice_MERGE)
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
176 #define BLIST_PREF_IS_STORE() BLIST_PREF_IS(blist_choice_STORE)
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
177 #define BLIST_PREF_IS_SYNCH() BLIST_PREF_IS(blist_choice_SYNCH)
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
178
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
179
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
180 /* debugging output */
32049
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
181 #define DEBUG_ERROR(...) purple_debug_error(G_LOG_DOMAIN, __VA_ARGS__)
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
182 #define DEBUG_INFO(...) purple_debug_info(G_LOG_DOMAIN, __VA_ARGS__)
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
183 #define DEBUG_MISC(...) purple_debug_misc(G_LOG_DOMAIN, __VA_ARGS__)
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
184 #define DEBUG_WARN(...) purple_debug_warning(G_LOG_DOMAIN, __VA_ARGS__)
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
185
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
186
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
187 /** ensure non-null strings */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
188 #ifndef NSTR
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
189 # define NSTR(str) ((str)? (str): "(null)")
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
190 #endif
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
191
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
192
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
193 /** calibrates distinct secure channel nomenclature */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
194 static const unsigned char no_secret[] = {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
195 0x2d, 0x2d, 0x20, 0x73, 0x69, 0x65, 0x67, 0x65,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
196 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x73, 0x20, 0x6a,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
197 0x65, 0x6e, 0x6e, 0x69, 0x20, 0x61, 0x6e, 0x64,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
198 0x20, 0x7a, 0x6f, 0x65, 0x20, 0x2d, 0x2d, 0x00,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
199 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
200
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
201
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
202 /** handler IDs from g_log_set_handler in mw_plugin_init */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
203 static guint log_handler[2] = { 0, 0 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
204
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
205
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
206 /** the purple plugin data.
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
207 available as purple_connection_get_protocol_data(gc) and mwSession_getClientData */
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
208 struct mwPurpleProtocolData {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
209 struct mwSession *session;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
210
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
211 struct mwServiceAware *srvc_aware;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
212 struct mwServiceConference *srvc_conf;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
213 struct mwServiceFileTransfer *srvc_ft;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
214 struct mwServiceIm *srvc_im;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
215 struct mwServicePlace *srvc_place;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
216 struct mwServiceResolve *srvc_resolve;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
217 struct mwServiceStorage *srvc_store;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
218
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
219 /** map of PurpleGroup:mwAwareList and mwAwareList:PurpleGroup */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
220 GHashTable *group_list_map;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
221
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
222 /** event id for the buddy list save callback */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
223 guint save_event;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
224
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
225 /** socket fd */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
226 int socket;
32683
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
227 guint inpa; /* input watcher */
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
228 gint outpa; /* like inpa, but the other way */
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
229
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
230 /** circular buffer for outgoing data */
34529
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
231 PurpleCircularBuffer *sock_buf;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
232
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
233 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
234 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
235
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
236
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
237 typedef struct {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
238 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
239 PurpleGroup *group;
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
240 } BuddyAddData;
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
241
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
242
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
243 /* blist and aware functions */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
244
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
245 static void blist_export(PurpleConnection *gc, struct mwSametimeList *stlist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
246
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
247 static void blist_store(struct mwPurpleProtocolData *pd);
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
248
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
249 static void blist_schedule(struct mwPurpleProtocolData *pd);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
250
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
251 static void blist_merge(PurpleConnection *gc, struct mwSametimeList *stlist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
252
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
253 static void blist_sync(PurpleConnection *gc, struct mwSametimeList *stlist);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
254
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
255 static gboolean buddy_is_external(PurpleBuddy *b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
256
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
257 static void buddy_add(struct mwPurpleProtocolData *pd, PurpleBuddy *buddy);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
258
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
259 static PurpleBuddy *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
260 buddy_ensure(PurpleConnection *gc, PurpleGroup *group,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
261 struct mwSametimeUser *stuser);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
262
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
263 static void group_add(struct mwPurpleProtocolData *pd, PurpleGroup *group);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
264
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
265 static PurpleGroup *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
266 group_ensure(PurpleConnection *gc, struct mwSametimeGroup *stgroup);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
267
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
268 static struct mwAwareList *
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
269 list_ensure(struct mwPurpleProtocolData *pd, PurpleGroup *group);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
270
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
271
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
272 /* session functions */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
273
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
274 static struct mwSession *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
275 gc_to_session(PurpleConnection *gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
276
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
277 static PurpleConnection *session_to_gc(struct mwSession *session);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
278
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
279
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
280 /* conference functions */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
281
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
282 static struct mwConference *
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
283 conf_find_by_id(struct mwPurpleProtocolData *pd, int id);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
284
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
285
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
286 /* conversation functions */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
287
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
288 struct convo_msg {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
289 enum mwImSendType type;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
290 gpointer data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
291 GDestroyNotify clear;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
292 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
293
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
294
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
295 struct convo_data {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
296 struct mwConversation *conv;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
297 GList *queue; /**< outgoing message queue, list of convo_msg */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
298 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
299
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
300 static void convo_data_new(struct mwConversation *conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
301
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
302 static void convo_data_free(struct convo_data *conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
303
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
304 static void convo_features(struct mwConversation *conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
305
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
306 static PurpleIMConversation *convo_get_im(struct mwConversation *conv);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
307
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
308
12629
14aae7d5da6b [gaim-migrate @ 14965]
Richard Laager <rlaager@pidgin.im>
parents: 12624
diff changeset
309 /* name and id */
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
310
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
311 struct named_id {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
312 char *id;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
313 char *name;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
314 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
315
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
316
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
317 /* connection functions */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
318
14178
d12b287697c9 [gaim-migrate @ 16750]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
319 static void connect_cb(gpointer data, gint source, const gchar *error_message);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
320
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
321
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
322 /* ----- session ------ */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
323
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
324
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
325 /** resolves a mwSession from a PurpleConnection */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
326 static struct mwSession *gc_to_session(PurpleConnection *gc) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
327 struct mwPurpleProtocolData *pd;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
328
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
329 g_return_val_if_fail(gc != NULL, NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
330
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
331 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
332 g_return_val_if_fail(pd != NULL, NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
333
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
334 return pd->session;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
335 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
336
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
337
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
338 /** resolves a PurpleConnection from a mwSession */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
339 static PurpleConnection *session_to_gc(struct mwSession *session) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
340 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
341
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
342 g_return_val_if_fail(session != NULL, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
343
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
344 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
345 g_return_val_if_fail(pd != NULL, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
346
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
347 return pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
348 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
349
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
350
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
351 static void write_cb(gpointer data, gint source, PurpleInputCondition cond) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
352 struct mwPurpleProtocolData *pd = data;
34529
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
353 PurpleCircularBuffer *circ = pd->sock_buf;
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
354 gsize avail;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
355 int ret;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
356
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
357 DEBUG_INFO("write_cb\n");
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
358
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
359 g_return_if_fail(circ != NULL);
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
360
34529
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
361 avail = purple_circular_buffer_get_max_read(circ);
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
362 if(BUF_LONG < avail) avail = BUF_LONG;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
363
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
364 while(avail) {
34529
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
365 ret = write(pd->socket, purple_circular_buffer_get_output(circ), avail);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
366
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
367 if(ret <= 0)
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
368 break;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
369
34529
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
370 purple_circular_buffer_mark_read(circ, ret);
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
371 avail = purple_circular_buffer_get_max_read(circ);
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
372 if(BUF_LONG < avail) avail = BUF_LONG;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
373 }
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
374
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
375 if(! avail) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
376 purple_input_remove(pd->outpa);
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
377 pd->outpa = 0;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
378 }
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
379 }
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
380
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
381
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
382 static int mw_session_io_write(struct mwSession *session,
12311
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
383 const guchar *buf, gsize len) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
384 struct mwPurpleProtocolData *pd;
22709
6bd336964410 Printf warning fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22622
diff changeset
385 gssize ret = 0;
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
386 int err = 0;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
387
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
388 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
389
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
390 /* socket was already closed. */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
391 if(pd->socket == 0)
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
392 return 1;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
393
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
394 if(pd->outpa) {
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
395 DEBUG_INFO("already pending INPUT_WRITE, buffering\n");
34529
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
396 purple_circular_buffer_append(pd->sock_buf, buf, len);
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
397 return 0;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
398 }
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
399
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
400 while(len) {
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
401 ret = write(pd->socket, buf, (len > BUF_LEN)? BUF_LEN: len);
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
402
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
403 if(ret <= 0)
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
404 break;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
405
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
406 len -= ret;
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
407 buf += ret;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
408 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
409
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
410 if(ret <= 0)
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
411 err = errno;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
412
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
413 if(err == EAGAIN) {
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
414 /* append remainder to circular buffer */
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
415 DEBUG_INFO("EAGAIN\n");
34529
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
416 purple_circular_buffer_append(pd->sock_buf, buf, len);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
417 pd->outpa = purple_input_add(pd->socket, PURPLE_INPUT_WRITE, write_cb, pd);
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
418
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
419 } else if(len > 0) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
420 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
421 g_strerror(errno));
22709
6bd336964410 Printf warning fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 22622
diff changeset
422 DEBUG_ERROR("write returned %" G_GSSIZE_FORMAT ", %" G_GSIZE_FORMAT
22622
1ecb840b5101 Fix a bunch of compiler warnings caused by my addition of G_GNUC_PRINTF()
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
423 " bytes left unwritten\n", ret, len);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31991
diff changeset
424 purple_connection_error(pd->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
425 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
426 tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
427 g_free(tmp);
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
428
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
429 return -1;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
430 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
431
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
432 return 0;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
433 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
434
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
435
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
436 static void mw_session_io_close(struct mwSession *session) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
437 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
438
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
439 pd = mwSession_getClientData(session);
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
440 g_return_if_fail(pd != NULL);
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
441
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
442 if(pd->outpa) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
443 purple_input_remove(pd->outpa);
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
444 pd->outpa = 0;
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
445 }
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
446
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
447 if(pd->socket) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
448 close(pd->socket);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
449 pd->socket = 0;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
450 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
451
32683
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
452 if(pd->inpa) {
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
453 purple_input_remove(pd->inpa);
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
454 pd->inpa = 0;
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
455 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
456 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
457
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
458
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
459 static void mw_session_clear(struct mwSession *session) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
460 ; /* nothing for now */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
461 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
462
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
463
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
464 /* ----- aware list ----- */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
465
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
466
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
467 static void blist_resolve_alias_cb(struct mwServiceResolve *srvc,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
468 guint32 id, guint32 code, GList *results,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
469 gpointer data) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
470 struct mwResolveResult *result;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
471 struct mwResolveMatch *match;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
472
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
473 g_return_if_fail(results != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
474
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
475 result = results->data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
476 g_return_if_fail(result != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
477 g_return_if_fail(result->matches != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
478
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
479 match = result->matches->data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
480 g_return_if_fail(match != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
481
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
482 purple_buddy_set_server_alias(data, match->name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
483 purple_blist_node_set_string(data, BUDDY_KEY_NAME, match->name);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
484 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
485
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
486
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
487 static void mw_aware_list_on_aware(struct mwAwareList *list,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
488 struct mwAwareSnapshot *aware) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
489
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
490 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
491 PurpleAccount *acct;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
492
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
493 struct mwPurpleProtocolData *pd;
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
494 guint32 idle;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
495 guint stat;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
496 const char *id;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
497 const char *status = MW_STATE_ACTIVE;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
498
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
499 gc = mwAwareList_getClientData(list);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
500 acct = purple_connection_get_account(gc);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
501
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
502 pd = purple_connection_get_protocol_data(gc);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
503 idle = aware->status.time;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
504 stat = aware->status.status;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
505 id = aware->id.user;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
506
13588
c9a9f962837c [gaim-migrate @ 15972]
Christopher O'Brien <siege@pidgin.im>
parents: 13580
diff changeset
507 if(idle) {
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
508 guint32 idle_len; /*< how long a client has been idle */
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
509 guint32 ugly_idle_len; /*< how long a broken client has been idle */
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
510
13588
c9a9f962837c [gaim-migrate @ 15972]
Christopher O'Brien <siege@pidgin.im>
parents: 13580
diff changeset
511 DEBUG_INFO("%s has idle value 0x%x\n", NSTR(id), idle);
c9a9f962837c [gaim-migrate @ 15972]
Christopher O'Brien <siege@pidgin.im>
parents: 13580
diff changeset
512
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
513 idle_len = time(NULL) - idle;
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
514 ugly_idle_len = ((time(NULL) * 1000) - idle) / 1000;
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
515
25181
a104228b1fce Fix ludicrously long idle times for Sametime 7.5 buddies by assuming idle time
Laurent Montaron <lpm+pidgin.im@pobox.com>
parents: 25105
diff changeset
516 if(idle > ugly_idle_len)
a104228b1fce Fix ludicrously long idle times for Sametime 7.5 buddies by assuming idle time
Laurent Montaron <lpm+pidgin.im@pobox.com>
parents: 25105
diff changeset
517 ugly_idle_len = 0;
a104228b1fce Fix ludicrously long idle times for Sametime 7.5 buddies by assuming idle time
Laurent Montaron <lpm+pidgin.im@pobox.com>
parents: 25105
diff changeset
518 else
a104228b1fce Fix ludicrously long idle times for Sametime 7.5 buddies by assuming idle time
Laurent Montaron <lpm+pidgin.im@pobox.com>
parents: 25105
diff changeset
519 ugly_idle_len = (ugly_idle_len - idle) / 1000;
a104228b1fce Fix ludicrously long idle times for Sametime 7.5 buddies by assuming idle time
Laurent Montaron <lpm+pidgin.im@pobox.com>
parents: 25105
diff changeset
520
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
521 /*
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
522 what's the deal here? Well, good clients are smart enough to
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
523 publish their idle time by using an attribute to indicate that
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
524 they went idle at some time UTC, in seconds since epoch. Bad
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
525 clients use milliseconds since epoch. So we're going to compute
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
526 the idle time for either method, then figure out the lower of
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
527 the two and use that. Blame the ST 7.5 development team for
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
528 this.
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
529 */
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
530
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
531 DEBUG_INFO("idle time: %u, ugly idle time: %u\n", idle_len, ugly_idle_len);
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
532
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
533 #if 1
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
534 if(idle_len <= ugly_idle_len) {
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
535 ; /* DEBUG_INFO("sane idle value, let's use it\n"); */
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
536 } else {
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
537 idle = time(NULL) - ugly_idle_len;
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
538 }
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
539
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
540 #else
13588
c9a9f962837c [gaim-migrate @ 15972]
Christopher O'Brien <siege@pidgin.im>
parents: 13580
diff changeset
541 if(idle < 0 || idle > time(NULL)) {
c9a9f962837c [gaim-migrate @ 15972]
Christopher O'Brien <siege@pidgin.im>
parents: 13580
diff changeset
542 DEBUG_INFO("hiding a messy idle value 0x%x\n", NSTR(id), idle);
c9a9f962837c [gaim-migrate @ 15972]
Christopher O'Brien <siege@pidgin.im>
parents: 13580
diff changeset
543 idle = -1;
c9a9f962837c [gaim-migrate @ 15972]
Christopher O'Brien <siege@pidgin.im>
parents: 13580
diff changeset
544 }
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
545 #endif
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
546 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
547
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
548 switch(stat) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
549 case mwStatus_ACTIVE:
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
550 status = MW_STATE_ACTIVE;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
551 idle = 0;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
552 break;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
553
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
554 case mwStatus_IDLE:
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
555 if(! idle) idle = -1;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
556 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
557
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
558 case mwStatus_AWAY:
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
559 status = MW_STATE_AWAY;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
560 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
561
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
562 case mwStatus_BUSY:
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
563 status = MW_STATE_BUSY;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
564 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
565 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
566
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
567 /* NAB group members */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
568 if(aware->group) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
569 PurpleGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
570 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
571 PurpleBlistNode *bnode;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
572
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
573 group = g_hash_table_lookup(pd->group_list_map, list);
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
574 buddy = purple_blist_find_buddy_in_group(acct, id, group);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
575 bnode = (PurpleBlistNode *) buddy;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
576
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
577 if(! buddy) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
578 struct mwServiceResolve *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
579 GList *query;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
580
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
581 buddy = purple_buddy_new(acct, id, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
582 purple_blist_add_buddy(buddy, NULL, group, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
583
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
584 bnode = (PurpleBlistNode *) buddy;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
585
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
586 srvc = pd->srvc_resolve;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
587 query = g_list_append(NULL, (char *) id);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
588
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
589 mwServiceResolve_resolve(srvc, query, mwResolveFlag_USERS,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
590 blist_resolve_alias_cb, buddy, NULL);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
591 g_list_free(query);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
592 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
593
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
594 purple_blist_node_set_int(bnode, BUDDY_KEY_TYPE, mwSametimeUser_NORMAL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
595 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
596
12263
5f0ddc426a58 [gaim-migrate @ 14565]
Christopher O'Brien <siege@pidgin.im>
parents: 12216
diff changeset
597 if(aware->online) {
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
598 purple_protocol_got_user_status(acct, id, status, NULL);
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
599 purple_protocol_got_user_idle(acct, id, !!idle, (time_t) idle);
12263
5f0ddc426a58 [gaim-migrate @ 14565]
Christopher O'Brien <siege@pidgin.im>
parents: 12216
diff changeset
600
5f0ddc426a58 [gaim-migrate @ 14565]
Christopher O'Brien <siege@pidgin.im>
parents: 12216
diff changeset
601 } else {
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
602 purple_protocol_got_user_status(acct, id, MW_STATE_OFFLINE, NULL);
12263
5f0ddc426a58 [gaim-migrate @ 14565]
Christopher O'Brien <siege@pidgin.im>
parents: 12216
diff changeset
603 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
604 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
605
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
606
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
607 static void mw_aware_list_on_attrib(struct mwAwareList *list,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
608 struct mwAwareIdBlock *id,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
609 struct mwAwareAttribute *attrib) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
610
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
611 ; /* nothing. We'll get attribute data as we need it */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
612 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
613
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
614
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
615 static void mw_aware_list_clear(struct mwAwareList *list) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
616 ; /* nothing for now */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
617 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
618
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
619
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
620 static struct mwAwareListHandler mw_aware_list_handler = {
17157
dee69ceaf4d0 Another C99 struct falling.
Richard Laager <rlaager@pidgin.im>
parents: 17153
diff changeset
621 mw_aware_list_on_aware,
dee69ceaf4d0 Another C99 struct falling.
Richard Laager <rlaager@pidgin.im>
parents: 17153
diff changeset
622 mw_aware_list_on_attrib,
dee69ceaf4d0 Another C99 struct falling.
Richard Laager <rlaager@pidgin.im>
parents: 17153
diff changeset
623 mw_aware_list_clear,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
624 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
625
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
626
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
627 /** Ensures that an Aware List is associated with the given group, and
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
628 returns that list. */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
629 static struct mwAwareList *
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
630 list_ensure(struct mwPurpleProtocolData *pd, PurpleGroup *group) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
631
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
632 struct mwAwareList *list;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
633
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
634 g_return_val_if_fail(pd != NULL, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
635 g_return_val_if_fail(group != NULL, NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
636
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
637 list = g_hash_table_lookup(pd->group_list_map, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
638 if(! list) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
639 list = mwAwareList_new(pd->srvc_aware, &mw_aware_list_handler);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
640 mwAwareList_setClientData(list, pd->gc, NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
641
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
642 mwAwareList_watchAttributes(list,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
643 mwAttribute_AV_PREFS_SET,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
644 mwAttribute_MICROPHONE,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
645 mwAttribute_SPEAKERS,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
646 mwAttribute_VIDEO_CAMERA,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
647 mwAttribute_FILE_TRANSFER,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
648 NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
649
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
650 g_hash_table_replace(pd->group_list_map, group, list);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
651 g_hash_table_insert(pd->group_list_map, list, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
652 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
653
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
654 return list;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
655 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
656
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
657
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
658 static void blist_export(PurpleConnection *gc, struct mwSametimeList *stlist) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
659 /* - find the account for this connection
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
660 - iterate through the buddy list
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
661 - add each buddy matching this account to the stlist
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
662 */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
663
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
664 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
665 PurpleBlistNode *gn, *cn, *bn;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
666 PurpleGroup *grp;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
667 PurpleBuddy *bdy;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
668
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
669 struct mwSametimeGroup *stg = NULL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
670 struct mwIdBlock idb = { NULL, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
671
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
672 acct = purple_connection_get_account(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
673 g_return_if_fail(acct != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
674
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
675 for(gn = purple_blist_get_root(); gn;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
676 gn = purple_blist_node_get_sibling_next(gn)) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
677 const char *owner;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
678 const char *gname;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
679 enum mwSametimeGroupType gtype;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
680 gboolean gopen;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
681
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
682 if(! PURPLE_IS_GROUP(gn)) continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
683 grp = (PurpleGroup *) gn;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
684
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
685 /* the group's type (normal or dynamic) */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
686 gtype = purple_blist_node_get_int(gn, GROUP_KEY_TYPE);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
687 if(! gtype) gtype = mwSametimeGroup_NORMAL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
688
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
689 /* if it's a normal group with none of our people in it, skip it */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
690 if(gtype == mwSametimeGroup_NORMAL && !purple_group_on_account(grp, acct))
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
691 continue;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
692
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
693 /* if the group has an owner and we're not it, skip it */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
694 owner = purple_blist_node_get_string(gn, GROUP_KEY_OWNER);
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
695 if(owner && !purple_strequal(owner, purple_account_get_username(acct)))
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
696 continue;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
697
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
698 /* the group's actual name may be different from the purple group's
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
699 name. Find whichever is there */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
700 gname = purple_blist_node_get_string(gn, GROUP_KEY_NAME);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
701 if(! gname) gname = purple_group_get_name(grp);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
702
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
703 /* we save this, but never actually honor it */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
704 gopen = ! purple_blist_node_get_bool(gn, GROUP_KEY_COLLAPSED);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
705
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
706 stg = mwSametimeGroup_new(stlist, gtype, gname);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
707 mwSametimeGroup_setAlias(stg, purple_group_get_name(grp));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
708 mwSametimeGroup_setOpen(stg, gopen);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
709
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
710 /* don't attempt to put buddies in a dynamic group, it breaks
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
711 other clients */
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
712 if(gtype == mwSametimeGroup_DYNAMIC)
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
713 continue;
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
714
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
715 for(cn = purple_blist_node_get_first_child(gn);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
716 cn;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
717 cn = purple_blist_node_get_sibling_next(cn)) {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
718 if(! PURPLE_IS_CONTACT(cn)) continue;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
719
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
720 for(bn = purple_blist_node_get_first_child(cn);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
721 bn;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
722 bn = purple_blist_node_get_sibling_next(bn)) {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
723 if(! PURPLE_IS_BUDDY(bn)) continue;
34865
764a33b41ac7 Renamed blist node's dont_save to transient.
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
724 if(purple_blist_node_is_transient(bn)) continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
725
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
726 bdy = (PurpleBuddy *) bn;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
727
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
728 if(purple_buddy_get_account(bdy) == acct) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
729 struct mwSametimeUser *stu;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
730 enum mwSametimeUserType utype;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
731
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
732 idb.user = (char *)purple_buddy_get_name(bdy);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
733
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
734 utype = purple_blist_node_get_int(bn, BUDDY_KEY_TYPE);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
735 if(! utype) utype = mwSametimeUser_NORMAL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
736
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
737 stu = mwSametimeUser_new(stg, utype, &idb);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
738 mwSametimeUser_setShortName(stu, purple_buddy_get_server_alias(bdy));
34717
b3e588adef5a Global replace purple_buddy_get_local_buddy_alias() with purple_buddy_get_local_alias()
Ankit Vani <a@nevitus.org>
parents: 34699
diff changeset
739 mwSametimeUser_setAlias(stu, purple_buddy_get_local_alias(bdy));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
740 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
741 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
742 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
743 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
744 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
745
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
746
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
747 static void blist_store(struct mwPurpleProtocolData *pd) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
748
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
749 struct mwSametimeList *stlist;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
750 struct mwServiceStorage *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
751 struct mwStorageUnit *unit;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
752
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
753 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
754
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
755 struct mwPutBuffer *b;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
756 struct mwOpaque *o;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
757
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
758 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
759
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
760 srvc = pd->srvc_store;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
761 g_return_if_fail(srvc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
762
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
763 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
764
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
765 if(BLIST_PREF_IS_LOCAL() || BLIST_PREF_IS_MERGE()) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
766 DEBUG_INFO("preferences indicate not to save remote blist\n");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
767 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
768
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
769 } else if(MW_SERVICE_IS_DEAD(srvc)) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
770 DEBUG_INFO("aborting save of blist: storage service is not alive\n");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
771 return;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
772
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
773 } else if(BLIST_PREF_IS_STORE() || BLIST_PREF_IS_SYNCH()) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
774 DEBUG_INFO("saving remote blist\n");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
775
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
776 } else {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
777 g_return_if_reached();
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
778 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
779
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
780 /* create and export to a list object */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
781 stlist = mwSametimeList_new();
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
782 blist_export(gc, stlist);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
783
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
784 /* write it to a buffer */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
785 b = mwPutBuffer_new();
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
786 mwSametimeList_put(b, stlist);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
787 mwSametimeList_free(stlist);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
788
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
789 /* put the buffer contents into a storage unit */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
790 unit = mwStorageUnit_new(mwStore_AWARE_LIST);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
791 o = mwStorageUnit_asOpaque(unit);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
792 mwPutBuffer_finalize(o, b);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
793
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
794 /* save the storage unit to the service */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
795 mwServiceStorage_save(srvc, unit, NULL, NULL, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
796 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
797
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
798
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
799 static gboolean blist_save_cb(gpointer data) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
800 struct mwPurpleProtocolData *pd = data;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
801
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
802 blist_store(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
803 pd->save_event = 0;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
804 return FALSE;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
805 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
806
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
807
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
808 /** schedules the buddy list to be saved to the server */
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
809 static void blist_schedule(struct mwPurpleProtocolData *pd) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
810 if(pd->save_event) return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
811
38433
361c801c4536 Remove purple_timeout_* function usage
Mike Ruprecht <cmaiku@gmail.com>
parents: 38358
diff changeset
812 pd->save_event = g_timeout_add_seconds(BLIST_SAVE_SECONDS,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
813 blist_save_cb, pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
814 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
815
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
816
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
817 static gboolean buddy_is_external(PurpleBuddy *b) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
818 g_return_val_if_fail(b != NULL, FALSE);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
819 return purple_str_has_prefix(purple_buddy_get_name(b), "@E ");
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
820 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
821
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
822
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
823 /** Actually add a buddy to the aware service, and schedule the buddy
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
824 list to be saved to the server */
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
825 static void buddy_add(struct mwPurpleProtocolData *pd,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
826 PurpleBuddy *buddy) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
827
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
828 struct mwAwareIdBlock idb = { mwAware_USER, (char *) purple_buddy_get_name(buddy), NULL };
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
829 struct mwAwareList *list;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
830
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
831 PurpleGroup *group;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
832 GList *add;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
833
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
834 add = g_list_prepend(NULL, &idb);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
835
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
836 group = purple_buddy_get_group(buddy);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
837 list = list_ensure(pd, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
838
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
839 if(mwAwareList_addAware(list, add)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
840 purple_blist_remove_buddy(buddy);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
841 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
842
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
843 blist_schedule(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
844
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
845 g_list_free(add);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
846 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
847
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
848
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
849 /** ensure that a PurpleBuddy exists in the group with data
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
850 appropriately matching the st user entry from the st list */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
851 static PurpleBuddy *buddy_ensure(PurpleConnection *gc, PurpleGroup *group,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
852 struct mwSametimeUser *stuser) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
853
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
854 struct mwPurpleProtocolData *pd = purple_connection_get_protocol_data(gc);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
855 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
856 PurpleAccount *acct = purple_connection_get_account(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
857
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
858 const char *id = mwSametimeUser_getUser(stuser);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
859 const char *name = mwSametimeUser_getShortName(stuser);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
860 const char *alias = mwSametimeUser_getAlias(stuser);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
861 enum mwSametimeUserType type = mwSametimeUser_getType(stuser);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
862
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
863 g_return_val_if_fail(id != NULL, NULL);
32189
3af8d41121b6 Don't use strlen() when all you're trying to do is check if the string
Mark Doliner <markdoliner@pidgin.im>
parents: 32188
diff changeset
864 g_return_val_if_fail(*id, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
865
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
866 buddy = purple_blist_find_buddy_in_group(acct, id, group);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
867 if(! buddy) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
868 buddy = purple_buddy_new(acct, id, alias);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
869
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
870 purple_blist_add_buddy(buddy, NULL, group, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
871 buddy_add(pd, buddy);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
872 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
873
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
874 purple_buddy_set_local_alias(buddy, alias);
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
875 purple_buddy_set_server_alias(buddy, name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
876 purple_blist_node_set_string((PurpleBlistNode *) buddy, BUDDY_KEY_NAME, name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
877 purple_blist_node_set_int((PurpleBlistNode *) buddy, BUDDY_KEY_TYPE, type);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
878
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
879 return buddy;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
880 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
881
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
882
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
883 /** add aware watch for a dynamic group */
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
884 static void group_add(struct mwPurpleProtocolData *pd,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
885 PurpleGroup *group) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
886
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
887 struct mwAwareIdBlock idb = { mwAware_GROUP, NULL, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
888 struct mwAwareList *list;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
889 const char *n;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
890 GList *add;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
891
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
892 n = purple_blist_node_get_string((PurpleBlistNode *) group, GROUP_KEY_NAME);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
893 if(! n) n = purple_group_get_name(group);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
894
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
895 idb.user = (char *) n;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
896 add = g_list_prepend(NULL, &idb);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
897
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
898 list = list_ensure(pd, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
899 mwAwareList_addAware(list, add);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
900 g_list_free(add);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
901 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
902
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
903
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
904 /** ensure that a PurpleGroup exists in the blist with data
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
905 appropriately matching the st group entry from the st list */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
906 static PurpleGroup *group_ensure(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
907 struct mwSametimeGroup *stgroup) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
908 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
909 PurpleGroup *group = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
910 PurpleBuddyList *blist;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
911 PurpleBlistNode *gn;
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
912 const char *name, *alias, *owner;
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
913 enum mwSametimeGroupType type;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
914
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
915 acct = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
916 owner = purple_account_get_username(acct);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
917
34726
af52ff6660c0 Replaced purple_get_blist() with purple_blist_get_buddy_list()
Ankit Vani <a@nevitus.org>
parents: 34723
diff changeset
918 blist = purple_blist_get_buddy_list();
12005
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
919 g_return_val_if_fail(blist != NULL, NULL);
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
920
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
921 name = mwSametimeGroup_getName(stgroup);
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
922 alias = mwSametimeGroup_getAlias(stgroup);
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
923 type = mwSametimeGroup_getType(stgroup);
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
924
31979
d9743aa9882a sametime: Avoid a theoretical null strcmp
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
925 if (!name) {
d9743aa9882a sametime: Avoid a theoretical null strcmp
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
926 DEBUG_WARN("Can't ensure a null group\n");
31991
efe4fb3772ad Fix this compile warning:
Mark Doliner <markdoliner@pidgin.im>
parents: 31983
diff changeset
927 return NULL;
31979
d9743aa9882a sametime: Avoid a theoretical null strcmp
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
928 }
d9743aa9882a sametime: Avoid a theoretical null strcmp
Paul Aurich <darkrain42@pidgin.im>
parents: 31294
diff changeset
929
32049
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
930 if (!name) {
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
931 DEBUG_WARN("Can't ensure a null group\n");
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
932 return NULL;
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
933 }
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
934
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
935 DEBUG_INFO("attempting to ensure group %s, called %s\n",
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
936 NSTR(name), NSTR(alias));
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
937
12005
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
938 /* first attempt at finding the group, by the name key */
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
939 for(gn = purple_blist_get_root(); gn;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
940 gn = purple_blist_node_get_sibling_next(gn)) {
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
941 const char *n, *o;
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
942 if(! PURPLE_IS_GROUP(gn)) continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
943 n = purple_blist_node_get_string(gn, GROUP_KEY_NAME);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
944 o = purple_blist_node_get_string(gn, GROUP_KEY_OWNER);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
945
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
946 DEBUG_INFO("found group named %s, owned by %s\n", NSTR(n), NSTR(o));
12005
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
947
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36037
diff changeset
948 if(n && purple_strequal(n, name)) {
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36037
diff changeset
949 if(!o || purple_strequal(o, owner)) {
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
950 DEBUG_INFO("that'll work\n");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
951 group = (PurpleGroup *) gn;
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
952 break;
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
953 }
12005
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
954 }
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
955 }
12005
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
956
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
957 /* try again, by alias */
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
958 if(! group) {
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
959 DEBUG_INFO("searching for group by alias %s\n", NSTR(alias));
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
960 group = purple_blist_find_group(alias);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
961 }
12005
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
962
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
963 /* oh well, no such group. Let's create it! */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
964 if(! group) {
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
965 DEBUG_INFO("creating group\n");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
966 group = purple_group_new(alias);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
967 purple_blist_add_group(group, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
968 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
969
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
970 gn = (PurpleBlistNode *) group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
971 purple_blist_node_set_string(gn, GROUP_KEY_NAME, name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
972 purple_blist_node_set_int(gn, GROUP_KEY_TYPE, type);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
973
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
974 if(type == mwSametimeGroup_DYNAMIC) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
975 purple_blist_node_set_string(gn, GROUP_KEY_OWNER, owner);
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
976 group_add(purple_connection_get_protocol_data(gc), group);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
977 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
978
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
979 return group;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
980 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
981
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
982
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
983 /** merge the entries from a st list into the purple blist */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
984 static void blist_merge(PurpleConnection *gc, struct mwSametimeList *stlist) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
985 struct mwSametimeGroup *stgroup;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
986 struct mwSametimeUser *stuser;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
987
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
988 PurpleGroup *group;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
989
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
990 GList *gl, *gtl, *ul, *utl;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
991
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
992 gl = gtl = mwSametimeList_getGroups(stlist);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
993 for(; gl; gl = gl->next) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
994
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
995 stgroup = (struct mwSametimeGroup *) gl->data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
996 group = group_ensure(gc, stgroup);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
997
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
998 ul = utl = mwSametimeGroup_getUsers(stgroup);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
999 for(; ul; ul = ul->next) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1000
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1001 stuser = (struct mwSametimeUser *) ul->data;
33782
1690e0b2c508 Fix a bunch of unused variables
Daniel Atallah <datallah@pidgin.im>
parents: 33745
diff changeset
1002 buddy_ensure(gc, group, stuser);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1003 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1004 g_list_free(utl);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1005 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1006 g_list_free(gtl);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1007 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1008
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1009
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1010 /** remove all buddies on account from group. If del is TRUE and group
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1011 is left empty, remove group as well */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1012 static void group_clear(PurpleGroup *group, PurpleAccount *acct, gboolean del) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1013 PurpleConnection *gc;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1014 GList *prune = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1015 PurpleBlistNode *gn, *cn, *bn;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1016
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1017 g_return_if_fail(group != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1018
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1019 DEBUG_INFO("clearing members from pruned group %s\n", NSTR(purple_group_get_name(group)));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1020
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1021 gc = purple_account_get_connection(acct);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1022 g_return_if_fail(gc != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1023
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1024 gn = (PurpleBlistNode *) group;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1025
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1026 for(cn = purple_blist_node_get_first_child(gn);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1027 cn;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1028 cn = purple_blist_node_get_sibling_next(cn)) {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1029 if(! PURPLE_IS_CONTACT(cn)) continue;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1030
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1031 for(bn = purple_blist_node_get_first_child(cn);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1032 bn;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1033 bn = purple_blist_node_get_sibling_next(bn)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1034 PurpleBuddy *gb = (PurpleBuddy *) bn;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1035
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1036 if(! PURPLE_IS_BUDDY(bn)) continue;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1037
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1038 if(purple_buddy_get_account(gb) == acct) {
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1039 DEBUG_INFO("clearing %s from group\n", NSTR(purple_buddy_get_name(gb)));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1040 prune = g_list_prepend(prune, gb);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1041 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1042 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1043 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1044
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1045 /* quickly unsubscribe from presence for the entire group */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1046 purple_account_remove_group(acct, group);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1047
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1048 /* remove blist entries that need to go */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1049 while(prune) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1050 purple_blist_remove_buddy(prune->data);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1051 prune = g_list_delete_link(prune, prune);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1052 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1053 DEBUG_INFO("cleared buddies\n");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1054
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1055 /* optionally remove group from blist */
34723
b496dd569514 Refactored libpurple plugins and protocols according to the blist API changes
Ankit Vani <a@nevitus.org>
parents: 34717
diff changeset
1056 if(del && !purple_counting_node_get_total_size(PURPLE_COUNTING_NODE(group))) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1057 DEBUG_INFO("removing empty group\n");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1058 purple_blist_remove_group(group);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1059 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1060 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1061
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1062
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1063 /** prune out group members that shouldn't be there */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1064 static void group_prune(PurpleConnection *gc, PurpleGroup *group,
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1065 struct mwSametimeGroup *stgroup) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1066
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1067 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1068 PurpleBlistNode *gn, *cn, *bn;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1069
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1070 GHashTable *stusers;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1071 GList *prune = NULL;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1072 GList *ul, *utl;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1073
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1074 g_return_if_fail(group != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1075
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1076 DEBUG_INFO("pruning membership of group %s\n", NSTR(purple_group_get_name(group)));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1077
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1078 acct = purple_connection_get_account(gc);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1079 g_return_if_fail(acct != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1080
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1081 stusers = g_hash_table_new(g_str_hash, g_str_equal);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1082
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1083 /* build a hash table for quick lookup while pruning the group
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1084 contents */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1085 utl = mwSametimeGroup_getUsers(stgroup);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1086 for(ul = utl; ul; ul = ul->next) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1087 const char *id = mwSametimeUser_getUser(ul->data);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1088 g_hash_table_insert(stusers, (char *) id, ul->data);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1089 DEBUG_INFO("server copy has %s\n", NSTR(id));
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1090 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1091 g_list_free(utl);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1092
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1093 gn = (PurpleBlistNode *) group;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1094
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1095 for(cn = purple_blist_node_get_first_child(gn);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1096 cn;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1097 cn = purple_blist_node_get_sibling_next(cn)) {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1098 if(! PURPLE_IS_CONTACT(cn)) continue;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1099
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1100 for(bn = purple_blist_node_get_first_child(cn);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1101 bn;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1102 bn = purple_blist_node_get_sibling_next(bn)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1103 PurpleBuddy *gb = (PurpleBuddy *) bn;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1104
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1105 if(! PURPLE_IS_BUDDY(bn)) continue;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1106
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1107 /* if the account is correct and they're not in our table, mark
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1108 them for pruning */
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1109 if(purple_buddy_get_account(gb) == acct && !g_hash_table_lookup(stusers, purple_buddy_get_name(gb))) {
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1110 DEBUG_INFO("marking %s for pruning\n", NSTR(purple_buddy_get_name(gb)));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1111 prune = g_list_prepend(prune, gb);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1112 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1113 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1114 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1115 DEBUG_INFO("done marking\n");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1116
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1117 g_hash_table_destroy(stusers);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1118
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1119 if(prune) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1120 purple_account_remove_buddies(acct, prune, NULL);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1121 while(prune) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1122 purple_blist_remove_buddy(prune->data);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1123 prune = g_list_delete_link(prune, prune);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1124 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1125 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1126 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1127
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1128
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1129 /** synch the entries from a st list into the purple blist, removing any
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1130 existing buddies that aren't in the st list */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1131 static void blist_sync(PurpleConnection *gc, struct mwSametimeList *stlist) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1132
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1133 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1134 PurpleBuddyList *blist;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1135 PurpleBlistNode *gn;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1136
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1137 GHashTable *stgroups;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1138 GList *g_prune = NULL;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1139
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1140 GList *gl, *gtl;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1141
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1142 const char *acct_n;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1143
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1144 DEBUG_INFO("synchronizing local buddy list from server list\n");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1145
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1146 acct = purple_connection_get_account(gc);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1147 g_return_if_fail(acct != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1148
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1149 acct_n = purple_account_get_username(acct);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1150
34726
af52ff6660c0 Replaced purple_get_blist() with purple_blist_get_buddy_list()
Ankit Vani <a@nevitus.org>
parents: 34723
diff changeset
1151 blist = purple_blist_get_buddy_list();
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1152 g_return_if_fail(blist != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1153
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1154 /* build a hash table for quick lookup while pruning the local
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1155 list, mapping group name to group structure */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1156 stgroups = g_hash_table_new(g_str_hash, g_str_equal);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1157
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1158 gtl = mwSametimeList_getGroups(stlist);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1159 for(gl = gtl; gl; gl = gl->next) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1160 const char *name = mwSametimeGroup_getName(gl->data);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1161 g_hash_table_insert(stgroups, (char *) name, gl->data);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1162 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1163 g_list_free(gtl);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1164
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1165 /* find all groups which should be pruned from the local list */
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1166 for(gn = purple_blist_get_root(); gn;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1167 gn = purple_blist_node_get_sibling_next(gn)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1168 PurpleGroup *grp = (PurpleGroup *) gn;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1169 const char *gname, *owner;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1170 struct mwSametimeGroup *stgrp;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1171
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1172 if(! PURPLE_IS_GROUP(gn)) continue;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1173
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1174 /* group not belonging to this account */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1175 if(! purple_group_on_account(grp, acct))
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1176 continue;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1177
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1178 /* dynamic group belonging to this account. don't prune contents */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1179 owner = purple_blist_node_get_string(gn, GROUP_KEY_OWNER);
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36037
diff changeset
1180 if(owner && purple_strequal(owner, acct_n))
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1181 continue;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1182
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1183 /* we actually are synching by this key as opposed to the group
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1184 title, which can be different things in the st list */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1185 gname = purple_blist_node_get_string(gn, GROUP_KEY_NAME);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1186 if(! gname) gname = purple_group_get_name(grp);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1187
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1188 stgrp = g_hash_table_lookup(stgroups, gname);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1189 if(! stgrp) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1190 /* remove the whole group */
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1191 DEBUG_INFO("marking group %s for pruning\n", purple_group_get_name(grp));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1192 g_prune = g_list_prepend(g_prune, grp);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1193
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1194 } else {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1195 /* synch the group contents */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1196 group_prune(gc, grp, stgrp);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1197 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1198 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1199 DEBUG_INFO("done marking groups\n");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1200
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1201 /* don't need this anymore */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1202 g_hash_table_destroy(stgroups);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1203
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1204 /* prune all marked groups */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1205 while(g_prune) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1206 PurpleGroup *grp = g_prune->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1207 PurpleBlistNode *gn = (PurpleBlistNode *) grp;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1208 const char *owner;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1209 gboolean del = TRUE;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1210
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1211 owner = purple_blist_node_get_string(gn, GROUP_KEY_OWNER);
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
1212 if(owner && !purple_strequal(owner, acct_n)) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1213 /* it's a specialty group belonging to another account with some
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1214 of our members in it, so don't fully delete it */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1215 del = FALSE;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1216 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1217
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1218 group_clear(g_prune->data, acct, del);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1219 g_prune = g_list_delete_link(g_prune, g_prune);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1220 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1221
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1222 /* done with the pruning, let's merge in the additions */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1223 blist_merge(gc, stlist);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1224 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1225
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1226
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1227 /** callback passed to the storage service when it's told to load the
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1228 st list */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1229 static void fetch_blist_cb(struct mwServiceStorage *srvc,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1230 guint32 result, struct mwStorageUnit *item,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1231 gpointer data) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1232
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1233 struct mwPurpleProtocolData *pd = data;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1234 struct mwSametimeList *stlist;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1235
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1236 struct mwGetBuffer *b;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1237
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1238 g_return_if_fail(result == ERR_SUCCESS);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1239
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1240 /* check our preferences for loading */
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1241 if(BLIST_PREF_IS_LOCAL()) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1242 DEBUG_INFO("preferences indicate not to load remote buddy list\n");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1243 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1244 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1245
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1246 b = mwGetBuffer_wrap(mwStorageUnit_asOpaque(item));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1247
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1248 stlist = mwSametimeList_new();
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1249 mwSametimeList_get(b, stlist);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1250
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1251 /* merge or synch depending on preferences */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1252 if(BLIST_PREF_IS_MERGE() || BLIST_PREF_IS_STORE()) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1253 blist_merge(pd->gc, stlist);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1254
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1255 } else if(BLIST_PREF_IS_SYNCH()) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1256 blist_sync(pd->gc, stlist);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1257 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1258
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1259 mwSametimeList_free(stlist);
22973
3d2a84bbd19d Plug a small leak.
Daniel Atallah <datallah@pidgin.im>
parents: 22709
diff changeset
1260 mwGetBuffer_free(b);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1261 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1262
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1263
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1264 /** signal triggered when a conversation is opened in Purple */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1265 static void conversation_created_cb(PurpleConversation *g_conv,
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1266 struct mwPurpleProtocolData *pd) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1267
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1268 /* we need to tell the IM service to negotiate features for the
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1269 conversation right away, otherwise it'll wait until the first
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1270 message is sent before offering NotesBuddy features. Therefore
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1271 whenever Purple creates a conversation, we'll immediately open the
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1272 channel to the other side and figure out what the target can
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1273 handle. Unfortunately, this makes us vulnerable to Psychic Mode,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1274 whereas a more lazy negotiation based on the first message
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1275 would not */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1276
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1277 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1278 struct mwIdBlock who = { 0, 0 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1279 struct mwConversation *conv;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1280
32698
154e4a2a6287 Our API really shouldn't have a 'gc' in it anymore.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32683
diff changeset
1281 gc = purple_conversation_get_connection(g_conv);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1282 if(pd->gc != gc)
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1283 return; /* not ours */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1284
35070
d7350d876fda libpurple: Don't assume a conversation is always an IM or a chat
Ankit Vani <a@nevitus.org>
parents: 35005
diff changeset
1285 if(!PURPLE_IS_IM_CONVERSATION(g_conv))
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1286 return; /* wrong type */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1287
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1288 who.user = (char *) purple_conversation_get_name(g_conv);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1289 conv = mwServiceIm_getConversation(pd->srvc_im, &who);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1290
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1291 convo_features(conv);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1292
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1293 if(mwConversation_isClosed(conv))
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1294 mwConversation_open(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1295 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1296
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1297
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1298 static void blist_menu_nab(PurpleBlistNode *node, gpointer data) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1299 struct mwPurpleProtocolData *pd = data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1300 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1301
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1302 PurpleGroup *group = (PurpleGroup *) node;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1303
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1304 GString *str;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1305 char *tmp;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1306 const char *gname;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1307
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1308 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1309
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1310 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1311 g_return_if_fail(gc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1312
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1313 g_return_if_fail(PURPLE_IS_GROUP(node));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1314
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1315 str = g_string_new(NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1316
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1317 tmp = (char *) purple_blist_node_get_string(node, GROUP_KEY_NAME);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1318 gname = purple_group_get_name(group);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1319
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1320 g_string_append_printf(str, _("<b>Group Title:</b> %s<br>"), gname);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1321 g_string_append_printf(str, _("<b>Notes Group ID:</b> %s<br>"), tmp);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1322
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1323 tmp = g_strdup_printf(_("Info for Group %s"), gname);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1324
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1325 purple_notify_formatted(gc, tmp, _("Notes Address Book Information"),
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1326 NULL, str->str, NULL, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1327
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1328 g_free(tmp);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1329 g_string_free(str, TRUE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1330 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1331
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1332
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36628
diff changeset
1333 /** The normal blist menu protocol function doesn't get called for groups,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1334 so we use the blist-node-extended-menu signal to trigger this
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1335 handler */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1336 static void blist_node_menu_cb(PurpleBlistNode *node,
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1337 GList **menu, struct mwPurpleProtocolData *pd) {
12107
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
1338 const char *owner;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1339 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1340 PurpleMenuAction *act;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1341
12107
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
1342 /* we only want groups */
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1343 if(! PURPLE_IS_GROUP(node)) return;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1344
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1345 acct = purple_connection_get_account(pd->gc);
12107
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
1346 g_return_if_fail(acct != NULL);
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
1347
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
1348 /* better make sure we're connected */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1349 if(! purple_account_is_connected(acct)) return;
12107
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
1350
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
1351 /* check if it's a NAB group for this account */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1352 owner = purple_blist_node_get_string(node, GROUP_KEY_OWNER);
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 36037
diff changeset
1353 if(owner && purple_strequal(owner, purple_account_get_username(acct))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1354 act = purple_menu_action_new(_("Get Notes Address Book Info"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1355 PURPLE_CALLBACK(blist_menu_nab), pd, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1356 *menu = g_list_append(*menu, act);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1357 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1358 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1359
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1360
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1361 /* lifted this from oldstatus, since HEAD doesn't do this at login
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1362 anymore. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1363 static void blist_init(PurpleAccount *acct) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1364 PurpleBlistNode *gnode, *cnode, *bnode;
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1365 GList *add_buds = NULL;
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1366
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1367 for(gnode = purple_blist_get_root(); gnode;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1368 gnode = purple_blist_node_get_sibling_next(gnode)) {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1369 if(! PURPLE_IS_GROUP(gnode)) continue;
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1370
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1371 for(cnode = purple_blist_node_get_first_child(gnode);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1372 cnode;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1373 cnode = purple_blist_node_get_sibling_next(cnode)) {
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1374 if(! PURPLE_IS_CONTACT(cnode))
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1375 continue;
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1376 for(bnode = purple_blist_node_get_first_child(cnode);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1377 bnode;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1378 bnode = purple_blist_node_get_sibling_next(bnode)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1379 PurpleBuddy *b;
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1380 if(!PURPLE_IS_BUDDY(bnode))
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1381 continue;
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1382
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1383 b = (PurpleBuddy *)bnode;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
1384 if(purple_buddy_get_account(b) == acct) {
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1385 add_buds = g_list_append(add_buds, b);
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1386 }
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1387 }
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1388 }
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1389 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1390
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1391 if(add_buds) {
32319
ab70b05e538b sametime: fix build (add_buddies added param)
Paul Aurich <darkrain42@pidgin.im>
parents: 32316
diff changeset
1392 purple_account_add_buddies(acct, add_buds, NULL);
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1393 g_list_free(add_buds);
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1394 }
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1395 }
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1396
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1397
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1398 /** Last thing to happen from a started session */
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1399 static void services_starting(struct mwPurpleProtocolData *pd) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1400
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1401 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1402 PurpleAccount *acct;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1403 struct mwStorageUnit *unit;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1404 PurpleBlistNode *l;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1405
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1406 gc = pd->gc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1407 acct = purple_connection_get_account(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1408
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1409 /* grab the buddy list from the server */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1410 unit = mwStorageUnit_new(mwStore_AWARE_LIST);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1411 mwServiceStorage_load(pd->srvc_store, unit, fetch_blist_cb, pd, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1412
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1413 /* find all the NAB groups and subscribe to them */
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1414 for(l = purple_blist_get_root(); l;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24398
diff changeset
1415 l = purple_blist_node_get_sibling_next(l)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1416 PurpleGroup *group = (PurpleGroup *) l;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1417 enum mwSametimeGroupType gt;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1418 const char *owner;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1419
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1420 if(! PURPLE_IS_GROUP(l)) continue;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1421
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1422 /* if the group is ownerless, or has an owner and we're not it,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1423 skip it */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1424 owner = purple_blist_node_get_string(l, GROUP_KEY_OWNER);
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
1425 if(!owner || !purple_strequal(owner, purple_account_get_username(acct)))
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1426 continue;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1427
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1428 gt = purple_blist_node_get_int(l, GROUP_KEY_TYPE);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1429 if(gt == mwSametimeGroup_DYNAMIC)
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1430 group_add(pd, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1431 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1432
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1433 /* set the aware attributes */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1434 /* indicate we understand what AV prefs are, but don't support any */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1435 mwServiceAware_setAttributeBoolean(pd->srvc_aware,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1436 mwAttribute_AV_PREFS_SET, TRUE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1437 mwServiceAware_unsetAttribute(pd->srvc_aware, mwAttribute_MICROPHONE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1438 mwServiceAware_unsetAttribute(pd->srvc_aware, mwAttribute_SPEAKERS);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1439 mwServiceAware_unsetAttribute(pd->srvc_aware, mwAttribute_VIDEO_CAMERA);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1440
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1441 /* ... but we can do file transfers! */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1442 mwServiceAware_setAttributeBoolean(pd->srvc_aware,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1443 mwAttribute_FILE_TRANSFER, TRUE);
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1444
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1445 blist_init(acct);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1446 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1447
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1448
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1449 static void session_loginRedirect(struct mwSession *session,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1450 const char *host) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1451 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1452 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1453 PurpleAccount *account;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1454 guint port;
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
1455 const char *current_host;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1456
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1457 pd = mwSession_getClientData(session);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1458 gc = pd->gc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1459 account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1460 port = purple_account_get_int(account, MW_KEY_PORT, MW_PLUGIN_DEFAULT_PORT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1461 current_host = purple_account_get_string(account, MW_KEY_HOST,
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
1462 MW_PLUGIN_DEFAULT_HOST);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1463
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1464 if(purple_account_get_bool(account, MW_KEY_FORCE, FALSE) ||
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
1465 !host || purple_strequal(current_host, host) ||
27343
8a367ee70456 Pass the gc as the handle in a bunch of calls to purple_proxy_connect
Mark Doliner <markdoliner@pidgin.im>
parents: 26752
diff changeset
1466 (purple_proxy_connect(gc, account, host, port, connect_cb, pd) == NULL)) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1467
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
1468 /* if we're configured to force logins, or if we're being
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
1469 redirected to the already configured host, or if we couldn't
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
1470 connect to the new host, we'll force the login instead */
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
1471
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1472 mwSession_forceLogin(session);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1473 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1474 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1475
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1476
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1477 static void mw_protocol_set_status(PurpleAccount *acct, PurpleStatus *status);
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1478
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1479
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1480 /** called from mw_session_stateChange when the session's state is
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1481 mwSession_STARTED. Any finalizing of start-up stuff should go
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1482 here */
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1483 static void session_started(struct mwPurpleProtocolData *pd) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1484 PurpleStatus *status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1485 PurpleAccount *acct;
12266
d61e488f64d6 [gaim-migrate @ 14568]
Christopher O'Brien <siege@pidgin.im>
parents: 12263
diff changeset
1486
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1487 /* set out initial status */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1488 acct = purple_connection_get_account(pd->gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1489 status = purple_account_get_active_status(acct);
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
1490 mw_protocol_set_status(acct, status);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1491
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1492 /* start watching for new conversations */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1493 purple_signal_connect(purple_conversations_get_handle(),
15426
def1a5724556 [gaim-migrate @ 18157]
Christopher O'Brien <siege@pidgin.im>
parents: 15345
diff changeset
1494 "conversation-created", pd,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1495 PURPLE_CALLBACK(conversation_created_cb), pd);
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1496
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1497 /* watch for group extended menu items */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1498 purple_signal_connect(purple_blist_get_handle(),
15426
def1a5724556 [gaim-migrate @ 18157]
Christopher O'Brien <siege@pidgin.im>
parents: 15345
diff changeset
1499 "blist-node-extended-menu", pd,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1500 PURPLE_CALLBACK(blist_node_menu_cb), pd);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1501
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1502 /* use our services to do neat things */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1503 services_starting(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1504 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1505
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1506
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1507 static void session_stopping(struct mwPurpleProtocolData *pd) {
15426
def1a5724556 [gaim-migrate @ 18157]
Christopher O'Brien <siege@pidgin.im>
parents: 15345
diff changeset
1508 /* stop watching the signals from session_started */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1509 purple_signals_disconnect_by_handle(pd);
15426
def1a5724556 [gaim-migrate @ 18157]
Christopher O'Brien <siege@pidgin.im>
parents: 15345
diff changeset
1510 }
def1a5724556 [gaim-migrate @ 18157]
Christopher O'Brien <siege@pidgin.im>
parents: 15345
diff changeset
1511
def1a5724556 [gaim-migrate @ 18157]
Christopher O'Brien <siege@pidgin.im>
parents: 15345
diff changeset
1512
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1513 static void mw_session_stateChange(struct mwSession *session,
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1514 enum mwSessionState state,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1515 gpointer info) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1516 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1517 PurpleConnection *gc;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
1518 const char *msg = NULL;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1519
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1520 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1521 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1522
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1523 switch(state) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1524 case mwSession_STARTING:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1525 msg = _("Sending Handshake");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1526 purple_connection_update_progress(gc, msg, 2, MW_CONNECT_STEPS);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1527 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1528
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1529 case mwSession_HANDSHAKE:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1530 msg = _("Waiting for Handshake Acknowledgement");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1531 purple_connection_update_progress(gc, msg, 3, MW_CONNECT_STEPS);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1532 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1533
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1534 case mwSession_HANDSHAKE_ACK:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1535 msg = _("Handshake Acknowledged, Sending Login");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1536 purple_connection_update_progress(gc, msg, 4, MW_CONNECT_STEPS);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1537 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1538
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1539 case mwSession_LOGIN:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1540 msg = _("Waiting for Login Acknowledgement");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1541 purple_connection_update_progress(gc, msg, 5, MW_CONNECT_STEPS);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1542 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1543
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1544 case mwSession_LOGIN_REDIR:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1545 msg = _("Login Redirected");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1546 purple_connection_update_progress(gc, msg, 6, MW_CONNECT_STEPS);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1547 session_loginRedirect(session, info);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1548 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1549
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
1550 case mwSession_LOGIN_CONT:
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
1551 msg = _("Forcing Login");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1552 purple_connection_update_progress(gc, msg, 7, MW_CONNECT_STEPS);
35966
d603bfb42fd9 Fix some coverity CWE-484 issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 33782
diff changeset
1553 break;
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
1554
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1555 case mwSession_LOGIN_ACK:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1556 msg = _("Login Acknowledged");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1557 purple_connection_update_progress(gc, msg, 8, MW_CONNECT_STEPS);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1558 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1559
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1560 case mwSession_STARTED:
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1561 msg = _("Starting Services");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1562 purple_connection_update_progress(gc, msg, 9, MW_CONNECT_STEPS);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1563
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1564 session_started(pd);
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1565
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1566 msg = _("Connected");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1567 purple_connection_update_progress(gc, msg, 10, MW_CONNECT_STEPS);
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
1568 purple_connection_set_state(gc, PURPLE_CONNECTION_CONNECTED);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1569 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1570
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1571 case mwSession_STOPPING:
15426
def1a5724556 [gaim-migrate @ 18157]
Christopher O'Brien <siege@pidgin.im>
parents: 15345
diff changeset
1572
def1a5724556 [gaim-migrate @ 18157]
Christopher O'Brien <siege@pidgin.im>
parents: 15345
diff changeset
1573 session_stopping(pd);
def1a5724556 [gaim-migrate @ 18157]
Christopher O'Brien <siege@pidgin.im>
parents: 15345
diff changeset
1574
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1575 if(GPOINTER_TO_UINT(info) & ERR_FAILURE) {
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
1576 char *err = mwError(GPOINTER_TO_UINT(info));
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1577 PurpleConnectionError reason;
20455
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1578 switch (GPOINTER_TO_UINT(info)) {
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1579 case VERSION_MISMATCH:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1580 reason = PURPLE_CONNECTION_ERROR_OTHER_ERROR;
20455
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1581 break;
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1582
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1583 case USER_RESTRICTED:
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1584 case INCORRECT_LOGIN:
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1585 case USER_UNREGISTERED:
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1586 case GUEST_IN_USE:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1587 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
20455
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1588 break;
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1589
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1590 case ENCRYPT_MISMATCH:
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1591 case ERR_ENCRYPT_NO_SUPPORT:
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1592 case ERR_NO_COMMON_ENCRYPT:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1593 reason = PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR;
20455
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1594 break;
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1595
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1596 case VERIFICATION_DOWN:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1597 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE;
20455
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1598 break;
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1599
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1600 case MULTI_SERVER_LOGIN:
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1601 case MULTI_SERVER_LOGIN2:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1602 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE;
20455
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1603 break;
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1604
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1605 default:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1606 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
20455
058f341481a5 Add disconnection reasons to sametime.
Will Thompson <resiak@pidgin.im>
parents: 19859
diff changeset
1607 }
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31991
diff changeset
1608 purple_connection_error(gc, reason, err);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
1609 g_free(err);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1610 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1611 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1612
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1613 case mwSession_STOPPED:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1614 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1615
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1616 case mwSession_UNKNOWN:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1617 default:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1618 DEBUG_WARN("session in unknown state\n");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1619 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1620 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1621
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1622
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1623 static void mw_session_setPrivacyInfo(struct mwSession *session) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1624 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1625 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1626 PurpleAccount *acct;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1627 struct mwPrivacyInfo *privacy;
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1628 GSList *list;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1629 guint count;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1630
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1631 DEBUG_INFO("privacy information set from server\n");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1632
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1633 g_return_if_fail(session != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1634
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1635 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1636 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1637
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1638 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1639 g_return_if_fail(gc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1640
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1641 acct = purple_connection_get_account(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1642 g_return_if_fail(acct != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1643
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1644 privacy = mwSession_getPrivacyInfo(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1645 count = privacy->count;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1646
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1647 if (privacy->deny) {
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1648 while ((list = purple_account_privacy_get_denied(acct))) {
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1649 g_free(list->data);
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1650 purple_account_privacy_deny_remove(acct, list->data, TRUE);
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1651 }
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1652 while (count--) {
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1653 struct mwUserItem *u = privacy->users + count;
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1654 purple_account_privacy_deny_add(acct, u->id, TRUE);
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1655 }
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1656 } else {
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1657 while ((list = purple_account_privacy_get_permitted(acct))) {
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1658 g_free(list->data);
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1659 purple_account_privacy_permit_remove(acct, list->data, TRUE);
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1660 }
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1661 while (count--) {
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1662 struct mwUserItem *u = privacy->users + count;
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1663 purple_account_privacy_permit_add(acct, u->id, TRUE);
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
1664 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1665 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1666 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1667
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1668
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1669 static void mw_session_setUserStatus(struct mwSession *session) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1670 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1671 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1672 struct mwAwareIdBlock idb = { mwAware_USER, NULL, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1673 struct mwUserStatus *stat;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1674
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1675 g_return_if_fail(session != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1676
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1677 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1678 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1679
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1680 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1681 g_return_if_fail(gc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1682
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1683 idb.user = mwSession_getProperty(session, mwSession_AUTH_USER_ID);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1684 stat = mwSession_getUserStatus(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1685
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1686 /* trigger an update of our own status if we're in the buddy list */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1687 mwServiceAware_setStatus(pd->srvc_aware, &idb, stat);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1688 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1689
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1690
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1691 static void mw_session_admin(struct mwSession *session,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1692 const char *text) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1693 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1694 PurpleAccount *acct;
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1695 const char *host;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
1696 const char *msg;
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1697 char *prim;
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1698
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1699 gc = session_to_gc(session);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1700 g_return_if_fail(gc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1701
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1702 acct = purple_connection_get_account(gc);
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1703 g_return_if_fail(acct != NULL);
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1704
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1705 host = purple_account_get_string(acct, MW_KEY_HOST, NULL);
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1706
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
1707 msg = _("A Sametime administrator has issued the following announcement"
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1708 " on server %s");
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
1709 prim = g_strdup_printf(msg, NSTR(host));
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1710
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1711 purple_notify_message(gc, PURPLE_NOTIFY_MSG_INFO,
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1712 _("Sametime Administrator Announcement"),
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
1713 prim, text, NULL, NULL,
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
1714 purple_request_cpar_from_connection(gc));
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1715
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
1716 g_free(prim);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1717 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1718
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1719
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1720 /** called from read_cb, attempts to read available data from sock and
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1721 pass it to the session, passing back the return code from the read
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1722 call for handling in read_cb */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1723 static int read_recv(struct mwSession *session, int sock) {
12311
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
1724 guchar buf[BUF_LEN];
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1725 int len;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1726
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1727 len = read(sock, buf, BUF_LEN);
22277
7c386db62c81 Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@pidgin.im>
parents: 22195
diff changeset
1728 if(len > 0) {
7c386db62c81 Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@pidgin.im>
parents: 22195
diff changeset
1729 mwSession_recv(session, buf, len);
7c386db62c81 Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@pidgin.im>
parents: 22195
diff changeset
1730 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1731
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1732 return len;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1733 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1734
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1735
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1736 /** callback triggered from purple_input_add, watches the socked for
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1737 available data to be processed by the session */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1738 static void read_cb(gpointer data, gint source, PurpleInputCondition cond) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1739 struct mwPurpleProtocolData *pd = data;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1740 int ret = 0, err = 0;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1741
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1742 g_return_if_fail(pd != NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1743
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
1744 ret = read_recv(pd->session, pd->socket);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1745
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1746 /* normal operation ends here */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1747 if(ret > 0) return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1748
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
1749 /* fetch the global error value */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1750 err = errno;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1751
14754
621ecdbdaf9a [gaim-migrate @ 17444]
Paul Schulz
parents: 14604
diff changeset
1752 /* read problem occurred if we're here, so we'll need to take care of
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1753 it and clean up internal state */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1754
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1755 if(pd->socket) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1756 close(pd->socket);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1757 pd->socket = 0;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1758 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1759
32683
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
1760 if(pd->inpa) {
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
1761 purple_input_remove(pd->inpa);
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
1762 pd->inpa = 0;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1763 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1764
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1765 if(! ret) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1766 DEBUG_INFO("connection reset\n");
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31991
diff changeset
1767 purple_connection_error(pd->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1768 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
1769 _("Server closed the connection"));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1770
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1771 } else if(ret < 0) {
21486
773326dcdc30 Use distinct variables for the result of g_strerror (which is const) and a
Will Thompson <resiak@pidgin.im>
parents: 21453
diff changeset
1772 const gchar *err_str = g_strerror(err);
773326dcdc30 Use distinct variables for the result of g_strerror (which is const) and a
Will Thompson <resiak@pidgin.im>
parents: 21453
diff changeset
1773 char *msg = NULL;
773326dcdc30 Use distinct variables for the result of g_strerror (which is const) and a
Will Thompson <resiak@pidgin.im>
parents: 21453
diff changeset
1774
773326dcdc30 Use distinct variables for the result of g_strerror (which is const) and a
Will Thompson <resiak@pidgin.im>
parents: 21453
diff changeset
1775 DEBUG_INFO("error in read callback: %s\n", err_str);
773326dcdc30 Use distinct variables for the result of g_strerror (which is const) and a
Will Thompson <resiak@pidgin.im>
parents: 21453
diff changeset
1776
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
1777 msg = g_strdup_printf(_("Lost connection with server: %s"), err_str);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31991
diff changeset
1778 purple_connection_error(pd->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1779 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1780 msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1781 g_free(msg);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1782 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1783 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1784
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1785
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1786 /** Callback passed to purple_proxy_connect when an account is logged
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1787 in, and if the session logging in receives a redirect message */
14178
d12b287697c9 [gaim-migrate @ 16750]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
1788 static void connect_cb(gpointer data, gint source, const gchar *error_message) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1789
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1790 struct mwPurpleProtocolData *pd = data;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1791
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1792 if(source < 0) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1793 /* connection failed */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1794
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1795 if(pd->socket) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1796 /* this is a redirect connect, force login on existing socket */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1797 mwSession_forceLogin(pd->session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1798
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1799 } else {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1800 /* this is a regular connect, error out */
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
1801 gchar *tmp = g_strdup_printf(_("Unable to connect: %s"),
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
1802 error_message);
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31991
diff changeset
1803 purple_connection_error(pd->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21160
diff changeset
1804 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
1805 tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
1806 g_free(tmp);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1807 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1808
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1809 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1810 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1811
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1812 if(pd->socket) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1813 /* stop any existing login attempt */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1814 mwSession_stop(pd->session, ERR_SUCCESS);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1815 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1816
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1817 pd->socket = source;
32683
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
1818 pd->inpa = purple_input_add(source, PURPLE_INPUT_READ,
13206
fb1f9f01499c [gaim-migrate @ 15568]
Christopher O'Brien <siege@pidgin.im>
parents: 13158
diff changeset
1819 read_cb, pd);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1820
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1821 mwSession_start(pd->session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1822 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1823
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1824
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1825 static void mw_session_announce(struct mwSession *s,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1826 struct mwLoginInfo *from,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1827 gboolean may_reply,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1828 const char *text) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1829 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1830 PurpleAccount *acct;
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1831 PurpleIMConversation *im;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1832 PurpleBuddy *buddy;
12263
5f0ddc426a58 [gaim-migrate @ 14565]
Christopher O'Brien <siege@pidgin.im>
parents: 12216
diff changeset
1833 char *who = from->user_id;
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
1834 char *msg, *msg2;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1835
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1836 pd = mwSession_getClientData(s);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1837 acct = purple_connection_get_account(pd->gc);
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1838 im = purple_conversations_find_im_with_account(who, acct);
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1839 if(! im) im = purple_im_conversation_new(acct, who);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1840
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
1841 buddy = purple_blist_find_buddy(acct, who);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1842 if(buddy) who = (char *) purple_buddy_get_contact_alias(buddy);
12263
5f0ddc426a58 [gaim-migrate @ 14565]
Christopher O'Brien <siege@pidgin.im>
parents: 12216
diff changeset
1843
5f0ddc426a58 [gaim-migrate @ 14565]
Christopher O'Brien <siege@pidgin.im>
parents: 12216
diff changeset
1844 who = g_strdup_printf(_("Announcement from %s"), who);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1845 msg = purple_markup_linkify(text);
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
1846 if (msg && msg[0])
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
1847 msg2 = g_strdup_printf("%s: %s", who, msg);
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
1848 else
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
1849 msg2 = g_strdup(who);
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
1850
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
1851 purple_conversation_write_system_message(PURPLE_CONVERSATION(im), msg2, 0);
12263
5f0ddc426a58 [gaim-migrate @ 14565]
Christopher O'Brien <siege@pidgin.im>
parents: 12216
diff changeset
1852 g_free(who);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
1853 g_free(msg);
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36078
diff changeset
1854 g_free(msg2);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1855 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1856
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1857
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1858 static struct mwSessionHandler mw_session_handler = {
17153
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1859 mw_session_io_write,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1860 mw_session_io_close,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1861 mw_session_clear,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1862 mw_session_stateChange,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1863 mw_session_setPrivacyInfo,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1864 mw_session_setUserStatus,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1865 mw_session_admin,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1866 mw_session_announce,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1867 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1868
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1869
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1870 static void mw_aware_on_attrib(struct mwServiceAware *srvc,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1871 struct mwAwareAttribute *attrib) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1872
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1873 ; /** @todo handle server attributes. There may be some stuff we
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1874 actually want to look for, but I'm not aware of anything right
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1875 now.*/
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1876 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1877
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1878
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1879 static void mw_aware_clear(struct mwServiceAware *srvc) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1880 ; /* nothing for now */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1881 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1882
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1883
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1884 static struct mwAwareHandler mw_aware_handler = {
17153
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1885 mw_aware_on_attrib,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
1886 mw_aware_clear,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1887 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1888
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1889
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1890 static struct mwServiceAware *mw_srvc_aware_new(struct mwSession *s) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1891 struct mwServiceAware *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1892 srvc = mwServiceAware_new(s, &mw_aware_handler);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1893 return srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1894 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1895
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1896
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1897 static void mw_conf_invited(struct mwConference *conf,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1898 struct mwLoginInfo *inviter,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1899 const char *invitation) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1900
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1901 struct mwServiceConference *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1902 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1903 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1904 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1905
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1906 char *c_inviter, *c_name, *c_topic, *c_invitation;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1907 GHashTable *ht;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1908
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1909 srvc = mwConference_getService(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1910 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1911 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1912 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1913
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1914 ht = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1915
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1916 c_inviter = g_strdup(inviter->user_id);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1917 g_hash_table_insert(ht, CHAT_KEY_CREATOR, c_inviter);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1918
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1919 c_name = g_strdup(mwConference_getName(conf));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1920 g_hash_table_insert(ht, CHAT_KEY_NAME, c_name);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1921
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1922 c_topic = g_strdup(mwConference_getTitle(conf));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1923 g_hash_table_insert(ht, CHAT_KEY_TOPIC, c_topic);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1924
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1925 c_invitation = g_strdup(invitation);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1926 g_hash_table_insert(ht, CHAT_KEY_INVITE, c_invitation);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1927
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1928 DEBUG_INFO("received invitation from '%s' to join ('%s','%s'): '%s'\n",
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1929 NSTR(c_inviter), NSTR(c_name),
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1930 NSTR(c_topic), NSTR(c_invitation));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1931
12742
88e624a344cb [gaim-migrate @ 15089]
Christopher O'Brien <siege@pidgin.im>
parents: 12735
diff changeset
1932 if(! c_topic) c_topic = "(no title)";
88e624a344cb [gaim-migrate @ 15089]
Christopher O'Brien <siege@pidgin.im>
parents: 12735
diff changeset
1933 if(! c_invitation) c_invitation = "(no message)";
35501
602747bb4af9 Fix duplicate prefixes
Ankit Vani <a@nevitus.org>
parents: 35499
diff changeset
1934 purple_serv_got_chat_invite(gc, c_topic, c_inviter, c_invitation, ht);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1935 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1936
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1937
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
1938 /* The following mess helps us relate a mwConference to a PurpleChatConversation
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1939 in the various forms by which either may be indicated */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1940
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1941 #define CONF_TO_ID(conf) (GPOINTER_TO_INT(conf))
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1942 #define ID_TO_CONF(pd, id) (conf_find_by_id((pd), (id)))
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1943
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
1944 #define CHAT_TO_ID(chat) (purple_chat_conversation_get_id(chat))
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
1945 #define ID_TO_CHAT(id) (purple_conversations_find_chat(id))
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1946
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
1947 #define CHAT_TO_CONF(pd, chat) (ID_TO_CONF((pd), CHAT_TO_ID(chat)))
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
1948 #define CONF_TO_CHAT(conf) (ID_TO_CHAT(CONF_TO_ID(conf)))
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1949
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1950
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1951 static struct mwConference *
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1952 conf_find_by_id(struct mwPurpleProtocolData *pd, int id) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1953
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1954 struct mwServiceConference *srvc = pd->srvc_conf;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1955 struct mwConference *conf = NULL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1956 GList *l, *ll;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1957
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1958 ll = mwServiceConference_getConferences(srvc);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1959 for(l = ll; l; l = l->next) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1960 struct mwConference *c = l->data;
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
1961 PurpleChatConversation *h = mwConference_getClientData(c);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1962
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1963 if(CHAT_TO_ID(h) == id) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1964 conf = c;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1965 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1966 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1967 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1968 g_list_free(ll);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
1969
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1970 return conf;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1971 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1972
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1973
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1974 static void mw_conf_opened(struct mwConference *conf, GList *members) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1975 struct mwServiceConference *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1976 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
1977 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
1978 PurpleConnection *gc;
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1979 PurpleChatConversation *g_conf;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1980
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1981 const char *n = mwConference_getName(conf);
12742
88e624a344cb [gaim-migrate @ 15089]
Christopher O'Brien <siege@pidgin.im>
parents: 12735
diff changeset
1982 const char *t = mwConference_getTitle(conf);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1983
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1984 DEBUG_INFO("conf %s opened, %u initial members\n",
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1985 NSTR(n), g_list_length(members));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1986
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1987 srvc = mwConference_getService(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1988 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1989 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1990 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1991
12742
88e624a344cb [gaim-migrate @ 15089]
Christopher O'Brien <siege@pidgin.im>
parents: 12735
diff changeset
1992 if(! t) t = "(no title)";
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35378
diff changeset
1993 g_conf = purple_serv_got_joined_chat(gc, CONF_TO_ID(conf), t);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1994
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1995 mwConference_setClientData(conf, g_conf, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1996
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1997 for(; members; members = members->next) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
1998 struct mwLoginInfo *peer = members->data;
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
1999 purple_chat_conversation_add_user(g_conf, peer->user_id,
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34642
diff changeset
2000 NULL, PURPLE_CHAT_USER_NONE, FALSE);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2001 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2002 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2003
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2004
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2005 static void mw_conf_closed(struct mwConference *conf, guint32 reason) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2006 struct mwServiceConference *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2007 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2008 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2009 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2010
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2011 const char *n = mwConference_getName(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2012 char *msg = mwError(reason);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2013
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2014 DEBUG_INFO("conf %s closed, 0x%08x\n", NSTR(n), reason);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2015
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2016 srvc = mwConference_getService(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2017 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2018 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2019 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2020
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35378
diff changeset
2021 purple_serv_got_chat_left(gc, CONF_TO_ID(conf));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2022
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
2023 purple_notify_error(gc, _("Conference Closed"), NULL, msg,
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
2024 purple_request_cpar_from_connection(gc));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2025 g_free(msg);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2026 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2027
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2028
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2029 static void mw_conf_peer_joined(struct mwConference *conf,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2030 struct mwLoginInfo *peer) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2031
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
2032 PurpleChatConversation *g_conf;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2033
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2034 const char *n = mwConference_getName(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2035
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2036 DEBUG_INFO("%s joined conf %s\n", NSTR(peer->user_id), NSTR(n));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2037
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2038 g_conf = mwConference_getClientData(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2039 g_return_if_fail(g_conf != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2040
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
2041 purple_chat_conversation_add_user(g_conf, peer->user_id,
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34642
diff changeset
2042 NULL, PURPLE_CHAT_USER_NONE, TRUE);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2043 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2044
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2045
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2046 static void mw_conf_peer_parted(struct mwConference *conf,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2047 struct mwLoginInfo *peer) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2048
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
2049 PurpleChatConversation *g_conf;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2050
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2051 const char *n = mwConference_getName(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2052
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2053 DEBUG_INFO("%s left conf %s\n", NSTR(peer->user_id), NSTR(n));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2054
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2055 g_conf = mwConference_getClientData(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2056 g_return_if_fail(g_conf != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2057
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
2058 purple_chat_conversation_remove_user(g_conf, peer->user_id, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2059 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2060
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2061
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2062 static void mw_conf_text(struct mwConference *conf,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2063 struct mwLoginInfo *who, const char *text) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2064
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2065 struct mwServiceConference *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2066 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2067 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2068 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2069 char *esc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2070
12863
535f2e11db82 [gaim-migrate @ 15214]
Christopher O'Brien <siege@pidgin.im>
parents: 12830
diff changeset
2071 if(! text) return;
535f2e11db82 [gaim-migrate @ 15214]
Christopher O'Brien <siege@pidgin.im>
parents: 12830
diff changeset
2072
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2073 srvc = mwConference_getService(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2074 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2075 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2076 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2077
12864
072fcb25d27b [gaim-migrate @ 15215]
Christopher O'Brien <siege@pidgin.im>
parents: 12863
diff changeset
2078 esc = g_markup_escape_text(text, -1);
36092
cf0a11121049 Fix message flags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36089
diff changeset
2079 purple_serv_got_chat_in(gc, CONF_TO_ID(conf), who->user_id, PURPLE_MESSAGE_RECV, esc, time(NULL));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2080 g_free(esc);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2081 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2082
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2083
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2084 static void mw_conf_typing(struct mwConference *conf,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2085 struct mwLoginInfo *who, gboolean typing) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2086
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2087 /* purple really has no good way to expose this to the user. */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2088
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2089 const char *n = mwConference_getName(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2090 const char *w = who->user_id;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2091
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2092 if(typing) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2093 DEBUG_INFO("%s in conf %s: <typing>\n", NSTR(w), NSTR(n));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2094
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2095 } else {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2096 DEBUG_INFO("%s in conf %s: <stopped typing>\n", NSTR(w), NSTR(n));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2097 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2098 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2099
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2100
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2101 static void mw_conf_clear(struct mwServiceConference *srvc) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2102 ;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2103 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2104
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2105
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2106 static struct mwConferenceHandler mw_conference_handler = {
17153
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2107 mw_conf_invited,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2108 mw_conf_opened,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2109 mw_conf_closed,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2110 mw_conf_peer_joined,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2111 mw_conf_peer_parted,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2112 mw_conf_text,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2113 mw_conf_typing,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2114 mw_conf_clear,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2115 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2116
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2117
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2118 static struct mwServiceConference *mw_srvc_conf_new(struct mwSession *s) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2119 struct mwServiceConference *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2120 srvc = mwServiceConference_new(s, &mw_conference_handler);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2121 return srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2122 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2123
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2124
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2125 /** size of an outgoing file transfer chunk */
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2126 #define MW_FT_LEN (BUF_LONG * 2)
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2127
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2128
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2129 static void ft_incoming_cancel(PurpleXfer *xfer) {
30708
535bec1e66fb Standardize on "cancelled".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29304
diff changeset
2130 /* incoming transfer rejected or cancelled in-progress */
32243
709c68f85f51 Convert the sametime prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
2131 struct mwFileTransfer *ft = purple_xfer_get_protocol_data(xfer);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2132 if(ft) mwFileTransfer_reject(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2133 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2134
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2135
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2136 static void ft_incoming_init(PurpleXfer *xfer) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2137 /* incoming transfer accepted */
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2138
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2139 /* - accept the mwFileTransfer
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2140 - open/create the local FILE "wb"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2141 - stick the FILE's fp in xfer->dest_fp
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2142 */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2143
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2144 struct mwFileTransfer *ft;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2145
32243
709c68f85f51 Convert the sametime prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
2146 ft = purple_xfer_get_protocol_data(xfer);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2147
34917
5bf76308abd1 Refactored sametime to use the GObject xfer API
Ankit Vani <a@nevitus.org>
parents: 34912
diff changeset
2148 purple_xfer_start(xfer, -1, NULL, 0);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2149 mwFileTransfer_accept(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2150 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2151
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2152
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2153 static void mw_ft_offered(struct mwFileTransfer *ft) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2154 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2155 - create a purple ft object
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2156 - offer it
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2157 */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2158
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2159 struct mwServiceFileTransfer *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2160 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2161 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2162 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2163 PurpleAccount *acct;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2164 const char *who;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2165 PurpleXfer *xfer;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2166
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2167 /* @todo add some safety checks */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2168 srvc = mwFileTransfer_getService(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2169 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2170 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2171 gc = pd->gc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2172 acct = purple_connection_get_account(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2173
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2174 who = mwFileTransfer_getUser(ft)->user;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2175
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2176 DEBUG_INFO("file transfer %p offered\n", ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2177 DEBUG_INFO(" from: %s\n", NSTR(who));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2178 DEBUG_INFO(" file: %s\n", NSTR(mwFileTransfer_getFileName(ft)));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2179 DEBUG_INFO(" size: %u\n", mwFileTransfer_getFileSize(ft));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2180 DEBUG_INFO(" text: %s\n", NSTR(mwFileTransfer_getMessage(ft)));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2181
34926
c5b444d1447d Changed prefix of PurpleXferType enums to PURPLE_XFER_TYPE_*
Ankit Vani <a@nevitus.org>
parents: 34920
diff changeset
2182 xfer = purple_xfer_new(acct, PURPLE_XFER_TYPE_RECEIVE, who);
15345
797936e968ff [gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
2183 if (xfer)
797936e968ff [gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
2184 {
34912
539b7b4d1949 Replaced purple_xfer_{ref|unref} with g_object_{ref|unref}
Ankit Vani <a@nevitus.org>
parents: 34910
diff changeset
2185 g_object_ref(xfer);
539b7b4d1949 Replaced purple_xfer_{ref|unref} with g_object_{ref|unref}
Ankit Vani <a@nevitus.org>
parents: 34910
diff changeset
2186 mwFileTransfer_setClientData(ft, xfer, (GDestroyNotify) g_object_unref);
32243
709c68f85f51 Convert the sametime prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
2187 purple_xfer_set_protocol_data(xfer, ft);
15345
797936e968ff [gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
2188
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2189 purple_xfer_set_init_fnc(xfer, ft_incoming_init);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2190 purple_xfer_set_cancel_recv_fnc(xfer, ft_incoming_cancel);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2191 purple_xfer_set_request_denied_fnc(xfer, ft_incoming_cancel);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2192
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2193 purple_xfer_set_filename(xfer, mwFileTransfer_getFileName(ft));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2194 purple_xfer_set_size(xfer, mwFileTransfer_getFileSize(ft));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2195 purple_xfer_set_message(xfer, mwFileTransfer_getMessage(ft));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2196
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2197 purple_xfer_request(xfer);
15345
797936e968ff [gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
2198 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2199 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2200
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2201
34917
5bf76308abd1 Refactored sametime to use the GObject xfer API
Ankit Vani <a@nevitus.org>
parents: 34912
diff changeset
2202 static void ft_send(struct mwFileTransfer *ft) {
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2203 guchar buf[MW_FT_LEN];
32049
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
2204 struct mwOpaque o = { MW_FT_LEN, buf };
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2205 guint32 rem;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2206 PurpleXfer *xfer;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2207
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2208 xfer = mwFileTransfer_getClientData(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2209
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2210 rem = mwFileTransfer_getRemaining(ft);
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2211 if(rem < MW_FT_LEN) o.len = rem;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2212
36043
d73e41243b71 Fix warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36039
diff changeset
2213 if(purple_xfer_read_file(xfer, buf, (size_t) o.len) == (gssize)o.len) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2214
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2215 /* calculate progress and display it */
32270
028a4b3c0402 Steps toward hiding PurpleXfer.
Daniel Atallah <datallah@pidgin.im>
parents: 32243
diff changeset
2216 purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + o.len);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2217 purple_xfer_update_progress(xfer);
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2218
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2219 mwFileTransfer_send(ft, &o);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2220
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2221 } else {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2222 int err = errno;
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2223 DEBUG_WARN("problem reading from file %s: %s\n",
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20288
diff changeset
2224 NSTR(mwFileTransfer_getFileName(ft)), g_strerror(err));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2225
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2226 mwFileTransfer_cancel(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2227 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2228 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2229
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2230
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2231 static void mw_ft_opened(struct mwFileTransfer *ft) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2232 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2233 - get purple ft from client data in ft
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2234 - set the state to active
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2235 */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2236
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2237 PurpleXfer *xfer;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2238
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2239 xfer = mwFileTransfer_getClientData(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2240
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2241 if(! xfer) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2242 mwFileTransfer_cancel(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2243 mwFileTransfer_free(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2244 g_return_if_reached();
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2245 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2246
34926
c5b444d1447d Changed prefix of PurpleXferType enums to PURPLE_XFER_TYPE_*
Ankit Vani <a@nevitus.org>
parents: 34920
diff changeset
2247 if(purple_xfer_get_xfer_type(xfer) == PURPLE_XFER_TYPE_SEND) {
34917
5bf76308abd1 Refactored sametime to use the GObject xfer API
Ankit Vani <a@nevitus.org>
parents: 34912
diff changeset
2248 purple_xfer_start(xfer, -1, NULL, 0);
5bf76308abd1 Refactored sametime to use the GObject xfer API
Ankit Vani <a@nevitus.org>
parents: 34912
diff changeset
2249 ft_send(ft);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2250 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2251 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2252
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2253
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2254 static void mw_ft_closed(struct mwFileTransfer *ft, guint32 code) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2255 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2256 - get purple ft from client data in ft
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2257 - indicate rejection/cancelation/completion
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2258 - free the file transfer itself
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2259 */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2260
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2261 PurpleXfer *xfer;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2262
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2263 xfer = mwFileTransfer_getClientData(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2264 if(xfer) {
32243
709c68f85f51 Convert the sametime prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
2265 purple_xfer_set_protocol_data(xfer, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2266
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2267 if(! mwFileTransfer_getRemaining(ft)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2268 purple_xfer_set_completed(xfer, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2269 purple_xfer_end(xfer);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2270
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2271 } else if(mwFileTransfer_isCancelLocal(ft)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2272 /* calling purple_xfer_cancel_local is redundant, since that's
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2273 probably what triggered this function to be called */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2274 ;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2275
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2276 } else if(mwFileTransfer_isCancelRemote(ft)) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2277 /* steal the reference for the xfer */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2278 mwFileTransfer_setClientData(ft, NULL, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2279 purple_xfer_cancel_remote(xfer);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2280
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2281 /* drop the stolen reference */
34912
539b7b4d1949 Replaced purple_xfer_{ref|unref} with g_object_{ref|unref}
Ankit Vani <a@nevitus.org>
parents: 34910
diff changeset
2282 g_object_unref(xfer);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2283 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2284 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2285 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2286
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2287 mwFileTransfer_free(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2288 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2289
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2290
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2291 static void mw_ft_recv(struct mwFileTransfer *ft,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2292 struct mwOpaque *data) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2293 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2294 - get purple ft from client data in ft
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2295 - update transfered percentage
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2296 - if done, destroy the ft, disassociate from purple ft
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2297 */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2298
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2299 PurpleXfer *xfer;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2300
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2301 xfer = mwFileTransfer_getClientData(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2302 g_return_if_fail(xfer != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2303
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2304 /* we must collect and save our precious data */
34917
5bf76308abd1 Refactored sametime to use the GObject xfer API
Ankit Vani <a@nevitus.org>
parents: 34912
diff changeset
2305 if (!purple_xfer_write_file(xfer, data->data, data->len)) {
22195
e84f28057053 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
2306 DEBUG_ERROR("failed to write data\n");
e84f28057053 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
2307 purple_xfer_cancel_local(xfer);
e84f28057053 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
2308 return;
e84f28057053 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
2309 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2310
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2311 /* update the progress */
32270
028a4b3c0402 Steps toward hiding PurpleXfer.
Daniel Atallah <datallah@pidgin.im>
parents: 32243
diff changeset
2312 purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + data->len);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2313 purple_xfer_update_progress(xfer);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2314
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2315 /* let the other side know we got it, and to send some more */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2316 mwFileTransfer_ack(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2317 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2318
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2319
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2320 static void mw_ft_ack(struct mwFileTransfer *ft) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2321 PurpleXfer *xfer;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2322
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2323 xfer = mwFileTransfer_getClientData(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2324 g_return_if_fail(xfer != NULL);
32705
9d97ac4c2c22 Sametime: Use file-transfer accessor functions
Andrew Victor <andrew.victor@mxit.com>
parents: 32698
diff changeset
2325 g_return_if_fail(purple_xfer_get_watcher(xfer) == 0);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2326
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2327 if(! mwFileTransfer_getRemaining(ft)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2328 purple_xfer_set_completed(xfer, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2329 purple_xfer_end(xfer);
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2330
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2331 } else if(mwFileTransfer_isOpen(ft)) {
34917
5bf76308abd1 Refactored sametime to use the GObject xfer API
Ankit Vani <a@nevitus.org>
parents: 34912
diff changeset
2332 ft_send(ft);
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
2333 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2334 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2335
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2336
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2337 static void mw_ft_clear(struct mwServiceFileTransfer *srvc) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2338 ;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2339 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2340
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2341
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2342 static struct mwFileTransferHandler mw_ft_handler = {
17153
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2343 mw_ft_offered,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2344 mw_ft_opened,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2345 mw_ft_closed,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2346 mw_ft_recv,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2347 mw_ft_ack,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2348 mw_ft_clear,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2349 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2350
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2351
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2352 static struct mwServiceFileTransfer *mw_srvc_ft_new(struct mwSession *s) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2353 struct mwServiceFileTransfer *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2354 GHashTable *ft_map;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2355
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2356 ft_map = g_hash_table_new(g_direct_hash, g_direct_equal);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2357
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2358 srvc = mwServiceFileTransfer_new(s, &mw_ft_handler);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2359 mwService_setClientData(MW_SERVICE(srvc), ft_map,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2360 (GDestroyNotify) g_hash_table_destroy);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2361
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2362 return srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2363 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2364
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2365
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2366 static void convo_data_free(struct convo_data *cd) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2367 GList *l;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2368
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2369 /* clean the queue */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2370 for(l = cd->queue; l; l = g_list_delete_link(l, l)) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2371 struct convo_msg *m = l->data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2372 if(m->clear) m->clear(m->data);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2373 g_free(m);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2374 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2375
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2376 g_free(cd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2377 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2378
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2379
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2380 /** allocates a convo_data structure and associates it with the
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2381 conversation in the client data slot */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2382 static void convo_data_new(struct mwConversation *conv) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2383 struct convo_data *cd;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2384
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2385 g_return_if_fail(conv != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2386
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2387 if(mwConversation_getClientData(conv))
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2388 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2389
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2390 cd = g_new0(struct convo_data, 1);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2391 cd->conv = conv;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2392
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2393 mwConversation_setClientData(conv, cd, (GDestroyNotify) convo_data_free);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2394 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2395
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2396
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2397 static PurpleIMConversation *convo_get_im(struct mwConversation *conv) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2398 struct mwServiceIm *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2399 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2400 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2401 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2402 PurpleAccount *acct;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2403
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2404 struct mwIdBlock *idb;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2405
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2406 srvc = mwConversation_getService(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2407 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2408 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2409 gc = pd->gc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2410 acct = purple_connection_get_account(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2411
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2412 idb = mwConversation_getTarget(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2413
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2414 return purple_conversations_find_im_with_account(idb->user, acct);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2415 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2416
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2417
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2418 static void convo_queue(struct mwConversation *conv,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2419 enum mwImSendType type, gconstpointer data) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2420
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2421 struct convo_data *cd;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2422 struct convo_msg *m;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2423
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2424 convo_data_new(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2425 cd = mwConversation_getClientData(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2426
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2427 m = g_new0(struct convo_msg, 1);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2428 m->type = type;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2429
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2430 switch(type) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2431 case mwImSend_PLAIN:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2432 m->data = g_strdup(data);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2433 m->clear = g_free;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2434 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2435
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2436 case mwImSend_TYPING:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2437 default:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2438 m->data = (gpointer) data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2439 m->clear = NULL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2440 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2441
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2442 cd->queue = g_list_append(cd->queue, m);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2443 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2444
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2445
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2446 /* Does what it takes to get an error displayed for a conversation */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2447 static void convo_error(struct mwConversation *conv, guint32 err) {
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2448 PurpleIMConversation *im;
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
2449 PurpleConnection *pc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2450 char *tmp, *text;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2451 struct mwIdBlock *idb;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2452
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2453 idb = mwConversation_getTarget(conv);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2454
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2455 tmp = mwError(err);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2456 text = g_strconcat(_("Unable to send message: "), tmp, NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2457
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2458 im = convo_get_im(conv);
34868
faa5b053f310 Replaced purple_conversation_helper_present_error() with simpler purple_conversation_present_error()
Ankit Vani <a@nevitus.org>
parents: 34865
diff changeset
2459 if(im && !purple_conversation_present_error(idb->user,
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2460 purple_conversation_get_account(PURPLE_CONVERSATION(im)), text)) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2461
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2462 g_free(text);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2463 text = g_strdup_printf(_("Unable to send message to %s:"),
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2464 (idb->user)? idb->user: "(unknown)");
34955
854143116575 Merged default branch
Ankit Vani <a@nevitus.org>
parents: 34940 34449
diff changeset
2465 pc = purple_account_get_connection(purple_conversation_get_account(
854143116575 Merged default branch
Ankit Vani <a@nevitus.org>
parents: 34940 34449
diff changeset
2466 PURPLE_CONVERSATION(im)));
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
2467 purple_notify_error(pc, NULL, text, tmp, purple_request_cpar_from_connection(pc));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2468 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2469
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2470 g_free(tmp);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2471 g_free(text);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2472 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2473
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2474
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2475 static void convo_queue_send(struct mwConversation *conv) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2476 struct convo_data *cd;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2477 GList *l;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2478
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2479 cd = mwConversation_getClientData(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2480
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2481 for(l = cd->queue; l; l = g_list_delete_link(l, l)) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2482 struct convo_msg *m = l->data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2483
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2484 mwConversation_send(conv, m->type, m->data);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2485
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2486 if(m->clear) m->clear(m->data);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2487 g_free(m);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2488 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2489
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2490 cd->queue = NULL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2491 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2492
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2493
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2494 /** called when a mw conversation leaves a purple conversation to
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2495 inform the purple conversation that it's unsafe to offer any *cool*
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2496 features. */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2497 static void convo_nofeatures(struct mwConversation *conv) {
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2498 PurpleIMConversation *im;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2499 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2500
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2501 im = convo_get_im(conv);
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2502 if(! im) return;
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2503
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2504 gc = purple_conversation_get_connection(PURPLE_CONVERSATION(im));
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2505 if(! gc) return;
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2506
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2507 purple_conversation_set_features(PURPLE_CONVERSATION(im),
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2508 purple_connection_get_flags(gc));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2509 }
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2510
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2511
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2512 /** called when a mw conversation and purple conversation come together,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2513 to inform the purple conversation of what features to offer the
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2514 user */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2515 static void convo_features(struct mwConversation *conv) {
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2516 PurpleIMConversation *im;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2517 PurpleConnectionFlags feat;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2518
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2519 im = convo_get_im(conv);
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2520 if(! im) return;
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2521
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2522 feat = purple_conversation_get_features(PURPLE_CONVERSATION(im));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2523
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2524 if(mwConversation_isOpen(conv)) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2525 if(mwConversation_supports(conv, mwImSend_HTML)) {
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
2526 feat |= PURPLE_CONNECTION_FLAG_HTML;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2527 } else {
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
2528 feat &= ~PURPLE_CONNECTION_FLAG_HTML;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2529 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2530
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2531 if(mwConversation_supports(conv, mwImSend_MIME)) {
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
2532 feat &= ~PURPLE_CONNECTION_FLAG_NO_IMAGES;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2533 } else {
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
2534 feat |= PURPLE_CONNECTION_FLAG_NO_IMAGES;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2535 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2536
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2537 DEBUG_INFO("conversation features set to 0x%04x\n", feat);
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2538 purple_conversation_set_features(PURPLE_CONVERSATION(im), feat);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2539
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2540 } else {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2541 convo_nofeatures(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2542 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2543 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2544
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2545
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2546 static void mw_conversation_opened(struct mwConversation *conv) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2547 struct mwServiceIm *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2548 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2549 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2550 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2551 PurpleAccount *acct;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2552
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2553 struct convo_dat *cd;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2554
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2555 srvc = mwConversation_getService(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2556 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2557 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2558 gc = pd->gc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2559 acct = purple_connection_get_account(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2560
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2561 /* set up the queue */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2562 cd = mwConversation_getClientData(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2563 if(cd) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2564 convo_queue_send(conv);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2565
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2566 if(! convo_get_im(conv)) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2567 mwConversation_free(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2568 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2569 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2570
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2571 } else {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2572 convo_data_new(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2573 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2574
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2575 { /* record the client key for the buddy */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2576 PurpleBuddy *buddy;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2577 struct mwLoginInfo *info;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2578 info = mwConversation_getTargetInfo(conv);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2579
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
2580 buddy = purple_blist_find_buddy(acct, info->user_id);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2581 if(buddy) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2582 purple_blist_node_set_int((PurpleBlistNode *) buddy,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2583 BUDDY_KEY_CLIENT, info->type);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2584 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2585 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2586
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2587 convo_features(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2588 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2589
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2590
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2591 static void mw_conversation_closed(struct mwConversation *conv,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2592 guint32 reason) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2593
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2594 struct convo_data *cd;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2595
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2596 g_return_if_fail(conv != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2597
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2598 /* if there's an error code and a non-typing message in the queue,
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2599 print an error message to the conversation */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2600 cd = mwConversation_getClientData(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2601 if(reason && cd && cd->queue) {
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2602 GList *l;
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2603 for(l = cd->queue; l; l = l->next) {
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2604 struct convo_msg *m = l->data;
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2605 if(m->type != mwImSend_TYPING) {
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2606 convo_error(conv, reason);
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2607 break;
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2608 }
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2609 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2610 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2611
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2612 mwConversation_removeClientData(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2613 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2614
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2615
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2616 static void im_recv_text(struct mwConversation *conv,
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2617 struct mwPurpleProtocolData *pd,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2618 const char *msg) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2619
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2620 struct mwIdBlock *idb;
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2621 char *txt, *esc;
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2622 const char *t;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2623
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2624 idb = mwConversation_getTarget(conv);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2625
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2626 txt = purple_utf8_try_convert(msg);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2627 t = txt? txt: msg;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2628
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2629 esc = g_markup_escape_text(t, -1);
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35378
diff changeset
2630 purple_serv_got_im(pd->gc, idb->user, esc, 0, time(NULL));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2631 g_free(esc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2632
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2633 g_free(txt);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2634 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2635
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2636
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2637 static void im_recv_typing(struct mwConversation *conv,
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2638 struct mwPurpleProtocolData *pd,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2639 gboolean typing) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2640
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2641 struct mwIdBlock *idb;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2642 idb = mwConversation_getTarget(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2643
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35378
diff changeset
2644 purple_serv_got_typing(pd->gc, idb->user, 0,
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34642
diff changeset
2645 typing? PURPLE_IM_TYPING: PURPLE_IM_NOT_TYPING);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2646 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2647
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2648
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2649 static void im_recv_html(struct mwConversation *conv,
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2650 struct mwPurpleProtocolData *pd,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2651 const char *msg) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2652 struct mwIdBlock *idb;
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2653 char *t1, *t2;
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2654 const char *t;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2655
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2656 idb = mwConversation_getTarget(conv);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2657
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2658 /* ensure we're receiving UTF8 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2659 t1 = purple_utf8_try_convert(msg);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2660 t = t1? t1: msg;
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2661
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2662 /* convert entities to UTF8 so they'll log correctly */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2663 t2 = purple_utf8_ncr_decode(t);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2664 t = t2? t2: t;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2665
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35378
diff changeset
2666 purple_serv_got_im(pd->gc, idb->user, t, 0, time(NULL));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2667
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2668 g_free(t1);
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2669 g_free(t2);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2670 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2671
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2672
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2673 static void im_recv_subj(struct mwConversation *conv,
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2674 struct mwPurpleProtocolData *pd,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2675 const char *subj) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2676
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2677 /** @todo somehow indicate receipt of a conversation subject. It
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2678 would also be nice if we added a /topic command for the
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2679 protocol */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2680 ;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2681 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2682
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2683
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2684 /** generate "cid:908@20582notesbuddy" from "<908@20582notesbuddy>" */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2685 static char *make_cid(const char *cid) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2686 gsize n;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2687 char *c, *d;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2688
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2689 g_return_val_if_fail(cid != NULL, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2690
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2691 n = strlen(cid);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2692 g_return_val_if_fail(n > 2, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2693
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2694 c = g_strndup(cid+1, n-2);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2695 d = g_strdup_printf("cid:%s", c);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2696
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2697 g_free(c);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2698 return d;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2699 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2700
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2701
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2702 static void im_recv_mime(struct mwConversation *conv,
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2703 struct mwPurpleProtocolData *pd,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2704 const char *data) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2705
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2706 GHashTable *img_by_cid;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2707
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2708 GString *str;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2709
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2710 PurpleMimeDocument *doc;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17157
diff changeset
2711 GList *parts;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2712
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
2713 img_by_cid = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2714
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2715 /* don't want the contained string to ever be NULL */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2716 str = g_string_new("");
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2717
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2718 doc = purple_mime_document_parse(data);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2719
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2720 /* handle all the MIME parts */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2721 parts = purple_mime_document_get_parts(doc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2722 for(; parts; parts = parts->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2723 PurpleMimePart *part = parts->data;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2724 const char *type;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2725
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2726 type = purple_mime_part_get_field(part, "content-type");
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2727 DEBUG_INFO("MIME part Content-Type: %s\n", NSTR(type));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2728
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2729 if(! type) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2730 ; /* feh */
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2731
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2732 } else if(purple_str_has_prefix(type, "image")) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2733 /* put images into the image store */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2734
11183
be87fe695c93 [gaim-migrate @ 13295]
Mark Doliner <markdoliner@pidgin.im>
parents: 11133
diff changeset
2735 guchar *d_dat;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2736 gsize d_len;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2737 char *cid;
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
2738 PurpleImage *image;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2739
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2740 /* obtain and unencode the data */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2741 purple_mime_part_get_data_decoded(part, &d_dat, &d_len);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2742
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2743 /* look up the content id */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2744 cid = (char *) purple_mime_part_get_field(part, "Content-ID");
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2745 cid = make_cid(cid);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2746
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2747 /* add image to the purple image store */
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
2748 image = purple_image_new_from_data(d_dat, d_len);
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
2749 purple_image_set_friendly_filename(image, cid);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2750
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2751 /* map the cid to the image store identifier */
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
2752 g_hash_table_insert(img_by_cid, cid, image);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2753 } else if(purple_str_has_prefix(type, "text")) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2754
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2755 /* concatenate all the text parts together */
11183
be87fe695c93 [gaim-migrate @ 13295]
Mark Doliner <markdoliner@pidgin.im>
parents: 11133
diff changeset
2756 guchar *data;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2757 gsize len;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2758
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2759 purple_mime_part_get_data_decoded(part, &data, &len);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2760 g_string_append(str, (const char *)data);
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
2761 g_free(data);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2762 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2763 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2764
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2765 purple_mime_document_free(doc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2766
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2767 /* @todo should put this in its own function */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2768 { /* replace each IMG tag's SRC attribute with an ID attribute. This
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2769 actually modifies the contents of str */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2770 GData *attribs;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2771 char *start, *end;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2772 char *tmp = str->str;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2773
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2774 while(*tmp && purple_markup_find_tag("img", tmp, (const char **) &start,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2775 (const char **) &end, &attribs)) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2776
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2777 char *alt, *align, *border, *src;
13580
5cf462f3bae1 [gaim-migrate @ 15961]
Christopher O'Brien <siege@pidgin.im>
parents: 13296
diff changeset
2778 int img = 0;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2779
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2780 alt = g_datalist_get_data(&attribs, "alt");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2781 align = g_datalist_get_data(&attribs, "align");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2782 border = g_datalist_get_data(&attribs, "border");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2783 src = g_datalist_get_data(&attribs, "src");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2784
13580
5cf462f3bae1 [gaim-migrate @ 15961]
Christopher O'Brien <siege@pidgin.im>
parents: 13296
diff changeset
2785 if(src)
5cf462f3bae1 [gaim-migrate @ 15961]
Christopher O'Brien <siege@pidgin.im>
parents: 13296
diff changeset
2786 img = GPOINTER_TO_INT(g_hash_table_lookup(img_by_cid, src));
5cf462f3bae1 [gaim-migrate @ 15961]
Christopher O'Brien <siege@pidgin.im>
parents: 13296
diff changeset
2787
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2788 if(img) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2789 GString *atstr;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2790 gsize len = (end - start);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2791 gsize mov;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2792
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2793 atstr = g_string_new("");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2794 if(alt) g_string_append_printf(atstr, " alt=\"%s\"", alt);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2795 if(align) g_string_append_printf(atstr, " align=\"%s\"", align);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2796 if(border) g_string_append_printf(atstr, " border=\"%s\"", border);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2797
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
2798 mov = g_snprintf(start, len, "<img src=\"" PURPLE_IMAGE_STORE_PROTOCOL
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
2799 "%u\"%s", img, atstr->str);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2800 while(mov < len) start[mov++] = ' ';
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2801
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2802 g_string_free(atstr, TRUE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2803 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2804
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2805 g_datalist_clear(&attribs);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2806 tmp = end + 1;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2807 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2808 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2809
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
2810 im_recv_html(conv, pd, str->str);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2811
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2812 g_string_free(str, TRUE);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2813
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2814 /* clean up the cid table */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2815 g_hash_table_destroy(img_by_cid);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2816 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2817
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2818
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2819 static void mw_conversation_recv(struct mwConversation *conv,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2820 enum mwImSendType type,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2821 gconstpointer msg) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2822 struct mwServiceIm *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2823 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2824 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2825
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2826 srvc = mwConversation_getService(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2827 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2828 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2829
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2830 switch(type) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2831 case mwImSend_PLAIN:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2832 im_recv_text(conv, pd, msg);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2833 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2834
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2835 case mwImSend_TYPING:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2836 im_recv_typing(conv, pd, !! msg);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2837 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2838
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2839 case mwImSend_HTML:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2840 im_recv_html(conv, pd, msg);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2841 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2842
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2843 case mwImSend_SUBJECT:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2844 im_recv_subj(conv, pd, msg);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2845 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2846
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2847 case mwImSend_MIME:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2848 im_recv_mime(conv, pd, msg);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2849 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2850
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2851 default:
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2852 DEBUG_INFO("conversation received strange type, 0x%04x\n", type);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2853 ; /* erm... */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2854 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2855 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2856
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2857
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2858 static void mw_place_invite(struct mwConversation *conv,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2859 const char *message,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2860 const char *title, const char *name) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2861 struct mwServiceIm *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2862 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2863 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2864
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2865 struct mwIdBlock *idb;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2866 GHashTable *ht;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2867
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2868 srvc = mwConversation_getService(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2869 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2870 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2871
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2872 idb = mwConversation_getTarget(conv);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
2873
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2874 ht = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2875 g_hash_table_insert(ht, CHAT_KEY_CREATOR, g_strdup(idb->user));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2876 g_hash_table_insert(ht, CHAT_KEY_NAME, g_strdup(name));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2877 g_hash_table_insert(ht, CHAT_KEY_TOPIC, g_strdup(title));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2878 g_hash_table_insert(ht, CHAT_KEY_INVITE, g_strdup(message));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2879 g_hash_table_insert(ht, CHAT_KEY_IS_PLACE, g_strdup("")); /* ugh */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2880
12742
88e624a344cb [gaim-migrate @ 15089]
Christopher O'Brien <siege@pidgin.im>
parents: 12735
diff changeset
2881 if(! title) title = "(no title)";
88e624a344cb [gaim-migrate @ 15089]
Christopher O'Brien <siege@pidgin.im>
parents: 12735
diff changeset
2882 if(! message) message = "(no message)";
35501
602747bb4af9 Fix duplicate prefixes
Ankit Vani <a@nevitus.org>
parents: 35499
diff changeset
2883 purple_serv_got_chat_invite(pd->gc, title, idb->user, message, ht);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2884
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2885 mwConversation_close(conv, ERR_SUCCESS);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2886 mwConversation_free(conv);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2887 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2888
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2889
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2890 static void mw_im_clear(struct mwServiceIm *srvc) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2891 ;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2892 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2893
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2894
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2895 static struct mwImHandler mw_im_handler = {
17153
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2896 mw_conversation_opened,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2897 mw_conversation_closed,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2898 mw_conversation_recv,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2899 mw_place_invite,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2900 mw_im_clear,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2901 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2902
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2903
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2904 static struct mwServiceIm *mw_srvc_im_new(struct mwSession *s) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2905 struct mwServiceIm *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2906 srvc = mwServiceIm_new(s, &mw_im_handler);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2907 mwServiceIm_setClientType(srvc, mwImClient_NOTESBUDDY);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2908 return srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2909 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2910
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
2911
34622
753f46dd000f Global replace - renamed functions and types according to GObject-based PurpleConversation API
Ankit Vani <a@nevitus.org>
parents: 34578
diff changeset
2912 /* The following helps us relate a mwPlace to a PurpleChatConversation in the
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2913 various forms by which either may be indicated. Uses some of
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2914 the similar macros from the conference service above */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2915
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2916 #define PLACE_TO_ID(place) (GPOINTER_TO_INT(place))
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2917 #define ID_TO_PLACE(pd, id) (place_find_by_id((pd), (id)))
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2918
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2919 #define CHAT_TO_PLACE(pd, chat) (ID_TO_PLACE((pd), CHAT_TO_ID(chat)))
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2920 #define PLACE_TO_CHAT(place) (ID_TO_CHAT(PLACE_TO_ID(place)))
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2921
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2922
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2923 static struct mwPlace *
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2924 place_find_by_id(struct mwPurpleProtocolData *pd, int id) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2925 struct mwServicePlace *srvc = pd->srvc_place;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2926 struct mwPlace *place = NULL;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2927 GList *l;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2928
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2929 l = (GList *) mwServicePlace_getPlaces(srvc);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2930 for(; l; l = l->next) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2931 struct mwPlace *p = l->data;
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2932 PurpleChatConversation *h = mwPlace_getClientData(p);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2933
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2934 if(CHAT_TO_ID(h) == id) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2935 place = p;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2936 break;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2937 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2938 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2939
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2940 return place;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2941 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2942
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2944 static void mw_place_opened(struct mwPlace *place) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2945 struct mwServicePlace *srvc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2946 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2947 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2948 PurpleConnection *gc;
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2949 PurpleChatConversation *gconf;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2950
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2951 GList *members, *l;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2952
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2953 const char *n = mwPlace_getName(place);
12742
88e624a344cb [gaim-migrate @ 15089]
Christopher O'Brien <siege@pidgin.im>
parents: 12735
diff changeset
2954 const char *t = mwPlace_getTitle(place);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2955
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2956 srvc = mwPlace_getService(place);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2957 session = mwService_getSession(MW_SERVICE(srvc));
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2958 pd = mwSession_getClientData(session);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2959 gc = pd->gc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2960
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2961 members = mwPlace_getMembers(place);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2962
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2963 DEBUG_INFO("place %s opened, %u initial members\n",
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2964 NSTR(n), g_list_length(members));
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2965
12742
88e624a344cb [gaim-migrate @ 15089]
Christopher O'Brien <siege@pidgin.im>
parents: 12735
diff changeset
2966 if(! t) t = "(no title)";
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35378
diff changeset
2967 gconf = purple_serv_got_joined_chat(gc, PLACE_TO_ID(place), t);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2968
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2969 mwPlace_setClientData(place, gconf, NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2970
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2971 for(l = members; l; l = l->next) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2972 struct mwIdBlock *idb = l->data;
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
2973 purple_chat_conversation_add_user(gconf, idb->user,
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34642
diff changeset
2974 NULL, PURPLE_CHAT_USER_NONE, FALSE);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2975 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2976 g_list_free(members);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2977 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2978
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2979
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2980 static void mw_place_closed(struct mwPlace *place, guint32 code) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2981 struct mwServicePlace *srvc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2982 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
2983 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
2984 PurpleConnection *gc;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2985
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2986 const char *n = mwPlace_getName(place);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2987 char *msg = mwError(code);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2988
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2989 DEBUG_INFO("place %s closed, 0x%08x\n", NSTR(n), code);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2990
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2991 srvc = mwPlace_getService(place);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2992 session = mwService_getSession(MW_SERVICE(srvc));
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2993 pd = mwSession_getClientData(session);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2994 gc = pd->gc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2995
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35378
diff changeset
2996 purple_serv_got_chat_left(gc, PLACE_TO_ID(place));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
2997
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
2998 purple_notify_error(gc, _("Place Closed"), NULL, msg,
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
2999 purple_request_cpar_from_connection(gc));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3000 g_free(msg);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3001 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3002
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3003
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3004 static void mw_place_peerJoined(struct mwPlace *place,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3005 const struct mwIdBlock *peer) {
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3006 PurpleChatConversation *gconf;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3007
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3008 const char *n = mwPlace_getName(place);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3009
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3010 DEBUG_INFO("%s joined place %s\n", NSTR(peer->user), NSTR(n));
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3011
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3012 gconf = mwPlace_getClientData(place);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3013 g_return_if_fail(gconf != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3014
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3015 purple_chat_conversation_add_user(gconf, peer->user,
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34642
diff changeset
3016 NULL, PURPLE_CHAT_USER_NONE, TRUE);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3017 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3018
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3019
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3020 static void mw_place_peerParted(struct mwPlace *place,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3021 const struct mwIdBlock *peer) {
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3022 PurpleChatConversation *gconf;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3023
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3024 const char *n = mwPlace_getName(place);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3025
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3026 DEBUG_INFO("%s left place %s\n", NSTR(peer->user), NSTR(n));
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3027
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3028 gconf = mwPlace_getClientData(place);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3029 g_return_if_fail(gconf != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3030
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
3031 purple_chat_conversation_remove_user(gconf, peer->user, NULL);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3032 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3033
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3034
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3035 static void mw_place_peerSetAttribute(struct mwPlace *place,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3036 const struct mwIdBlock *peer,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3037 guint32 attr, struct mwOpaque *o) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3038 ;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3039 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3040
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3041
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3042 static void mw_place_peerUnsetAttribute(struct mwPlace *place,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3043 const struct mwIdBlock *peer,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3044 guint32 attr) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3045 ;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3046 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3047
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3048
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3049 static void mw_place_message(struct mwPlace *place,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3050 const struct mwIdBlock *who,
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3051 const char *msg) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3052 struct mwServicePlace *srvc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3053 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3054 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3055 PurpleConnection *gc;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3056 char *esc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3057
12863
535f2e11db82 [gaim-migrate @ 15214]
Christopher O'Brien <siege@pidgin.im>
parents: 12830
diff changeset
3058 if(! msg) return;
535f2e11db82 [gaim-migrate @ 15214]
Christopher O'Brien <siege@pidgin.im>
parents: 12830
diff changeset
3059
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3060 srvc = mwPlace_getService(place);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3061 session = mwService_getSession(MW_SERVICE(srvc));
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3062 pd = mwSession_getClientData(session);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3063 gc = pd->gc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3064
12864
072fcb25d27b [gaim-migrate @ 15215]
Christopher O'Brien <siege@pidgin.im>
parents: 12863
diff changeset
3065 esc = g_markup_escape_text(msg, -1);
36092
cf0a11121049 Fix message flags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36089
diff changeset
3066 purple_serv_got_chat_in(gc, PLACE_TO_ID(place), who->user,
cf0a11121049 Fix message flags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36089
diff changeset
3067 PURPLE_MESSAGE_RECV, esc, time(NULL));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3068 g_free(esc);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3069 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3070
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3071
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3072 static void mw_place_clear(struct mwServicePlace *srvc) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3073 ;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3074 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3075
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3076
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3077 static struct mwPlaceHandler mw_place_handler = {
17153
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
3078 mw_place_opened,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
3079 mw_place_closed,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
3080 mw_place_peerJoined,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
3081 mw_place_peerParted,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
3082 mw_place_peerSetAttribute,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
3083 mw_place_peerUnsetAttribute,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
3084 mw_place_message,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
3085 mw_place_clear,
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3086 };
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3087
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3088
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3089 static struct mwServicePlace *mw_srvc_place_new(struct mwSession *s) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3090 struct mwServicePlace *srvc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3091 srvc = mwServicePlace_new(s, &mw_place_handler);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3092 return srvc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3093 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3094
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3095
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3096 static struct mwServiceResolve *mw_srvc_resolve_new(struct mwSession *s) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3097 struct mwServiceResolve *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3098 srvc = mwServiceResolve_new(s);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3099 return srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3100 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3101
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3102
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3103 static struct mwServiceStorage *mw_srvc_store_new(struct mwSession *s) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3104 struct mwServiceStorage *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3105 srvc = mwServiceStorage_new(s);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3106 return srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3107 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3108
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3109
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3110 /** allocate and associate a mwPurpleProtocolData with a PurpleConnection */
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3111 static struct mwPurpleProtocolData *mwPurpleProtocolData_new(PurpleConnection *gc) {
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3112 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3113
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3114 g_return_val_if_fail(gc != NULL, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3115
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3116 pd = g_new0(struct mwPurpleProtocolData, 1);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3117 pd->gc = gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3118 pd->session = mwSession_new(&mw_session_handler);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3119 pd->srvc_aware = mw_srvc_aware_new(pd->session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3120 pd->srvc_conf = mw_srvc_conf_new(pd->session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3121 pd->srvc_ft = mw_srvc_ft_new(pd->session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3122 pd->srvc_im = mw_srvc_im_new(pd->session);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3123 pd->srvc_place = mw_srvc_place_new(pd->session);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3124 pd->srvc_resolve = mw_srvc_resolve_new(pd->session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3125 pd->srvc_store = mw_srvc_store_new(pd->session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3126 pd->group_list_map = g_hash_table_new(g_direct_hash, g_direct_equal);
34529
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
3127 pd->sock_buf = purple_circular_buffer_new(0);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3128
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3129 mwSession_addService(pd->session, MW_SERVICE(pd->srvc_aware));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3130 mwSession_addService(pd->session, MW_SERVICE(pd->srvc_conf));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3131 mwSession_addService(pd->session, MW_SERVICE(pd->srvc_ft));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3132 mwSession_addService(pd->session, MW_SERVICE(pd->srvc_im));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3133 mwSession_addService(pd->session, MW_SERVICE(pd->srvc_place));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3134 mwSession_addService(pd->session, MW_SERVICE(pd->srvc_resolve));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3135 mwSession_addService(pd->session, MW_SERVICE(pd->srvc_store));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3136
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3137 mwSession_addCipher(pd->session, mwCipher_new_RC2_40(pd->session));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3138 mwSession_addCipher(pd->session, mwCipher_new_RC2_128(pd->session));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3139
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3140 mwSession_setClientData(pd->session, pd, NULL);
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3141 purple_connection_set_protocol_data(gc, pd);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3142
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3143 return pd;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3144 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3145
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3146
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3147 static void mwPurpleProtocolData_free(struct mwPurpleProtocolData *pd) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3148 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3149
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3150 purple_connection_set_protocol_data(pd->gc, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3151
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3152 mwSession_removeService(pd->session, mwService_AWARE);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3153 mwSession_removeService(pd->session, mwService_CONFERENCE);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3154 mwSession_removeService(pd->session, mwService_FILE_TRANSFER);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3155 mwSession_removeService(pd->session, mwService_IM);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3156 mwSession_removeService(pd->session, mwService_PLACE);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3157 mwSession_removeService(pd->session, mwService_RESOLVE);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3158 mwSession_removeService(pd->session, mwService_STORAGE);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3159
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3160 mwService_free(MW_SERVICE(pd->srvc_aware));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3161 mwService_free(MW_SERVICE(pd->srvc_conf));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3162 mwService_free(MW_SERVICE(pd->srvc_ft));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3163 mwService_free(MW_SERVICE(pd->srvc_im));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3164 mwService_free(MW_SERVICE(pd->srvc_place));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3165 mwService_free(MW_SERVICE(pd->srvc_resolve));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3166 mwService_free(MW_SERVICE(pd->srvc_store));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3167
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3168 mwCipher_free(mwSession_getCipher(pd->session, mwCipher_RC2_40));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3169 mwCipher_free(mwSession_getCipher(pd->session, mwCipher_RC2_128));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3170
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3171 mwSession_free(pd->session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3172
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3173 g_hash_table_destroy(pd->group_list_map);
34529
68cf25486001 GObjectify PurpleCircBuffer as PurpleCircularBuffer (from gobjectification branch)
Ankit Vani <a@nevitus.org>
parents: 34148
diff changeset
3174 g_object_unref(G_OBJECT(pd->sock_buf));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3175
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3176 g_free(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3177 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3178
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3179
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3180 static const char *mw_protocol_list_icon(PurpleAccount *a, PurpleBuddy *b) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3181 /* my little green dude is a chopped up version of the aim running
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3182 guy. First, cut off the head and store someplace safe. Then,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3183 take the left-half side of the body and throw it away. Make a
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3184 copy of the remaining body, and flip it horizontally. Now attach
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3185 the two pieces into an X shape, and drop the head back on the
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3186 top, being careful to center it. Then, just change the color
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3187 saturation to bring the red down a bit, and voila! */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3188
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3189 /* then, throw all of that away and use sodipodi to make a new
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3190 icon. You know, LIKE A REAL MAN. */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3191
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3192 return "meanwhile";
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3193 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3194
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3195
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3196 static const char* mw_protocol_list_emblem(PurpleBuddy *b)
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3197 {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3198 if(buddy_is_external(b))
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3199 return "external";
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3200
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
3201 return NULL;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3202 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3203
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3204
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3205 static char *mw_protocol_status_text(PurpleBuddy *b) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3206 PurpleConnection *gc;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3207 struct mwPurpleProtocolData *pd;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3208 struct mwAwareIdBlock t = { mwAware_USER, (char *)purple_buddy_get_name(b), NULL };
19586
21a91bf371dd Fix crashing when the sametime account disconnects and we update the conv. window infopanel. Fixes #2762.
Daniel Atallah <datallah@pidgin.im>
parents: 18861
diff changeset
3209 const char *ret = NULL;
21a91bf371dd Fix crashing when the sametime account disconnects and we update the conv. window infopanel. Fixes #2762.
Daniel Atallah <datallah@pidgin.im>
parents: 18861
diff changeset
3210
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3211 if ((gc = purple_account_get_connection(purple_buddy_get_account(b)))
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3212 && (pd = purple_connection_get_protocol_data(gc)))
19586
21a91bf371dd Fix crashing when the sametime account disconnects and we update the conv. window infopanel. Fixes #2762.
Daniel Atallah <datallah@pidgin.im>
parents: 18861
diff changeset
3213 ret = mwServiceAware_getText(pd->srvc_aware, &t);
21a91bf371dd Fix crashing when the sametime account disconnects and we update the conv. window infopanel. Fixes #2762.
Daniel Atallah <datallah@pidgin.im>
parents: 18861
diff changeset
3214
18861
cdbebb5a39c3 Fixes Ticket #1707 Crash with invalid UTF-8 status message from other Sametime client
Sean Egan <seanegan@pidgin.im>
parents: 18190
diff changeset
3215 return (ret && g_utf8_validate(ret, -1, NULL)) ? g_markup_escape_text(ret, -1): NULL;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3216 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3217
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3218
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3219 static const char *status_text(PurpleBuddy *b) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3220 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3221 PurpleStatus *status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3222
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3223 presence = purple_buddy_get_presence(b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3224 status = purple_presence_get_active_status(presence);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3225
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3226 return purple_status_get_name(status);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3227 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3228
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3229
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3230 static gboolean user_supports(struct mwServiceAware *srvc,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3231 const char *who, guint32 feature) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3232
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3233 const struct mwAwareAttribute *attr;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3234 struct mwAwareIdBlock idb = { mwAware_USER, (char *) who, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3235
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3236 attr = mwServiceAware_getAttribute(srvc, &idb, feature);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3237 return (attr != NULL) && mwAwareAttribute_asBoolean(attr);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3238 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3239
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3240
12422
53fba178cadf [gaim-migrate @ 14729]
Richard Laager <rlaager@pidgin.im>
parents: 12312
diff changeset
3241 static char *user_supports_text(struct mwServiceAware *srvc, const char *who) {
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3242 const char *feat[] = {NULL, NULL, NULL, NULL, NULL};
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3243 const char **f = feat;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3244
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3245 if(user_supports(srvc, who, mwAttribute_AV_PREFS_SET)) {
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3246 gboolean mic, speak, video;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3247
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3248 mic = user_supports(srvc, who, mwAttribute_MICROPHONE);
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3249 speak = user_supports(srvc, who, mwAttribute_SPEAKERS);
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3250 video = user_supports(srvc, who, mwAttribute_VIDEO_CAMERA);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3251
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3252 if(mic) *f++ = _("Microphone");
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3253 if(speak) *f++ = _("Speakers");
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3254 if(video) *f++ = _("Video Camera");
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3255 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3256
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3257 if(user_supports(srvc, who, mwAttribute_FILE_TRANSFER))
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3258 *f++ = _("File Transfer");
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3259
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3260 return (*feat)? g_strjoinv(", ", (char **)feat): NULL;
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3261 /* jenni loves siege */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3262 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3263
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3264
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3265 static void mw_protocol_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3266 PurpleConnection *gc;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3267 struct mwPurpleProtocolData *pd = NULL;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3268 struct mwAwareIdBlock idb = { mwAware_USER, (char *)purple_buddy_get_name(b), NULL };
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3269
19586
21a91bf371dd Fix crashing when the sametime account disconnects and we update the conv. window infopanel. Fixes #2762.
Daniel Atallah <datallah@pidgin.im>
parents: 18861
diff changeset
3270 const char *message = NULL;
12953
cb41397f42d4 [gaim-migrate @ 15306]
Richard Laager <rlaager@pidgin.im>
parents: 12952
diff changeset
3271 const char *status;
12954
a0f02cc2e803 [gaim-migrate @ 15307]
Richard Laager <rlaager@pidgin.im>
parents: 12953
diff changeset
3272 char *tmp;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3273
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3274 if ((gc = purple_account_get_connection(purple_buddy_get_account(b)))
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3275 && (pd = purple_connection_get_protocol_data(gc)))
19586
21a91bf371dd Fix crashing when the sametime account disconnects and we update the conv. window infopanel. Fixes #2762.
Daniel Atallah <datallah@pidgin.im>
parents: 18861
diff changeset
3276 message = mwServiceAware_getText(pd->srvc_aware, &idb);
21a91bf371dd Fix crashing when the sametime account disconnects and we update the conv. window infopanel. Fixes #2762.
Daniel Atallah <datallah@pidgin.im>
parents: 18861
diff changeset
3277
12953
cb41397f42d4 [gaim-migrate @ 15306]
Richard Laager <rlaager@pidgin.im>
parents: 12952
diff changeset
3278 status = status_text(b);
cb41397f42d4 [gaim-migrate @ 15306]
Richard Laager <rlaager@pidgin.im>
parents: 12952
diff changeset
3279
18861
cdbebb5a39c3 Fixes Ticket #1707 Crash with invalid UTF-8 status message from other Sametime client
Sean Egan <seanegan@pidgin.im>
parents: 18190
diff changeset
3280 if(message != NULL && g_utf8_validate(message, -1, NULL) && purple_utf8_strcasecmp(status, message)) {
32162
cf848cd25330 Use purple_notify_user_info_add_pair_plaintext in some places where we
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
3281 purple_notify_user_info_add_pair_plaintext(user_info, status, message);
12954
a0f02cc2e803 [gaim-migrate @ 15307]
Richard Laager <rlaager@pidgin.im>
parents: 12953
diff changeset
3282
a0f02cc2e803 [gaim-migrate @ 15307]
Richard Laager <rlaager@pidgin.im>
parents: 12953
diff changeset
3283 } else {
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
3284 purple_notify_user_info_add_pair_plaintext(user_info, _("Status"), status);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3285 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3286
19586
21a91bf371dd Fix crashing when the sametime account disconnects and we update the conv. window infopanel. Fixes #2762.
Daniel Atallah <datallah@pidgin.im>
parents: 18861
diff changeset
3287 if(full && pd != NULL) {
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3288 tmp = user_supports_text(pd->srvc_aware, purple_buddy_get_name(b));
12950
167358332f4b [gaim-migrate @ 15303]
Christopher O'Brien <siege@pidgin.im>
parents: 12943
diff changeset
3289 if(tmp) {
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
3290 purple_notify_user_info_add_pair_plaintext(user_info, _("Supports"), tmp);
12953
cb41397f42d4 [gaim-migrate @ 15306]
Richard Laager <rlaager@pidgin.im>
parents: 12952
diff changeset
3291 g_free(tmp);
12950
167358332f4b [gaim-migrate @ 15303]
Christopher O'Brien <siege@pidgin.im>
parents: 12943
diff changeset
3292 }
167358332f4b [gaim-migrate @ 15303]
Christopher O'Brien <siege@pidgin.im>
parents: 12943
diff changeset
3293
167358332f4b [gaim-migrate @ 15303]
Christopher O'Brien <siege@pidgin.im>
parents: 12943
diff changeset
3294 if(buddy_is_external(b)) {
32162
cf848cd25330 Use purple_notify_user_info_add_pair_plaintext in some places where we
Mark Doliner <markdoliner@pidgin.im>
parents: 32157
diff changeset
3295 purple_notify_user_info_add_pair_plaintext(user_info, NULL, _("External User"));
12950
167358332f4b [gaim-migrate @ 15303]
Christopher O'Brien <siege@pidgin.im>
parents: 12943
diff changeset
3296 }
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3297 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3298 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3299
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3300 static GList *mw_protocol_status_types(PurpleAccount *acct)
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3301 {
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3302 GList *types = NULL;
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3303 PurpleStatusType *type;
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3304
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3305 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3306 MW_STATE_ACTIVE, NULL, TRUE, TRUE, FALSE,
35005
bff56dfca65d Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents: 34955
diff changeset
3307 MW_STATE_MESSAGE, _("Message"), purple_value_new(G_TYPE_STRING),
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3308 NULL);
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3309 types = g_list_append(types, type);
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3310
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3311 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3312 MW_STATE_AWAY, NULL, TRUE, TRUE, FALSE,
35005
bff56dfca65d Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents: 34955
diff changeset
3313 MW_STATE_MESSAGE, _("Message"), purple_value_new(G_TYPE_STRING),
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3314 NULL);
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3315 types = g_list_append(types, type);
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3316
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3317 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3318 MW_STATE_BUSY, _("Do Not Disturb"), TRUE, TRUE, FALSE,
35005
bff56dfca65d Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents: 34955
diff changeset
3319 MW_STATE_MESSAGE, _("Message"), purple_value_new(G_TYPE_STRING),
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3320 NULL);
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3321 types = g_list_append(types, type);
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3322
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3323 type = purple_status_type_new_full(PURPLE_STATUS_OFFLINE,
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3324 MW_STATE_OFFLINE, NULL, TRUE, TRUE, FALSE);
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3325 types = g_list_append(types, type);
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3326
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25854
diff changeset
3327 return types;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3328 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3329
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3330
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3331 static void conf_create_prompt_cancel(PurpleBuddy *buddy,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3332 PurpleRequestFields *fields) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3333 ; /* nothing to do */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3334 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3335
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3336
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3337 static void conf_create_prompt_join(PurpleBuddy *buddy,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3338 PurpleRequestFields *fields) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3339 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3340 PurpleConnection *gc;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3341 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3342 struct mwServiceConference *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3343
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3344 PurpleRequestField *f;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3345
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3346 const char *topic, *invite;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3347 struct mwConference *conf;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3348 struct mwIdBlock idb = { NULL, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3349
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3350 acct = purple_buddy_get_account(buddy);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3351 gc = purple_account_get_connection(acct);
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3352 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3353 srvc = pd->srvc_conf;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3354
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3355 f = purple_request_fields_get_field(fields, CHAT_KEY_TOPIC);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3356 topic = purple_request_field_string_get_value(f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3357
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3358 f = purple_request_fields_get_field(fields, CHAT_KEY_INVITE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3359 invite = purple_request_field_string_get_value(f);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3360
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3361 conf = mwConference_new(srvc, topic);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3362 mwConference_open(conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3363
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3364 idb.user = (char *)purple_buddy_get_name(buddy);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3365 mwConference_invite(conf, &idb, invite);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3366 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3367
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3368
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3369 static void blist_menu_conf_create(PurpleBuddy *buddy, const char *msg) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3370
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3371 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3372 PurpleRequestFieldGroup *g;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3373 PurpleRequestField *f;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3374
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3375 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3376 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3377
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3378 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3379 const char *msgB;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3380 char *msg1;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3381
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3382 g_return_if_fail(buddy != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3383
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3384 acct = purple_buddy_get_account(buddy);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3385 g_return_if_fail(acct != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3386
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3387 gc = purple_account_get_connection(acct);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3388 g_return_if_fail(gc != NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3389
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3390 fields = purple_request_fields_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3391
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3392 g = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3393 purple_request_fields_add_group(fields, g);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3394
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3395 f = purple_request_field_string_new(CHAT_KEY_TOPIC, _("Topic"), NULL, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3396 purple_request_field_group_add_field(g, f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3397
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3398 f = purple_request_field_string_new(CHAT_KEY_INVITE, _("Message"), msg, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3399 purple_request_field_group_add_field(g, f);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3400
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3401 msgA = _("Create conference with user");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3402 msgB = _("Please enter a topic for the new conference, and an invitation"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3403 " message to be sent to %s");
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3404 msg1 = g_strdup_printf(msgB, purple_buddy_get_name(buddy));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3405
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3406 purple_request_fields(gc, _("New Conference"),
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3407 msgA, msg1, fields,
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3408 _("Create"), G_CALLBACK(conf_create_prompt_join),
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3409 _("Cancel"), G_CALLBACK(conf_create_prompt_cancel),
34332
876483829700 Request API refactoring: switch purple_request_fields to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34329
diff changeset
3410 purple_request_cpar_from_account(acct),
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3411 buddy);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3412 g_free(msg1);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3413 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3414
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3415
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3416 static void conf_select_prompt_cancel(PurpleBuddy *buddy,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3417 PurpleRequestFields *fields) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3418 ;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3419 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3420
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3421
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3422 static void conf_select_prompt_invite(PurpleBuddy *buddy,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3423 PurpleRequestFields *fields) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3424 PurpleRequestField *f;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17157
diff changeset
3425 GList *l;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3426 const char *msg;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3427
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3428 f = purple_request_fields_get_field(fields, CHAT_KEY_INVITE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3429 msg = purple_request_field_string_get_value(f);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3430
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3431 f = purple_request_fields_get_field(fields, "conf");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3432 l = purple_request_field_list_get_selected(f);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3433
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3434 if(l) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3435 gpointer d = purple_request_field_list_get_data(f, l->data);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3436
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3437 if(GPOINTER_TO_INT(d) == 0x01) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3438 blist_menu_conf_create(buddy, msg);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3439
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3440 } else {
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3441 struct mwIdBlock idb = { (char *)purple_buddy_get_name(buddy), NULL };
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3442 mwConference_invite(d, &idb, msg);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3443 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3444 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3445 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3446
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3447
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3448 static void blist_menu_conf_list(PurpleBuddy *buddy,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3449 GList *confs) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3450
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3451 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3452 PurpleRequestFieldGroup *g;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3453 PurpleRequestField *f;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3454
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3455 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3456 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3457
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3458 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3459 const char *msgB;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3460 char *msg;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3461
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3462 acct = purple_buddy_get_account(buddy);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3463 g_return_if_fail(acct != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3464
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3465 gc = purple_account_get_connection(acct);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3466 g_return_if_fail(gc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3467
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3468 fields = purple_request_fields_new();
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3469
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3470 g = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3471 purple_request_fields_add_group(fields, g);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3472
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3473 f = purple_request_field_list_new("conf", _("Available Conferences"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3474 purple_request_field_list_set_multi_select(f, FALSE);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3475 for(; confs; confs = confs->next) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3476 struct mwConference *c = confs->data;
24900
a19d983918c2 Deprecate purple_request_field_list_add()
Richard Laager <rlaager@pidgin.im>
parents: 24591
diff changeset
3477 purple_request_field_list_add_icon(f, mwConference_getTitle(c), NULL, c);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3478 }
24900
a19d983918c2 Deprecate purple_request_field_list_add()
Richard Laager <rlaager@pidgin.im>
parents: 24591
diff changeset
3479 purple_request_field_list_add_icon(f, _("Create New Conference..."),
a19d983918c2 Deprecate purple_request_field_list_add()
Richard Laager <rlaager@pidgin.im>
parents: 24591
diff changeset
3480 NULL, GINT_TO_POINTER(0x01));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3481 purple_request_field_group_add_field(g, f);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3482
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3483 f = purple_request_field_string_new(CHAT_KEY_INVITE, "Message", NULL, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3484 purple_request_field_group_add_field(g, f);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3485
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3486 msgA = _("Invite user to a conference");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3487 msgB = _("Select a conference from the list below to send an invite to"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3488 " user %s. Select \"Create New Conference\" if you'd like to"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3489 " create a new conference to invite this user to.");
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3490 msg = g_strdup_printf(msgB, purple_buddy_get_name(buddy));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3491
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3492 purple_request_fields(gc, _("Invite to Conference"),
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3493 msgA, msg, fields,
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3494 _("Invite"), G_CALLBACK(conf_select_prompt_invite),
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3495 _("Cancel"), G_CALLBACK(conf_select_prompt_cancel),
34332
876483829700 Request API refactoring: switch purple_request_fields to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34329
diff changeset
3496 purple_request_cpar_from_account(acct),
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3497 buddy);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
3498 g_free(msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3499 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3500
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3501
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3502 static void blist_menu_conf(PurpleBlistNode *node, gpointer data) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3503 PurpleBuddy *buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3504 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3505 PurpleConnection *gc;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3506 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3507 GList *l;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3508
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3509 g_return_if_fail(node != NULL);
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
3510 g_return_if_fail(PURPLE_IS_BUDDY(node));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3511
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
3512 acct = purple_buddy_get_account(buddy);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3513 g_return_if_fail(acct != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3514
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3515 gc = purple_account_get_connection(acct);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3516 g_return_if_fail(gc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3517
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3518 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3519 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3520
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3521 /*
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3522 - get a list of all conferences on this session
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3523 - if none, prompt to create one, and invite buddy to it
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3524 - else, prompt to select a conference or create one
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3525 */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3526
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3527 l = mwServiceConference_getConferences(pd->srvc_conf);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3528 if(l) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3529 blist_menu_conf_list(buddy, l);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3530 g_list_free(l);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3531
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3532 } else {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3533 blist_menu_conf_create(buddy, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3534 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3535 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3536
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3537
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3538 static GList *mw_protocol_blist_node_menu(PurpleBlistNode *node) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3539 GList *l = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3540 PurpleMenuAction *act;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3541
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
3542 if(! PURPLE_IS_BUDDY(node))
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3543 return l;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3544
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3545 l = g_list_append(l, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3546
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3547 act = purple_menu_action_new(_("Invite to Conference..."),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3548 PURPLE_CALLBACK(blist_menu_conf), NULL, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3549 l = g_list_append(l, act);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3550
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3551 /** note: this never gets called for a PurpleGroup, have to use the
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3552 blist-node-extended-menu signal for that. The function
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3553 blist_node_menu_cb is assigned to this signal in the function
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3554 services_starting */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3555
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3556 return l;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3557 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3558
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3559
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3560 static GList *mw_protocol_chat_info(PurpleConnection *gc) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3561 GList *l = NULL;
36555
fc17a4351e63 Replaced struct proto_chat_entry with PurpleProtocolChatEntry
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
3562 PurpleProtocolChatEntry *pce;
fc17a4351e63 Replaced struct proto_chat_entry with PurpleProtocolChatEntry
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
3563
fc17a4351e63 Replaced struct proto_chat_entry with PurpleProtocolChatEntry
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
3564 pce = g_new0(PurpleProtocolChatEntry, 1);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3565 pce->label = _("Topic:");
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3566 pce->identifier = CHAT_KEY_TOPIC;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3567 l = g_list_append(l, pce);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3568
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3569 return l;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3570 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3571
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3572
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3573 static GHashTable *mw_protocol_chat_info_defaults(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3574 const char *name) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3575 GHashTable *table;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3576
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3577 g_return_val_if_fail(gc != NULL, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3578
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3579 table = g_hash_table_new_full(g_str_hash, g_str_equal,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3580 NULL, g_free);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3581
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3582 g_hash_table_insert(table, CHAT_KEY_NAME, g_strdup(name));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3583 g_hash_table_insert(table, CHAT_KEY_INVITE, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3584
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3585 return table;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3586 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3587
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3588
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3589 static void mw_protocol_login(PurpleAccount *acct);
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3590
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3591
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3592 static void mw_protocol_login(PurpleAccount *account) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3593 PurpleConnection *gc;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3594 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3595
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3596 char *user, *pass, *host;
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3597 guint port;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3598
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3599 gc = purple_account_get_connection(account);
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3600 pd = mwPurpleProtocolData_new(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3601
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3602 /* while we do support images, the default is to not offer it */
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
3603 purple_connection_set_flags(gc, PURPLE_CONNECTION_FLAG_NO_IMAGES);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3604
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3605 user = g_strdup(purple_account_get_username(account));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3606
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3607 host = strrchr(user, ':');
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3608 if(host) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3609 /* annoying user split from 1.2.0, need to undo it */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3610 *host++ = '\0';
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3611 purple_account_set_string(account, MW_KEY_HOST, host);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3612 purple_account_set_username(account, user);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3613
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3614 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3615 host = (char *) purple_account_get_string(account, MW_KEY_HOST,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3616 MW_PLUGIN_DEFAULT_HOST);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3617 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3618
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3619 if(! host || ! *host) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3620 /* somehow, we don't have a host to connect to. Well, we need one
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3621 to actually continue, so let's ask the user directly. */
25292
5b4e719c5bbb Fix a potential leak "KuSh" discovered using "cppcheck". Fixes #7862.
Daniel Atallah <datallah@pidgin.im>
parents: 25181
diff changeset
3622 g_free(user);
32636
b5255be84952 Fix a mistake I made while manually propagating from im.pidgin.pidgin.2.x.y
Mark Doliner <markdoliner@pidgin.im>
parents: 32635
diff changeset
3623 purple_connection_error(gc,
32049
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
3624 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
3625 _("A server is required to connect this account"));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3626 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3627 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3628
34022
c49f6e9ea27d Make all the prpls build.
Paul Aurich <darkrain42@pidgin.im>
parents: 27635
diff changeset
3629 pass = g_strdup(purple_connection_get_password(gc));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3630 port = purple_account_get_int(account, MW_KEY_PORT, MW_PLUGIN_DEFAULT_PORT);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3631
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3632 DEBUG_INFO("user: '%s'\n", user);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3633 DEBUG_INFO("host: '%s'\n", host);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3634 DEBUG_INFO("port: %u\n", port);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3635
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3636 mwSession_setProperty(pd->session, mwSession_NO_SECRET,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3637 (char *) no_secret, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3638 mwSession_setProperty(pd->session, mwSession_AUTH_USER_ID, user, g_free);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3639 mwSession_setProperty(pd->session, mwSession_AUTH_PASSWORD, pass, g_free);
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3640
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3641 if(purple_account_get_bool(account, MW_KEY_FAKE_IT, FALSE)) {
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3642 guint client, major, minor;
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3643
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3644 /* if we're faking the login, let's also fake the version we're
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3645 reporting. Let's also allow the actual values to be specified */
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3646
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3647 client = purple_account_get_int(account, MW_KEY_CLIENT, mwLogin_BINARY);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3648 major = purple_account_get_int(account, MW_KEY_MAJOR, 0x001e);
21947
3b04dd98ba04 avoid some version blocking servers by updating the major version specified when 'Hide client ID' is specified for an account
Christopher O'Brien <siege@pidgin.im>
parents: 21630
diff changeset
3649 minor = purple_account_get_int(account, MW_KEY_MINOR, 0x196f);
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3650
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3651 DEBUG_INFO("client id: 0x%04x\n", client);
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3652 DEBUG_INFO("client major: 0x%04x\n", major);
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3653 DEBUG_INFO("client minor: 0x%04x\n", minor);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3654
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3655 mwSession_setProperty(pd->session, mwSession_CLIENT_TYPE_ID,
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3656 GUINT_TO_POINTER(client), NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3657
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3658 mwSession_setProperty(pd->session, mwSession_CLIENT_VER_MAJOR,
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3659 GUINT_TO_POINTER(major), NULL);
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3660
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3661 mwSession_setProperty(pd->session, mwSession_CLIENT_VER_MINOR,
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3662 GUINT_TO_POINTER(minor), NULL);
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3663 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3664
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3665 purple_connection_update_progress(gc, _("Connecting"), 1, MW_CONNECT_STEPS);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3666
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3667 if (purple_proxy_connect(gc, account, host, port, connect_cb, pd) == NULL) {
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 31991
diff changeset
3668 purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27361
diff changeset
3669 _("Unable to connect"));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3670 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3671 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3672
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3673
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3674 static void mw_protocol_close(PurpleConnection *gc) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3675 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3676
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3677 g_return_if_fail(gc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3678
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3679 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3680 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3681
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3682 /* get rid of the blist save timeout */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3683 if(pd->save_event) {
38433
361c801c4536 Remove purple_timeout_* function usage
Mike Ruprecht <cmaiku@gmail.com>
parents: 38358
diff changeset
3684 g_source_remove(pd->save_event);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3685 pd->save_event = 0;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3686 blist_store(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3687 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3688
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3689 /* stop the session */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3690 mwSession_stop(pd->session, 0x00);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3691
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3692 /* no longer necessary */
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3693 purple_connection_set_protocol_data(gc, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3694
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3695 /* stop watching the socket */
32683
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
3696 if(pd->inpa) {
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
3697 purple_input_remove(pd->inpa);
5376a35d461a Samtime: Move the "inpa" input watcher into protocol_data.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
3698 pd->inpa = 0;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3699 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3700
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3701 /* clean up the rest */
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3702 mwPurpleProtocolData_free(pd);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3703 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3704
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3705
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21947
diff changeset
3706 static int mw_rand(void) {
12735
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3707 static int seed = 0;
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3708
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3709 /* for diversity, not security. don't touch */
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3710 srand(time(NULL) ^ seed);
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3711 seed = rand();
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3712
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3713 return seed;
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3714 }
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3715
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3716
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3717 /** generates a random-ish content id string */
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21947
diff changeset
3718 static char *im_mime_content_id(void) {
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3719 return g_strdup_printf("%03x@%05xmeanwhile",
12735
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3720 mw_rand() & 0xfff, mw_rand() & 0xfffff);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3721 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3722
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3723
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3724 /** generates a multipart/related content type with a random-ish
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3725 boundary value */
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21947
diff changeset
3726 static char *im_mime_content_type(void) {
12422
53fba178cadf [gaim-migrate @ 14729]
Richard Laager <rlaager@pidgin.im>
parents: 12312
diff changeset
3727 return g_strdup_printf("multipart/related; boundary=related_MW%03x_%04x",
12735
daa5dfe5e65a [gaim-migrate @ 15080]
Christopher O'Brien <siege@pidgin.im>
parents: 12658
diff changeset
3728 mw_rand() & 0xfff, mw_rand() & 0xffff);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3729 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3730
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3731 /** determine content type from contents */
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3732 static gchar *
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3733 im_mime_img_content_type(PurpleImage *img)
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3734 {
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3735 const gchar *mimetype;
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3736
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3737 mimetype = purple_image_get_mimetype(img);
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3738
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3739 if (!mimetype)
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3740 mimetype = "image";
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3741
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3742 return g_strdup_printf("%s; name=\"%s\"", mimetype,
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3743 purple_image_get_friendly_filename(img));
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3744 }
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3745
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3746
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3747 static char *
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3748 im_mime_img_content_disp(PurpleImage *img) {
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3749 return g_strdup_printf("attachment; filename=\"%s\"",
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3750 purple_image_get_friendly_filename(img));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3751 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3752
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3753
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3754 /** turn an IM with embedded images into a multi-part mime document */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3755 static char *im_mime_convert(PurpleConnection *gc,
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
3756 struct mwConversation *conv,
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
3757 const char *message) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3758 GString *str;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3759 PurpleMimeDocument *doc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3760 PurpleMimePart *part;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3761
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3762 GData *attr;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3763 char *tmp, *start, *end;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3764
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3765 str = g_string_new(NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3766
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3767 doc = purple_mime_document_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3768
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3769 purple_mime_document_set_field(doc, "Mime-Version", "1.0");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3770 purple_mime_document_set_field(doc, "Content-Disposition", "inline");
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3771
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3772 tmp = im_mime_content_type();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3773 purple_mime_document_set_field(doc, "Content-Type", tmp);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3774 g_free(tmp);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3775
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3776 tmp = (char *) message;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3777 while(*tmp && purple_markup_find_tag("img", tmp, (const char **) &start,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3778 (const char **) &end, &attr)) {
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3779 gchar *uri;
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3780 PurpleImage *img = NULL;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3781
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3782 gsize len = (start - tmp);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3783
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3784 /* append the in-between-tags text */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3785 if(len) g_string_append_len(str, tmp, len);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3786
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3787 uri = g_datalist_get_data(&attr, "src");
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3788 if (uri)
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3789 img = purple_image_store_get_from_uri(uri);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3790
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3791 if(img) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3792 char *cid;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3793 gpointer data;
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3794 gsize size;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3795
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3796 part = purple_mime_part_new(doc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3797
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3798 data = im_mime_img_content_disp(img);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3799 purple_mime_part_set_field(part, "Content-Disposition", data);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3800 g_free(data);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3801
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
3802 data = im_mime_img_content_type(img);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3803 purple_mime_part_set_field(part, "Content-Type", data);
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
3804 g_free(data);
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
3805
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3806 cid = im_mime_content_id();
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3807 data = g_strdup_printf("<%s>", cid);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3808 purple_mime_part_set_field(part, "Content-ID", data);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3809 g_free(data);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3810
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3811 purple_mime_part_set_field(part, "Content-transfer-encoding", "base64");
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3812
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3813 /* obtain and base64 encode the image data, and put it in the
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3814 mime part */
38298
f0a8f63f9312 rename purple_image_get_size to purple_image_get_data_size and deal with the fallout
Gary Kramlich <grim@reaperworld.com>
parents: 37389
diff changeset
3815 size = purple_image_get_data_size(img);
38341
3da74e727e78 Remove purple_base64_encode/decode() wrappers
Mike Ruprecht <cmaiku@gmail.com>
parents: 38298
diff changeset
3816 data = g_base64_encode(purple_image_get_data(img), size);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3817 purple_mime_part_set_data(part, data);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3818 g_free(data);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3819
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3820 /* append the modified tag */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3821 g_string_append_printf(str, "<img src=\"cid:%s\">", cid);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3822 g_free(cid);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3823
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3824 } else {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3825 /* append the literal image tag, since we couldn't find a
35832
3ade2f38ec3a imgstore: unref sametime
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35501
diff changeset
3826 relative PurpleImage object */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3827 gsize len = (end - start) + 1;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3828 g_string_append_len(str, start, len);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3829 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3830
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3831 g_datalist_clear(&attr);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3832 tmp = end + 1;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3833 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3834
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3835 /* append left-overs */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3836 g_string_append(str, tmp);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3837
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
3838 /* add the text/html part */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3839 part = purple_mime_part_new(doc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3840 purple_mime_part_set_field(part, "Content-Disposition", "inline");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3841
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3842 tmp = purple_utf8_ncr_encode(str->str);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3843 purple_mime_part_set_field(part, "Content-Type", "text/html");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3844 purple_mime_part_set_field(part, "Content-Transfer-Encoding", "7bit");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3845 purple_mime_part_set_data(part, tmp);
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
3846 g_free(tmp);
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
3847
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3848 g_string_free(str, TRUE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3849
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3850 str = g_string_new(NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3851 purple_mime_document_write(doc, str);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3852 tmp = str->str;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3853 g_string_free(str, FALSE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3854
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3855 return tmp;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3856 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3857
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3858
37148
50f361d39a1e Merged default branch
Ankit Vani <a@nevitus.org>
parents: 37146 36098
diff changeset
3859 static int mw_protocol_send_im(PurpleConnection *gc, PurpleMessage *msg) {
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
3860
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
3861 gchar name[1000];
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3862 struct mwPurpleProtocolData *pd;
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
3863 struct mwIdBlock who = { name, NULL };
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3864 struct mwConversation *conv;
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
3865 const gchar *message;
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
3866 PurpleMessageFlags flags;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3867
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3868 g_return_val_if_fail(gc != NULL, 0);
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3869 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3870
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3871 g_return_val_if_fail(pd != NULL, 0);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3872
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
3873 g_strlcpy(name, purple_message_get_recipient(msg), sizeof(name));
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
3874 message = purple_message_get_contents(msg);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
3875 flags = purple_message_get_flags(msg);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
3876
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3877 conv = mwServiceIm_getConversation(pd->srvc_im, &who);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3878
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3879 /* this detection of features to determine how to send the message
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3880 (plain, html, or mime) is flawed because the other end of the
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3881 conversation could close their channel at any time, rendering any
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3882 existing formatting in an outgoing message innapropriate. The end
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3883 result is that it may be possible that the other side of the
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3884 conversation will receive a plaintext message with html contents,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3885 which is bad. I'm not sure how to fix this correctly. */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3886
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
3887 if(strstr(message, "<img ") || strstr(message, "<IMG "))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3888 flags |= PURPLE_MESSAGE_IMAGES;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3889
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3890 if(mwConversation_isOpen(conv)) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3891 char *tmp;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3892 int ret;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3893
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3894 if((flags & PURPLE_MESSAGE_IMAGES) &&
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3895 mwConversation_supports(conv, mwImSend_MIME)) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3896 /* send a MIME message */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3897
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
3898 tmp = im_mime_convert(gc, conv, message);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3899 ret = mwConversation_send(conv, mwImSend_MIME, tmp);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3900 g_free(tmp);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3901
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3902 } else if(mwConversation_supports(conv, mwImSend_HTML)) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3903 /* send an HTML message */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3904
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
3905 char *ncr;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3906 ncr = purple_utf8_ncr_encode(message);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3907 tmp = purple_strdup_withhtml(ncr);
12813
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
3908 g_free(ncr);
6f67cfa0e6a0 [gaim-migrate @ 15161]
Christopher O'Brien <siege@pidgin.im>
parents: 12742
diff changeset
3909
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3910 ret = mwConversation_send(conv, mwImSend_HTML, tmp);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3911 g_free(tmp);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3912
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3913 } else {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3914 /* default to text */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3915 tmp = purple_markup_strip_html(message);
12216
d80739091a63 [gaim-migrate @ 14518]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12166
diff changeset
3916 ret = mwConversation_send(conv, mwImSend_PLAIN, tmp);
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
3917 g_free(tmp);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3918 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3919
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3920 return !ret;
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3921
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3922 } else {
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3923
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3924 /* queue up the message safely as plain text */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
3925 char *tmp = purple_markup_strip_html(message);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3926 convo_queue(conv, mwImSend_PLAIN, tmp);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3927 g_free(tmp);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
3928
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3929 if(! mwConversation_isPending(conv))
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3930 mwConversation_open(conv);
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3931
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
3932 return 1;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3933 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3934 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3935
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3936
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
3937 static unsigned int mw_protocol_send_typing(PurpleConnection *gc,
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3938 const char *name,
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34642
diff changeset
3939 PurpleIMTypingState state) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3940
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
3941 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3942 struct mwIdBlock who = { (char *) name, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3943 struct mwConversation *conv;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3944
13844
835b8f7b3d1d [gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents: 13779
diff changeset
3945 gpointer t = GINT_TO_POINTER(!! state);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3946
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3947 g_return_val_if_fail(gc != NULL, 0);
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
3948 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3949
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3950 g_return_val_if_fail(pd != NULL, 0);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3951
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3952 conv = mwServiceIm_getConversation(pd->srvc_im, &who);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3953
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3954 if(mwConversation_isOpen(conv)) {
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3955 mwConversation_send(conv, mwImSend_TYPING, t);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3956
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34642
diff changeset
3957 } else if((state == PURPLE_IM_TYPING) || (state == PURPLE_IM_TYPED)) {
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3958 /* only open a channel for sending typing notification, not for
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3959 when typing has stopped. There's no point in re-opening a
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3960 channel just to tell someone that this side isn't typing. */
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3961
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3962 convo_queue(conv, mwImSend_TYPING, t);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3963
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3964 if(! mwConversation_isPending(conv)) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3965 mwConversation_open(conv);
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3966 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3967 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3968
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
3969 return 0;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3970 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3971
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
3972
12311
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3973 static const char *mw_client_name(guint16 type) {
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3974 switch(type) {
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3975 case mwLogin_LIB:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3976 return "Lotus Binary Library";
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
3977
12311
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3978 case mwLogin_JAVA_WEB:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3979 return "Lotus Java Client Applet";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3980
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3981 case mwLogin_BINARY:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3982 return "Lotus Sametime Connect";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3983
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3984 case mwLogin_JAVA_APP:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3985 return "Lotus Java Client Application";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3986
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3987 case mwLogin_LINKS:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3988 return "Lotus Sametime Links";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3989
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3990 case mwLogin_NOTES_6_5:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3991 case mwLogin_NOTES_6_5_3:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3992 case mwLogin_NOTES_7_0_beta:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3993 case mwLogin_NOTES_7_0:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3994 return "Lotus Notes Client";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3995
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3996 case mwLogin_ICT:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3997 case mwLogin_ICT_1_7_8_2:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3998 case mwLogin_ICT_SIP:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
3999 return "IBM Community Tools";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4000
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4001 case mwLogin_NOTESBUDDY_4_14:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4002 case mwLogin_NOTESBUDDY_4_15:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4003 case mwLogin_NOTESBUDDY_4_16:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4004 return "Alphaworks NotesBuddy";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4005
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4006 case 0x1305:
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4007 case 0x1306:
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4008 case 0x1307:
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4009 return "Lotus Sametime Connect 7.5";
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4010
12311
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4011 case mwLogin_SANITY:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4012 return "Sanity";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4013
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4014 case mwLogin_ST_PERL:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4015 return "ST-Send-Message";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4016
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4017 case mwLogin_TRILLIAN:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4018 case mwLogin_TRILLIAN_IBM:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4019 return "Trillian";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4020
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4021 case mwLogin_MEANWHILE:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4022 return "Meanwhile";
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4023
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4024 default:
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4025 return NULL;
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4026 }
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4027 }
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4028
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
4029
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4030 static void mw_protocol_get_info(PurpleConnection *gc, const char *who) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4031
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4032 struct mwAwareIdBlock idb = { mwAware_USER, (char *) who, NULL };
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4033
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4034 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4035 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4036 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4037 PurpleNotifyUserInfo *user_info;
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 14976
diff changeset
4038 char *tmp;
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 14976
diff changeset
4039 const char *tmp2;
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4040
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4041 g_return_if_fail(who != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4042 g_return_if_fail(*who != '\0');
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4043
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4044 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4045
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4046 acct = purple_connection_get_account(gc);
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
4047 b = purple_blist_find_buddy(acct, who);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4048 user_info = purple_notify_user_info_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4049
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4050 if(purple_str_has_prefix(who, "@E ")) {
32191
a4668d9dc8d1 Rename purple_notify_user_info_add_pair to
Mark Doliner <markdoliner@pidgin.im>
parents: 32189
diff changeset
4051 purple_notify_user_info_add_pair_html(user_info, _("External User"), NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4052 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4053
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4054 purple_notify_user_info_add_pair_plaintext(user_info, _("User ID"), who);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4055
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4056 if(b) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4057 guint32 type;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4058
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
4059 if(purple_buddy_get_server_alias(b)) {
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4060 /* TODO: Check whether it's correct to call add_pair_html,
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4061 or if we should be using add_pair_plaintext */
32191
a4668d9dc8d1 Rename purple_notify_user_info_add_pair to
Mark Doliner <markdoliner@pidgin.im>
parents: 32189
diff changeset
4062 purple_notify_user_info_add_pair_html(user_info, _("Full Name"), purple_buddy_get_server_alias(b));
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4063 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4064
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4065 type = purple_blist_node_get_int((PurpleBlistNode *) b, BUDDY_KEY_CLIENT);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4066 if(type) {
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4067 tmp2 = mw_client_name(type);
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4068 if (tmp2) {
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4069 purple_notify_user_info_add_pair_plaintext(user_info, _("Last Known Client"), tmp2);
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4070 } else {
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 14976
diff changeset
4071 tmp = g_strdup_printf(_("Unknown (0x%04x)<br>"), type);
32191
a4668d9dc8d1 Rename purple_notify_user_info_add_pair to
Mark Doliner <markdoliner@pidgin.im>
parents: 32189
diff changeset
4072 purple_notify_user_info_add_pair_html(user_info, _("Last Known Client"), tmp);
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4073 g_free(tmp);
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4074 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4075 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4076 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4077
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4078 tmp = user_supports_text(pd->srvc_aware, who);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4079 if(tmp) {
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4080 purple_notify_user_info_add_pair_plaintext(user_info, _("Supports"), tmp);
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 14976
diff changeset
4081 g_free(tmp);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4082 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4083
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4084 if(b) {
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4085 purple_notify_user_info_add_pair_plaintext(user_info, _("Status"), status_text(b));
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 14976
diff changeset
4086
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 14976
diff changeset
4087 /* XXX Is this adding a status message in its own section rather than with the "Status" label? */
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 14976
diff changeset
4088 tmp2 = mwServiceAware_getText(pd->srvc_aware, &idb);
18861
cdbebb5a39c3 Fixes Ticket #1707 Crash with invalid UTF-8 status message from other Sametime client
Sean Egan <seanegan@pidgin.im>
parents: 18190
diff changeset
4089 if(tmp2 && g_utf8_validate(tmp2, -1, NULL)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4090 purple_notify_user_info_add_section_break(user_info);
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32162
diff changeset
4091 purple_notify_user_info_add_pair_plaintext(user_info, NULL, tmp2);
12496
788b20ccec91 [gaim-migrate @ 14808]
Christopher O'Brien <siege@pidgin.im>
parents: 12489
diff changeset
4092 }
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4093 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4094
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4095 /* @todo emit a signal to allow a plugin to override the display of
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4096 this notification, so that it can create its own */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4097
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4098 purple_notify_userinfo(gc, who, user_info, NULL, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4099 purple_notify_user_info_destroy(user_info);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4100 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4101
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4102
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4103 static void mw_protocol_set_status(PurpleAccount *acct, PurpleStatus *status) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4104 PurpleConnection *gc;
11638
1821b40269a3 [gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11547
diff changeset
4105 const char *state;
11641
554274717c25 [gaim-migrate @ 13918]
Richard Laager <rlaager@pidgin.im>
parents: 11638
diff changeset
4106 char *message = NULL;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4107 struct mwSession *session;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4108 struct mwUserStatus stat;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4109
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4110 g_return_if_fail(acct != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4111 gc = purple_account_get_connection(acct);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4112
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4113 state = purple_status_get_id(status);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4114
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4115 DEBUG_INFO("Set status to %s\n", purple_status_get_name(status));
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4116
11638
1821b40269a3 [gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11547
diff changeset
4117 g_return_if_fail(gc != NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4118
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4119 session = gc_to_session(gc);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4120 g_return_if_fail(session != NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4121
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4122 /* get a working copy of the current status */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4123 mwUserStatus_clone(&stat, mwSession_getUserStatus(session));
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4124
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4125 /* determine the state */
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
4126 if(purple_strequal(state, MW_STATE_ACTIVE)) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4127 stat.status = mwStatus_ACTIVE;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4128
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
4129 } else if(purple_strequal(state, MW_STATE_AWAY)) {
11638
1821b40269a3 [gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11547
diff changeset
4130 stat.status = mwStatus_AWAY;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4131
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
4132 } else if(purple_strequal(state, MW_STATE_BUSY)) {
11638
1821b40269a3 [gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11547
diff changeset
4133 stat.status = mwStatus_BUSY;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4134 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4135
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4136 /* determine the message */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4137 message = (char *) purple_status_get_attr_string(status, MW_STATE_MESSAGE);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4138
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4139 if(message) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4140 /* all the possible non-NULL values of message up to this point
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4141 are const, so we don't need to free them */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4142 message = purple_markup_strip_html(message);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4143 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4144
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4145 /* out with the old */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4146 g_free(stat.desc);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4147
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4148 /* in with the new */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4149 stat.desc = (char *) message;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4150
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4151 mwSession_setUserStatus(session, &stat);
11638
1821b40269a3 [gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11547
diff changeset
4152 mwUserStatus_clear(&stat);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4153 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4154
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4155
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4156 static void mw_protocol_set_idle(PurpleConnection *gc, int t) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4157 struct mwSession *session;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4158 struct mwUserStatus stat;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4159
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4160
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4161 session = gc_to_session(gc);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4162 g_return_if_fail(session != NULL);
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4163
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4164 mwUserStatus_clone(&stat, mwSession_getUserStatus(session));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4165
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4166 if(t) {
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4167 time_t now = time(NULL);
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4168 stat.time = now - t;
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4169
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4170 } else {
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4171 stat.time = 0;
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4172 }
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4173
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4174 if(t > 0 && stat.status == mwStatus_ACTIVE) {
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4175 /* we were active and went idle, so change the status to IDLE. */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4176 stat.status = mwStatus_IDLE;
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4177
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4178 } else if(t == 0 && stat.status == mwStatus_IDLE) {
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4179 /* we only become idle automatically, so change back to ACTIVE */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4180 stat.status = mwStatus_ACTIVE;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4181 }
12105
5ab1009c4164 [gaim-migrate @ 14402]
Christopher O'Brien <siege@pidgin.im>
parents: 12088
diff changeset
4182
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4183 mwSession_setUserStatus(session, &stat);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4184 mwUserStatus_clear(&stat);
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4185 }
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4186
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4187
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4188 static void notify_im(PurpleConnection *gc, GList *row, void *user_data) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4189 PurpleAccount *acct;
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
4190 PurpleIMConversation *im;
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4191 char *id;
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4192
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4193 acct = purple_connection_get_account(gc);
12631
b0e5f1ab374e [gaim-migrate @ 14967]
Christopher O'Brien <siege@pidgin.im>
parents: 12630
diff changeset
4194 id = g_list_nth_data(row, 1);
34642
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
4195 im = purple_conversations_find_im_with_account(id, acct);
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
4196 if(! im) im = purple_im_conversation_new(acct, id);
5ef8e33e5bed Refactored sametime and yahoo protocols to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
4197 purple_conversation_present(PURPLE_CONVERSATION(im));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4198 }
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4199
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4200
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4201 static void notify_add(PurpleConnection *gc, GList *row, void *user_data) {
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4202 BuddyAddData *data = user_data;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
4203 const char *group_name = NULL;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4204
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4205 if (data && data->group) {
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
4206 group_name = purple_group_get_name(data->group);
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4207 }
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4208
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4209 purple_blist_request_add_buddy(purple_connection_get_account(gc),
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4210 g_list_nth_data(row, 1), group_name,
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4211 g_list_nth_data(row, 0));
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4212 }
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4213
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4214
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4215 static void notify_close(gpointer data) {
37389
7240fd8e3462 free() and g_free() are specified to be NULL-safe. Remove NULL checks.
Michael McConville <mmcconville@mykolab.com>
parents: 37163
diff changeset
4216 g_free(data);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4217 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4218
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4219
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4220 static void multi_resolved_query(struct mwResolveResult *result,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4221 PurpleConnection *gc, gpointer data) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4222 GList *l;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
4223 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
4224 const char *msgB;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
4225 char *msg;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4226
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4227 PurpleNotifySearchResults *sres;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4228 PurpleNotifySearchColumn *scol;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4229
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4230 sres = purple_notify_searchresults_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4231
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4232 scol = purple_notify_searchresults_column_new(_("User Name"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4233 purple_notify_searchresults_column_add(sres, scol);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4234
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4235 scol = purple_notify_searchresults_column_new(_("Sametime ID"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4236 purple_notify_searchresults_column_add(sres, scol);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4237
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4238 purple_notify_searchresults_button_add(sres, PURPLE_NOTIFY_BUTTON_IM,
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4239 notify_im);
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4240
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4241 purple_notify_searchresults_button_add(sres, PURPLE_NOTIFY_BUTTON_ADD,
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4242 notify_add);
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4243
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4244 for(l = result->matches; l; l = l->next) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4245 struct mwResolveMatch *match = l->data;
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4246 GList *row = NULL;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4247
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
4248 DEBUG_INFO("multi resolve: %s, %s\n",
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
4249 NSTR(match->id), NSTR(match->name));
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
4250
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4251 if(!match->id || !match->name)
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4252 continue;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4253
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4254 row = g_list_append(row, g_strdup(match->name));
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4255 row = g_list_append(row, g_strdup(match->id));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4256 purple_notify_searchresults_row_add(sres, row);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4257 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4258
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4259 msgA = _("An ambiguous user ID was entered");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4260 msgB = _("The identifier '%s' may possibly refer to any of the following"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4261 " users. Please select the correct user from the list below to"
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4262 " add them to your buddy list.");
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
4263 msg = g_strdup_printf(msgB, result->name);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4264
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4265 purple_notify_searchresults(gc, _("Select User"),
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4266 msgA, msg, sres, notify_close, data);
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
4267
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
4268 g_free(msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4269 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4270
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4271
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4272 static void add_buddy_resolved(struct mwServiceResolve *srvc,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4273 guint32 id, guint32 code, GList *results,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4274 gpointer b) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4275
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4276 struct mwResolveResult *res = NULL;
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4277 BuddyAddData *data = b;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4278 PurpleBuddy *buddy = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4279 PurpleConnection *gc;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4280 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4281
16121
e5ad074a5f05 Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15884
diff changeset
4282 g_return_if_fail(data != NULL);
e5ad074a5f05 Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15884
diff changeset
4283
e5ad074a5f05 Avoid a possible NULL pointer dereference
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15884
diff changeset
4284 buddy = data->buddy;
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4285
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
4286 gc = purple_account_get_connection(purple_buddy_get_account(buddy));
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4287 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4288
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4289 if(results)
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4290 res = results->data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4291
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4292 if(!code && res && res->matches) {
24816
bd870d9ff0ab The other day while struct hiding, I noticed a for loop that was checking
Richard Laager <rlaager@pidgin.im>
parents: 24739
diff changeset
4293 if(!res->matches->next) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4294 struct mwResolveMatch *match = res->matches->data;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4295
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4296 /* only one? that might be the right one! */
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
4297 if(!purple_strequal(res->name, match->id)) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4298 /* uh oh, the single result isn't identical to the search
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4299 term, better safe then sorry, so let's make sure it's who
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4300 the user meant to add */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4301 purple_blist_remove_buddy(buddy);
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4302 multi_resolved_query(res, gc, data);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4303
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4304 } else {
12829
c7c8fa0b90db [gaim-migrate @ 15177]
Christopher O'Brien <siege@pidgin.im>
parents: 12821
diff changeset
4305
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4306 /* same person, set the server alias */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
4307 purple_buddy_set_server_alias(buddy, match->name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4308 purple_blist_node_set_string((PurpleBlistNode *) buddy,
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4309 BUDDY_KEY_NAME, match->name);
12829
c7c8fa0b90db [gaim-migrate @ 15177]
Christopher O'Brien <siege@pidgin.im>
parents: 12821
diff changeset
4310
c7c8fa0b90db [gaim-migrate @ 15177]
Christopher O'Brien <siege@pidgin.im>
parents: 12821
diff changeset
4311 /* subscribe to awareness */
c7c8fa0b90db [gaim-migrate @ 15177]
Christopher O'Brien <siege@pidgin.im>
parents: 12821
diff changeset
4312 buddy_add(pd, buddy);
c7c8fa0b90db [gaim-migrate @ 15177]
Christopher O'Brien <siege@pidgin.im>
parents: 12821
diff changeset
4313
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
4314 blist_schedule(pd);
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4315
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4316 g_free(data);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4317 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4318
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4319 } else {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4320 /* prompt user if more than one match was returned */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4321 purple_blist_remove_buddy(buddy);
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4322 multi_resolved_query(res, gc, data);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4323 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4324
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4325 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4326 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4327 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4328
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4329
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4330 static void mw_protocol_add_buddy(PurpleConnection *gc,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4331 PurpleBuddy *buddy,
32315
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32279
diff changeset
4332 PurpleGroup *group,
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32279
diff changeset
4333 const char *message) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4334
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4335 struct mwPurpleProtocolData *pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4336 struct mwServiceResolve *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4337 GList *query;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4338 enum mwResolveFlag flags;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4339 guint32 req;
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4340 BuddyAddData *data;
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4341
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4342 /* catch external buddies. They won't be in the resolve service */
12524
e9bf565601ad [gaim-migrate @ 14836]
Christopher O'Brien <siege@pidgin.im>
parents: 12496
diff changeset
4343 if(buddy_is_external(buddy)) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4344 buddy_add(pd, buddy);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4345 return;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4346 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4347
24591
15f01d981a40 Fix a potential leak, thanks to "KuSh". Fixes #7464.
Daniel Atallah <datallah@pidgin.im>
parents: 23979
diff changeset
4348 data = g_new0(BuddyAddData, 1);
15f01d981a40 Fix a potential leak, thanks to "KuSh". Fixes #7464.
Daniel Atallah <datallah@pidgin.im>
parents: 23979
diff changeset
4349 data->buddy = buddy;
15f01d981a40 Fix a potential leak, thanks to "KuSh". Fixes #7464.
Daniel Atallah <datallah@pidgin.im>
parents: 23979
diff changeset
4350 data->group = group;
15f01d981a40 Fix a potential leak, thanks to "KuSh". Fixes #7464.
Daniel Atallah <datallah@pidgin.im>
parents: 23979
diff changeset
4351
15f01d981a40 Fix a potential leak, thanks to "KuSh". Fixes #7464.
Daniel Atallah <datallah@pidgin.im>
parents: 23979
diff changeset
4352 srvc = pd->srvc_resolve;
15f01d981a40 Fix a potential leak, thanks to "KuSh". Fixes #7464.
Daniel Atallah <datallah@pidgin.im>
parents: 23979
diff changeset
4353
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
4354 query = g_list_prepend(NULL, (char *)purple_buddy_get_name(buddy));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4355 flags = mwResolveFlag_FIRST | mwResolveFlag_USERS;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4356
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4357 req = mwServiceResolve_resolve(srvc, query, flags, add_buddy_resolved,
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4358 data, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4359 g_list_free(query);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4360
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4361 if(req == SEARCH_ERROR) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4362 purple_blist_remove_buddy(buddy);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4363 blist_schedule(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4364 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4365 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4366
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4367
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4368 static void foreach_add_buddies(PurpleGroup *group, GList *buddies,
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4369 struct mwPurpleProtocolData *pd) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4370 struct mwAwareList *list;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4371
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4372 list = list_ensure(pd, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4373 mwAwareList_addAware(list, buddies);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4374 g_list_free(buddies);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4375 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4376
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4377
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4378 static void mw_protocol_add_buddies(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4379 GList *buddies,
32315
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32279
diff changeset
4380 GList *groups,
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32279
diff changeset
4381 const char *message) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4382
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4383 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4384 GHashTable *group_sets;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4385 struct mwAwareIdBlock *idbs, *idb;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4386
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4387 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4388
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4389 /* map PurpleGroup:GList of mwAwareIdBlock */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4390 group_sets = g_hash_table_new(g_direct_hash, g_direct_equal);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4391
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4392 /* bunch of mwAwareIdBlock allocated at once, free'd at once */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4393 idb = idbs = g_new(struct mwAwareIdBlock, g_list_length(buddies));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4394
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4395 /* first pass collects mwAwareIdBlock lists for each group */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4396 for(; buddies; buddies = buddies->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4397 PurpleBuddy *b = buddies->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4398 PurpleGroup *g;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4399 const char *fn;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4400 GList *l;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4401
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4402 /* nab the saved server alias and stick it on the buddy */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4403 fn = purple_blist_node_get_string((PurpleBlistNode *) b, BUDDY_KEY_NAME);
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
4404 purple_buddy_set_server_alias(b, fn);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4405
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4406 /* convert PurpleBuddy into a mwAwareIdBlock */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4407 idb->type = mwAware_USER;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
4408 idb->user = (char *) purple_buddy_get_name(b);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4409 idb->community = NULL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4410
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4411 /* put idb into the list associated with the buddy's group */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4412 g = purple_buddy_get_group(b);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4413 l = g_hash_table_lookup(group_sets, g);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4414 l = g_list_prepend(l, idb++);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4415 g_hash_table_insert(group_sets, g, l);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4416 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4417
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4418 /* each group's buddies get added in one shot, and schedule the blist
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4419 for saving */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4420 g_hash_table_foreach(group_sets, (GHFunc) foreach_add_buddies, pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4421 blist_schedule(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4422
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4423 /* cleanup */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4424 g_hash_table_destroy(group_sets);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4425 g_free(idbs);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4426 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4427
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4428
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4429 static void mw_protocol_remove_buddy(PurpleConnection *gc,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4430 PurpleBuddy *buddy, PurpleGroup *group) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4431
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4432 struct mwPurpleProtocolData *pd;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23979
diff changeset
4433 struct mwAwareIdBlock idb = { mwAware_USER, (char *)purple_buddy_get_name(buddy), NULL };
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4434 struct mwAwareList *list;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4435
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4436 GList *rem = g_list_prepend(NULL, &idb);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4437
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4438 pd = purple_connection_get_protocol_data(gc);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4439 group = purple_buddy_get_group(buddy);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4440 list = list_ensure(pd, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4441
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4442 mwAwareList_removeAware(list, rem);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4443 blist_schedule(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4444
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4445 g_list_free(rem);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4446 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4447
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4448
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4449 static void privacy_fill(struct mwPrivacyInfo *priv,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4450 GSList *members) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4451
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4452 struct mwUserItem *u;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4453 guint count;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4454
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4455 count = g_slist_length(members);
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
4456 DEBUG_INFO("privacy_fill: %u members\n", count);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4457
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4458 priv->count = count;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4459 priv->users = g_new0(struct mwUserItem, count);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4460
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4461 while(count--) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4462 u = priv->users + count;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4463 u->id = members->data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4464 members = members->next;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4465 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4466 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4467
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4468
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4469 static void mw_protocol_set_permit_deny(PurpleConnection *gc) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4470 PurpleAccount *acct;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4471 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4472 struct mwSession *session;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4473
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4474 struct mwPrivacyInfo privacy = {
17153
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
4475 FALSE, /* deny */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
4476 0, /* count */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
4477 NULL, /* users */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4478 };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4479
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4480 g_return_if_fail(gc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4481
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4482 acct = purple_connection_get_account(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4483 g_return_if_fail(acct != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4484
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4485 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4486 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4487
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4488 session = pd->session;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4489 g_return_if_fail(session != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4490
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32617
diff changeset
4491 switch(purple_account_get_privacy_type(acct)) {
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4492 case PURPLE_ACCOUNT_PRIVACY_DENY_USERS:
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4493 DEBUG_INFO("PURPLE_ACCOUNT_PRIVACY_DENY_USERS\n");
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4494 privacy_fill(&privacy, purple_account_privacy_get_denied(acct));
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
4495 privacy.deny = TRUE;
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
4496 break;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4497
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4498 case PURPLE_ACCOUNT_PRIVACY_ALLOW_ALL:
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4499 DEBUG_INFO("PURPLE_ACCOUNT_PRIVACY_ALLOW_ALL\n");
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4500 privacy.deny = TRUE;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4501 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4502
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4503 case PURPLE_ACCOUNT_PRIVACY_ALLOW_USERS:
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4504 DEBUG_INFO("PURPLE_ACCOUNT_PRIVACY_ALLOW_USERS\n");
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4505 privacy_fill(&privacy, purple_account_privacy_get_permitted(acct));
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
4506 privacy.deny = FALSE;
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
4507 break;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4508
34578
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4509 case PURPLE_ACCOUNT_PRIVACY_DENY_ALL:
cfb2f856a5d0 Refactored prpls according to the changed PurpleAccount API
Ankit Vani <a@nevitus.org>
parents: 34570
diff changeset
4510 DEBUG_INFO("PURPLE_ACCOUNT_PRIVACY_DENY_ALL\n");
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4511 privacy.deny = FALSE;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4512 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4513
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4514 default:
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32617
diff changeset
4515 DEBUG_INFO("acct->perm_deny is 0x%x\n", purple_account_get_privacy_type(acct));
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
4516 return;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4517 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4518
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4519 mwSession_setPrivacyInfo(session, &privacy);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4520 g_free(privacy.users);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4521 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4522
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4523
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4524 static void mw_protocol_add_permit(PurpleConnection *gc, const char *name) {
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4525 mw_protocol_set_permit_deny(gc);
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4526 }
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4527
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4528
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4529 static void mw_protocol_add_deny(PurpleConnection *gc, const char *name) {
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4530 mw_protocol_set_permit_deny(gc);
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4531 }
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4532
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4533
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4534 static void mw_protocol_rem_permit(PurpleConnection *gc, const char *name) {
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4535 mw_protocol_set_permit_deny(gc);
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4536 }
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4537
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4538
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4539 static void mw_protocol_rem_deny(PurpleConnection *gc, const char *name) {
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4540 mw_protocol_set_permit_deny(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4541 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4542
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4543
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4544 static struct mwConference *conf_find(struct mwServiceConference *srvc,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4545 const char *name) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4546 GList *l, *ll;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4547 struct mwConference *conf = NULL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4548
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4549 ll = mwServiceConference_getConferences(srvc);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4550 for(l = ll; l; l = l->next) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4551 struct mwConference *c = l->data;
38259
c593fc9f5438 Replace strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
4552 if(purple_strequal(name, mwConference_getName(c))) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4553 conf = c;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4554 break;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4555 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4556 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4557 g_list_free(ll);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4558
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4559 return conf;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4560 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4561
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4562
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4563 static void mw_protocol_join_chat(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4564 GHashTable *components) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4565
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4566 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4567 char *c, *t;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4568
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4569 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4570
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4571 c = g_hash_table_lookup(components, CHAT_KEY_NAME);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4572 t = g_hash_table_lookup(components, CHAT_KEY_TOPIC);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4573
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4574 if(g_hash_table_lookup(components, CHAT_KEY_IS_PLACE)) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4575 /* use place service */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4576 struct mwServicePlace *srvc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4577 struct mwPlace *place = NULL;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4578
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4579 srvc = pd->srvc_place;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4580 place = mwPlace_new(srvc, c, t);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4581 mwPlace_open(place);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4582
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4583 } else {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4584 /* use conference service */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4585 struct mwServiceConference *srvc;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4586 struct mwConference *conf = NULL;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4587
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4588 srvc = pd->srvc_conf;
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4589 if(c) conf = conf_find(srvc, c);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4590
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4591 if(conf) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4592 DEBUG_INFO("accepting conference invitation\n");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4593 mwConference_accept(conf);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4594
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4595 } else {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4596 DEBUG_INFO("creating new conference\n");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4597 conf = mwConference_new(srvc, t);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4598 mwConference_open(conf);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4599 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4600 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4601 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4602
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4603
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4604 static void mw_protocol_reject_chat(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4605 GHashTable *components) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4606
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4607 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4608 struct mwServiceConference *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4609 char *c;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4610
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4611 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4612 srvc = pd->srvc_conf;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4613
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4614 if(g_hash_table_lookup(components, CHAT_KEY_IS_PLACE)) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4615 ; /* nothing needs doing */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4616
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4617 } else {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4618 /* reject conference */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4619 c = g_hash_table_lookup(components, CHAT_KEY_NAME);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4620 if(c) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4621 struct mwConference *conf = conf_find(srvc, c);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4622 if(conf) mwConference_reject(conf, ERR_SUCCESS, "Declined");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4623 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4624 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4625 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4626
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4627
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4628 static char *mw_protocol_get_chat_name(GHashTable *components) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4629 return g_hash_table_lookup(components, CHAT_KEY_NAME);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4630 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4631
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4632
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4633 static void mw_protocol_chat_invite(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4634 int id,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4635 const char *invitation,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4636 const char *who) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4637
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4638 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4639 struct mwConference *conf;
12107
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4640 struct mwPlace *place;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4641 struct mwIdBlock idb = { (char *) who, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4642
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4643 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4644 g_return_if_fail(pd != NULL);
12107
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4645
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4646 conf = ID_TO_CONF(pd, id);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4647
12107
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4648 if(conf) {
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4649 mwConference_invite(conf, &idb, invitation);
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4650 return;
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4651 }
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4652
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4653 place = ID_TO_PLACE(pd, id);
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4654 g_return_if_fail(place != NULL);
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4655
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4656 /* @todo: use the IM service for invitation */
f14b83c0df1e [gaim-migrate @ 14405]
Christopher O'Brien <siege@pidgin.im>
parents: 12105
diff changeset
4657 mwPlace_legacyInvite(place, &idb, invitation);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4658 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4659
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4660
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4661 static void mw_protocol_chat_leave(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4662 int id) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4663
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4664 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4665 struct mwConference *conf;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4666
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4667 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4668
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4669 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4670 conf = ID_TO_CONF(pd, id);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4671
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4672 if(conf) {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4673 mwConference_destroy(conf, ERR_SUCCESS, "Leaving");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4674
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4675 } else {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4676 struct mwPlace *place = ID_TO_PLACE(pd, id);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4677 g_return_if_fail(place != NULL);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4678
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4679 mwPlace_destroy(place, ERR_SUCCESS);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4680 }
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4681 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4682
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4683
37148
50f361d39a1e Merged default branch
Ankit Vani <a@nevitus.org>
parents: 37146 36098
diff changeset
4684 static int mw_protocol_chat_send(PurpleConnection *gc, int id, PurpleMessage *pmsg)
36077
b7328f4317c7 Switch purple_serv_chat_send to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36076
diff changeset
4685 {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4686 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4687 struct mwConference *conf;
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4688 char *msg;
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4689 int ret;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4690
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4691 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4692
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4693 g_return_val_if_fail(pd != NULL, 0);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4694 conf = ID_TO_CONF(pd, id);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4695
36077
b7328f4317c7 Switch purple_serv_chat_send to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36076
diff changeset
4696 msg = purple_markup_strip_html(purple_message_get_contents(pmsg));
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4697
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4698 if(conf) {
15772
8e23d860430a sf patch #1655707, from David Everly
Mark Doliner <markdoliner@pidgin.im>
parents: 15524
diff changeset
4699 ret = ! mwConference_sendText(conf, msg);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4700
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4701 } else {
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4702 struct mwPlace *place = ID_TO_PLACE(pd, id);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4703 g_return_val_if_fail(place != NULL, 0);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4704
15772
8e23d860430a sf patch #1655707, from David Everly
Mark Doliner <markdoliner@pidgin.im>
parents: 15524
diff changeset
4705 ret = ! mwPlace_sendText(place, msg);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4706 }
14975
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4707
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4708 g_free(msg);
b177e7cbc8d8 [gaim-migrate @ 17685]
Christopher O'Brien <siege@pidgin.im>
parents: 14899
diff changeset
4709 return ret;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4710 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4711
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4712
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4713 static void mw_protocol_keepalive(PurpleConnection *gc) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4714 struct mwSession *session;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4715
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4716 g_return_if_fail(gc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4717
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4718 session = gc_to_session(gc);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4719 g_return_if_fail(session != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4720
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4721 mwSession_sendKeepalive(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4722 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4723
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4724
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4725 static void mw_protocol_alias_buddy(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4726 const char *who,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4727 const char *alias) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4728
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4729 struct mwPurpleProtocolData *pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4730 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4731
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4732 /* it's a change to the buddy list, so we've gotta reflect that in
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4733 the server copy */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4734
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4735 blist_schedule(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4736 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4737
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4738
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4739 static void mw_protocol_group_buddy(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4740 const char *who,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4741 const char *old_group,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4742 const char *new_group) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4743
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4744 struct mwAwareIdBlock idb = { mwAware_USER, (char *) who, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4745 GList *gl = g_list_prepend(NULL, &idb);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4746
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4747 struct mwPurpleProtocolData *pd = purple_connection_get_protocol_data(gc);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4748 PurpleGroup *group;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4749 struct mwAwareList *list;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4750
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4751 /* add who to new_group's aware list */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
4752 group = purple_blist_find_group(new_group);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4753 list = list_ensure(pd, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4754 mwAwareList_addAware(list, gl);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4755
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4756 /* remove who from old_group's aware list */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
4757 group = purple_blist_find_group(old_group);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4758 list = list_ensure(pd, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4759 mwAwareList_removeAware(list, gl);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4760
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4761 g_list_free(gl);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4762
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4763 /* schedule the changes to be saved */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4764 blist_schedule(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4765 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4766
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4767
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4768 static void mw_protocol_rename_group(PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4769 const char *old,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4770 PurpleGroup *group,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4771 GList *buddies) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4772
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4773 struct mwPurpleProtocolData *pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4774 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4775
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4776 /* it's a change in the buddy list, so we've gotta reflect that in
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4777 the server copy. Also, having this function should prevent all
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4778 those buddies from being removed and re-added. We don't really
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4779 give a crap what the group is named in Purple other than to record
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4780 that as the group name/alias */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4781
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4782 blist_schedule(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4783 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4784
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4785
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4786 static void mw_protocol_buddy_free(PurpleBuddy *buddy) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4787 /* I don't think we have any cleanup for buddies yet */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4788 ;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4789 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4790
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4791
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4792 static void mw_protocol_convo_closed(PurpleConnection *gc, const char *who) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4793 struct mwPurpleProtocolData *pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4794 struct mwServiceIm *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4795 struct mwConversation *conv;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4796 struct mwIdBlock idb = { (char *) who, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4797
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4798 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4799
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4800 srvc = pd->srvc_im;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4801 g_return_if_fail(srvc != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4802
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4803 conv = mwServiceIm_findConversation(srvc, &idb);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4804 if(! conv) return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4805
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4806 if(mwConversation_isOpen(conv))
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4807 mwConversation_free(conv);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4808 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4809
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4810
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4811 static const char *mw_protocol_normalize(const PurpleAccount *account,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4812 const char *id) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4813
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4814 /* code elsewhere assumes that the return value points to different
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4815 memory than the passed value, but it won't free the normalized
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4816 data. wtf? */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4817
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4818 static char buf[BUF_LEN];
33745
c31cf8de31cd Fix a crash in Sametime when a malicious server sends us an abnormally
Mark Doliner <mark@kingant.net>
parents: 32049
diff changeset
4819 g_strlcpy(buf, id, sizeof(buf));
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4820 return buf;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4821 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4822
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4823
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
4824 static void mw_protocol_remove_group(PurpleConnection *gc, PurpleGroup *group) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4825 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4826 struct mwAwareList *list;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4827
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4828 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4829 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4830 g_return_if_fail(pd->group_list_map != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4831
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4832 list = g_hash_table_lookup(pd->group_list_map, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4833
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4834 if(list) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4835 g_hash_table_remove(pd->group_list_map, list);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4836 g_hash_table_remove(pd->group_list_map, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4837 mwAwareList_free(list);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4838
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4839 blist_schedule(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4840 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4841 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4842
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4843
38841
518362268798 make sure all the PurpleProtocolXfer parameters are named prplxfer
Gary Kramlich <grim@reaperworld.com>
parents: 38839
diff changeset
4844 static gboolean mw_protocol_can_receive_file(PurpleProtocolXfer *prplxfer,
38828
a7190db83539 Update the PurpleProtocolXferInterface to pass around the interfance instance as well
Gary Kramlich <grim@reaperworld.com>
parents: 38827
diff changeset
4845 PurpleConnection *gc,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4846 const char *who) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4847 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4848 struct mwServiceAware *srvc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4849 PurpleAccount *acct;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4850
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4851 g_return_val_if_fail(gc != NULL, FALSE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4852
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4853 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4854 g_return_val_if_fail(pd != NULL, FALSE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4855
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4856 srvc = pd->srvc_aware;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4857 g_return_val_if_fail(srvc != NULL, FALSE);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4858
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4859 acct = purple_connection_get_account(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4860 g_return_val_if_fail(acct != NULL, FALSE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4861
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
4862 return purple_blist_find_buddy(acct, who) &&
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4863 user_supports(srvc, who, mwAttribute_FILE_TRANSFER);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4864 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4865
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4866
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4867 static void ft_outgoing_init(PurpleXfer *xfer) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4868 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4869 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4870
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4871 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4872 struct mwServiceFileTransfer *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4873 struct mwFileTransfer *ft;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4874
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4875 const char *filename;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4876 gsize filesize;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4877 FILE *fp;
33892
ef97228bc5f0 Fix most of warnings for gtk2 and linux
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
4878 char *remote_user = NULL;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4879
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4880 struct mwIdBlock idb = { NULL, NULL };
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4881
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4882 DEBUG_INFO("ft_outgoing_init\n");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4883
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4884 acct = purple_xfer_get_account(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4885 gc = purple_account_get_connection(acct);
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
4886 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4887 srvc = pd->srvc_ft;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4888
33892
ef97228bc5f0 Fix most of warnings for gtk2 and linux
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
4889 remote_user = g_strdup(purple_xfer_get_remote_user(xfer));
ef97228bc5f0 Fix most of warnings for gtk2 and linux
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
4890
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4891 filename = purple_xfer_get_local_filename(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4892 filesize = purple_xfer_get_size(xfer);
33892
ef97228bc5f0 Fix most of warnings for gtk2 and linux
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
4893 idb.user = remote_user;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4894
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4895 purple_xfer_update_progress(xfer);
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
4896
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4897 /* test that we can actually send the file */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4898 fp = g_fopen(filename, "rb");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4899 if(! fp) {
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4900 char *msg = g_strdup_printf(_("Error reading file %s: \n%s\n"),
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20288
diff changeset
4901 filename, g_strerror(errno));
34910
60502558e400 Replacements for the GObject Xfer API
Ankit Vani <a@nevitus.org>
parents: 34894
diff changeset
4902 purple_xfer_error(purple_xfer_get_xfer_type(xfer), acct, purple_xfer_get_remote_user(xfer), msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4903 g_free(msg);
33892
ef97228bc5f0 Fix most of warnings for gtk2 and linux
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
4904 g_free(remote_user);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4905 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4906 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4907 fclose(fp);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4908
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4909 {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4910 char *tmp = strrchr(filename, G_DIR_SEPARATOR);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4911 if(tmp++) filename = tmp;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4912 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4913
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4914 ft = mwFileTransfer_new(srvc, &idb, NULL, filename, filesize);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4915
34912
539b7b4d1949 Replaced purple_xfer_{ref|unref} with g_object_{ref|unref}
Ankit Vani <a@nevitus.org>
parents: 34910
diff changeset
4916 g_object_ref(xfer);
539b7b4d1949 Replaced purple_xfer_{ref|unref} with g_object_{ref|unref}
Ankit Vani <a@nevitus.org>
parents: 34910
diff changeset
4917 mwFileTransfer_setClientData(ft, xfer, (GDestroyNotify) g_object_unref);
32243
709c68f85f51 Convert the sametime prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
4918 purple_xfer_set_protocol_data(xfer, ft);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4919
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4920 mwFileTransfer_offer(ft);
33892
ef97228bc5f0 Fix most of warnings for gtk2 and linux
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
4921 g_free(remote_user);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4922 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4923
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4924
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4925 static void ft_outgoing_cancel(PurpleXfer *xfer) {
32243
709c68f85f51 Convert the sametime prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents: 32191
diff changeset
4926 struct mwFileTransfer *ft = purple_xfer_get_protocol_data(xfer);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
4927
13208
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
4928 DEBUG_INFO("ft_outgoing_cancel called\n");
3e9365fcfd0e [gaim-migrate @ 15571]
Christopher O'Brien <siege@pidgin.im>
parents: 13206
diff changeset
4929
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4930 if(ft) mwFileTransfer_cancel(ft);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4931 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4932
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4933
38841
518362268798 make sure all the PurpleProtocolXfer parameters are named prplxfer
Gary Kramlich <grim@reaperworld.com>
parents: 38839
diff changeset
4934 static PurpleXfer *mw_protocol_new_xfer(PurpleProtocolXfer *prplxfer, PurpleConnection *gc, const char *who) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4935 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4936 PurpleXfer *xfer;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4937
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4938 acct = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4939
34926
c5b444d1447d Changed prefix of PurpleXferType enums to PURPLE_XFER_TYPE_*
Ankit Vani <a@nevitus.org>
parents: 34920
diff changeset
4940 xfer = purple_xfer_new(acct, PURPLE_XFER_TYPE_SEND, who);
15345
797936e968ff [gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
4941 if (xfer)
797936e968ff [gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
4942 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4943 purple_xfer_set_init_fnc(xfer, ft_outgoing_init);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4944 purple_xfer_set_cancel_send_fnc(xfer, ft_outgoing_cancel);
15345
797936e968ff [gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
4945 }
797936e968ff [gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents: 15205
diff changeset
4946
12143
09f216663302 [gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents: 12135
diff changeset
4947 return xfer;
09f216663302 [gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents: 12135
diff changeset
4948 }
09f216663302 [gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents: 12135
diff changeset
4949
38841
518362268798 make sure all the PurpleProtocolXfer parameters are named prplxfer
Gary Kramlich <grim@reaperworld.com>
parents: 38839
diff changeset
4950 static void mw_protocol_send_file(PurpleProtocolXfer *prplxfer,
38828
a7190db83539 Update the PurpleProtocolXferInterface to pass around the interfance instance as well
Gary Kramlich <grim@reaperworld.com>
parents: 38827
diff changeset
4951 PurpleConnection *gc,
12143
09f216663302 [gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents: 12135
diff changeset
4952 const char *who, const char *file) {
09f216663302 [gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents: 12135
diff changeset
4953
38841
518362268798 make sure all the PurpleProtocolXfer parameters are named prplxfer
Gary Kramlich <grim@reaperworld.com>
parents: 38839
diff changeset
4954 PurpleXfer *xfer = mw_protocol_new_xfer(prplxfer, gc, who);
12143
09f216663302 [gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents: 12135
diff changeset
4955
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4956 if(file) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4957 DEBUG_INFO("file != NULL\n");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4958 purple_xfer_request_accepted(xfer, file);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4959
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4960 } else {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4961 DEBUG_INFO("file == NULL\n");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4962 purple_xfer_request(xfer);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4963 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4964 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4965
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4966
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4967 static void st_import_action_cb(PurpleConnection *gc, char *filename) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4968 struct mwSametimeList *l;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4969
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4970 FILE *file;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4971 char buf[BUF_LEN];
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4972 size_t len;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4973
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4974 GString *str;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4975
13158
3b4295931fd6 [gaim-migrate @ 15520]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
4976 file = g_fopen(filename, "r");
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4977 g_return_if_fail(file != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4978
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4979 str = g_string_new(NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4980 while( (len = fread(buf, 1, BUF_LEN, file)) ) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4981 g_string_append_len(str, buf, len);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4982 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4983
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4984 fclose(file);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4985
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4986 l = mwSametimeList_load(str->str);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4987 g_string_free(str, TRUE);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4988
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
4989 blist_merge(gc, l);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4990 mwSametimeList_free(l);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4991 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4992
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4993
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4994 /** prompts for a file to import blist from */
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
4995 static void st_import_action(PurpleProtocolAction *act) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4996 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
4997 PurpleAccount *account;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4998 char *title;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
4999
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5000 gc = act->connection;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5001 account = purple_connection_get_account(gc);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5002 title = g_strdup_printf(_("Import Sametime List for Account %s"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5003 purple_account_get_username(account));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5004
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5005 purple_request_file(gc, title, NULL, FALSE,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5006 G_CALLBACK(st_import_action_cb), NULL,
34333
b92698241603 Request API refactoring: switch purple_request_file to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34332
diff changeset
5007 purple_request_cpar_from_connection(gc),
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5008 gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5009
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5010 g_free(title);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5011 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5012
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5013
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5014 static void st_export_action_cb(PurpleConnection *gc, char *filename) {
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5015 struct mwSametimeList *l;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5016 char *str;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5017 FILE *file;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5018
13158
3b4295931fd6 [gaim-migrate @ 15520]
Richard Laager <rlaager@pidgin.im>
parents: 13107
diff changeset
5019 file = g_fopen(filename, "w");
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5020 g_return_if_fail(file != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5021
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5022 l = mwSametimeList_new();
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5023 blist_export(gc, l);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5024 str = mwSametimeList_store(l);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5025 mwSametimeList_free(l);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5026
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5027 fprintf(file, "%s", str);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5028 fclose(file);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5029
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5030 g_free(str);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5031 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5032
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5033
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5034 /** prompts for a file to export blist to */
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5035 static void st_export_action(PurpleProtocolAction *act) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5036 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5037 PurpleAccount *account;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5038 char *title;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5039
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5040 gc = act->connection;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5041 account = purple_connection_get_account(gc);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5042 title = g_strdup_printf(_("Export Sametime List for Account %s"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5043 purple_account_get_username(account));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5044
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5045 purple_request_file(gc, title, NULL, TRUE,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5046 G_CALLBACK(st_export_action_cb), NULL,
34333
b92698241603 Request API refactoring: switch purple_request_file to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34332
diff changeset
5047 purple_request_cpar_from_connection(gc),
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5048 gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5049
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5050 g_free(title);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5051 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5052
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5053
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5054 static void remote_group_multi_cleanup(gpointer ignore,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5055 PurpleRequestFields *fields) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
5056
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5057 PurpleRequestField *f;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17157
diff changeset
5058 GList *l;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5059
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5060 f = purple_request_fields_get_field(fields, "group");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5061 l = purple_request_field_list_get_items(f);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5062
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5063 for(; l; l = l->next) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5064 const char *i = l->data;
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
5065 struct named_id *res;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5066
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5067 res = purple_request_field_list_get_data(f, i);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5068
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5069 g_free(res->id);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5070 g_free(res->name);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5071 g_free(res);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5072 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5073 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5074
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5075
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5076 static void remote_group_done(struct mwPurpleProtocolData *pd,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5077 const char *id, const char *name) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5078 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5079 PurpleAccount *acct;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5080 PurpleGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5081 PurpleBlistNode *gn;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5082 const char *owner;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5083
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5084 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5085
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5086 gc = pd->gc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5087 acct = purple_connection_get_account(gc);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
5088
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5089 /* collision checking */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34726
diff changeset
5090 group = purple_blist_find_group(name);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5091 if(group) {
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5092 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5093 const char *msgB;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5094 char *msg;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5095
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5096 msgA = _("Unable to add group: group exists");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5097 msgB = _("A group named '%s' already exists in your buddy list.");
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5098 msg = g_strdup_printf(msgB, name);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5099
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
5100 purple_notify_error(gc, _("Unable to add group"), msgA, msg,
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
5101 purple_request_cpar_from_connection(gc));
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5102
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5103 g_free(msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5104 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5105 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5106
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5107 group = purple_group_new(name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5108 gn = (PurpleBlistNode *) group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5109
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5110 owner = purple_account_get_username(acct);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5111
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5112 purple_blist_node_set_string(gn, GROUP_KEY_NAME, id);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5113 purple_blist_node_set_int(gn, GROUP_KEY_TYPE, mwSametimeGroup_DYNAMIC);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5114 purple_blist_node_set_string(gn, GROUP_KEY_OWNER, owner);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5115 purple_blist_add_group(group, NULL);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5116
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5117 group_add(pd, group);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5118 blist_schedule(pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5119 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5120
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5121
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5122 static void remote_group_multi_cb(struct mwPurpleProtocolData *pd,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5123 PurpleRequestFields *fields) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5124 PurpleRequestField *f;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 17157
diff changeset
5125 GList *l;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5126
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5127 f = purple_request_fields_get_field(fields, "group");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5128 l = purple_request_field_list_get_selected(f);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5129
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5130 if(l) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5131 const char *i = l->data;
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
5132 struct named_id *res;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5133
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5134 res = purple_request_field_list_get_data(f, i);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5135 remote_group_done(pd, res->id, res->name);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5136 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5137
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5138 remote_group_multi_cleanup(NULL, fields);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5139 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5140
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5141
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5142 static void remote_group_multi(struct mwResolveResult *result,
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5143 struct mwPurpleProtocolData *pd) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5144
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5145 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5146 PurpleRequestFieldGroup *g;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5147 PurpleRequestField *f;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5148 GList *l;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5149 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5150 const char *msgB;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5151 char *msg;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5152
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5153 PurpleConnection *gc = pd->gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5154
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5155 fields = purple_request_fields_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5156
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5157 g = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5158 purple_request_fields_add_group(fields, g);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5159
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5160 f = purple_request_field_list_new("group", _("Possible Matches"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5161 purple_request_field_list_set_multi_select(f, FALSE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5162 purple_request_field_set_required(f, TRUE);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5163
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5164 for(l = result->matches; l; l = l->next) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5165 struct mwResolveMatch *match = l->data;
12624
c1c92f08976b [gaim-migrate @ 14960]
Christopher O'Brien <siege@pidgin.im>
parents: 12595
diff changeset
5166 struct named_id *res = g_new0(struct named_id, 1);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5167
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5168 res->id = g_strdup(match->id);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5169 res->name = g_strdup(match->name);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5170
24900
a19d983918c2 Deprecate purple_request_field_list_add()
Richard Laager <rlaager@pidgin.im>
parents: 24591
diff changeset
5171 purple_request_field_list_add_icon(f, res->name, NULL, res);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5172 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5173
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5174 purple_request_field_group_add_field(g, f);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5175
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5176 msgA = _("Notes Address Book group results");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5177 msgB = _("The identifier '%s' may possibly refer to any of the following"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5178 " Notes Address Book groups. Please select the correct group from"
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5179 " the list below to add it to your buddy list.");
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5180 msg = g_strdup_printf(msgB, result->name);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5181
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5182 purple_request_fields(gc, _("Select Notes Address Book"),
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5183 msgA, msg, fields,
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5184 _("Add Group"), G_CALLBACK(remote_group_multi_cb),
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5185 _("Cancel"), G_CALLBACK(remote_group_multi_cleanup),
34332
876483829700 Request API refactoring: switch purple_request_fields to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34329
diff changeset
5186 purple_request_cpar_from_connection(gc),
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5187 pd);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5188
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5189 g_free(msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5190 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5191
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5192
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5193 static void remote_group_resolved(struct mwServiceResolve *srvc,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5194 guint32 id, guint32 code, GList *results,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5195 gpointer b) {
11133
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
5196
9418ce240eca [gaim-migrate @ 13192]
Christopher O'Brien <siege@pidgin.im>
parents: 11132
diff changeset
5197 struct mwResolveResult *res = NULL;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5198 struct mwSession *session;
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5199 struct mwPurpleProtocolData *pd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5200 PurpleConnection *gc;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5201
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5202 session = mwService_getSession(MW_SERVICE(srvc));
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5203 g_return_if_fail(session != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5204
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5205 pd = mwSession_getClientData(session);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5206 g_return_if_fail(pd != NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5207
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5208 gc = pd->gc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5209 g_return_if_fail(gc != NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
5210
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5211 if(!code && results) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5212 res = results->data;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5213
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5214 if(res->matches) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5215 remote_group_multi(res, pd);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5216 return;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5217 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5218 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5219
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5220 if(res && res->name) {
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5221 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5222 const char *msgB;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5223 char *msg;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5224
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5225 msgA = _("Unable to add group: group not found");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5226
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5227 msgB = _("The identifier '%s' did not match any Notes Address Book"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5228 " groups in your Sametime community.");
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5229 msg = g_strdup_printf(msgB, res->name);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5230
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
5231 purple_notify_error(gc, _("Unable to add group"), msgA, msg,
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
5232 purple_request_cpar_from_connection(gc));
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5233
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5234 g_free(msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5235 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5236 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5237
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5238
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5239 static void remote_group_action_cb(PurpleConnection *gc, const char *name) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5240 struct mwPurpleProtocolData *pd;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5241 struct mwServiceResolve *srvc;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5242 GList *query;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5243 enum mwResolveFlag flags;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5244 guint32 req;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5245
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
5246 pd = purple_connection_get_protocol_data(gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5247 srvc = pd->srvc_resolve;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5248
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5249 query = g_list_prepend(NULL, (char *) name);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5250 flags = mwResolveFlag_FIRST | mwResolveFlag_GROUPS;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
5251
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5252 req = mwServiceResolve_resolve(srvc, query, flags, remote_group_resolved,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5253 NULL, NULL);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5254 g_list_free(query);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5255
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5256 if(req == SEARCH_ERROR) {
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5257 /** @todo display error */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5258 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5259 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5260
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5261
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5262 static void remote_group_action(PurpleProtocolAction *act) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5263 PurpleConnection *gc;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5264 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5265 const char *msgB;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5266
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5267 gc = act->connection;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5268
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5269 msgA = _("Notes Address Book Group");
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5270 msgB = _("Enter the name of a Notes Address Book group in the field below"
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5271 " to add the group and its members to your buddy list.");
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5272
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5273 purple_request_input(gc, _("Add Group"), msgA, msgB, NULL,
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5274 FALSE, FALSE, NULL,
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5275 _("Add"), G_CALLBACK(remote_group_action_cb),
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5276 _("Cancel"), NULL,
34329
ddbc1337332c Request API refactoring: introduce PurpleRequestCommonParameters and switch purple_request_input to it
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34312
diff changeset
5277 purple_request_cpar_from_connection(gc),
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5278 gc);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5279 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5280
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5281
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5282 static void search_notify(struct mwResolveResult *result,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5283 PurpleConnection *gc) {
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5284 GList *l;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5285 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5286 const char *msgB;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5287 char *msg1;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5288 char *msg2;
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5289
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5290 PurpleNotifySearchResults *sres;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5291 PurpleNotifySearchColumn *scol;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5292
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5293 sres = purple_notify_searchresults_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5294
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5295 scol = purple_notify_searchresults_column_new(_("User Name"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5296 purple_notify_searchresults_column_add(sres, scol);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5297
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5298 scol = purple_notify_searchresults_column_new(_("Sametime ID"));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5299 purple_notify_searchresults_column_add(sres, scol);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5300
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5301 purple_notify_searchresults_button_add(sres, PURPLE_NOTIFY_BUTTON_IM,
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5302 notify_im);
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5303
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5304 purple_notify_searchresults_button_add(sres, PURPLE_NOTIFY_BUTTON_ADD,
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5305 notify_add);
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5306
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5307 for(l = result->matches; l; l = l->next) {
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5308 struct mwResolveMatch *match = l->data;
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5309 GList *row = NULL;
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5310
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5311 if(!match->id || !match->name)
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5312 continue;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
5313
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5314 row = g_list_append(row, g_strdup(match->name));
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5315 row = g_list_append(row, g_strdup(match->id));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5316 purple_notify_searchresults_row_add(sres, row);
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5317 }
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5318
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5319 msgA = _("Search results for '%s'");
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5320 msgB = _("The identifier '%s' may possibly refer to any of the following"
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5321 " users. You may add these users to your buddy list or send them"
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5322 " messages with the action buttons below.");
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5323
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5324 msg1 = g_strdup_printf(msgA, result->name);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5325 msg2 = g_strdup_printf(msgB, result->name);
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5326
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5327 purple_notify_searchresults(gc, _("Search Results"),
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5328 msg1, msg2, sres, notify_close, NULL);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5329
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5330 g_free(msg1);
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5331 g_free(msg2);
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5332 }
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5333
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5334
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5335 static void search_resolved(struct mwServiceResolve *srvc,
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5336 guint32 id, guint32 code, GList *results,
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5337 gpointer b) {
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5338
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5339 PurpleConnection *gc = b;
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5340 struct mwResolveResult *res = NULL;
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5341
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5342 if(results) res = results->data;
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5343
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5344 if(!code && res && res->matches) {
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5345 search_notify(res, gc);
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5346
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5347 } else {
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5348 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5349 const char *msgB;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5350 char *msg;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5351
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5352 msgA = _("No matches");
13287
18cc0c33773d [gaim-migrate @ 15652]
Evan Schoenberg <evands@pidgin.im>
parents: 13211
diff changeset
5353 msgB = _("The identifier '%s' did not match any users in your"
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5354 " Sametime community.");
20228
ce019944d765 applied changes from 9d35dde0c779cca73548172223ba557f27d61882
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
5355 msg = g_strdup_printf(msgB, (res && res->name) ? NSTR(res->name) : "");
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5356
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
5357 purple_notify_error(gc, _("No Matches"), msgA, msg,
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
5358 purple_request_cpar_from_connection(gc));
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5359
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5360 g_free(msg);
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5361 }
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5362 }
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5363
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5364
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5365 static void search_action_cb(PurpleConnection *gc, const char *name) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5366 struct mwPurpleProtocolData *pd;
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5367 struct mwServiceResolve *srvc;
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5368 GList *query;
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5369 enum mwResolveFlag flags;
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5370 guint32 req;
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5371
32279
7370dfe843d0 Convert sametime prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32270
diff changeset
5372 pd = purple_connection_get_protocol_data(gc);
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5373 srvc = pd->srvc_resolve;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
5374
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5375 query = g_list_prepend(NULL, (char *) name);
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5376 flags = mwResolveFlag_FIRST | mwResolveFlag_USERS;
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5377
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5378 req = mwServiceResolve_resolve(srvc, query, flags, search_resolved,
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5379 gc, NULL);
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5380 g_list_free(query);
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5381
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5382 if(req == SEARCH_ERROR) {
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5383 /** @todo display error */
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5384 }
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5385 }
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5386
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5387
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5388 static void search_action(PurpleProtocolAction *act) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5389 PurpleConnection *gc;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5390 const char *msgA;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13021
diff changeset
5391 const char *msgB;
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5392
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5393 gc = act->connection;
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5394
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5395 msgA = _("Search for a user");
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5396 msgB = _("Enter a name or partial ID in the field below to search"
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5397 " for matching users in your Sametime community.");
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5398
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5399 purple_request_input(gc, _("User Search"), msgA, msgB, NULL,
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5400 FALSE, FALSE, NULL,
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5401 _("Search"), G_CALLBACK(search_action_cb),
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5402 _("Cancel"), NULL,
34329
ddbc1337332c Request API refactoring: introduce PurpleRequestCommonParameters and switch purple_request_input to it
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34312
diff changeset
5403 purple_request_cpar_from_connection(gc),
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
5404 gc);
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5405 }
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5406
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5407
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
5408 static GList *mw_protocol_get_actions(PurpleConnection *gc) {
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5409 PurpleProtocolAction *act;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5410 GList *l = NULL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5411
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5412 act = purple_protocol_action_new(_("Import Sametime List..."),
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5413 st_import_action);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5414 l = g_list_append(l, act);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5415
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5416 act = purple_protocol_action_new(_("Export Sametime List..."),
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5417 st_export_action);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5418 l = g_list_append(l, act);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5419
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5420 act = purple_protocol_action_new(_("Add Notes Address Book Group..."),
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5421 remote_group_action);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5422 l = g_list_append(l, act);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5423
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5424 act = purple_protocol_action_new(_("User Search..."),
12630
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5425 search_action);
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5426 l = g_list_append(l, act);
b0fad57c3fc0 [gaim-migrate @ 14966]
Christopher O'Brien <siege@pidgin.im>
parents: 12629
diff changeset
5427
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5428 return l;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5429 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5430
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5431
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5432 static void mw_log_handler(const gchar *domain, GLogLevelFlags flags,
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5433 const gchar *msg, gpointer data) {
12005
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
5434
0256aeef8411 [gaim-migrate @ 14298]
Christopher O'Brien <siege@pidgin.im>
parents: 11953
diff changeset
5435 if(! (msg && *msg)) return;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5436
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5437 /* handle g_log requests via purple's built-in debug logging */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5438 if(flags & G_LOG_LEVEL_ERROR) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5439 purple_debug_error(domain, "%s\n", msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5440
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5441 } else if(flags & G_LOG_LEVEL_WARNING) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5442 purple_debug_warning(domain, "%s\n", msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5443
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5444 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5445 purple_debug_info(domain, "%s\n", msg);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5446 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5447 }
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5448
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5449
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5450 static void
36684
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5451 mw_protocol_init(PurpleProtocol *protocol)
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5452 {
32049
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
5453 PurpleAccountUserSplit *split;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5454 PurpleAccountOption *opt;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5455 GList *l = NULL;
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5456
36684
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5457 protocol->id = PROTOCOL_ID;
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5458 protocol->name = PROTOCOL_NAME;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5459
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5460 /* set up the preferences */
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
5461 purple_prefs_add_none(MW_PROTOCOL_OPT_BASE);
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
5462 purple_prefs_add_int(MW_PROTOCOL_OPT_BLIST_ACTION, BLIST_CHOICE_DEFAULT);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5463
32049
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
5464 /* set up account ID as user:server */
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
5465 split = purple_account_user_split_new(_("Server"),
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
5466 MW_PLUGIN_DEFAULT_HOST, ':');
36684
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5467 protocol->user_splits = g_list_append(protocol->user_splits, split);
32049
c51421b3224e Fix up the Sametime prpl to play nice with Visual C++. This patch also puts
Patrick Cloke <clokep@gmail.com>
parents: 31991
diff changeset
5468
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5469 /* remove dead preferences */
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
5470 purple_prefs_remove(MW_PROTOCOL_OPT_PSYCHIC);
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
5471 purple_prefs_remove(MW_PROTOCOL_OPT_SAVE_DYNAMIC);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5472
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5473 /* port to connect to */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5474 opt = purple_account_option_int_new(_("Port"), MW_KEY_PORT,
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5475 MW_PLUGIN_DEFAULT_PORT);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5476 l = g_list_append(l, opt);
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5477
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5478 { /* copy the old force login setting from prefs if it's
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5479 there. Don't delete the preference, since there may be more
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5480 than one account that wants to check for it. */
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5481 gboolean b = FALSE;
12489
14274d68d499 [gaim-migrate @ 14801]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 12422
diff changeset
5482 const char *label = _("Force login (ignore server redirects)");
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5483
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
5484 if(purple_prefs_exists(MW_PROTOCOL_OPT_FORCE_LOGIN))
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
5485 b = purple_prefs_get_bool(MW_PROTOCOL_OPT_FORCE_LOGIN);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5486
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5487 opt = purple_account_option_bool_new(label, MW_KEY_FORCE, b);
11943
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5488 l = g_list_append(l, opt);
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5489 }
81ee4bc13c28 [gaim-migrate @ 14234]
Christopher O'Brien <siege@pidgin.im>
parents: 11837
diff changeset
5490
12311
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
5491 /* pretend to be Sametime Connect */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5492 opt = purple_account_option_bool_new(_("Hide client identity"),
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5493 MW_KEY_FAKE_IT, FALSE);
12312
470a1452d009 [gaim-migrate @ 14616]
Christopher O'Brien <siege@pidgin.im>
parents: 12311
diff changeset
5494 l = g_list_append(l, opt);
12311
ee0f62f4fcd4 [gaim-migrate @ 14615]
Christopher O'Brien <siege@pidgin.im>
parents: 12266
diff changeset
5495
37038
8832d14d7d0c Rename 'protocol_options' field of PurpleProtocol to more appropriate 'account_options'
Ankit Vani <a@nevitus.org>
parents: 37004
diff changeset
5496 protocol->account_options = l;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5497 l = NULL;
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5498 }
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5499
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5500
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5501 static void
36684
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5502 mw_protocol_class_init(PurpleProtocolClass *klass)
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5503 {
36736
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5504 klass->login = mw_protocol_login;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5505 klass->close = mw_protocol_close;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5506 klass->status_types = mw_protocol_status_types;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5507 klass->list_icon = mw_protocol_list_icon;
36684
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5508 }
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5509
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5510
ecc74498e088 Refactored other protocols to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
5511 static void
36729
7f9fac14ed60 Temporarily replaced PurpleProtocolInterface with PurpleProtocolClientIface in protocols
Ankit Vani <a@nevitus.org>
parents: 36714
diff changeset
5512 mw_protocol_client_iface_init(PurpleProtocolClientIface *client_iface)
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5513 {
36736
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5514 client_iface->get_actions = mw_protocol_get_actions;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5515 client_iface->list_emblem = mw_protocol_list_emblem;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5516 client_iface->status_text = mw_protocol_status_text;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5517 client_iface->tooltip_text = mw_protocol_tooltip_text;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5518 client_iface->blist_node_menu = mw_protocol_blist_node_menu;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5519 client_iface->buddy_free = mw_protocol_buddy_free;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5520 client_iface->convo_closed = mw_protocol_convo_closed;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5521 client_iface->normalize = mw_protocol_normalize;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5522 }
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5523
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5524
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5525 static void
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5526 mw_protocol_server_iface_init(PurpleProtocolServerIface *server_iface)
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5527 {
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5528 server_iface->get_info = mw_protocol_get_info;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5529 server_iface->set_status = mw_protocol_set_status;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5530 server_iface->set_idle = mw_protocol_set_idle;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5531 server_iface->add_buddy = mw_protocol_add_buddy;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5532 server_iface->add_buddies = mw_protocol_add_buddies;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5533 server_iface->remove_buddy = mw_protocol_remove_buddy;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5534 server_iface->keepalive = mw_protocol_keepalive;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5535 server_iface->alias_buddy = mw_protocol_alias_buddy;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5536 server_iface->group_buddy = mw_protocol_group_buddy;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5537 server_iface->rename_group = mw_protocol_rename_group;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5538 server_iface->remove_group = mw_protocol_remove_group;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5539 }
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5540
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5541
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5542 static void
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5543 mw_protocol_im_iface_init(PurpleProtocolIMIface *im_iface)
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5544 {
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5545 im_iface->send = mw_protocol_send_im;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5546 im_iface->send_typing = mw_protocol_send_typing;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5547 }
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5548
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5549
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5550 static void
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5551 mw_protocol_chat_iface_init(PurpleProtocolChatIface *chat_iface)
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5552 {
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5553 chat_iface->info = mw_protocol_chat_info;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5554 chat_iface->info_defaults = mw_protocol_chat_info_defaults;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5555 chat_iface->join = mw_protocol_join_chat;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5556 chat_iface->reject = mw_protocol_reject_chat;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5557 chat_iface->get_name = mw_protocol_get_chat_name;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5558 chat_iface->invite = mw_protocol_chat_invite;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5559 chat_iface->leave = mw_protocol_chat_leave;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5560 chat_iface->send = mw_protocol_chat_send;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5561 }
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5562
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5563
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5564 static void
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5565 mw_protocol_privacy_iface_init(PurpleProtocolPrivacyIface *privacy_iface)
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5566 {
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5567 privacy_iface->add_permit = mw_protocol_add_permit;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5568 privacy_iface->add_deny = mw_protocol_add_deny;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5569 privacy_iface->rem_permit = mw_protocol_rem_permit;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5570 privacy_iface->rem_deny = mw_protocol_rem_deny;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5571 privacy_iface->set_permit_deny = mw_protocol_set_permit_deny;
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5572 }
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5573
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5574
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5575 static void
38827
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
5576 mw_protocol_xfer_iface_init(PurpleProtocolXferInterface *xfer_iface)
36736
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5577 {
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5578 xfer_iface->can_receive = mw_protocol_can_receive_file;
39005
6a56e1366809 xfer: Rename PurpleProtocolXferInterface.send() to send_file()
Mike Ruprecht <cmaiku@gmail.com>
parents: 38854
diff changeset
5579 xfer_iface->send_file = mw_protocol_send_file;
36736
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5580 xfer_iface->new_xfer = mw_protocol_new_xfer;
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5581 }
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5582
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5583
36714
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36701
diff changeset
5584 PURPLE_DEFINE_TYPE_EXTENDED(
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36701
diff changeset
5585 mwProtocol, mw_protocol, PURPLE_TYPE_PROTOCOL, 0,
36736
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5586
36729
7f9fac14ed60 Temporarily replaced PurpleProtocolInterface with PurpleProtocolClientIface in protocols
Ankit Vani <a@nevitus.org>
parents: 36714
diff changeset
5587 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CLIENT_IFACE,
36736
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5588 mw_protocol_client_iface_init)
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5589
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5590 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_SERVER_IFACE,
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5591 mw_protocol_server_iface_init)
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5592
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5593 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_IM_IFACE,
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5594 mw_protocol_im_iface_init)
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5595
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5596 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CHAT_IFACE,
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5597 mw_protocol_chat_iface_init)
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5598
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5599 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_PRIVACY_IFACE,
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5600 mw_protocol_privacy_iface_init)
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5601
38827
3573c82d32d8 Initial attempt at removing the magic around PurpleProtocolXferInterface
Gary Kramlich <grim@reaperworld.com>
parents: 38433
diff changeset
5602 PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_XFER,
36736
164cbd1113d4 Refactored sametime, silc, simple to use the new protocol interfaces
Ankit Vani <a@nevitus.org>
parents: 36729
diff changeset
5603 mw_protocol_xfer_iface_init)
36714
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36701
diff changeset
5604 );
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36701
diff changeset
5605
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36701
diff changeset
5606
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5607 static PurplePluginInfo *
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5608 plugin_query(GError **error)
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5609 {
36642
b8ba53daa445 Updated libpurple to use current GPlugin
Ankit Vani <a@nevitus.org>
parents: 36638
diff changeset
5610 const gchar * const authors[] = PLUGIN_AUTHORS;
b8ba53daa445 Updated libpurple to use current GPlugin
Ankit Vani <a@nevitus.org>
parents: 36638
diff changeset
5611
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5612 return purple_plugin_info_new(
36638
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
5613 "id", PLUGIN_ID,
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5614 "name", PLUGIN_NAME,
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5615 "version", DISPLAY_VERSION,
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5616 "category", PLUGIN_CATEGORY,
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5617 "summary", PLUGIN_SUMMARY,
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5618 "description", PLUGIN_DESC,
36642
b8ba53daa445 Updated libpurple to use current GPlugin
Ankit Vani <a@nevitus.org>
parents: 36638
diff changeset
5619 "authors", authors,
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5620 "website", PLUGIN_HOMEPAGE,
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5621 "abi-version", PURPLE_ABI_VERSION,
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
5622 "flags", PURPLE_PLUGIN_INFO_FLAGS_INTERNAL |
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36642
diff changeset
5623 PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD,
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5624 NULL
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5625 );
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5626 }
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5627
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5628
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5629 static gboolean
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5630 plugin_load(PurplePlugin *plugin, GError **error)
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5631 {
36679
488eec308b4c Forgot to move a few things
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
5632 GLogLevelFlags logflags =
488eec308b4c Forgot to move a few things
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
5633 G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION;
488eec308b4c Forgot to move a few things
Ankit Vani <a@nevitus.org>
parents: 36678
diff changeset
5634
36714
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36701
diff changeset
5635 mw_protocol_register_type(plugin);
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36701
diff changeset
5636
36628
3d43ca8d69ee Refactored the protocols to use the error argument of purple_protocols_{add/remove}
Ankit Vani <a@nevitus.org>
parents: 36613
diff changeset
5637 my_protocol = purple_protocols_add(MW_TYPE_PROTOCOL, error);
3d43ca8d69ee Refactored the protocols to use the error argument of purple_protocols_{add/remove}
Ankit Vani <a@nevitus.org>
parents: 36613
diff changeset
5638 if (!my_protocol)
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5639 return FALSE;
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5640
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5641 /* forward all our g_log messages to purple. Generally all the logging
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5642 calls are using purple_log directly, but the g_return macros will
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5643 get caught here */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5644 log_handler[0] = g_log_set_handler(G_LOG_DOMAIN, logflags,
36677
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36660
diff changeset
5645 mw_log_handler, NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30708
diff changeset
5646
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15772
diff changeset
5647 /* redirect meanwhile's logging to purple's */
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5648 log_handler[1] = g_log_set_handler("meanwhile", logflags,
36677
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36660
diff changeset
5649 mw_log_handler, NULL);
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36660
diff changeset
5650
36531
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5651 return TRUE;
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5652 }
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5653
6d45c74af198 Refactored sametime to use the new plugin API
Ankit Vani <a@nevitus.org>
parents: 36414
diff changeset
5654
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5655 static gboolean
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5656 plugin_unload(PurplePlugin *plugin, GError **error)
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5657 {
36677
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36660
diff changeset
5658 g_log_remove_handler(G_LOG_DOMAIN, log_handler[0]);
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36660
diff changeset
5659 g_log_remove_handler("meanwhile", log_handler[1]);
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36660
diff changeset
5660
36628
3d43ca8d69ee Refactored the protocols to use the error argument of purple_protocols_{add/remove}
Ankit Vani <a@nevitus.org>
parents: 36613
diff changeset
5661 if (!purple_protocols_remove(my_protocol, error))
36592
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5662 return FALSE;
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5663
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5664 return TRUE;
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5665 }
431166bcb802 Refactored sametime to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
5666
36714
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36701
diff changeset
5667
ec178f7d66da Refactored protocols to use the new type definition macros
Ankit Vani <a@nevitus.org>
parents: 36701
diff changeset
5668 PURPLE_PLUGIN_INIT(sametime, plugin_query, plugin_load, plugin_unload);
10977
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5669 /* The End. */
5802457af313 [gaim-migrate @ 12803]
Christopher O'Brien <siege@pidgin.im>
parents:
diff changeset
5670

mercurial