# HG changeset patch # User Eric Warmenhoven # Date 973377305 0 # Node ID ed28707debdc1336607c529c348c6df535d19cc7 # Parent 649199f4730e2936e90915873344437da9474e04 [gaim-migrate @ 1078] tooltips for one connection. need to figure out how to do it for multiple connections. committer: Tailor Script diff -r 649199f4730e -r ed28707debdc src/buddy.c --- a/src/buddy.c Sat Nov 04 20:20:27 2000 +0000 +++ b/src/buddy.c Sat Nov 04 22:35:05 2000 +0000 @@ -1420,6 +1420,45 @@ return FALSE; } +static char *caps_string(gushort caps) +{ + static char buf[256], *tmp; + int count = 0, i = 0; + gushort bit = 1; + while (bit <= 0x20) { + if (bit & caps) { + switch (bit) { + case 0x1: + tmp = _("Buddy Icon"); + break; + case 0x2: + tmp = _("Voice"); + break; + case 0x4: + tmp = _("IM Image"); + break; + case 0x8: + tmp = _("Chat"); + break; + case 0x10: + tmp = _("Get File"); + break; + case 0x20: + tmp = _("Send File"); + break; + default: + tmp = NULL; + break; + } + if (tmp) + i += g_snprintf(buf+i, sizeof(buf)-i, "%s%s", (count ? ", " : ""), tmp); + count++; + } + bit <<= 1; + } + return buf; +} + static void update_idle_time(struct buddy_show *bs) { char idlet[16]; time_t t; @@ -1427,6 +1466,11 @@ struct buddy *b; GSList *c; + char infotip[256]; + char warn[256]; + char caps[256]; + char *sotime, *itime; + time(&t); if (g_slist_length(bs->connlist) == 1) { b = find_buddy(bs->connlist->data, bs->name); @@ -1445,6 +1489,37 @@ gtk_label_set(GTK_LABEL(bs->idle), ""); if (display_options & OPT_DISP_SHOW_IDLETIME) gtk_widget_show(bs->idle); + + /* now we do the tooltip */ + sotime = sec_to_text(t - b->signon + + ((struct gaim_connection *)bs->connlist->data)->correction_time); + + if (b->idle) + itime = sec_to_text(t - b->idle); + else { + itime = g_malloc(1); itime[0] = 0; + } + + if (b->evil) + g_snprintf(warn, sizeof warn, _("Warnings: %d%%\n"), b->evil); + else + warn[0] = '\0'; + + if (b->caps) + g_snprintf(caps, sizeof caps, _("Capabilities: %s\n"), caps_string(b->caps)); + else + caps[0] = '\0'; + + g_snprintf(infotip, sizeof infotip, _("Alias: %s \nScreen Name: %s\n" + "Logged in: %s\n%s%s%s%s%s"), + b->show, b->name, sotime, warn, + (b->idle ? _("Idle: ") : ""), itime, + (b->idle ? "\n" : ""), caps); + + gtk_tooltips_set_tip(tips, GTK_WIDGET(bs->item), infotip, ""); + + g_free(sotime); + g_free(itime); } else { /* FIXME */ } diff -r 649199f4730e -r ed28707debdc src/gaim.h --- a/src/gaim.h Sat Nov 04 20:20:27 2000 +0000 +++ b/src/gaim.h Sat Nov 04 22:35:05 2000 +0000 @@ -459,9 +459,6 @@ extern GtkWidget *applet; #endif /* USE_APPLET */ -/* Globals in server.c */ -extern int correction_time; - /* Globals in dialog.c */ extern char fontface[64]; extern GdkColor bgcolor; diff -r 649199f4730e -r ed28707debdc src/multi.h --- a/src/multi.h Sat Nov 04 20:20:27 2000 +0000 +++ b/src/multi.h Sat Nov 04 22:35:05 2000 +0000 @@ -55,6 +55,7 @@ char g_screenname[64]; int options; /* same as aim_user options */ int keepalive; + int correction_time; /* stuff needed for per-connection idle times */ int idle_timer; time_t login_time; diff -r 649199f4730e -r ed28707debdc src/server.c --- a/src/server.c Sat Nov 04 20:20:27 2000 +0000 +++ b/src/server.c Sat Nov 04 22:35:05 2000 +0000 @@ -44,8 +44,6 @@ #include "pixmaps/ok.xpm" #include "pixmaps/cancel.xpm" -int correction_time = 0; - void serv_login(struct aim_user *user) { struct prpl *p = find_prpl(user->protocol); @@ -412,7 +410,7 @@ struct gaim_connection *g = find_gaim_conn_by_name(name); if (g) { - correction_time = (int)(signon - g->login_time); + gc->correction_time = (int)(signon - g->login_time); if (!b) { return; }