X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=clients%2Fgui-shell%2Fdsh.c;h=62cf0e4f5a0b1391095157282b97d6067648ff20;hb=a0ca560ebe8e201c8c3c29f3168eae45fcd55beb;hp=41291e91b935d023eb1896f596cd8ed84acafb42;hpb=d25a21f5f3c104cb9d053d32b9331068309838a4;p=doldaconnect.git diff --git a/clients/gui-shell/dsh.c b/clients/gui-shell/dsh.c index 41291e9..62cf0e4 100644 --- a/clients/gui-shell/dsh.c +++ b/clients/gui-shell/dsh.c @@ -54,6 +54,7 @@ struct trinfo { void updatewrite(void); int remote = 0; +char *server; GtkStatusIcon *tray; pid_t dpid = 0, dcpid = 0; int connected = 0; @@ -200,12 +201,12 @@ void updatetooltip(void) { struct dc_transfer *tr; struct trinfo *tri; - int t, i, a, st; + int t, i, a, st, bc, bt; char *buf; size_t bufsize, bufdata; t = i = a = 0; - st = -1; + st = bc = bt = -1; for(tr = dc_transfers; tr != NULL; tr = tr->next) { if(tr->dir != DC_TRNSD_DOWN) continue; @@ -215,20 +216,27 @@ void updatetooltip(void) i++; else if((tr->state == DC_TRNS_HS) || (tr->state == DC_TRNS_MAIN)) a++; - if((tr->state == DC_TRNS_MAIN) && (tri->speed != -1)) { - if(st == -1) - st = 0; - st += tri->speed; + if((tr->state == DC_TRNS_MAIN)) { + if(bt == -1) + bc = bt = 0; + bc += tr->curpos; + bt += tr->size; + if(tri->speed != -1) { + if(st == -1) + st = 0; + st += tri->speed; + } } } buf = NULL; bufsize = bufdata = 0; - bprintf(buf, "Transfers: %i", t); + bprintf(buf, "%s: %i", _("Transfers"), t); if(t > 0) bprintf(buf, " (%i/%i)", i, a); - if(st != -1) { + if(bt > 0) + bprintf(buf, ", %.1f%%", ((double)bc / (double)bt) * 100.0); + if(st != -1) bprintf(buf, ", %s/s", bytes2si(st)); - } addtobuf(buf, 0); gtk_status_icon_set_tooltip(tray, buf); free(buf); @@ -371,7 +379,7 @@ void updatewrite(void) void connectdc(void) { - if((dcfd = dc_connect(remote?NULL:dc_srv_local)) < 0) { + if((dcfd = dc_connect(server)) < 0) { msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Could not connect to server: %s"), strerror(errno)); exit(1); } @@ -536,14 +544,20 @@ int main(int argc, char **argv) textdomain(PACKAGE); signal(SIGCHLD, sighandler); dc_init(); + server = dc_srv_local; gtk_init(&argc, &argv); #ifdef HAVE_NOTIFY notify_init("Dolda Connect"); #endif - while((c = getopt(argc, argv, "rh")) != -1) { + while((c = getopt(argc, argv, "rhs:")) != -1) { switch(c) { case 'r': remote = 1; + server = NULL; + break; + case 's': + remote = 1; + server = optarg; break; case 'h': printf("usage: doldacond-shell [-hr]\n");