📄 dlul_screen.c
字号:
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 + -