📄 phone.c
字号:
} else{ Prev = (tTermPhoneRec *)First->Prev; Next = (tTermPhoneRec *)First->Next; First->Next = Second->Next; First->Prev = Second->Prev; Second->Next = Next; Second->Prev = Prev; } if (First->Prev != NULL) First->Prev->Next = First; if (First->Next != NULL) First->Next->Prev = First; if (Second->Prev != NULL) Second->Prev->Next = Second; if (Second->Next != NULL) Second->Next->Prev = Second; if (PhoneBook->Base == First) PhoneBook->Base = Second; else if (PhoneBook->Base == Second) PhoneBook->Base = First; if (PhoneBook->Last == First) PhoneBook->Last = Second; else if (PhoneBook->Last == Second) PhoneBook->Last = First;} int NameCompare(tTermPhoneRec *I, tTermPhoneRec *J){ char Temp[256], Tmp[256]; PasToChar(I->Name, Temp); PasToChar(J->Name, Tmp); return (strcasecmp(Temp, Tmp));}int NumberCompare(tTermPhoneRec *I, tTermPhoneRec *J){ char Temp[256], Tmp[256]; PasToChar(I->Number, Temp); PasToChar(J->Number, Tmp); return (strcasecmp(Temp, Tmp));}int ConnectsCompare(tTermPhoneRec *I, tTermPhoneRec *J){ int ReturnValue = 0; if (I->Connects < J->Connects) ReturnValue = -1; if (I->Connects == J->Connects) ReturnValue = 0; if (I->Connects > J->Connects) ReturnValue = 1; return ReturnValue;}int Comment1Compare(tTermPhoneRec *I, tTermPhoneRec *J){ char Temp[256], Tmp[256]; PasToChar(I->Comment1, Temp); PasToChar(J->Comment1, Tmp); return (strcasecmp(Temp, Tmp));}int Comment2Compare(tTermPhoneRec *I, tTermPhoneRec *J){ char Temp[256], Tmp[256]; PasToChar(I->Comment2, Temp); PasToChar(J->Comment2, Tmp); return (strcasecmp(Temp, Tmp));}void SortAscending(int Low, int High, int cmp(tTermPhoneRec *I, tTermPhoneRec *J)){ tTermPhoneRec *CurrentI, *CurrentJ, *Middle; tListObj *SaveI, *SaveJ; int i,j; CurrentI = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<Low;i++) CurrentI = (tTermPhoneRec *)CurrentI->Next; Middle = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<(High+Low)/2;i++) Middle = (tTermPhoneRec *)Middle->Next; CurrentJ = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<High;i++) CurrentJ = (tTermPhoneRec *)CurrentJ->Next; i = Low; j = High; do { while (cmp(CurrentI, Middle)<0) { i++; CurrentI = (tTermPhoneRec *)CurrentI->Next; } while (cmp(CurrentJ, Middle)>0) { j--; CurrentJ = (tTermPhoneRec *)CurrentJ->Prev; } if (i<=j) { SaveI = CurrentI->Next; SaveJ = CurrentJ->Prev; Swap(CurrentI, CurrentJ); i++; j--; CurrentI = (tTermPhoneRec *)SaveI; CurrentJ = (tTermPhoneRec *)SaveJ; } }while(i<=j); if (Low<j) SortAscending(Low, j, cmp); if (i<High) SortAscending(i, High, cmp);}void SortDescending(int Low, int High, int cmp(tTermPhoneRec *I, tTermPhoneRec *J)){ tTermPhoneRec *CurrentI, *CurrentJ, *Middle; tListObj *SaveI, *SaveJ; int i,j; CurrentI = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<Low;i++) CurrentI = (tTermPhoneRec *)CurrentI->Next; Middle = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<(High+Low)/2;i++) Middle = (tTermPhoneRec *)Middle->Next; CurrentJ = (tTermPhoneRec *)PhoneBook->Base->Next; for (i=1;i<High;i++) CurrentJ = (tTermPhoneRec *)CurrentJ->Next; i = Low; j = High; do { while (cmp(CurrentI, Middle)>0) { i++; CurrentI = (tTermPhoneRec *)CurrentI->Next; } while (cmp(CurrentJ, Middle)<0) { j--; CurrentJ = (tTermPhoneRec *)CurrentJ->Prev; } if (i<=j) { SaveI = CurrentI->Next; SaveJ = CurrentJ->Prev; Swap(CurrentI, CurrentJ); i++; j--; CurrentI = (tTermPhoneRec *)SaveI; CurrentJ = (tTermPhoneRec *)SaveJ; } }while(i<=j); if (Low<j) SortDescending(Low, j, cmp); if (i<High) SortDescending(i, High, cmp);}void ShowLine(int Y, tTermPhoneRec *Entry, int Number){ char Num[5], Temp[256]; int fcol, bcol, i; fcol = fgCol; bcol = bgCol; textAttr(PhoneScreen, Integers[cPhoneText]); wmove(PhoneScreen, 1, 36); for (i=36;i<COLS;i++) waddch(PhoneScreen, ' '); textAttr(PhoneScreen, Entry->Color); wmove(PhoneScreen, Y, 0); for (i=0;i<COLS;i++) waddch(PhoneScreen, ' '); wmove(PhoneScreen, Y, 0); if (Entry->Tag) waddch(PhoneScreen, Integers[TagChar]); else waddch(PhoneScreen, ' '); sprintf(Num, "%03d ", Number); waddstr(PhoneScreen, Num); PasToChar(Entry->Name, Temp); waddstr(PhoneScreen, Temp); textAttr(PhoneScreen, Integers[cPhoneText]); if (TermHeader.WritePos == 1) { wmove(PhoneScreen, 1, 36); waddstr(PhoneScreen, "Phone number"); wmove(PhoneScreen, 1, 62); waddstr(PhoneScreen, "Baud"); wmove(PhoneScreen, 1, 68); waddstr(PhoneScreen, "Comm."); textAttr(PhoneScreen, Entry->Color); wmove(PhoneScreen, Y, 36); PasToChar(Entry->Number, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, Y, 61); sprintf(Temp, "%lu", Entry->Baud); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, Y, 68); waddch(PhoneScreen, 48+Entry->Databits); waddch(PhoneScreen, '-'); waddch(PhoneScreen, Entry->Parity); waddch(PhoneScreen, '-'); waddch(PhoneScreen, 48+Entry->Stopbits); } if (TermHeader.WritePos == 2) { wmove(PhoneScreen, 1, 36); waddstr(PhoneScreen, "Comment1"); wmove(PhoneScreen, Y, 36); textAttr(PhoneScreen, Entry->Color); PasToChar(Entry->Comment1, Temp); waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 3) { textAttr(PhoneScreen, Integers[cPhoneText]); wmove(PhoneScreen, 1, 36); waddstr(PhoneScreen, "Comment2"); wmove(PhoneScreen, Y, 36); textAttr(PhoneScreen, Entry->Color); PasToChar(Entry->Comment2, Temp); waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 4) { wmove(PhoneScreen, 1, 36); waddstr(PhoneScreen, "Password"); wmove(PhoneScreen, 1, 61); waddstr(PhoneScreen,"Opening hours"); wmove(PhoneScreen, Y, 36); textAttr(PhoneScreen, Entry->Color); PasToChar(Entry->Password, Temp); if (Integers[HidePwds] == 1) Dots(Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, Y, 61); sprintf(Temp, "%02d:%02d-%02d:%02d",Entry->Open / 60,Entry->Open % 60, Entry->Closed / 60, Entry->Closed % 60); waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 5) { wmove(PhoneScreen, 1, 36); waddstr(PhoneScreen, "Username"); wmove(PhoneScreen, 1, 61); waddstr(PhoneScreen, "Capture Note"); textAttr(PhoneScreen, Entry->Color); wmove(PhoneScreen, Y, 36); if (strlen(Strings[User1+Entry->User-1])>24) { strncpy(Temp, Strings[User1+Entry->User-1], 24); Temp[24]=0; } else strcpy(Temp, Strings[User1+Entry->User-1]); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, Y, 61); PasToChar(Entry->Capture, Temp); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, Y, 70); PasToChar(Entry->Note, Temp); waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 6) { wmove(PhoneScreen, 1, 36); waddstr(PhoneScreen, "Prefix"); wmove(PhoneScreen, 1, 61); waddstr(PhoneScreen, "Suffix"); textAttr(PhoneScreen, Entry->Color); wmove(PhoneScreen, Y, 36); if (strlen(Strings[Prefix1+Entry->DialPrefix-1])>24) { strncpy(Temp, Strings[Prefix1+Entry->DialPrefix-1], 24); Temp[24]=0; } else strcpy(Temp, Strings[Prefix1+Entry->DialPrefix-1]); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, Y, 61); if (strlen(Strings[Suffix1+Entry->DialSuffix-1])>24) { strncpy(Temp, Strings[Suffix1+Entry->DialSuffix-1], 24); Temp[24]=0; } else strcpy(Temp, Strings[Suffix1+Entry->DialSuffix-1]); waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 7) { wmove(PhoneScreen, 1, 36); waddstr(PhoneScreen, "Last called"); wmove(PhoneScreen, 1, 50); waddstr(PhoneScreen, "Total connects"); textAttr(PhoneScreen, Entry->Color); wmove(PhoneScreen, Y, 36);// FromJulian(Entry->Juldate); sprintf(Temp, "%d-%d-%d", Day, Month, Year); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, Y, 50); sprintf(Temp, "%d", Entry->Connects); waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 8) { wmove(PhoneScreen, 1, 36); waddstr(PhoneScreen, "Time used"); wmove(PhoneScreen, 1, 46); waddstr(PhoneScreen, "Cost"); wmove(PhoneScreen, 1, 53); waddstr(PhoneScreen, "Download kb Upload kb"); wmove(PhoneScreen, Y, 36); textAttr(PhoneScreen, Entry->Color); sprintf(Temp,"%02lu:%02lu %lu",Entry->SecUsed / 60, Entry->SecUsed % 60, Entry->Costs); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, Y, 53); sprintf(Temp, "%lu", Entry->DownloadKb); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, Y, 66); sprintf(Temp, "%lu", Entry->UploadKb); waddstr(PhoneScreen, Temp); } if (TermHeader.WritePos == 9) { wmove(PhoneScreen, 1, 36); waddstr(PhoneScreen, "Terminal emulation"); wmove(PhoneScreen, 1, 60); waddstr(PhoneScreen, "Device"); textAttr(PhoneScreen, Entry->Color); wmove(PhoneScreen, Y, 36); if (WhichBook == 0) waddstr(PhoneScreen, TermEmu[TranslateToTerminate[Entry->Terminal]]); if (WhichBook == 1) waddstr(PhoneScreen, TermEmu[TranslateToTelix[Entry->Terminal]]); wmove(PhoneScreen, Y, 60); i = Entry->Device; if (i == 0) i = Integers[DefaultDevice]; if (i > 4) i = Integers[DefaultDevice]; if (strlen(Strings[Device1+i-1])>24) { strncpy(Temp, Strings[Device1+i-1], 24); Temp[24]=0; } else strcpy(Temp, Strings[Device1+i-1]); waddstr(PhoneScreen, Temp); } textColor(PhoneScreen, fcol); textBkgd(PhoneScreen, bcol);}void PaintPhoneBar(){ int x, fcol, bcol, i; chtype ch; tTermPhoneRec *Tmp; fcol = fgCol; bcol = bgCol; textAttr(PhoneScreen, Integers[cPhoneBar]); for (x=0;x<COLS;x++) { ch=mvwinch(PhoneScreen, TermHeader.ScrPos+2, x); mvwaddch(PhoneScreen, TermHeader.ScrPos+2, x, ch & A_CHARTEXT); } textColor(PhoneScreen, fcol); textBkgd(PhoneScreen, bcol);}void ShowTerm(){ int i, fcol, bcol; char Temp[256], s[30]; fcol = fgCol; bcol = bgCol; textAttr(PhoneScreen, Integers[cPhoneText]); wclear(PhoneScreen); for (i=0;i<COLS*2;i++) waddch(PhoneScreen, ' '); wmove(PhoneScreen, LINES-3, 0); for (i=0;i<COLS;i++) waddch(PhoneScreen, ' '); if (WhichBook == 0){ strcpy(Temp, "Dialing directory - TERMINATE ("); PasToChar(TermHeader.Comment, s); strcat(Temp, s); strcat(Temp, ")"); } if (WhichBook == 1){ strcpy(Temp, "Dialing directory - TELIX"); } wmove(PhoneScreen, 0, findCenter(0,COLS,strlen(Temp))); waddstr(PhoneScreen, Temp); wmove(PhoneScreen, 1, 1); waddstr(PhoneScreen," #"); wmove(PhoneScreen, 1, 6); waddstr(PhoneScreen,"Name"); mvwaddstr(PhoneScreen, LINES-3, 1, "Edit Find Dial Manual Sort Global saVe Phonebook defAult"); textColor(PhoneScreen, fcol); textBkgd(PhoneScreen, bcol);}void ShowTermBook(int which){ int i, j, fcol, bcol; tTermPhoneRec *Tmp; i = 0; Tmp = TermCurrentPos; fcol = fgCol; bcol = bgCol; textAttr(PhoneScreen, Integers[cPhoneText]); if (which == 1){ textAttr(PhoneScreen, WHITE); for (i=2;i<21;i++) for (j=0;j<COLS;j++) mvwaddch(PhoneScreen, i, j, ' '); i = 0; textAttr(PhoneScreen, Integers[cPhoneText]); while ((i<19) && (Tmp != NULL) && (i < PhoneBook->Total)){ ShowLine(i+2, Tmp, i+TermCurrentNumber); Tmp = (tTermPhoneRec *)Tmp->Next; i++; } } if (which == 2){ for (i=0;i<TermLastScrPos;i++) TermLastPos = (tTermPhoneRec *)TermLastPos->Next; if (TermLastPos != NULL) ShowLine(TermLastScrPos+2, TermLastPos, TermCurrentNumber+TermLastScrPos); else { textAttr(PhoneScreen, WHITE); for (j=0;j<COLS;j++) mvwaddch(PhoneScreen, i+2, j, ' '); } } PaintPhoneBar(); TermLastPos = TermCurrentPos; TermLastScrPos = TermHeader.ScrPos; textColor(PhoneScreen, fcol); textBkgd(PhoneScreen, bcol);}void SearchTerm(){ tWindow *Win; int Center, Exit, i; char Temp[20], TempStr[256]; tTermPhoneRec *Tmp; Center = findCenter(1,COLS,22); Win = new tWindow(PhoneScreen, Center, (LINES/2)-1, Center+22, (LINES/2)+1, Integers[cInfoBold] >> 4,Integers[cInfoBold] % 16); Win->Frame(2, Integers[cInfoBold]); Win->Headline("Speed search", Integers[cInfoBold]); wrefresh(PhoneScreen); textAttr(PhoneScreen, Integers[cInfoBold]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -