libpurple/protocols/silc/wb.c

Fri, 09 Nov 2007 08:48:40 +0000

author
John Bailey <rekkanoryo@rekkanoryo.org>
date
Fri, 09 Nov 2007 08:48:40 +0000
branch
release-2.2.3
changeset 20289
5c844288fbec
parent 17675
e7069bf1de1a
child 21453
a90cf329cd48
permissions
-rw-r--r--

applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
through a9f75de97d6cdf8fe8bf091b95def6c648aac82f

applied changes from a9f75de97d6cdf8fe8bf091b95def6c648aac82f
through 7c9f2e0cc4967a3eaade95d32f164349b6d1aa03

applied changes from a9f75de97d6cdf8fe8bf091b95def6c648aac82f
through fc4350a15fdd1f51b4496568afaa83355e18b714

applied changes from fc4350a15fdd1f51b4496568afaa83355e18b714
through 18ccd2ba2c1c9b7fa3dfedf72b48b3bd01c3a7c4

applied changes from a9f75de97d6cdf8fe8bf091b95def6c648aac82f
through 20236f54c97e87512b7eb716559a4bd86b73f833

applied changes from 868a040ee69c6e45b9132e7254a3f523e55385b2
through 0e154355bb3e8bdaeb793b142075b60671b37a48

applied changes from 329395b9793793f35bcf231033c1eb942513ab01
through 9d8120be512c235d76a8f6fee60cae024da8772e

12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
1 /*
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
2
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
3 wb.c
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
4
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
5 Author: Pekka Riikonen <priikone@silcnet.org>
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
6
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
7 Copyright (C) 2005 - 2007 Pekka Riikonen
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
8
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
9 This program is free software; you can redistribute it and/or modify
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
10 it under the terms of the GNU General Public License as published by
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
11 the Free Software Foundation; version 2 of the License.
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
12
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
13 This program is distributed in the hope that it will be useful,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
16 GNU General Public License for more details.
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
17
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
18 */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
19
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
20 #include "silc.h"
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
21 #include "silcclient.h"
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
22 #include "silcpurple.h"
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
23 #include "wb.h"
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
24
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
25 /*
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
26 SILC Whiteboard packet:
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
27
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
28 1 byte command
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
29 2 bytes width
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
30 2 bytes height
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
31 4 bytes brush color
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
32 2 bytes brush size
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
33 n bytes data
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
34
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
35 Data:
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
36
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
37 4 bytes x
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
38 4 bytes y
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
39
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
40 Commands:
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
41
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
42 0x01 draw
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
43 0x02 clear
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
44
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
45 MIME:
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
46
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
47 MIME-Version: 1.0
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
48 Content-Type: application/x-wb
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
49 Content-Transfer-Encoding: binary
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
50
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
51 */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
52
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
53 #define SILCPURPLE_WB_MIME "MIME-Version: 1.0\r\nContent-Type: application/x-wb\r\nContent-Transfer-Encoding: binary\r\n\r\n"
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
54 #define SILCPURPLE_WB_HEADER strlen(SILCPURPLE_WB_MIME) + 11
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
55
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
56 #define SILCPURPLE_WB_WIDTH 500
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
57 #define SILCPURPLE_WB_HEIGHT 400
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
58 #define SILCPURPLE_WB_WIDTH_MAX 1024
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
59 #define SILCPURPLE_WB_HEIGHT_MAX 1024
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
60
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
61 /* Commands */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
62 typedef enum {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
63 SILCPURPLE_WB_DRAW = 0x01,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
64 SILCPURPLE_WB_CLEAR = 0x02,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
65 } SilcPurpleWbCommand;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
66
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
67 /* Brush size */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
68 typedef enum {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
69 SILCPURPLE_WB_BRUSH_SMALL = 2,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
70 SILCPURPLE_WB_BRUSH_MEDIUM = 5,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
71 SILCPURPLE_WB_BRUSH_LARGE = 10,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
72 } SilcPurpleWbBrushSize;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
73
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
74 /* Brush color (XXX Purple should provide default colors) */
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
75 typedef enum {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
76 SILCPURPLE_WB_COLOR_BLACK = 0,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
77 SILCPURPLE_WB_COLOR_RED = 13369344,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
78 SILCPURPLE_WB_COLOR_GREEN = 52224,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
79 SILCPURPLE_WB_COLOR_BLUE = 204,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
80 SILCPURPLE_WB_COLOR_YELLOW = 15658496,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
81 SILCPURPLE_WB_COLOR_ORANGE = 16737792,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
82 SILCPURPLE_WB_COLOR_CYAN = 52428,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
83 SILCPURPLE_WB_COLOR_VIOLET = 5381277,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
84 SILCPURPLE_WB_COLOR_PURPLE = 13369548,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
85 SILCPURPLE_WB_COLOR_TAN = 12093547,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
86 SILCPURPLE_WB_COLOR_BROWN = 5256485,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
87 SILCPURPLE_WB_COLOR_GREY = 11184810,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
88 SILCPURPLE_WB_COLOR_WHITE = 16777215,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
89 } SilcPurpleWbColor;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
90
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
91 typedef struct {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
92 int type; /* 0 = buddy, 1 = channel */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
93 union {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
94 SilcClientEntry client;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
95 SilcChannelEntry channel;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
96 } u;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
97 int width;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
98 int height;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
99 int brush_size;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
100 int brush_color;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
101 } *SilcPurpleWb;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
102
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
103 /* Initialize whiteboard */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
104
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
105 PurpleWhiteboard *silcpurple_wb_init(SilcPurple sg, SilcClientEntry client_entry)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
106 {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
107 SilcClientConnection conn;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
108 PurpleWhiteboard *wb;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
109 SilcPurpleWb wbs;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
110
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
111 conn = sg->conn;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
112 wb = purple_whiteboard_get_session(sg->account, client_entry->nickname);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
113 if (!wb)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
114 wb = purple_whiteboard_create(sg->account, client_entry->nickname, 0);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
115 if (!wb)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
116 return NULL;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
117
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
118 if (!wb->proto_data) {
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
119 wbs = silc_calloc(1, sizeof(*wbs));
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
120 if (!wbs)
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
121 return NULL;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
122 wbs->type = 0;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
123 wbs->u.client = client_entry;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
124 wbs->width = SILCPURPLE_WB_WIDTH;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
125 wbs->height = SILCPURPLE_WB_HEIGHT;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
126 wbs->brush_size = SILCPURPLE_WB_BRUSH_SMALL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
127 wbs->brush_color = SILCPURPLE_WB_COLOR_BLACK;
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
128 wb->proto_data = wbs;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
129
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
130 /* Start the whiteboard */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
131 purple_whiteboard_start(wb);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
132 purple_whiteboard_clear(wb);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
133 }
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
134
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
135 return wb;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
136 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
137
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
138 PurpleWhiteboard *silcpurple_wb_init_ch(SilcPurple sg, SilcChannelEntry channel)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
139 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
140 PurpleWhiteboard *wb;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
141 SilcPurpleWb wbs;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
142
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
143 wb = purple_whiteboard_get_session(sg->account, channel->channel_name);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
144 if (!wb)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
145 wb = purple_whiteboard_create(sg->account, channel->channel_name, 0);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
146 if (!wb)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
147 return NULL;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
148
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
149 if (!wb->proto_data) {
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
150 wbs = silc_calloc(1, sizeof(*wbs));
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
151 if (!wbs)
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
152 return NULL;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
153 wbs->type = 1;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
154 wbs->u.channel = channel;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
155 wbs->width = SILCPURPLE_WB_WIDTH;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
156 wbs->height = SILCPURPLE_WB_HEIGHT;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
157 wbs->brush_size = SILCPURPLE_WB_BRUSH_SMALL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
158 wbs->brush_color = SILCPURPLE_WB_COLOR_BLACK;
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
159 wb->proto_data = wbs;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
160
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
161 /* Start the whiteboard */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
162 purple_whiteboard_start(wb);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
163 purple_whiteboard_clear(wb);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
164 }
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
165
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
166 return wb;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
167 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
168
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
169 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
170 silcpurple_wb_parse(SilcPurpleWb wbs, PurpleWhiteboard *wb,
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
171 unsigned char *message, SilcUInt32 message_len)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
172 {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
173 SilcUInt8 command;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
174 SilcUInt16 width, height, brush_size;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
175 SilcUInt32 brush_color, x, y, dx, dy;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
176 SilcBufferStruct buf;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
177 int ret;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
178
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
179 /* Parse the packet */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
180 silc_buffer_set(&buf, message, message_len);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
181 ret = silc_buffer_unformat(&buf,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
182 SILC_STR_UI_CHAR(&command),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
183 SILC_STR_UI_SHORT(&width),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
184 SILC_STR_UI_SHORT(&height),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
185 SILC_STR_UI_INT(&brush_color),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
186 SILC_STR_UI_SHORT(&brush_size),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
187 SILC_STR_END);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
188 if (ret < 0)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
189 return;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
190 silc_buffer_pull(&buf, ret);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
191
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
192 /* Update whiteboard if its dimensions changed */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
193 if (width != wbs->width || height != wbs->height)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
194 silcpurple_wb_set_dimensions(wb, height, width);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
195
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
196 if (command == SILCPURPLE_WB_DRAW) {
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
197 /* Parse data and draw it */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
198 ret = silc_buffer_unformat(&buf,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
199 SILC_STR_UI_INT(&dx),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
200 SILC_STR_UI_INT(&dy),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
201 SILC_STR_END);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
202 if (ret < 0)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
203 return;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
204 silc_buffer_pull(&buf, 8);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
205 x = dx;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
206 y = dy;
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
207 while (silc_buffer_len(&buf) > 0) {
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
208 ret = silc_buffer_unformat(&buf,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
209 SILC_STR_UI_INT(&dx),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
210 SILC_STR_UI_INT(&dy),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
211 SILC_STR_END);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
212 if (ret < 0)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
213 return;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
214 silc_buffer_pull(&buf, 8);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
215
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
216 purple_whiteboard_draw_line(wb, x, y, x + dx, y + dy,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
217 brush_color, brush_size);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
218 x += dx;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
219 y += dy;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
220 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
221 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
222
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
223 if (command == SILCPURPLE_WB_CLEAR)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
224 purple_whiteboard_clear(wb);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
225 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
226
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
227 typedef struct {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
228 unsigned char *message;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
229 SilcUInt32 message_len;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
230 SilcPurple sg;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
231 SilcClientEntry sender;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
232 SilcChannelEntry channel;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
233 } *SilcPurpleWbRequest;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
234
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
235 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
236 silcpurple_wb_request_cb(SilcPurpleWbRequest req, gint id)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
237 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
238 PurpleWhiteboard *wb;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
239
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
240 if (id != 1)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
241 goto out;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
242
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
243 if (!req->channel)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
244 wb = silcpurple_wb_init(req->sg, req->sender);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
245 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
246 wb = silcpurple_wb_init_ch(req->sg, req->channel);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
247
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
248 silcpurple_wb_parse(wb->proto_data, wb, req->message, req->message_len);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
249
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
250 out:
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
251 silc_free(req->message);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
252 silc_free(req);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
253 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
254
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
255 static void
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
256 silcpurple_wb_request(SilcClient client, const unsigned char *message,
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
257 SilcUInt32 message_len, SilcClientEntry sender,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
258 SilcChannelEntry channel)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
259 {
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
260 char tmp[256];
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
261 SilcPurpleWbRequest req;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
262 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
263 SilcPurple sg;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
264
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
265 gc = client->application;
16492
4f0dc2d16e55 Update SILC to match resent request API changes
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16396
diff changeset
266 sg = gc->proto_data;
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
267
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
268 /* Open whiteboard automatically if requested */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
269 if (purple_account_get_bool(sg->account, "open-wb", FALSE)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
270 PurpleWhiteboard *wb;
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
271
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
272 if (!channel)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
273 wb = silcpurple_wb_init(sg, sender);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
274 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
275 wb = silcpurple_wb_init_ch(sg, channel);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
276
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
277 silcpurple_wb_parse(wb->proto_data, wb,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
278 (unsigned char *)message,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
279 message_len);
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
280 return;
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
281 }
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
282
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
283 /* Close any previous unaccepted requests */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
284 purple_request_close_with_handle(sender);
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
285
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
286 if (!channel) {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
287 g_snprintf(tmp, sizeof(tmp),
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
288 _("%s sent message to whiteboard. Would you like "
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
289 "to open the whiteboard?"), sender->nickname);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
290 } else {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
291 g_snprintf(tmp, sizeof(tmp),
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
292 _("%s sent message to whiteboard on %s channel. "
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
293 "Would you like to open the whiteboard?"),
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
294 sender->nickname, channel->channel_name);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
295 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
296
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
297 req = silc_calloc(1, sizeof(*req));
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
298 if (!req)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
299 return;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
300 req->message = silc_memdup(message, message_len);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
301 req->message_len = message_len;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
302 req->sender = sender;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
303 req->channel = channel;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
304 req->sg = sg;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
305
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
306 purple_request_action(sender, _("Whiteboard"), tmp, NULL, 1,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
307 sg->account, sender->nickname, NULL, req, 2,
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
308 _("Yes"), G_CALLBACK(silcpurple_wb_request_cb),
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17675
diff changeset
309 _("No"), G_CALLBACK(silcpurple_wb_request_cb));
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
310 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
311
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
312 /* Process incoming whiteboard message */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
313
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
314 void silcpurple_wb_receive(SilcClient client, SilcClientConnection conn,
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
315 SilcClientEntry sender, SilcMessagePayload payload,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
316 SilcMessageFlags flags, const unsigned char *message,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
317 SilcUInt32 message_len)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
318 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
319 SilcPurple sg;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
320 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
321 PurpleWhiteboard *wb;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
322 SilcPurpleWb wbs;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
323
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
324 gc = client->application;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
325 sg = gc->proto_data;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
326
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
327 wb = purple_whiteboard_get_session(sg->account, sender->nickname);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
328 if (!wb) {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
329 /* Ask user if they want to open the whiteboard */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
330 silcpurple_wb_request(client, message, message_len,
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
331 sender, NULL);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
332 return;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
333 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
334
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
335 wbs = wb->proto_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
336 silcpurple_wb_parse(wbs, wb, (unsigned char *)message, message_len);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
337 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
338
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
339 /* Process incoming whiteboard message on channel */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
340
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
341 void silcpurple_wb_receive_ch(SilcClient client, SilcClientConnection conn,
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
342 SilcClientEntry sender, SilcChannelEntry channel,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
343 SilcMessagePayload payload,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
344 SilcMessageFlags flags,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
345 const unsigned char *message,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
346 SilcUInt32 message_len)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
347 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
348 SilcPurple sg;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
349 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
350 PurpleWhiteboard *wb;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
351 SilcPurpleWb wbs;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
352
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
353 gc = client->application;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
354 sg = gc->proto_data;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
355
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
356 wb = purple_whiteboard_get_session(sg->account, channel->channel_name);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
357 if (!wb) {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
358 /* Ask user if they want to open the whiteboard */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
359 silcpurple_wb_request(client, message, message_len,
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
360 sender, channel);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
361 return;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
362 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
363
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
364 wbs = wb->proto_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
365 silcpurple_wb_parse(wbs, wb, (unsigned char *)message, message_len);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
366 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
367
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
368 /* Send whiteboard message */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
369
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
370 void silcpurple_wb_send(PurpleWhiteboard *wb, GList *draw_list)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
371 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
372 SilcPurpleWb wbs = wb->proto_data;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
373 SilcBuffer packet;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
374 GList *list;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
375 int len;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
376 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
377 SilcPurple sg;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
378
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
379 g_return_if_fail(draw_list);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
380 gc = purple_account_get_connection(wb->account);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
381 g_return_if_fail(gc);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
382 sg = gc->proto_data;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
383 g_return_if_fail(sg);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
384
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
385 len = SILCPURPLE_WB_HEADER;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
386 for (list = draw_list; list; list = list->next)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
387 len += 4;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
388
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
389 packet = silc_buffer_alloc_size(len);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
390 if (!packet)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
391 return;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
392
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
393 /* Assmeble packet */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
394 silc_buffer_format(packet,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
395 SILC_STR_UI32_STRING(SILCPURPLE_WB_MIME),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
396 SILC_STR_UI_CHAR(SILCPURPLE_WB_DRAW),
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
397 SILC_STR_UI_SHORT(wbs->width),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
398 SILC_STR_UI_SHORT(wbs->height),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
399 SILC_STR_UI_INT(wbs->brush_color),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
400 SILC_STR_UI_SHORT(wbs->brush_size),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
401 SILC_STR_END);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
402 silc_buffer_pull(packet, SILCPURPLE_WB_HEADER);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
403 for (list = draw_list; list; list = list->next) {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
404 silc_buffer_format(packet,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
405 SILC_STR_UI_INT(GPOINTER_TO_INT(list->data)),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
406 SILC_STR_END);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
407 silc_buffer_pull(packet, 4);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
408 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
409
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
410 /* Send the message */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
411 if (wbs->type == 0) {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
412 /* Private message */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
413 silc_client_send_private_message(sg->client, sg->conn,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
414 wbs->u.client,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
415 SILC_MESSAGE_FLAG_DATA, NULL,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
416 packet->head, len);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
417 } else if (wbs->type == 1) {
12167
f3ad3170f09d [gaim-migrate @ 14468]
Pekka Riikonen <priikone@silcnet.org>
parents: 12058
diff changeset
418 /* Channel message. Channel private keys are not supported. */
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
419 silc_client_send_channel_message(sg->client, sg->conn,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
420 wbs->u.channel, NULL,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
421 SILC_MESSAGE_FLAG_DATA, NULL,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
422 packet->head, len);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
423 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
424
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
425 silc_buffer_free(packet);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
426 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
427
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
428 /* Purple Whiteboard operations */
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
429
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
430 void silcpurple_wb_start(PurpleWhiteboard *wb)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
431 {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
432 /* Nothing here. Everything is in initialization */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
433 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
434
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
435 void silcpurple_wb_end(PurpleWhiteboard *wb)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
436 {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
437 silc_free(wb->proto_data);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
438 wb->proto_data = NULL;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
439 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
440
16396
2217b2765e58 Fix two minor compile warnings
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
441 void silcpurple_wb_get_dimensions(const PurpleWhiteboard *wb, int *width, int *height)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
442 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
443 SilcPurpleWb wbs = wb->proto_data;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
444 *width = wbs->width;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
445 *height = wbs->height;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
446 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
447
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
448 void silcpurple_wb_set_dimensions(PurpleWhiteboard *wb, int width, int height)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
449 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
450 SilcPurpleWb wbs = wb->proto_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
451 wbs->width = width > SILCPURPLE_WB_WIDTH_MAX ? SILCPURPLE_WB_WIDTH_MAX :
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
452 width;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
453 wbs->height = height > SILCPURPLE_WB_HEIGHT_MAX ? SILCPURPLE_WB_HEIGHT_MAX :
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
454 height;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
455
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
456 /* Update whiteboard */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
457 purple_whiteboard_set_dimensions(wb, wbs->width, wbs->height);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
458 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
459
16396
2217b2765e58 Fix two minor compile warnings
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
460 void silcpurple_wb_get_brush(const PurpleWhiteboard *wb, int *size, int *color)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
461 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
462 SilcPurpleWb wbs = wb->proto_data;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
463 *size = wbs->brush_size;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
464 *color = wbs->brush_color;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
465 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
466
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
467 void silcpurple_wb_set_brush(PurpleWhiteboard *wb, int size, int color)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
468 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
469 SilcPurpleWb wbs = wb->proto_data;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
470 wbs->brush_size = size;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
471 wbs->brush_color = color;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
472
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
473 /* Update whiteboard */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
474 purple_whiteboard_set_brush(wb, size, color);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
475 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
476
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
477 void silcpurple_wb_clear(PurpleWhiteboard *wb)
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
478 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
479 SilcPurpleWb wbs = wb->proto_data;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
480 SilcBuffer packet;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
481 int len;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
482 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
483 SilcPurple sg;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
484
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
485 gc = purple_account_get_connection(wb->account);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
486 g_return_if_fail(gc);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
487 sg = gc->proto_data;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
488 g_return_if_fail(sg);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
489
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
490 len = SILCPURPLE_WB_HEADER;
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
491 packet = silc_buffer_alloc_size(len);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
492 if (!packet)
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
493 return;
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
494
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
495 /* Assmeble packet */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
496 silc_buffer_format(packet,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
497 SILC_STR_UI32_STRING(SILCPURPLE_WB_MIME),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
498 SILC_STR_UI_CHAR(SILCPURPLE_WB_CLEAR),
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
499 SILC_STR_UI_SHORT(wbs->width),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
500 SILC_STR_UI_SHORT(wbs->height),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
501 SILC_STR_UI_INT(wbs->brush_color),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
502 SILC_STR_UI_SHORT(wbs->brush_size),
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
503 SILC_STR_END);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
504
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
505 /* Send the message */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
506 if (wbs->type == 0) {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
507 /* Private message */
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
508 silc_client_send_private_message(sg->client, sg->conn,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
509 wbs->u.client,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
510 SILC_MESSAGE_FLAG_DATA, NULL,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
511 packet->head, len);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
512 } else if (wbs->type == 1) {
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
513 /* Channel message */
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
514 silc_client_send_channel_message(sg->client, sg->conn,
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
515 wbs->u.channel, NULL,
17675
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
516 SILC_MESSAGE_FLAG_DATA, NULL,
e7069bf1de1a Patch from Pekka Riikonen to update the SILC protocol plugin to work with
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16492
diff changeset
517 packet->head, len);
12058
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
518 }
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
519
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
520 silc_buffer_free(packet);
6d4b6e3bd0ba [gaim-migrate @ 14353]
Pekka Riikonen <priikone@silcnet.org>
parents:
diff changeset
521 }

mercurial