annotate plugins/icq/gaim_icq.c @ 1401:bf041349b11e

[gaim-migrate @ 1411] abliity to set accounts away independent of each other. also allows for all the other states (like in yahoo and icq). probably breaks MSN, so don't use it until rob fixes it. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 10 Jan 2001 22:15:24 +0000
parents 8331d967288e
children 65f4a0325022
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1 #include <gtk/gtk.h>
1167
5d1ded9f88b7 [gaim-migrate @ 1177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1153
diff changeset
2 #include <string.h>
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3 #include "icq.h" /* well, we're doing ICQ, right? */
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4 #include "multi.h" /* needed for gaim_connection */
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5 #include "prpl.h" /* needed for prpl */
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6 #include "gaim.h" /* needed for every other damn thing */
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
8 #include "pixmaps/gnomeicu-online.xpm"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
9 #include "pixmaps/gnomeicu-away.xpm"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
10 #include "pixmaps/gnomeicu-dnd.xpm"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
11 #include "pixmaps/gnomeicu-na.xpm"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
12 #include "pixmaps/gnomeicu-occ.xpm"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
13 #include "pixmaps/gnomeicu-ffc.xpm"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
14
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
15 #define USEROPT_NICK 0
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
16
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 struct icq_data {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 ICQLINK *link;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 int cur_status;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20 int tcp_timer;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21 int ack_timer;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 };
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 static struct gaim_connection *find_gaim_conn_by_icq_link(ICQLINK *link) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 GSList *c = connections;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 struct gaim_connection *gc = NULL;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27 struct icq_data *id;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
28
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
29 while (c) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
30 gc = (struct gaim_connection *)c->data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
31 if (gc->protocol == PROTO_ICQ) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
32 id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
33 if (id->link == link)
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
34 break;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
35 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
36 gc = NULL;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
37 c = c->next;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
38 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
39
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
40 return gc;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
41 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
42
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
43 static char *icq_name() {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
44 return "ICQ";
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
45 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
46
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
47 static void icq_do_log(ICQLINK *link, time_t time, unsigned char level, const char *log) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
48 debug_printf("ICQ debug %d: %s", level, log);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
49 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
50
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
51 static gint icq_tcp_timer(ICQLINK *link) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
52 icq_TCPMain(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
53 return TRUE;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
54 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
55
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
56 static void icq_callback(gpointer data, gint source, GdkInputCondition condition) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
57 struct gaim_connection *gc = (struct gaim_connection *)data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
58 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
59 debug_printf("ICQ Callback handler\n");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
60
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
61 icq_HandleServerResponse(id->link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
62 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
63
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
64 static void icq_online(ICQLINK *link) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
65 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
66 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
67 debug_printf("%s is now online.\n", gc->username);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
68 account_online(gc);
1153
3063e6743913 [gaim-migrate @ 1163]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1152
diff changeset
69 gc->options |= OPT_USR_KEEPALV;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
70 serv_finish_login(gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
71
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
72 if (bud_list_cache_exists(gc))
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
73 do_import(NULL, gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
74
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
75 icq_ChangeStatus(id->link, STATUS_ONLINE);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
76 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
77
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
78 static void icq_logged_off(ICQLINK *link) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
79 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
80 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
81 int icqSocket;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
82
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
83 gtk_timeout_remove(id->tcp_timer);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
84 gdk_input_remove(gc->inpa);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
85
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
86 if (icq_Connect(link, "icq.mirabilis.com", 4000) < 1) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
87 hide_login_progress(gc, "Unable to connect");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
88 signoff(gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
89 return;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
90 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
91
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
92 icqSocket = icq_GetSok(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
93 gc->inpa = gdk_input_add(icqSocket, GDK_INPUT_READ | GDK_INPUT_EXCEPTION, icq_callback, gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
94
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
95 icq_Login(link, STATUS_ONLINE);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
96 id->cur_status = STATUS_ONLINE;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
97
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
98 id->tcp_timer = gtk_timeout_add(100, (GtkFunction)icq_tcp_timer, link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
99 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
100
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
101 static void icq_msg_incoming(ICQLINK *link, unsigned long uin, unsigned char hour, unsigned char minute,
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
102 unsigned char day, unsigned char month, unsigned short year, const char *data) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
103 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
104 char buf[256], *tmp = g_strdup(data);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
105 g_snprintf(buf, sizeof buf, "%lu", uin);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
106 serv_got_im(gc, buf, tmp, 0);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
107 g_free(tmp);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
108 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
109
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
110 static void icq_user_online(ICQLINK *link, unsigned long uin, unsigned long st,
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
111 unsigned long ip, unsigned short port, unsigned long real_ip,
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
112 unsigned char tcp_flags) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
113 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
114 guint status;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
115 char buf[256];
1232
0c7c659fc730 [gaim-migrate @ 1242]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1222
diff changeset
116 time_t t;
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
117
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
118 g_snprintf(buf, sizeof buf, "%lu", uin);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
119 status = (st == STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE | (st << 5);
1232
0c7c659fc730 [gaim-migrate @ 1242]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1222
diff changeset
120 time(&t);
0c7c659fc730 [gaim-migrate @ 1242]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1222
diff changeset
121 serv_got_update(gc, buf, 1, 0, t, 0, status, 0);
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
122 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
123
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
124 static void icq_user_offline(ICQLINK *link, unsigned long uin) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
125 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
126 char buf[256]; g_snprintf(buf, sizeof buf, "%lu", uin);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
127 serv_got_update(gc, buf, 0, 0, 0, 0, 0, 0);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
128 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
129
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
130 static void icq_user_status(ICQLINK *link, unsigned long uin, unsigned long st) {
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
131 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
132 guint status;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
133 char buf[256];
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
134
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
135 g_snprintf(buf, sizeof buf, "%lu", uin);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
136 status = (st == STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE | (st << 5);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
137 serv_got_update(gc, buf, 1, 0, 0, 0, status, 0);
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
138 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
139
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
140 static gint icq_set_timeout_cb(struct icq_data *id) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
141 icq_HandleTimeout(id->link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
142 id->ack_timer = -1;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
143 return FALSE;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
144 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
145
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
146 static void icq_set_timeout(ICQLINK *link, long interval) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
147 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
148 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
149
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
150 debug_printf("icq_SetTimeout: %ld\n", interval);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
151 if (interval > 0 && id->ack_timer < 1)
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
152 id->ack_timer = gtk_timeout_add(interval * 1000, (GtkFunction)icq_set_timeout_cb, id);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
153 else if (id->ack_timer > 0) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
154 gtk_timeout_remove(id->ack_timer);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
155 id->ack_timer = -1;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
156 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
157 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
158
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
159 static void icq_url_incoming(struct icq_link *link, unsigned long uin, unsigned char hour,
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
160 unsigned char minute, unsigned char day, unsigned char month,
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
161 unsigned short year, const char *url, const char *descr) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
162 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
163 int len = strlen(url) + strlen(descr) + 25; /* 25 is straight out of my ass */
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
164 char *msg = g_malloc(len), buf[256];
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
165 g_snprintf(msg, len, "<A HREF=\"%s\">%s</A>", url, descr);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
166 g_snprintf(buf, 256, "%lu", uin);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
167 serv_got_im(gc, buf, msg, 0);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
168 g_free(msg);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
169 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
170
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
171 static void icq_wrong_passwd(struct icq_link *link) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
172 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
173 hide_login_progress(gc, "Invalid password.");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
174 signoff(gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
175 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
176
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
177 static void icq_invalid_uin(struct icq_link *link) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
178 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
179 hide_login_progress(gc, "Invalid UIN.");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
180 signoff(gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
181 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
182
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
183 static void icq_info_reply(struct icq_link *link, unsigned long uin, const char *nick,
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
184 const char *first, const char *last, const char *email, char auth) {
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
185 char buf[16 * 1024];
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
186
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
187 g_snprintf(buf, sizeof buf,
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
188 "<B>UIN:</B> %lu<BR>"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
189 "<B>Nick:</B> %s<BR>"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
190 "<B>Name:</B> %s %s<BR>"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
191 "<B>Email:</B> %s\n",
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
192 uin,
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
193 nick,
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
194 first, last,
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
195 email);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
196 g_show_info_text(buf);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
197 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
198
1222
5186c154e90d [gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1220
diff changeset
199 static void icq_req_notify(struct icq_link *link, unsigned long id, int result,
5186c154e90d [gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1220
diff changeset
200 unsigned int length, void *data) {
5186c154e90d [gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1220
diff changeset
201 }
5186c154e90d [gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1220
diff changeset
202
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
203 static void icq_web_pager(struct icq_link *link, unsigned char hour, unsigned char minute,
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
204 unsigned char day, unsigned char month, unsigned short year, const char *nick,
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
205 const char *email, const char *msg) {
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
206 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
207 char *who = g_strdup_printf("ICQ Web Pager: %s (%s)", nick, email);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
208 char *what = g_strdup(msg);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
209 serv_got_im(gc, who, what, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
210 g_free(who);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
211 g_free(what);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
212 }
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
213
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
214 static void icq_mail_express(struct icq_link *link, unsigned char hour, unsigned char minute,
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
215 unsigned char day, unsigned char month, unsigned short year, const char *nick,
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
216 const char *email, const char *msg) {
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
217 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
218 char *who = g_strdup_printf("ICQ Mail Express: %s (%s)", nick, email);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
219 char *what = g_strdup(msg);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
220 serv_got_im(gc, who, what, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
221 g_free(who);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
222 g_free(what);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
223 }
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
224
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
225 static void icq_login(struct aim_user *user) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
226 struct gaim_connection *gc = new_gaim_conn(user);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
227 struct icq_data *id = gc->proto_data = g_new0(struct icq_data, 1);
1309
0a766047b4fd [gaim-migrate @ 1319]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1232
diff changeset
228 ICQLINK *link = id->link = icq_ICQLINKNew(atol(user->username), user->password,
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
229 user->proto_opt[USEROPT_NICK][0] ? user->proto_opt[USEROPT_NICK] : "gaim user",
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
230 TRUE);
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
231 int icqSocket;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
232
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
233 icq_LogLevel = ICQ_LOG_MESSAGE;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
234
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
235 link->icq_Logged = icq_online;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
236 link->icq_Disconnected = icq_logged_off;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
237 link->icq_RecvMessage = icq_msg_incoming;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
238 link->icq_RecvURL = icq_url_incoming;
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
239 link->icq_RecvWebPager = icq_web_pager;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
240 link->icq_RecvMailExpress = icq_mail_express;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
241 link->icq_UserOnline = icq_user_online;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
242 link->icq_UserOffline = icq_user_offline;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
243 link->icq_UserStatusUpdate = icq_user_status;
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
244 link->icq_InfoReply = icq_info_reply;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
245 link->icq_WrongPassword = icq_wrong_passwd;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
246 link->icq_InvalidUIN = icq_invalid_uin;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
247 link->icq_Log = icq_do_log;
1222
5186c154e90d [gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1220
diff changeset
248 link->icq_RequestNotify = icq_req_notify;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
249 link->icq_SetTimeout = icq_set_timeout;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
250
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
251 icq_UnsetProxy(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
252
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
253 if (icq_Connect(link, "icq.mirabilis.com", 4000) < 1) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
254 hide_login_progress(gc, "Unable to connect");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
255 signoff(gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
256 return;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
257 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
258
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
259 icqSocket = icq_GetSok(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
260 gc->inpa = gdk_input_add(icqSocket, GDK_INPUT_READ | GDK_INPUT_EXCEPTION, icq_callback, gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
261
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
262 icq_Login(link, STATUS_ONLINE);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
263 id->cur_status = STATUS_ONLINE;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
264
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
265 id->tcp_timer = gtk_timeout_add(100, (GtkFunction)icq_tcp_timer, link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
266
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
267 set_login_progress(gc, 0, "Connecting...");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
268 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
269
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
270 static void icq_close(struct gaim_connection *gc) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
271 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
272
1374
8331d967288e [gaim-migrate @ 1384]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1336
diff changeset
273 if (id->tcp_timer > 0)
8331d967288e [gaim-migrate @ 1384]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1336
diff changeset
274 gtk_timeout_remove(id->tcp_timer);
8331d967288e [gaim-migrate @ 1384]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1336
diff changeset
275 if (gc->inpa > 0)
8331d967288e [gaim-migrate @ 1384]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1336
diff changeset
276 gdk_input_remove(gc->inpa);
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
277 icq_Logout(id->link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
278 icq_Disconnect(id->link);
1309
0a766047b4fd [gaim-migrate @ 1319]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1232
diff changeset
279 icq_ICQLINKDelete(id->link);
0a766047b4fd [gaim-migrate @ 1319]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1232
diff changeset
280 g_free(id);
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
281 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
282
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
283 static struct prpl *my_protocol = NULL;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
284
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
285 static void icq_send_msg(struct gaim_connection *gc, char *who, char *msg, int away) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
286 struct icq_data *id = (struct icq_data *)gc->proto_data;
1335
4d1dc4f66b4e [gaim-migrate @ 1345]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1309
diff changeset
287 icq_SendMessage(id->link, atol(who), msg, ICQ_SEND_BESTWAY);
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
288 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
289
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
290 static void icq_keepalive(struct gaim_connection *gc) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
291 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
292 icq_KeepAlive(id->link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
293 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
294
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
295 static void icq_add_buddy(struct gaim_connection *gc, char *who) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
296 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
297 icq_ContactAdd(id->link, atol(who));
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
298 icq_ContactSetVis(id->link, atol(who), TRUE);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
299 icq_SendNewUser(id->link, atol(who));
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
300 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
301
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
302 static void icq_add_buddies(struct gaim_connection *gc, GList *whos) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
303 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
304 while (whos) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
305 icq_ContactAdd(id->link, atol(whos->data));
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
306 icq_ContactSetVis(id->link, atol(whos->data), TRUE);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
307 icq_SendNewUser(id->link, atol(whos->data));
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
308 whos = whos->next;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
309 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
310 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
311
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
312 static void icq_rem_buddy(struct gaim_connection *gc, char *who) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
313 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
314 icq_ContactRemove(id->link, atol(who));
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
315 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
316
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
317 static void icq_set_away(struct gaim_connection *gc, char *state, char *msg) {
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
318 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
319
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
320 if (!strcmp(state, "Online"))
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
321 icq_ChangeStatus(id->link, STATUS_ONLINE);
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
322 else if (!strcmp(state, "Away"))
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
323 icq_ChangeStatus(id->link, STATUS_AWAY);
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
324 else if (!strcmp(state, "Do Not Disturb"))
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
325 icq_ChangeStatus(id->link, STATUS_DND);
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
326 else if (!strcmp(state, "Not Available"))
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
327 icq_ChangeStatus(id->link, STATUS_NA);
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
328 else if (!strcmp(state, "Occupied"))
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
329 icq_ChangeStatus(id->link, STATUS_OCCUPIED);
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
330 else if (!strcmp(state, "Free For Chat"))
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
331 icq_ChangeStatus(id->link, STATUS_FREE_CHAT);
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
332 else if (!strcmp(state, "Invisible"))
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
333 icq_ChangeStatus(id->link, STATUS_INVISIBLE);
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
334 else if (!strcmp(state, GAIM_AWAY_CUSTOM))
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
335 /* we have to do this even though we don't have a custom state */
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
336 icq_ChangeStatus(id->link, STATUS_NA);
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
337 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
338
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
339 static char **icq_list_icon(int uc) {
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
340 guint status;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
341 if (uc == UC_NORMAL)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
342 return icon_online_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
343 status = uc >> 5;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
344 if (status & STATUS_NA)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
345 return icon_na_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
346 if (status & STATUS_DND)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
347 return icon_dnd_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
348 if (status & STATUS_OCCUPIED)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
349 return icon_occ_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
350 if (status & STATUS_AWAY)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
351 return icon_away_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
352 if (status & STATUS_FREE_CHAT)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
353 return icon_ffc_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
354 if (status & STATUS_INVISIBLE)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
355 return NULL;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
356 return icon_online_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
357 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
358
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
359 static void icq_get_info(struct gaim_connection *gc, char *who) {
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
360 struct icq_data *id = (struct icq_data *)gc->proto_data;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
361 icq_SendInfoReq(id->link, atol(who));
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
362 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
363
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
364 static void icq_info(GtkObject *obj, char *who) {
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
365 serv_get_info(gtk_object_get_user_data(obj), who);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
366 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
367
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
368 static void icq_action_menu(GtkWidget *menu, struct gaim_connection *gc, char *who) {
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
369 GtkWidget *button;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
370
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
371 button = gtk_menu_item_new_with_label(_("Get Info"));
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
372 gtk_signal_connect(GTK_OBJECT(button), "activate",
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
373 GTK_SIGNAL_FUNC(icq_info), who);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
374 gtk_object_set_user_data(GTK_OBJECT(button), gc);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
375 gtk_menu_append(GTK_MENU(menu), button);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
376 gtk_widget_show(button);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
377 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
378
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
379 static void icq_print_option(GtkEntry *entry, struct aim_user *user) {
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
380 int entrynum;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
381
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
382 entrynum = (int) gtk_object_get_user_data(GTK_OBJECT(entry));
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
383
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
384 if (entrynum == USEROPT_NICK)
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
385 g_snprintf(user->proto_opt[USEROPT_NICK],
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
386 sizeof(user->proto_opt[USEROPT_NICK]),
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
387 "%s", gtk_entry_get_text(entry));
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
388 }
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
389
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
390 static void icq_user_opts(GtkWidget *book, struct aim_user *user) {
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
391 GtkWidget *vbox;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
392 GtkWidget *hbox;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
393 GtkWidget *label;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
394 GtkWidget *entry;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
395
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
396 vbox = gtk_vbox_new(FALSE, 5);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
397 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
398 gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox,
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
399 gtk_label_new("ICQ Options"));
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
400 gtk_widget_show(vbox);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
401
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
402 hbox = gtk_hbox_new(FALSE, 5);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
403 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
404 gtk_widget_show(hbox);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
405
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
406 label = gtk_label_new("Nick");
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
407 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
408 gtk_widget_show(label);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
409
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
410 entry = gtk_entry_new();
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
411 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
412 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)USEROPT_NICK);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
413 gtk_signal_connect(GTK_OBJECT(entry), "changed",
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
414 GTK_SIGNAL_FUNC(icq_print_option), user);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
415 if (user->proto_opt[USEROPT_NICK][0])
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
416 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[USEROPT_NICK]);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
417 else
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
418 gtk_entry_set_text(GTK_ENTRY(entry), "gaim user");
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
419 gtk_widget_show(entry);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
420
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
421 hbox = gtk_hbox_new(FALSE, 5);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
422 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
423 gtk_widget_show(hbox);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
424 }
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
425
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
426 static GList *icq_away_states() {
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
427 GList *m = NULL;
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
428
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
429 m = g_list_append(m, "Online");
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
430 m = g_list_append(m, "Away");
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
431 m = g_list_append(m, "Do Not Disturb");
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
432 m = g_list_append(m, "Not Available");
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
433 m = g_list_append(m, "Occupied");
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
434 m = g_list_append(m, "Free For Chat");
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
435 m = g_list_append(m, "Invisible");
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
436 }
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
437
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
438 static void icq_init(struct prpl *ret) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
439 ret->protocol = PROTO_ICQ;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
440 ret->name = icq_name;
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
441 ret->list_icon = icq_list_icon;
1401
bf041349b11e [gaim-migrate @ 1411]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1374
diff changeset
442 ret->away_states = icq_away_states;
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
443 ret->action_menu = icq_action_menu;
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
444 ret->user_opts = icq_user_opts;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
445 ret->login = icq_login;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
446 ret->close = icq_close;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
447 ret->send_im = icq_send_msg;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
448 ret->add_buddy = icq_add_buddy;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
449 ret->add_buddies = icq_add_buddies;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
450 ret->remove_buddy = icq_rem_buddy;
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
451 ret->get_info = icq_get_info;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
452 ret->set_away = icq_set_away;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
453 ret->keepalive = icq_keepalive;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
454
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
455 my_protocol = ret;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
456 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
457
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
458 char *gaim_plugin_init(GModule *handle) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
459 load_protocol(icq_init);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
460 return NULL;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
461 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
462
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
463 void gaim_plugin_remove() {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
464 struct prpl *p = find_prpl(PROTO_ICQ);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
465 if (p == my_protocol)
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
466 unload_protocol(p);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
467 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
468
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
469 char *name() {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
470 return "ICQ";
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
471 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
472
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
473 char *description() {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
474 return "Allows gaim to use the ICQ protocol";
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
475 }