annotate plugins/icq/gaim_icq.c @ 1336:f3303fc05572

[gaim-migrate @ 1346] icq is much improved. protocols can store per-buddy data. add_buddies is less important. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 20 Dec 2000 15:12:35 +0000
parents 4d1dc4f66b4e
children 8331d967288e
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 g_free(id);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
89 signoff(gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
90 return;
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
93 icqSocket = icq_GetSok(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
94 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
95
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
96 icq_Login(link, STATUS_ONLINE);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
97 id->cur_status = STATUS_ONLINE;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
98
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
99 id->tcp_timer = gtk_timeout_add(100, (GtkFunction)icq_tcp_timer, link);
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
102 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
103 unsigned char day, unsigned char month, unsigned short year, const char *data) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
104 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
105 char buf[256], *tmp = g_strdup(data);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
106 g_snprintf(buf, sizeof buf, "%lu", uin);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
107 serv_got_im(gc, buf, tmp, 0);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
108 g_free(tmp);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
109 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
110
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
111 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
112 unsigned long ip, unsigned short port, unsigned long real_ip,
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
113 unsigned char tcp_flags) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
114 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
115 guint status;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
116 char buf[256];
1232
0c7c659fc730 [gaim-migrate @ 1242]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1222
diff changeset
117 time_t t;
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
118
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
119 g_snprintf(buf, sizeof buf, "%lu", uin);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
120 status = (st == STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE | (st << 5);
1232
0c7c659fc730 [gaim-migrate @ 1242]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1222
diff changeset
121 time(&t);
0c7c659fc730 [gaim-migrate @ 1242]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1222
diff changeset
122 serv_got_update(gc, buf, 1, 0, t, 0, status, 0);
1152
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
125 static void icq_user_offline(ICQLINK *link, unsigned long uin) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
126 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
127 char buf[256]; g_snprintf(buf, sizeof buf, "%lu", uin);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
128 serv_got_update(gc, buf, 0, 0, 0, 0, 0, 0);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
129 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
130
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
131 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
132 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
133 guint status;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
134 char buf[256];
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
135
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
136 g_snprintf(buf, sizeof buf, "%lu", uin);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
137 status = (st == STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE | (st << 5);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
138 serv_got_update(gc, buf, 1, 0, 0, 0, status, 0);
1152
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
141 static gint icq_set_timeout_cb(struct icq_data *id) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
142 icq_HandleTimeout(id->link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
143 id->ack_timer = -1;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
144 return FALSE;
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
147 static void icq_set_timeout(ICQLINK *link, long interval) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
148 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
149 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
150
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
151 debug_printf("icq_SetTimeout: %ld\n", interval);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
152 if (interval > 0 && id->ack_timer < 1)
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
153 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
154 else if (id->ack_timer > 0) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
155 gtk_timeout_remove(id->ack_timer);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
156 id->ack_timer = -1;
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
160 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
161 unsigned char minute, unsigned char day, unsigned char month,
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
162 unsigned short year, const char *url, const char *descr) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
163 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
164 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
165 char *msg = g_malloc(len), buf[256];
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
166 g_snprintf(msg, len, "<A HREF=\"%s\">%s</A>", url, descr);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
167 g_snprintf(buf, 256, "%lu", uin);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
168 serv_got_im(gc, buf, msg, 0);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
169 g_free(msg);
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
172 static void icq_wrong_passwd(struct icq_link *link) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
173 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
174 hide_login_progress(gc, "Invalid password.");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
175 signoff(gc);
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
178 static void icq_invalid_uin(struct icq_link *link) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
179 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
180 hide_login_progress(gc, "Invalid UIN.");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
181 signoff(gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
182 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
183
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
184 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
185 const char *first, const char *last, const char *email, char auth) {
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
186 char buf[16 * 1024];
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
187
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
188 g_snprintf(buf, sizeof buf,
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
189 "<B>UIN:</B> %lu<BR>"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
190 "<B>Nick:</B> %s<BR>"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
191 "<B>Name:</B> %s %s<BR>"
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
192 "<B>Email:</B> %s\n",
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
193 uin,
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
194 nick,
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
195 first, last,
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
196 email);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
197 g_show_info_text(buf);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
198 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
199
1222
5186c154e90d [gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1220
diff changeset
200 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
201 unsigned int length, void *data) {
5186c154e90d [gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1220
diff changeset
202 }
5186c154e90d [gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1220
diff changeset
203
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
204 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
205 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
206 const char *email, const char *msg) {
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
207 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
208 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
209 char *what = g_strdup(msg);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
210 serv_got_im(gc, who, what, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
211 g_free(who);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
212 g_free(what);
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
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
215 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
216 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
217 const char *email, const char *msg) {
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
218 struct gaim_connection *gc = find_gaim_conn_by_icq_link(link);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
219 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
220 char *what = g_strdup(msg);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
221 serv_got_im(gc, who, what, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
222 g_free(who);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
223 g_free(what);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
224 }
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
225
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
226 static void icq_login(struct aim_user *user) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
227 struct gaim_connection *gc = new_gaim_conn(user);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
228 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
229 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
230 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
231 TRUE);
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
232 int icqSocket;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
233
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
234 icq_LogLevel = ICQ_LOG_MESSAGE;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
235
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
236 link->icq_Logged = icq_online;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
237 link->icq_Disconnected = icq_logged_off;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
238 link->icq_RecvMessage = icq_msg_incoming;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
239 link->icq_RecvURL = icq_url_incoming;
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
240 link->icq_RecvWebPager = icq_web_pager;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
241 link->icq_RecvMailExpress = icq_mail_express;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
242 link->icq_UserOnline = icq_user_online;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
243 link->icq_UserOffline = icq_user_offline;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
244 link->icq_UserStatusUpdate = icq_user_status;
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
245 link->icq_InfoReply = icq_info_reply;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
246 link->icq_WrongPassword = icq_wrong_passwd;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
247 link->icq_InvalidUIN = icq_invalid_uin;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
248 link->icq_Log = icq_do_log;
1222
5186c154e90d [gaim-migrate @ 1232]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1220
diff changeset
249 link->icq_RequestNotify = icq_req_notify;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
250 link->icq_SetTimeout = icq_set_timeout;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
251
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
252 icq_UnsetProxy(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
253
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
254 if (icq_Connect(link, "icq.mirabilis.com", 4000) < 1) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
255 hide_login_progress(gc, "Unable to connect");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
256 g_free(id);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
257 signoff(gc);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
258 return;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
259 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
260
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
261 icqSocket = icq_GetSok(link);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
262 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
263
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
264 icq_Login(link, STATUS_ONLINE);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
265 id->cur_status = STATUS_ONLINE;
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 id->tcp_timer = gtk_timeout_add(100, (GtkFunction)icq_tcp_timer, link);
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 set_login_progress(gc, 0, "Connecting...");
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
270 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
271
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
272 static void icq_close(struct gaim_connection *gc) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
273 struct icq_data *id = (struct icq_data *)gc->proto_data;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
274
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
275 gtk_timeout_remove(id->tcp_timer);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
276 gdk_input_remove(gc->inpa);
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
317 static void icq_set_away(struct gaim_connection *gc, char *msg) {
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
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
320 if (msg && msg[0]) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
321 icq_ChangeStatus(id->link, STATUS_NA);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
322 } else {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
323 icq_ChangeStatus(id->link, STATUS_ONLINE);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
324 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
325 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
326
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
327 static char **icq_list_icon(int uc) {
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
328 guint status;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
329 if (uc == UC_NORMAL)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
330 return icon_online_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
331 status = uc >> 5;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
332 if (status & STATUS_NA)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
333 return icon_na_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
334 if (status & STATUS_DND)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
335 return icon_dnd_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
336 if (status & STATUS_OCCUPIED)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
337 return icon_occ_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
338 if (status & STATUS_AWAY)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
339 return icon_away_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
340 if (status & STATUS_FREE_CHAT)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
341 return icon_ffc_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
342 if (status & STATUS_INVISIBLE)
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
343 return NULL;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
344 return icon_online_xpm;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
345 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
346
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
347 static void icq_get_info(struct gaim_connection *gc, char *who) {
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
348 struct icq_data *id = (struct icq_data *)gc->proto_data;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
349 icq_SendInfoReq(id->link, atol(who));
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
350 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
351
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
352 static void icq_info(GtkObject *obj, char *who) {
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
353 serv_get_info(gtk_object_get_user_data(obj), who);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
354 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
355
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
356 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
357 GtkWidget *button;
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 button = gtk_menu_item_new_with_label(_("Get Info"));
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
360 gtk_signal_connect(GTK_OBJECT(button), "activate",
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
361 GTK_SIGNAL_FUNC(icq_info), who);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
362 gtk_object_set_user_data(GTK_OBJECT(button), gc);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
363 gtk_menu_append(GTK_MENU(menu), button);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
364 gtk_widget_show(button);
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
365 }
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
366
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
367 static void icq_print_option(GtkEntry *entry, struct aim_user *user) {
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
368 int entrynum;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
369
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
370 entrynum = (int) gtk_object_get_user_data(GTK_OBJECT(entry));
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
371
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
372 if (entrynum == USEROPT_NICK)
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
373 g_snprintf(user->proto_opt[USEROPT_NICK],
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
374 sizeof(user->proto_opt[USEROPT_NICK]),
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
375 "%s", gtk_entry_get_text(entry));
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
376 }
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
377
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
378 static void icq_user_opts(GtkWidget *book, struct aim_user *user) {
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
379 GtkWidget *vbox;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
380 GtkWidget *hbox;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
381 GtkWidget *label;
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
382 GtkWidget *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 vbox = gtk_vbox_new(FALSE, 5);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
385 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
386 gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox,
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
387 gtk_label_new("ICQ Options"));
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
388 gtk_widget_show(vbox);
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 hbox = gtk_hbox_new(FALSE, 5);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
391 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
392 gtk_widget_show(hbox);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
393
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
394 label = gtk_label_new("Nick");
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
395 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
396 gtk_widget_show(label);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
397
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
398 entry = gtk_entry_new();
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
399 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
400 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)USEROPT_NICK);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
401 gtk_signal_connect(GTK_OBJECT(entry), "changed",
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
402 GTK_SIGNAL_FUNC(icq_print_option), user);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
403 if (user->proto_opt[USEROPT_NICK][0])
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
404 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
405 else
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
406 gtk_entry_set_text(GTK_ENTRY(entry), "gaim user");
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
407 gtk_widget_show(entry);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
408
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
409 hbox = gtk_hbox_new(FALSE, 5);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
410 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
411 gtk_widget_show(hbox);
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
412 }
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
413
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
414 static void icq_init(struct prpl *ret) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
415 ret->protocol = PROTO_ICQ;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
416 ret->name = icq_name;
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
417 ret->list_icon = icq_list_icon;
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
418 ret->action_menu = icq_action_menu;
1336
f3303fc05572 [gaim-migrate @ 1346]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1335
diff changeset
419 ret->user_opts = icq_user_opts;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
420 ret->login = icq_login;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
421 ret->close = icq_close;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
422 ret->send_im = icq_send_msg;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
423 ret->add_buddy = icq_add_buddy;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
424 ret->add_buddies = icq_add_buddies;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
425 ret->remove_buddy = icq_rem_buddy;
1220
16ea7a3fdbb6 [gaim-migrate @ 1230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1167
diff changeset
426 ret->get_info = icq_get_info;
1152
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
427 ret->set_away = icq_set_away;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
428 ret->keepalive = icq_keepalive;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
429
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
430 my_protocol = ret;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
431 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
432
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
433 char *gaim_plugin_init(GModule *handle) {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
434 load_protocol(icq_init);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
435 return NULL;
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
436 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
437
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
438 void gaim_plugin_remove() {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
439 struct prpl *p = find_prpl(PROTO_ICQ);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
440 if (p == my_protocol)
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
441 unload_protocol(p);
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
442 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
443
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
444 char *name() {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
445 return "ICQ";
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
446 }
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
447
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
448 char *description() {
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
449 return "Allows gaim to use the ICQ protocol";
201ec77f3a60 [gaim-migrate @ 1162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
450 }