MESS3.PAS

4.4 KB 8a42c1480fab6bcd…
{$I DIRECT.INC}

Unit Mess3;
                          {/ low level message area routines /}
Interface

Uses GenTypes;

Procedure FixNewScan;
procedure togglenewscan;

Implementation

Uses Dos, GenSubs, Windows, Subs1, Subs2, Mainr2, Mess0, Mess1, Flags,
     FileLock;

  Procedure FixNewScan;
  Const Index : Array[1..10] of Byte = (0,20,40,60,80,100,120,140,160,180);
  Var Back,Page,i : Byte;
      TotalPages : Byte;
      Start,Last : Byte;
      Size : Integer;
      K : Char;

    Procedure PlaceBar(Hi : Boolean);
    Begin
      If Hi
        Then ansicolor(urec.color7)
        Else ansicolor(urec.color6);
      GoXy(9,i + 3);
      Tab(Strr( i + Index[Page]),2);
    End;

    Procedure TopLines;
    Begin
      GoXy(1,1);
      SendCr(^R'Current Page'^A': '^S+Strr(Page)+^R' of '^S+Strr(TotalPages)+
              +^R'   ['^A'√'^R'] On ['^A'+'^R'] PageDn ['^A'-'^R'] PageUp ['^A'Arrows'^R'] Move ['^A'Q'^R'] Quit');
      SendCr(^O'═════════════════════════[ '^P'Message NewScan Config'^O' ]═══════════════════════════');
    End;

    Procedure Draw20;
    Var X,Y : Byte;
    Begin
      AnsiReset;
      AnsiCls;
      TopLines;
      Start := Index[Page] + 1;
      Last := Start + 19;
      If Last > Size
        Then Last := Size;
      Y := 3;
      For X := Start To Last Do Begin
          Inc(y);
          GoXy(8,Y);
          SendFull(^R'['^A);
          Tab(Strr(X),2);
          SendFull(^R'] ');
        If HaveAccess(X-1) Then Begin
          If CurBoardNum in NScan.NewScanConfig
            Then SendFull('  '^S)
            Else SendFull('√ '^S);
          Tab(CurBoard.BoardName,30);
          SendFull(^R' Base Type'^A': '^S);
          If CurBoard.EchoType < 1
            Then SendFull('Local')
            Else SendFull(CurBoard.NetName);
        End Else
          SendFull(^R'  No Area Exists                 Base Type'^A': '^S'N/A');
      End;
    End;

    Procedure Tag;
    Begin
      If HaveAccess(i + Index[Page] - 1) Then Begin
        With NScan Do Begin
          If CurBoardNum In NewScanConfig Then Begin
            NewScanConfig := NewScanConfig-[CurBoardNum];
            SendFull(^R'] √');
            SendFull(B_(3));
          End Else Begin
            NewScanConfig := NewScanConfig+[CurBoardNum];
            SendFull(^R']  ');
            SendFull(B_(3));
          End;
        End;
      End;
    WriteScanRec(NScan,MsgConf);
    End;

    Procedure Down;
    Begin
      If (Page=TotalPages) and (i + Index[Page] = Size)
        Then Exit;
      PlaceBar(False);
      Inc(i);
      If (i + Index[Page]) > Last Then Begin
        i := 1;
        Inc(Page);
        Draw20;
        PlaceBar(True);
        Exit;
      End;
      PlaceBar(True);
    End;

    Procedure Up;
    Begin
      If (Page=1) and (i=1)
        Then Exit;
      PlaceBar(False);
      Dec(i);
      If i = 0 Then Begin
        i := 20;
        Dec(Page);
        Draw20;
        PlaceBar(True);
        Exit;
      End;
      PlaceBar(True);
    End;

    Procedure PageUp;
    Begin
      If (Page=1)
        Then Exit;
      Dec(Page);
      i:=1;
      Draw20;
      PlaceBar(True);
    End;

    Procedure PageDown;
    Begin
      If (Page>=TotalPages)
        Then Exit;
      Inc(Page);
      i:=1;
      Draw20;
      PlaceBar(True);
    End;

    Begin
      Size := FileSize(BDFile);
      TotalPages := Size DiV 20 + 1;
      Back := CurBoardNum;
      Page := 1;
      i := 1;
      Draw20;
      PlaceBar(true);
      Repeat
        K := ArrowKey(False);
        K := Upcase(K);
        Case K Of
          #32  : Tag;
          ^D,^A: Up;
          ^C,^B: Down;
          '+'  : PageDown;
          '-'  : PageUp;
        End;
      Until (K='Q') or (HungUpOn);
      CurBoardNum := Back;
      Seekbdfile (CurBoardNum);
      NRead (BDFile,CurBoard);
      AnsiReset;
      AnsiCls;
    End;

  procedure togglenewscan;
  begin
    SendFull(^P'Newscan this board'^O': ');
    if curboardnum in nscan.newscanconfig
      then
        begin
          SendCr(^U'Yes');
          nscan.newscanconfig:=nscan.newscanconfig-[curboardnum]
        end
      else
        begin
          SendCr(^U'No');
          nscan.newscanconfig:=nscan.newscanconfig+[curboardnum]
        end;
  WriteScanRec(NScan,MsgConf);
  end;

begin
end.