# HG changeset patch # User Eric Warmenhoven # Date 976310912 0 # Node ID 16ea7a3fdbb6b953c38e1e20e4bea7fe33279d1e # Parent 2528fc35aa3259ddf4f21698f8c670209475611a [gaim-migrate @ 1230] updates to the ICQ plugin. pixmaps stolen from gnomeicu (in case the name didn't give that away) committer: Tailor Script diff -r 2528fc35aa32 -r 16ea7a3fdbb6 ChangeLog --- a/ChangeLog Fri Dec 08 12:01:22 2000 +0000 +++ b/ChangeLog Fri Dec 08 21:28:32 2000 +0000 @@ -4,6 +4,7 @@ * Away messages arranged alphabetically (Thanks Justin) * More GUI adjustments * Can optionally run command to play sound files + * Icons for ICQ plugin (blatently stolen from GnomeICU) version 0.11.0-pre2 (12/04/2000): * Fixed a segfault with a bad util.c diff -r 2528fc35aa32 -r 16ea7a3fdbb6 STATUS --- a/STATUS Fri Dec 08 12:01:22 2000 +0000 +++ b/STATUS Fri Dec 08 21:28:32 2000 +0000 @@ -1,4 +1,4 @@ -STATUS of GAIM CVS tree. Last modified $Date: 2000-11-20 20:00:45 -0500 (Mon, 20 Nov 2000) $ by $Author: warmenhoven $. +STATUS of GAIM CVS tree. Last modified $Date: 2000-12-08 16:28:32 -0500 (Fri, 08 Dec 2000) $ by $Author: warmenhoven $. This file is meant to provide gaim users who use the CVS version to see whether they actually want to compile what they just checked out. Gaim CVS is usually @@ -36,21 +36,6 @@ won't display correctly. -TOC -=== - -TOC is working reasonably well. The options to use a proxy got moved to the -account editor, and are set up on a per-account basis, in case you were -wondering. - - -Oscar -===== - -Oscar is working reasonably well. Please see gaim/libfaim/README.gaim for more -details on Oscar. - - Applet ====== @@ -72,3 +57,45 @@ Perl also got a good reworking, but also has a few more features now. Again, porting from 0.10.x to 0.11.0 should be simple, but read the docs to see what's going on. + + +TOC +=== + +TOC is working reasonably well. The options to use a proxy got moved to the +account editor, and are set up on a per-account basis, in case you were +wondering. TOC can be used to sign into ICQ; though you should use the ICQ +plugin as it offers more functionality. + + +Oscar +===== + +Oscar is working reasonably well. Please see gaim/libfaim/README.gaim for more +details on Oscar. Oscar can be used to sign into ICQ; though you should use the +ICQ plugin as it offers more functionality. + + +Yahoo +===== + +Yahoo currently supports signing on/off, changing status (only to user-defined +so far though), checking other people's status (via right-clicking in the +buddy list), and sending/receiving messages. Chat support is planned but not +yet implemented. + + +IRC +=== + +Rob, I'll let you fill this one in ;) + + +ICQ +=== + +ICQ currently supports signing on/off, changing status (icq-away == aim-idle, +icq-n/a == aim-away), checking other people's status (but not status message), +sending/receiving messages, and receiving URLs. Keepalives are sent regardless +of whether or not you want them; it's necessary since it's a UDP protocol. +Chat and file transfer are planned but not yet implemented. diff -r 2528fc35aa32 -r 16ea7a3fdbb6 pixmaps/gnomeicu-away.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pixmaps/gnomeicu-away.xpm Fri Dec 08 21:28:32 2000 +0000 @@ -0,0 +1,43 @@ +/* XPM */ +static char * icon_away_xpm[] = { +"13 12 28 1", +" c None", +". c #8B8B8B", +"+ c #FFFF00", +"@ c #999900", +"# c #7F7F7F", +"$ c #0B483A", +"% c #006DFF", +"& c #093C30", +"* c #4C4C4C", +"= c #0D5645", +"- c #175B40", +"; c #0D5041", +"> c #0E5948", +", c #0E5747", +"' c #84B9FF", +") c #0C4D3E", +"! c #0D5444", +"~ c #0B4639", +"{ c #0B4437", +"] c #0C4F40", +"^ c #0A3F33", +"/ c #0B4A3C", +"( c #0C4B3D", +"_ c #0B3C31", +": c #0E4337", +"< c #0C3F33", +"[ c #09382D", +"} c #09382E", +".++@+...+..# ", +".+@@+$%+@+&#*", +".++++=-+@@+#*", +".;>,',,%++&#*", +".),>%!')~'&#*", +".{)!]])~~^&#*", +".~'/+)('~%_#*", +".^:+@+<[}}&#*", +"##+@+#######*", +" **+.###*****", +" .###* ", +" .#######* "}; diff -r 2528fc35aa32 -r 16ea7a3fdbb6 pixmaps/gnomeicu-dnd.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pixmaps/gnomeicu-dnd.xpm Fri Dec 08 21:28:32 2000 +0000 @@ -0,0 +1,34 @@ +/* XPM */ +static char * icon_dnd_xpm[] = { +"15 15 16 1", +" c None", +". c #C1BB7C", +"+ c #CFC395", +"@ c #D2BE94", +"# c #A69C45", +"$ c #A49A43", +"% c #AD9C53", +"& c #908125", +"* c #726751", +"= c #867B23", +"- c #84760E", +"; c #72660E", +"> c #7B4900", +", c #FFFFFF", +"' c #000000", +") c #666666", +" . ", +" +@# ", +" $%& ", +" * =-; * ", +" * > * ", +" * * ", +" * * ", +"*,,,,,,,,,,,,,*", +"*,'',,',','',,*", +"*,',',')',',',*", +"*,',',')',',',*", +"*,'',,',','',,*", +"*,,,,,,,,,,,,,*", +"***************", +" "}; diff -r 2528fc35aa32 -r 16ea7a3fdbb6 pixmaps/gnomeicu-ffc.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pixmaps/gnomeicu-ffc.xpm Fri Dec 08 21:28:32 2000 +0000 @@ -0,0 +1,110 @@ +/* XPM */ +static char * icon_ffc_xpm[] = { +"16 16 91 1", +" c None", +". c #000000", +"+ c #A9A943", +"@ c #BFBF4B", +"# c #1A1A0A", +"$ c #B6B648", +"% c #FCFC64", +"& c #EDED5E", +"* c #E5E55A", +"= c #75752E", +"- c #FAFA63", +"; c #DBDB57", +"> c #CBCB50", +", c #DADA56", +"' c #353515", +") c #7F7F32", +"! c #E9E95C", +"~ c #B2B247", +"{ c #D5D555", +"] c #E6E65B", +"^ c #7A7A30", +"/ c #E5E55B", +"( c #566A56", +"_ c #738D73", +": c #738C73", +"< c #7B827B", +"[ c #363615", +"} c #CACA4F", +"| c #28520F", +"1 c #008F00", +"2 c #009B00", +"3 c #009100", +"4 c #578357", +"5 c #535353", +"6 c #282810", +"7 c #FEFE64", +"8 c #FFFF65", +"9 c #20450D", +"0 c #00B000", +"a c #00B500", +"b c #009E00", +"c c #009200", +"d c #1D231D", +"e c #A8A942", +"f c #BEBF4A", +"g c #8F8F38", +"h c #004A00", +"i c #00A800", +"j c #009F00", +"k c #758F75", +"l c #005500", +"m c #005F00", +"n c #006000", +"o c #005E00", +"p c #005A00", +"q c #009000", +"r c #758E75", +"s c #00A600", +"t c #01AA01", +"u c #01A901", +"v c #00AB00", +"w c #00AA00", +"x c #009A00", +"y c #029002", +"z c #598359", +"A c #788778", +"B c #2B8E2B", +"C c #309230", +"D c #2F8F2F", +"E c #2C862C", +"F c #2D8B2D", +"G c #2B832B", +"H c #2A832A", +"I c #2A862A", +"J c #648164", +"K c #454545", +"L c #656565", +"M c #787878", +"N c #808080", +"O c #7E7E7E", +"P c #797979", +"Q c #4F4F4F", +"R c #5F5F5F", +"S c #818181", +"T c #737373", +"U c #383838", +"V c #6F6F6F", +"W c #7F7F7F", +"X c #7D7D7D", +"Y c #717171", +"Z c #525252", +" ", +" ...... ", +" .+@@@@+. ", +" #$%&**&%+. ", +" =--;>>;-,' ", +" )!~~~{~~]^ ", +" ^%%&*/&%%^(_:< ", +" [>-;>};->|12345", +" 6!7777890abc45", +" ..def@ghij345", +" klmnop3bq45", +" rstuvwbxyz5", +" ABCDEFGHIJ5", +" KLLMNOPLLLQ", +" RSOTU ", +" VMWOXYZ "}; diff -r 2528fc35aa32 -r 16ea7a3fdbb6 pixmaps/gnomeicu-na.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pixmaps/gnomeicu-na.xpm Fri Dec 08 21:28:32 2000 +0000 @@ -0,0 +1,96 @@ +/* XPM */ +static char * icon_na_xpm[] = { +"15 15 78 1", +" c None", +". c #F9F900", +"+ c #F9E100", +"@ c #897B00", +"# c #CFCF2C", +"$ c #888C78", +"% c #7C7E7E", +"& c #B3B300", +"* c #96A911", +"= c #737E61", +"- c #535353", +"; c #8A8F7A", +"> c #86A821", +", c #86AB23", +"' c #AAC95C", +") c #377553", +"! c #1A5F48", +"~ c #91BB62", +"{ c #CCCC00", +"] c #A5B20C", +"^ c #80885F", +"/ c #77817F", +"( c #0C5041", +"_ c #0E5747", +": c #2074B8", +"< c #14606F", +"[ c #508EB2", +"} c #1B6169", +"| c #7BA158", +"1 c #548068", +"2 c #5A6A66", +"3 c #77807E", +"4 c #0B483A", +"5 c #0C5141", +"6 c #0B5455", +"7 c #0B5047", +"8 c #1C5B59", +"9 c #0B4639", +"0 c #124B43", +"a c #124641", +"b c #2A626A", +"c c #54898E", +"d c #A6BA13", +"e c #5F8827", +"f c #165247", +"g c #8CB4A9", +"h c #EEEE00", +"i c #EDED00", +"j c #676740", +"k c #797F7D", +"l c #3E6240", +"m c #98AB13", +"n c #C8C800", +"o c #CECE20", +"p c #3E5D49", +"q c #506837", +"r c #BBBB00", +"s c #BABA00", +"t c #EAEA00", +"u c #454545", +"v c #797951", +"w c #B7B714", +"x c #C7C72A", +"y c #8F8F71", +"z c #7E7E7E", +"A c #87876A", +"B c #A5A526", +"C c #595946", +"D c #767655", +"E c #818181", +"F c #737373", +"G c #383838", +"H c #6F6F6F", +"I c #787878", +"J c #7F7F7F", +"K c #7D7D7D", +"L c #717171", +"M c #525252", +" ", +" .......+.+ ", +" .@..@.+@+. ", +" .@@.@+@+@+ ", +" .@.@@.@@@+ ", +" .@.+@+@+@+#$% ", +" ++++++++++&*=-", +" ;>,')!~{]^-", +" /(_:<[}|12-", +" 34567890a2-", +" 3bcdefghi.j", +" klmnopqrstj", +" uvwxyzABBBC", +" DEzFG ", +" HIJzKLM "}; diff -r 2528fc35aa32 -r 16ea7a3fdbb6 pixmaps/gnomeicu-occ.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pixmaps/gnomeicu-occ.xpm Fri Dec 08 21:28:32 2000 +0000 @@ -0,0 +1,83 @@ +/* XPM */ +static char * icon_occ_xpm[] = { +"15 15 65 1", +" c None", +". c #89898D", +"+ c #80809E", +"@ c #7F7F9E", +"# c #7F7F88", +"$ c #86879A", +"% c #6870ED", +"& c #5F6DED", +"* c #5F6CED", +"= c #5E6CED", +"- c #5C6AEC", +"; c #5969EA", +"> c #636DEB", +", c #797AA0", +"' c #535353", +") c #919394", +"! c #A7BEC9", +"~ c #84ACC0", +"{ c #79A0B4", +"] c #88B0C4", +"^ c #79A0B5", +"/ c #739CB2", +"( c #73A0B7", +"_ c #98B6C5", +": c #8E9395", +"< c #7BA2B6", +"[ c #658B9E", +"} c #6F95A9", +"| c #7AA3B7", +"1 c #6890A3", +"2 c #77A4BB", +"3 c #97B6C5", +"4 c #A5BCC8", +"5 c #85AFC5", +"6 c #82ABC1", +"7 c #80AAC0", +"8 c #83AFC6", +"9 c #7BA8BF", +"0 c #7CABC2", +"a c #97B5C5", +"b c #A6BCC7", +"c c #7FA3B6", +"d c #7294A5", +"e c #7194A5", +"f c #7396A7", +"g c #81A9BD", +"h c #789DB0", +"i c #9DB8C5", +"j c #8B8C8D", +"k c #A1ABB0", +"l c #898C8E", +"m c #6D6C6D", +"n c #656565", +"o c #787878", +"p c #808080", +"q c #7E7E7E", +"r c #797979", +"s c #4F4F4F", +"t c #777777", +"u c #818181", +"v c #737373", +"w c #505050", +"x c #7F7F7F", +"y c #7D7D7D", +"z c #626262", +" .+++@@@+@# ", +" $%&&*=-;>,' ", +" )!~{]^/(_:' ", +" )!<[}|123:' ", +" )4567890a:' ", +" )bcdefghi:' ", +" jkkkkkkkkl' ", +" mnnopqrnnns ", +" tuqvw ", +" qqxqytz ", +" ", +" sss ", +" s s ss ss ", +" s s s s ", +" sss ss ss s "}; diff -r 2528fc35aa32 -r 16ea7a3fdbb6 pixmaps/gnomeicu-online.xpm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pixmaps/gnomeicu-online.xpm Fri Dec 08 21:28:32 2000 +0000 @@ -0,0 +1,69 @@ +/* XPM */ +static char * icon_online_xpm[] = { +"16 16 50 1", +" c None", +". c #8B8B8B", +"+ c #7F7F7F", +"@ c #00A700", +"# c #00B600", +"$ c #00B100", +"% c #00B400", +"& c #00AB00", +"* c #009C00", +"= c #009E00", +"- c #009D00", +"; c #009700", +"> c #008D00", +", c #4C4C4C", +"' c #00A800", +") c #00CE00", +"! c #00CA00", +"~ c #00C600", +"{ c #00B700", +"] c #00A100", +"^ c #00BC00", +"/ c #00D300", +"( c #00CF00", +"_ c #00CB00", +": c #00CC00", +"< c #00BF00", +"[ c #00A500", +"} c #009900", +"| c #00D100", +"1 c #00C500", +"2 c #00C400", +"3 c #009500", +"4 c #00A200", +"5 c #00B800", +"6 c #00BB00", +"7 c #009400", +"8 c #00AE00", +"9 c #00AD00", +"0 c #00B000", +"a c #00A300", +"b c #00A400", +"c c #019701", +"d c #058E05", +"e c #089C08", +"f c #0A9D0A", +"g c #069406", +"h c #038803", +"i c #028502", +"j c #008600", +"k c #7E7E7E", +" ", +" ", +" ...........+ ", +" .@#$%&*=-;>+, ", +" .')!!!~{];>+, ", +" .^/(_:(<[}>+, ", +" .#)|)12%[3>+, ", +" .4%~56%[[7>+, ", +" .@898%0abcd+, ", +" .7efghgijj>+, ", +" +++k++++++++, ", +" ,,,.+++,,,,, ", +" .+++, ", +" .+++++++, ", +" ", +" "}; diff -r 2528fc35aa32 -r 16ea7a3fdbb6 plugins/icq/gaim_icq.c --- a/plugins/icq/gaim_icq.c Fri Dec 08 12:01:22 2000 +0000 +++ b/plugins/icq/gaim_icq.c Fri Dec 08 21:28:32 2000 +0000 @@ -5,6 +5,13 @@ #include "prpl.h" /* needed for prpl */ #include "gaim.h" /* needed for every other damn thing */ +#include "pixmaps/gnomeicu-online.xpm" +#include "pixmaps/gnomeicu-away.xpm" +#include "pixmaps/gnomeicu-dnd.xpm" +#include "pixmaps/gnomeicu-na.xpm" +#include "pixmaps/gnomeicu-occ.xpm" +#include "pixmaps/gnomeicu-ffc.xpm" + struct icq_data { ICQLINK *link; int cur_status; @@ -99,12 +106,16 @@ g_free(tmp); } -static void icq_user_online(ICQLINK *link, unsigned long uin, unsigned long status, +static void icq_user_online(ICQLINK *link, unsigned long uin, unsigned long st, unsigned long ip, unsigned short port, unsigned long real_ip, unsigned char tcp_flags) { struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); - char buf[256]; g_snprintf(buf, sizeof buf, "%lu", uin); - serv_got_update(gc, buf, 1, 0, 0, 0, (status==STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE, 0); + guint status; + char buf[256]; + + g_snprintf(buf, sizeof buf, "%lu", uin); + status = (st == STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE | (st << 5); + serv_got_update(gc, buf, 1, 0, 0, 0, status, 0); } static void icq_user_offline(ICQLINK *link, unsigned long uin) { @@ -113,10 +124,14 @@ serv_got_update(gc, buf, 0, 0, 0, 0, 0, 0); } -static void icq_user_status(ICQLINK *link, unsigned long uin, unsigned long status) { +static void icq_user_status(ICQLINK *link, unsigned long uin, unsigned long st) { struct gaim_connection *gc = find_gaim_conn_by_icq_link(link); - char buf[256]; g_snprintf(buf, sizeof buf, "%lu", uin); - serv_got_update(gc, buf, 1, 0, 0, 0, (status==STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE, 0); + guint status; + char buf[256]; + + g_snprintf(buf, sizeof buf, "%lu", uin); + status = (st == STATUS_ONLINE) ? UC_NORMAL : UC_UNAVAILABLE | (st << 5); + serv_got_update(gc, buf, 1, 0, 0, 0, status, 0); } static gint icq_set_timeout_cb(struct icq_data *id) { @@ -162,6 +177,22 @@ signoff(gc); } +static void icq_info_reply(struct icq_link *link, unsigned long uin, const char *nick, + const char *first, const char *last, const char *email, char auth) { + char buf[16 * 1024]; + + g_snprintf(buf, sizeof buf, + "UIN: %lu
" + "Nick: %s
" + "Name: %s %s
" + "Email: %s\n", + uin, + nick, + first, last, + email); + g_show_info_text(buf); +} + static void icq_login(struct aim_user *user) { struct gaim_connection *gc = new_gaim_conn(user); struct icq_data *id = gc->proto_data = g_new0(struct icq_data, 1); @@ -179,6 +210,7 @@ link->icq_UserOnline = icq_user_online; link->icq_UserOffline = icq_user_offline; link->icq_UserStatusUpdate = icq_user_status; + link->icq_InfoReply = icq_info_reply; link->icq_WrongPassword = icq_wrong_passwd; link->icq_InvalidUIN = icq_invalid_uin; link->icq_Log = icq_do_log; @@ -259,15 +291,58 @@ } } +static char **icq_list_icon(int uc) { + guint status; + if (uc == UC_NORMAL) + return icon_online_xpm; + status = uc >> 5; + if (status & STATUS_NA) + return icon_na_xpm; + if (status & STATUS_DND) + return icon_dnd_xpm; + if (status & STATUS_OCCUPIED) + return icon_occ_xpm; + if (status & STATUS_AWAY) + return icon_away_xpm; + if (status & STATUS_FREE_CHAT) + return icon_ffc_xpm; + if (status & STATUS_INVISIBLE) + return NULL; + return icon_online_xpm; +} + +static void icq_get_info(struct gaim_connection *gc, char *who) { + struct icq_data *id = (struct icq_data *)gc->proto_data; + icq_SendInfoReq(id->link, atol(who)); +} + +static void icq_info(GtkObject *obj, char *who) { + serv_get_info(gtk_object_get_user_data(obj), who); +} + +static void icq_action_menu(GtkWidget *menu, struct gaim_connection *gc, char *who) { + GtkWidget *button; + + button = gtk_menu_item_new_with_label(_("Get Info")); + gtk_signal_connect(GTK_OBJECT(button), "activate", + GTK_SIGNAL_FUNC(icq_info), who); + gtk_object_set_user_data(GTK_OBJECT(button), gc); + gtk_menu_append(GTK_MENU(menu), button); + gtk_widget_show(button); +} + static void icq_init(struct prpl *ret) { ret->protocol = PROTO_ICQ; ret->name = icq_name; + ret->list_icon = icq_list_icon; + ret->action_menu = icq_action_menu; ret->login = icq_login; ret->close = icq_close; ret->send_im = icq_send_msg; ret->add_buddy = icq_add_buddy; ret->add_buddies = icq_add_buddies; ret->remove_buddy = icq_rem_buddy; + ret->get_info = icq_get_info; ret->set_away = icq_set_away; ret->keepalive = icq_keepalive;