⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlul_screen.c

📁 P2P NAP的C实现 P2P在网络应用中越来越流行
💻 C
📖 第 1 页 / 共 2 页
字号:
    upload_t    *ul;    int          screen_pos;    sock_t      *sk;    int          purged_down, purged_up;    int          num_retried, num_ret_queued;    int          r;    c = wgetch(dlul_win);    if (c == '\e') {           /* ESC */        c = wgetch(dlul_win);        if (c == ERR)            return(1);        else            c+=128;    }    if (sl_handle_keystroke(c)) {        dlul_refresh();        return(1);    }    switch (c) {    case KEY_F(1):    case 128 + '1':    case 'q':        switchtoscreen(MAIN_SCREEN);        break;    case KEY_F(2):    case 128 + '2':    case '\t':        switchtoscreen(RESULT_SCREEN);        break;    case '/':        ccmd = NULL;        strcpy(cbuf, "/");        curr = 0;        curx = strlen(cbuf);        switchtoscreen(MAIN_SCREEN);        break;    case 'h': case 'H':        sl_set(dlul_help);        filename_in_status = FALSE;        dlul_refresh();        break;    case 12:        /* Ctrl-L */      clearok(dlul_win, 1);      wrefresh(dlul_win);      break;    case KEY_UP:    /* cursor up */        if (dlul_section == 'u' && dlul_cursor == 0 && num_dl > 0) {            dlul_section = 'd';            dlul_cursor = num_dl;        }        else            dlul_cursor--;        filename_in_status = TRUE;        dlul_refresh();        break;    case KEY_DOWN:  /* cursor down */      if (dlul_section == 'd' && dlul_cursor == num_dl-1 && num_ul > 0) {            dlul_section = 'u';            dlul_cursor = 0;        }        else            dlul_cursor++;        filename_in_status = TRUE;        dlul_refresh();        break;    case KEY_PPAGE: /* PgUp */    case 16:        /* Ctrl-P */        dlul_cursor -= (dlul_section == 'd' ? dl_room : ul_room) - 1;        filename_in_status = TRUE;        dlul_refresh();        break;    case KEY_NPAGE: /* cursor down by 10 */    case 14:        /* Ctrl-N */    case 22:        /* Ctrl-V */        dlul_cursor += (dlul_section == 'd' ? dl_room : ul_room) - 1;        filename_in_status = TRUE;        dlul_refresh();        break;    case 128 + KEY_UP:      /* switch sections */    case 128 + KEY_DOWN:    case 'o':        if (dlul_section == 'd') {            if (!num_ul)                break;            dlul_section = 'u';            /* Try to leave the cursor at around the same screen offset in the               other section: */            screen_pos = dlul_cursor - dl_first_disp;            dlul_cursor = ul_first_disp + screen_pos;        }        else {            if (!num_dl)                break;            dlul_section = 'd';            /* Try to leave the cursor at around the same screen offset in the               other section: */            screen_pos = dlul_cursor - ul_first_disp;            dlul_cursor = dl_first_disp + screen_pos;        }        filename_in_status = TRUE;        dlul_refresh();        break;    case 'd':       /* kill task at cursor */        if (dlul_section == 'd') {            if (dlul_cursor >= num_dl) {                sl_set("Nothing to delete");                break;            }            list_nth(dl, down, dlul_cursor);            if (!dl)                break;            wp(wchan, "* Deleted download of \"%s\" from %s\n", dl->fn,               dl->nick);            sl_sprintf("Deleted download of \"%s\" from %s", dl->fn,                       dl->nick);            ddownload(wchan, dl);        }        else {            if (dlul_cursor >= num_ul) {                sl_set("Nothing to delete.");                break;            }            list_nth(ul, up, dlul_cursor);            if (!ul)                break;            wp(wchan, "* Deleted upload of \"%s\" to %s\n", ul->fn, ul->nick);            sl_sprintf("Deleted upload of \"%s\" to %s", ul->fn, ul->nick);            dupload(ul);        }        filename_in_status = FALSE;        dlul_refresh();        break;    case 'f':       /* force download at cursor, if applicable */        if (dlul_section == 'u') {            sl_sprintf("Can't force an upload.");	    filename_in_status = FALSE;	    dlul_refresh();            break;        }        sk = findsock("server");	if (!sk) {	    sl_set("Not connected to server.");	    filename_in_status = FALSE;	    dlul_refresh();	    break;	}	list_nth(dl, down, dlul_cursor);	if (!dl) {	    sl_sprintf("Nothing to force.");	} else {	    r = forcedownload(sk->fd, dl);	    switch(r) {	    case 0: 	      wp(win, "* Getting \"%s\" from %s\n", dl->fn, dl->nick);	      sl_sprintf("Getting \"%s\" from %s", dl->fn, dl->nick);	      break;	    case -1: 	      sl_sprintf("Already getting \"%s\" from %s", dl->fn, dl->nick);	      break;	    default:	      break;	    }        }        filename_in_status = FALSE;        dlul_refresh();        break;    case 'r':       /* retry download at cursor, if applicable */    case '\n':    case '\r':        if (dlul_section == 'u') {            sl_sprintf("Can't retry an upload.");	    filename_in_status = FALSE;	    dlul_refresh();            break;        }        sk = findsock("server");	if (!sk) {	    sl_set("Not connected to server.");	    filename_in_status = FALSE;	    dlul_refresh();	    break;	}	list_nth(dl, down, dlul_cursor);	if (!dl) {	    sl_sprintf("Nothing to retry.");	} else if (dl->state == COMPLETE) {	    sl_sprintf("Download already finished (use 'f' to force) - \"%s\".", dl->fn);	} else {	    r = retrydownload(sk->fd, dl);	    switch(r) {	    case 0: 	      wp(win, "* Getting \"%s\" from %s\n", dl->fn, dl->nick);	      sl_sprintf("Getting \"%s\" from %s", dl->fn, dl->nick);	      break;	    case 1: case 2:	      wp(win, "* Queued download of \"%s\" from %s\n", dl->fn, dl->nick);	      sl_sprintf("Queued download of \"%s\" from %s", dl->fn, dl->nick);	      break;	    case 3:	      wp(win, "* Remotely queued download of \"%s\" from %s\n", dl->fn, dl->nick);	      sl_sprintf("Remotely queued download of \"%s\" from %s", dl->fn, dl->nick);	      break;	    case -1: 	      sl_sprintf("Already getting \"%s\" from %s", dl->fn, dl->nick);	      break;	    case -2:	      sl_sprintf("Download already queued (use 'f' to force) - \"%s\" from %s", dl->fn, dl->nick);	      break;	    default:	      break;	    }        }        filename_in_status = FALSE;        dlul_refresh();        break;    case 'R':        num_retried = 0;        num_ret_queued = 0;        sk = findsock("server");	if (!sk) {            sl_set("Not connected to server");	    filename_in_status = FALSE;	    dlul_refresh();	    break;	}	list_forall(dl, down) {	  if (ACTIVE(dl->state) || dl->state == QUEUED ||	      dl->state == RQUEUED || dl->state == COMPLETE) {	      continue;	  }	  r = retrydownload(sk->fd, dl);	  switch(r) {	  case 0: 	    wp(win, "* Getting \"%s\" from %s\n", dl->fn, dl->nick);	    num_retried++;	    break;	  case 1: case 2:	    wp(win, "* Queued download of \"%s\" from %s\n", dl->fn, dl->nick);	    num_retried++;	    num_ret_queued++;	    break;	  case 3:	    wp(win, "* Remotely queued download of \"%s\" from %s\n", dl->fn, dl->nick);	    num_retried++;	    num_ret_queued++;	    break;	  case -1: case -2: default:	    break;	  }	}	sl_sprintf("%d downloads retried (%d queued)", num_retried,		   num_ret_queued);        filename_in_status = FALSE;        dlul_refresh();        break;    case 'P':       /* purge stopped tasks */        switch (dlul_section) {	case 'u':	  purged_up = purgeup();	  wp(wchan, "* Purged %d uploads\n", purged_up);	  sl_sprintf("Purged %d uploads", purged_up);	  break;	case 'd': default:	  purged_down = purgedown(wchan);	  wp(wchan, "* Purged %d downloads\n", purged_down);	  sl_sprintf("Purged %d downloads", purged_down);	  break;	}        filename_in_status = FALSE;        dlul_refresh();        break;    default:        if (c >= '1' && c <= '9') {            dlul_cursor = (c - '1');            filename_in_status = TRUE;            dlul_refresh();        }        break;    }    return(1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -