comparison src/protocols/oscar/oscar.c @ 2205:cff4fbe01c7b

[gaim-migrate @ 2215] eric@blue:~/gaim/app/src/protocols $ cat gtk for i in icq irc jabber msn napster oscar toc yahoo zephyr do echo -n $i: grep -i g\[td\]k $i/*.c | wc -l done eric@blue:~/gaim/app/src/protocols $ ./gtk icq: 13 irc: 0 jabber: 59 msn: 0 napster: 106 oscar: 13 toc: 25 yahoo: 15 zephyr: 2 committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Fri, 31 Aug 2001 20:36:11 +0000
parents 8f1ca76e46f5
children 8c4ff1a368bd
comparison
equal deleted inserted replaced
2204:5014b802eb41 2205:cff4fbe01c7b
56 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3" 56 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
57 57
58 static int gaim_caps = AIM_CAPS_CHAT | 58 static int gaim_caps = AIM_CAPS_CHAT |
59 AIM_CAPS_BUDDYICON | 59 AIM_CAPS_BUDDYICON |
60 AIM_CAPS_IMIMAGE; 60 AIM_CAPS_IMIMAGE;
61
62 static GtkWidget *join_chat_spin = NULL;
63 static GtkWidget *join_chat_entry = NULL;
64 61
65 struct oscar_data { 62 struct oscar_data {
66 struct aim_session_t *sess; 63 struct aim_session_t *sess;
67 struct aim_conn_t *conn; 64 struct aim_conn_t *conn;
68 65
1329 struct aim_incomingim_ch2_args *args; 1326 struct aim_incomingim_ch2_args *args;
1330 args = va_arg(ap, struct aim_incomingim_ch2_args *); 1327 args = va_arg(ap, struct aim_incomingim_ch2_args *);
1331 va_end(ap); 1328 va_end(ap);
1332 if (args->reqclass & AIM_CAPS_CHAT) { 1329 if (args->reqclass & AIM_CAPS_CHAT) {
1333 char *name = extract_name(args->info.chat.roominfo.name); 1330 char *name = extract_name(args->info.chat.roominfo.name);
1331 int *exch = g_new0(int, 1);
1332 GList *m = NULL;
1333 m = g_list_append(m, g_strdup(name ? name : args->info.chat.roominfo.name));
1334 *exch = args->info.chat.roominfo.exchange;
1335 m = g_list_append(m, exch);
1334 serv_got_chat_invite(gc, 1336 serv_got_chat_invite(gc,
1335 name ? name : args->info.chat.roominfo.name, 1337 name ? name : args->info.chat.roominfo.name,
1336 args->info.chat.roominfo.exchange,
1337 userinfo->sn, 1338 userinfo->sn,
1338 args->info.chat.msg); 1339 args->info.chat.msg,
1340 m);
1339 if (name) 1341 if (name)
1340 g_free(name); 1342 g_free(name);
1341 } else if (args->reqclass & AIM_CAPS_SENDFILE) { 1343 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
1342 } else if (args->reqclass & AIM_CAPS_GETFILE) { 1344 } else if (args->reqclass & AIM_CAPS_GETFILE) {
1343 } else if (args->reqclass & AIM_CAPS_VOICE) { 1345 } else if (args->reqclass & AIM_CAPS_VOICE) {
2193 static void oscar_remove_buddy(struct gaim_connection *g, char *name) { 2195 static void oscar_remove_buddy(struct gaim_connection *g, char *name) {
2194 struct oscar_data *odata = (struct oscar_data *)g->proto_data; 2196 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
2195 aim_remove_buddy(odata->sess, odata->conn, name); 2197 aim_remove_buddy(odata->sess, odata->conn, name);
2196 } 2198 }
2197 2199
2198 static void oscar_join_chat(struct gaim_connection *g, int exchange, char *name) { 2200 static GList *oscar_chat_info(struct gaim_connection *gc) {
2201 GList *m = NULL;
2202 struct proto_chat_entry *pce;
2203
2204 pce = g_new0(struct proto_chat_entry, 1);
2205 pce->label = _("Join what group:");
2206 m = g_list_append(m, pce);
2207
2208 pce = g_new0(struct proto_chat_entry, 1);
2209 pce->label = _("Exchange:");
2210 pce->is_int = TRUE;
2211 pce->min = 4;
2212 pce->max = 20;
2213 m = g_list_append(m, pce);
2214
2215 return m;
2216 }
2217
2218 static void oscar_join_chat(struct gaim_connection *g, GList *data) {
2199 struct oscar_data *odata = (struct oscar_data *)g->proto_data; 2219 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
2200 struct aim_conn_t *cur = NULL; 2220 struct aim_conn_t *cur = NULL;
2201 if (!name) { 2221 char *name;
2202 if (!join_chat_entry || !join_chat_spin) 2222 int *exchange;
2203 return; 2223
2204 name = gtk_entry_get_text(GTK_ENTRY(join_chat_entry)); 2224 if (!data || !data->next)
2205 exchange = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(join_chat_spin)); 2225 return;
2206 if (!name || !strlen(name)) 2226
2207 return; 2227 name = data->data;
2208 } 2228 exchange = data->next->data;
2229
2209 debug_printf("Attempting to join chat room %s.\n", name); 2230 debug_printf("Attempting to join chat room %s.\n", name);
2210 if ((cur = aim_getconn_type(odata->sess, AIM_CONN_TYPE_CHATNAV))) { 2231 if ((cur = aim_getconn_type(odata->sess, AIM_CONN_TYPE_CHATNAV))) {
2211 debug_printf("chatnav exists, creating room\n"); 2232 debug_printf("chatnav exists, creating room\n");
2212 aim_chatnav_createroom(odata->sess, cur, name, exchange); 2233 aim_chatnav_createroom(odata->sess, cur, name, *exchange);
2213 } else { 2234 } else {
2214 /* this gets tricky */ 2235 /* this gets tricky */
2215 debug_printf("chatnav does not exist, opening chatnav\n"); 2236 debug_printf("chatnav does not exist, opening chatnav\n");
2216 odata->create_exchange = exchange; 2237 odata->create_exchange = *exchange;
2217 odata->create_name = g_strdup(name); 2238 odata->create_name = g_strdup(name);
2218 aim_bos_reqservice(odata->sess, odata->conn, AIM_CONN_TYPE_CHATNAV); 2239 aim_bos_reqservice(odata->sess, odata->conn, AIM_CONN_TYPE_CHATNAV);
2219 } 2240 }
2220 }
2221
2222 static void des_jc()
2223 {
2224 join_chat_entry = NULL;
2225 join_chat_spin = NULL;
2226 }
2227
2228 static void oscar_draw_join_chat(struct gaim_connection *gc, GtkWidget *fbox) {
2229 GtkWidget *label;
2230 GtkWidget *rowbox;
2231 GtkObject *adjust;
2232
2233 rowbox = gtk_hbox_new(FALSE, 5);
2234 gtk_box_pack_start(GTK_BOX(fbox), rowbox, TRUE, TRUE, 0);
2235 gtk_widget_show(rowbox);
2236
2237 label = gtk_label_new(_("Join what group:"));
2238 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
2239 gtk_signal_connect(GTK_OBJECT(label), "destroy", GTK_SIGNAL_FUNC(des_jc), NULL);
2240 gtk_widget_show(label);
2241
2242 join_chat_entry = gtk_entry_new();
2243 gtk_box_pack_start(GTK_BOX(rowbox), join_chat_entry, TRUE, TRUE, 0);
2244 gtk_widget_grab_focus(join_chat_entry);
2245 gtk_signal_connect(GTK_OBJECT(join_chat_entry), "activate", GTK_SIGNAL_FUNC(do_join_chat), NULL);
2246 gtk_widget_show(join_chat_entry);
2247
2248 rowbox = gtk_hbox_new(FALSE, 5);
2249 gtk_box_pack_start(GTK_BOX(fbox), rowbox, TRUE, TRUE, 0);
2250 gtk_widget_show(rowbox);
2251
2252 label = gtk_label_new(_("Exchange:"));
2253 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 0);
2254 gtk_widget_show(label);
2255
2256 adjust = gtk_adjustment_new(4, 4, 20, 1, 10, 10);
2257 join_chat_spin = gtk_spin_button_new(GTK_ADJUSTMENT(adjust), 1, 0);
2258 gtk_widget_set_usize(join_chat_spin, 50, -1);
2259 gtk_box_pack_start(GTK_BOX(rowbox), join_chat_spin, FALSE, FALSE, 0);
2260 gtk_widget_show(join_chat_spin);
2261 } 2241 }
2262 2242
2263 static void oscar_chat_invite(struct gaim_connection *g, int id, char *message, char *name) { 2243 static void oscar_chat_invite(struct gaim_connection *g, int id, char *message, char *name) {
2264 struct oscar_data *odata = (struct oscar_data *)g->proto_data; 2244 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
2265 struct chat_connection *ccon = find_oscar_chat(g, id); 2245 struct chat_connection *ccon = find_oscar_chat(g, id);
2756 ret->add_deny = oscar_add_deny; 2736 ret->add_deny = oscar_add_deny;
2757 ret->rem_permit = oscar_rem_permit; 2737 ret->rem_permit = oscar_rem_permit;
2758 ret->rem_deny = oscar_rem_deny; 2738 ret->rem_deny = oscar_rem_deny;
2759 ret->set_permit_deny = oscar_set_permit_deny; 2739 ret->set_permit_deny = oscar_set_permit_deny;
2760 ret->warn = oscar_warn; 2740 ret->warn = oscar_warn;
2761 ret->accept_chat = NULL; /* oscar doesn't have accept, it just joins */ 2741 ret->chat_info = oscar_chat_info;
2762 ret->join_chat = oscar_join_chat; 2742 ret->join_chat = oscar_join_chat;
2763 ret->draw_join_chat = oscar_draw_join_chat;
2764 ret->chat_invite = oscar_chat_invite; 2743 ret->chat_invite = oscar_chat_invite;
2765 ret->chat_leave = oscar_chat_leave; 2744 ret->chat_leave = oscar_chat_leave;
2766 ret->chat_whisper = NULL; 2745 ret->chat_whisper = NULL;
2767 ret->chat_send = oscar_chat_send; 2746 ret->chat_send = oscar_chat_send;
2768 ret->keepalive = oscar_keepalive; 2747 ret->keepalive = oscar_keepalive;