📄 phone.c
字号:
}void EditEntry(tTermPhoneRec *Tmp){ tMenu *Edit; int Key, i, j; char Temp[256], *s; nl(); wclear(PhoneScreen); textAttr(PhoneScreen, Integers[cMenu]); box(PhoneScreen, SVLINE, SHLINE); wmove(PhoneScreen, 1, 20); wvline(PhoneScreen, SVLINE, LINES-3); wmove(PhoneScreen, 0, 20); waddch(PhoneScreen, 194); wmove(PhoneScreen, LINES-2, 20); waddch(PhoneScreen, 193); Edit = new tMenu(PhoneScreen, Integers[cMenuText], Integers[cMenuHot], Integers[cMenuBar], Integers[cMenuText], ALIGNLEFT); Edit->Add("~S~ystem name", 1, 20, 1); Edit->Add("~P~hone number", 1, 20, 2); Edit->Add("~D~evice", 1, 20, 3); Edit->Add("~U~ser profile", 1, 20, 4); Edit->Add("Pass~w~ord", 1, 20, 5); Edit->Add("~O~pening hours", 1, 20, 6); Edit->Add("~T~erminal", 1, 20, 7); Edit->Add("Dial prefi~x~", 1, 20, 8); Edit->Add("Dial su~f~fix", 1, 20, 9); Edit->Add("Comm. information", 1, 20, 10); Edit->Add("Comment ~1~", 1, 20, 11); Edit->Add("Comment ~2~", 1, 20, 12); Edit->Add("~C~apture file", 1, 20, 13); Edit->Add("~L~ocal Echo", 1, 20, 14); Edit->Add("Strip~H~igh", 1, 20, 15); Edit->Add("~B~ackspace erase", 1, 20, 16); Edit->Add("Colo~r~", 1, 20, 17); Edit->Show(); wmove(PhoneScreen, 1, 22); textAttr(PhoneScreen, Integers[cMenuOptions]); PasToChar(Tmp->Name, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 2, 22); PasToChar(Tmp->Number, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 4, 22); waddstr(PhoneScreen, Strings[User1+Tmp->User-1]); wmove(PhoneScreen, 5, 22); PasToChar(Tmp->Password, Temp); if (Integers[HidePwds]) Dots(Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 6, 22); sprintf(Temp, "%02d:%02d-%02d:%02d", Tmp->Open / 60, Tmp->Open % 60, Tmp->Closed / 60, Tmp->Closed % 60); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 10, 22); sprintf(Temp, "%lu ", Tmp->Baud); waddstr(PhoneScreen, Temp); waddch(PhoneScreen, 48+Tmp->Databits); waddch(PhoneScreen, '-'); waddch(PhoneScreen, Tmp->Parity); waddch(PhoneScreen, '-'); waddch(PhoneScreen, 48+Tmp->Stopbits); wmove(PhoneScreen, 11, 22); PasToChar(Tmp->Comment1, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 12, 22); PasToChar(Tmp->Comment2, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 13, 22); PasToChar(Tmp->Capture, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 14, 22); if (Tmp->LocalEcho) waddstr(PhoneScreen, "Yes"); else waddstr(PhoneScreen, "No"); wmove(PhoneScreen, 15, 22); if (Tmp->StripHigh) waddstr(PhoneScreen, "Yes"); else waddstr(PhoneScreen, "No"); wmove(PhoneScreen, 16, 22); if (Tmp->RcvdBSdest) waddstr(PhoneScreen, "Yes"); else waddstr(PhoneScreen, "No"); wmove(PhoneScreen, 17, 22); textAttr(PhoneScreen, Tmp->Color); waddch(PhoneScreen, 254); wrefresh(PhoneScreen); while (Key != '\e'){ Key = getEscChar(); if (Key == '\n'){ textAttr(PhoneScreen, Integers[cMenuOptions]); switch(Edit->Focus){ case 0: PasToChar(Tmp->Name, Temp); if (getstring(PhoneScreen, 1,22,Temp,ValidEdit,"\n\e",30,-1,Temp) == '\n'){ CharToPas(Tmp->Name, Temp); } break; case 1: PasToChar(Tmp->Number, Temp); if (getstring(PhoneScreen, 2,22,Temp,NumberEdit,"\n\e",24,-1,Temp) == '\n'){ CharToPas(Tmp->Number, Temp); } break; case 2: Tmp->Device = ChooseDevice(PhoneScreen, Tmp->Device, 0); i = Tmp->Device; if (i == 0) i = Integers[DefaultDevice]; i--; Tmp->Parity = Integers[Parities1+i]; Tmp->Stopbits = Integers[Stopbits1+i]+1; Tmp->Databits = Integers[Databits1+i]; textAttr(PhoneScreen, Integers[cMenuOptions]); wmove(PhoneScreen, 10, 22); sprintf(Temp, "%lu ", Tmp->Baud); waddstr(PhoneScreen, Temp); waddch(PhoneScreen, 48+Tmp->Databits); waddch(PhoneScreen, '-'); waddch(PhoneScreen, Tmp->Parity); waddch(PhoneScreen, '-'); waddch(PhoneScreen, 48+Tmp->Stopbits); break; case 3: i = Tmp->User-1; Tmp->User = ChooseUser(PhoneScreen); memset(Temp, ' ', strlen(Strings[User1+i])); Temp[strlen(Strings[User1+i])] = 0; textAttr(PhoneScreen, Integers[cMenuOptions]); wmove(PhoneScreen, 4, 22); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 4, 22); waddstr(PhoneScreen, Strings[User1+Tmp->User-1]); break; case 4: PasToChar(Tmp->Password, Temp); if (getstring(PhoneScreen, 5,22,Temp,ValidEdit,"\n\e",24,-1,Temp) == '\n'){ CharToPas(Tmp->Password, Temp); } PasToChar(Tmp->Password, Temp); if (Integers[HidePwds]) Dots(Temp); wmove(PhoneScreen, 5, 22); waddstr(PhoneScreen, Temp); break; case 5: sprintf(Temp,"%02d:%02d",Tmp->Open /60, Tmp->Open % 60); if (getstring(PhoneScreen, 6,22,Temp,NumberEdit,"\n\e",5,-1,Temp) == '\n'){ s = index(Temp, ':'); if (s != NULL){ *s=0; i = atoi(Temp)*60+atoi(s+1); if (i < 24*60) Tmp->Open = i; } } sprintf(Temp,"%02d:%02d",Tmp->Closed /60, Tmp->Closed % 60); if (getstring(PhoneScreen, 6,28,Temp,NumberEdit,"\n\e",5,-1,Temp) == '\n'){ s = index(Temp, ':'); if (s != NULL){ *s=0; i = atoi(Temp)*60+atoi(s+1); if (i < 24*60) Tmp->Closed = i; } } textAttr(PhoneScreen, Integers[cMenuOptions]); wmove(PhoneScreen, 6, 22); sprintf(Temp, "%02d:%02d-%02d:%02d", Tmp->Open / 60, Tmp->Open % 60, Tmp->Closed / 60, Tmp->Closed % 60); waddstr(PhoneScreen, Temp); break; case 6: switch(WhichBook){ case 0: i = ChooseTerminal(PhoneScreen, TranslateToTerminate[Tmp->Terminal]); for (j = 0; j < 17 && i != 255; j++) if (TranslateToTerminate[j] == i) i = 255; Tmp->Terminal = j-1; break; case 1: i = ChooseTerminal(PhoneScreen, TranslateToTelix[Tmp->Terminal]); for (j = 0; j < 6 && i != 255; j++) if (TranslateToTelix[j] == i) i = 255; Tmp->Terminal = j-1; break; default:break; } break; case 7: Tmp->DialPrefix = ChoosePrefix(PhoneScreen, Tmp->DialPrefix); break; case 8: Tmp->DialSuffix = ChooseSuffix(PhoneScreen, Tmp->DialSuffix); break; case 9: Tmp->Baud = ChooseBaud(PhoneScreen, Tmp->Baud); textAttr(PhoneScreen, Integers[cMenuOptions]); wmove(PhoneScreen, 10, 22); sprintf(Temp, "%lu ", Tmp->Baud); waddstr(PhoneScreen, Temp); break; case 10: PasToChar(Tmp->Comment1, Temp); if (getstring(PhoneScreen, 11,22,Temp,ValidEdit,"\n\e",40,-1,Temp) == '\n'){ CharToPas(Tmp->Comment1, Temp); } break; case 11: PasToChar(Tmp->Comment2, Temp); if (getstring(PhoneScreen, 12,22,Temp,ValidEdit,"\n\e",40,-1,Temp) == '\n'){ CharToPas(Tmp->Comment2, Temp); } break; case 12: PasToChar(Tmp->Capture, Temp); if (getstring(PhoneScreen, 13,22,Temp,ValidEdit,"\n\e",8,-1,Temp) == '\n'){ CharToPas(Tmp->Capture, Temp); } break; case 13: if (!Tmp->LocalEcho){ Tmp->LocalEcho = 1; mvwaddstr(PhoneScreen, 14, 22, "Yes"); } else{ Tmp->LocalEcho = 0; mvwaddstr(PhoneScreen, 14, 22, "No "); } break; case 14: if (!Tmp->StripHigh){ Tmp->StripHigh = 1; mvwaddstr(PhoneScreen, 15, 22, "Yes"); } else{ Tmp->StripHigh = 0; mvwaddstr(PhoneScreen, 15, 22, "No "); } break; case 15: if (!Tmp->RcvdBSdest){ Tmp->RcvdBSdest = 1; mvwaddstr(PhoneScreen, 16, 22, "Yes"); } else{ Tmp->RcvdBSdest = 0; mvwaddstr(PhoneScreen, 16, 22, "No "); } break; case 16: Tmp->Color = ColorChoose(PhoneScreen, Tmp->Color); textAttr(PhoneScreen, Tmp->Color); mvwaddch(PhoneScreen, 17, 22, 254); break; default:break; } wrefresh(PhoneScreen); } Edit->GetInput(Key); textAttr(PhoneScreen, Integers[cMenuOptions]); } delete Edit; nonl();}void SystemNotOpen(){ tWindow *Win; int Center, Y, X, Attr; Attr = PhoneScreen->_attrs; getyx(PhoneScreen, Y, X); Center = findCenter(0, COLS, 42); Win = new tWindow(PhoneScreen, Center-3, LINES/2-2, Center+42, LINES/2+2, Integers[cInfo] >> 4, Integers[cInfo] % 16); Win->Frame(2, Integers[cInfo]); textAttr(PhoneScreen, Integers[cInfoBold]); mvwaddstr(PhoneScreen, LINES/2, Center, "System is not currently open, skipping..."); wrefresh(PhoneScreen); sleep(1); delete Win; wmove(PhoneScreen, Y, X); PhoneScreen->_attrs = Attr;}int DialEntry(tTermPhoneRec *Entry){ time_t start, current, t; int Key, dialTime, BufCount, Closed, CurrentTime; char Temp[256], c, Buffer[100]; WINDOW *DialWin; tm *Time; DialWin = newwin(LINES-18, COLS-2, 16, 1); scrollok(DialWin, TRUE); werase(DialWin); dialTime = Integers[DialTime]; time(&start); current = start; textAttr(PhoneScreen, Integers[cMenu]); wclear(PhoneScreen); box(PhoneScreen, SVLINE, SHLINE); wmove(PhoneScreen, 3, 1); whline(PhoneScreen, SHLINE, COLS-2); wmove(PhoneScreen, 4, 12); wvline(PhoneScreen, SVLINE, 9); wmove(PhoneScreen, 13, 1); whline(PhoneScreen, SHLINE, COLS-2); wmove(PhoneScreen, 15, 1); whline(PhoneScreen, SHLINE, COLS-2); textAttr(PhoneScreen, Integers[cMenuText]); mvwaddstr(PhoneScreen, 1, 1, "Start "); mvwaddstr(PhoneScreen, 2, 1, "Now "); strcpy(Temp, ctime(&start)); Temp[strlen(Temp)-1]=0; mvwaddstr(PhoneScreen, 1, 8, Temp); mvwaddstr(PhoneScreen, 4, 1, "System"); mvwaddstr(PhoneScreen, 5, 1, "Username"); mvwaddstr(PhoneScreen, 6, 1, "Phone"); mvwaddstr(PhoneScreen, 7, 1, "Password"); mvwaddstr(PhoneScreen, 8, 1, "Comm. info"); mvwaddstr(PhoneScreen, 9, 1, "Comment1"); mvwaddstr(PhoneScreen, 10, 1, "Comment2"); mvwaddstr(PhoneScreen, 11, 1, "Download"); mvwaddstr(PhoneScreen, 12, 1, "Upload"); mvwaddstr(PhoneScreen, 14, 1, " Add 15 secs Untag enter = abort esc = abort+hangup space = next"); textAttr(PhoneScreen, Integers[cMenuOptions]); PasToChar(Entry->Name, Temp); mvwaddstr(PhoneScreen, 4, 14, Temp); mvwaddstr(PhoneScreen, 5, 14, Strings[User1+Entry->User-1]); PasToChar(Entry->Number, Temp); mvwaddstr(PhoneScreen, 6, 14, Temp); PasToChar(Entry->Password, Temp); if (Integers[HidePwds]) Dots(Temp); mvwaddstr(PhoneScreen, 7, 14, Temp); sprintf(Temp, "%lu %u%c%u",Entry->Baud,Entry->Databits,Entry->Parity,Entry->Stopbits); mvwaddstr(PhoneScreen, 8, 14, Temp); PasToChar(Entry->Comment1, Temp); mvwaddstr(PhoneScreen, 9, 14, Temp); PasToChar(Entry->Comment2, Temp); mvwaddstr(PhoneScreen, 10, 14, Temp); sprintf(Temp, "%lu", Entry->DownloadKb); mvwaddstr(PhoneScreen, 11, 14, Temp); sprintf(Temp, "%lu", Entry->UploadKb); mvwaddstr(PhoneScreen, 12, 14, Temp); Key = 0; linestatus(); while (charwaiting() == TRUE){ c = mgetchar(); if (c != 13){ waddch(DialWin, c); wrefresh(DialWin); } linestatus(); } time(&t); Time = localtime(&t); Closed = Entry->Closed; if (Entry->Closed <= Entry->Open) Closed += 24*60; CurrentTime = Time->tm_hour * 60 + Time->tm_min; if (CurrentTime < Entry->Open || CurrentTime > Closed){ SystemNotOpen(); if (chwait() == TRUE) Key = getEscChar(); } else{ strcpy(Temp, Strings[Prefix1+Entry->DialPrefix-1]); ReplaceM(Temp); mwriteblock(Temp, strlen(Temp)); PasToChar(Entry->Number, Temp); mwriteblock(Temp, strlen(Temp)); strcpy(Temp, Strings[Suffix1+Entry->DialSuffix-1]); ReplaceM(Temp); mwriteblock(Temp, strlen(Temp)); BufCount = 0; Buffer[0]=0; ConnectMatch = 0; while (current-start<= dialTime && Key != '\e' && Key != ' ' && Key != '\n' && !CAR && !ConnectMatch){ time(¤t); textAttr(PhoneScreen, Integers[cMenuText]); strcpy(Temp, ctime(¤t)); Temp[strlen(Temp)-1]=0; mvwaddstr(PhoneScreen, 2, 8, Temp); mvwaddstr(PhoneScreen, 2, 35, "Retries: "); sprintf(Temp, "%d", DialRetries); textAttr(PhoneScreen, Integers[cMenuTextBold]); mvwaddstr(PhoneScreen, 2, 45, Temp); textAttr(PhoneScreen, Integers[cMenuText]); mvwaddstr(PhoneScreen, 2, 50, "Countdown"); textAttr(PhoneScreen, Integers[cMenuTextBold]); sprintf(Temp, "%03lu", dialTime - (current-start)); Temp[4] = 0; mvwaddstr(PhoneScreen, 2, 60, Temp); if (charwaiting() == TRUE){ c = mgetchar(); if (c != 13) waddch(DialWin, c); Buffer[BufCount++]=c; Buffer[BufCount]=0; if (c == '\r' || c == '\n') BufCount=0; linestatus(); } wrefresh(PhoneScreen); redrawwin(DialWin); wrefresh(DialWin); if (chwait() == TRUE){ Key = getEscChar(); switch(Key){ case 'a': case 'A': dialTime += 15; break; case 'u': case 'U': Entry->Tag = 0; break; default:break; } } if (Key == ' ' || Key == '\e' || Key == '\n'){ strcpy(Temp, Strings[DialCancel]); ReplaceM(Temp); mwriteblock(Temp, strlen(Temp)); } for (c = NoConnect1; c <= NoConnect5; c++) if (strcasecmp(Buffer, Strings[c]) == 0 && Buffer[0] != 0) dialTime = 0; } } if (strcasecmp(Buffer, Strings[ConnectStr]) == 0 && Buffer[0] != 0) ConnectMatch = 1; delwin(DialWin); return Key;}void Dialer(int TopOfList){ tTermPhoneRec *Tmp; int i,j, Tags; char Temp[50], TempStr[100]; time_t t; tm *Time; nl(); DialRetries = 0; Tags = 1; Tmp = &CurrentTerm; while (Tags && !CAR && !ConnectMatch){ Tags = 0; if (!CAR && !ConnectMatch && Integers[LoopDelay] > 0){ j = Integers[LoopDelay]; textAttr(PhoneScreen, Integers[cMenuText]); mvwaddstr(PhoneScreen, 2, 50, "Loop delay "); while (j-->0){ sprintf(Temp, "%d ", j); textAttr(PhoneScreen, Integers[cMenuTextBold]); mvwaddstr(PhoneScreen, 2, 61, Temp); wrefresh(PhoneScreen); if (chwait() == TRUE) j=0; sleep(1); } } Tmp = (tTermPhoneRec *)PhoneBook->Base; for (i=0;i<=TermHeader.Num && !CAR && !ConnectMatch && i <= TopOfList;i++){ if (Tmp->Tag){ Tags = 1; DialRetries++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -