| 252 silc_free(req); |
252 silc_free(req); |
| 253 } |
253 } |
| 254 |
254 |
| 255 static void |
255 static void |
| 256 silcpurple_wb_request(SilcClient client, const unsigned char *message, |
256 silcpurple_wb_request(SilcClient client, const unsigned char *message, |
| 257 SilcUInt32 message_len, SilcClientEntry sender, |
257 SilcUInt32 message_len, SilcClientEntry sender, |
| 258 SilcChannelEntry channel) |
258 SilcChannelEntry channel) |
| 259 { |
259 { |
| 260 char tmp[128]; |
260 char tmp[256]; |
| 261 SilcPurpleWbRequest req; |
261 SilcPurpleWbRequest req; |
| 262 PurpleConnection *gc; |
262 PurpleConnection *gc; |
| 263 SilcPurple sg; |
263 SilcPurple sg; |
| 264 |
264 |
| 265 gc = client->application; |
265 gc = client->application; |
| 272 if (!channel) |
272 if (!channel) |
| 273 wb = silcpurple_wb_init(sg, sender); |
273 wb = silcpurple_wb_init(sg, sender); |
| 274 else |
274 else |
| 275 wb = silcpurple_wb_init_ch(sg, channel); |
275 wb = silcpurple_wb_init_ch(sg, channel); |
| 276 |
276 |
| 277 silcpurple_wb_parse(wb->proto_data, wb, (unsigned char *)message, |
277 silcpurple_wb_parse(wb->proto_data, wb, |
| 278 message_len); |
278 (unsigned char *)message, |
| 279 return; |
279 message_len); |
| 280 } |
280 return; |
| |
281 } |
| |
282 |
| |
283 /* Close any previous unaccepted requests */ |
| |
284 purple_request_close_with_handle(sender); |
| 281 |
285 |
| 282 if (!channel) { |
286 if (!channel) { |
| 283 g_snprintf(tmp, sizeof(tmp), |
287 g_snprintf(tmp, sizeof(tmp), |
| 284 _("%s sent message to whiteboard. Would you like " |
288 _("%s sent message to whiteboard. Would you like " |
| 285 "to open the whiteboard?"), sender->nickname); |
289 "to open the whiteboard?"), sender->nickname); |
| 286 } else { |
290 } else { |
| 287 g_snprintf(tmp, sizeof(tmp), |
291 g_snprintf(tmp, sizeof(tmp), |
| 288 _("%s sent message to whiteboard on %s channel. " |
292 _("%s sent message to whiteboard on %s channel. " |
| 289 "Would you like to open the whiteboard?"), |
293 "Would you like to open the whiteboard?"), |
| 290 sender->nickname, channel->channel_name); |
294 sender->nickname, channel->channel_name); |
| 291 } |
295 } |
| 292 |
296 |
| 293 req = silc_calloc(1, sizeof(*req)); |
297 req = silc_calloc(1, sizeof(*req)); |
| 294 if (!req) |
298 if (!req) |
| 295 return; |
299 return; |
| 297 req->message_len = message_len; |
301 req->message_len = message_len; |
| 298 req->sender = sender; |
302 req->sender = sender; |
| 299 req->channel = channel; |
303 req->channel = channel; |
| 300 req->sg = sg; |
304 req->sg = sg; |
| 301 |
305 |
| 302 purple_request_action_with_hint(gc, _("Whiteboard"), tmp, NULL, 1, |
306 purple_request_action_with_hint(sender, _("Whiteboard"), tmp, NULL, 1, |
| 303 sg->account, sender->nickname, NULL, PURPLE_REQUEST_UI_HINT_BLIST, req, 2, |
307 sg->account, sender->nickname, NULL, PURPLE_REQUEST_UI_HINT_BLIST, req, 2, |
| 304 _("Yes"), G_CALLBACK(silcpurple_wb_request_cb), |
308 _("Yes"), G_CALLBACK(silcpurple_wb_request_cb), |
| 305 _("No"), G_CALLBACK(silcpurple_wb_request_cb)); |
309 _("No"), G_CALLBACK(silcpurple_wb_request_cb)); |
| 306 } |
310 } |
| 307 |
311 |