{+---------------------------------------------------------------------------+ / Filename: SurveillanceUnitMain.pas / Created: 3.1.2002 / Author: Kai Lahti / Company: Gestapo / Copyright: ©Gestapo-project 2002 / Description: This is surveillance unit main from file. It starts the system and contains everything what user can du in this unit. / Version: 1.0 / Open Issues: +---------------------------------------------------------------------------+} unit SurveillanceUnitMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, SurveillanceController, ExtCtrls, ShellAPI, Menus, About, helptools; type TFormSurveillanceUnit = class(TForm) MemoStatus: TMemo; LabelHeadLine: TLabel; LabelActions: TLabel; TimerStartUp: TTimer; MainMenu: TMainMenu; MenuFile: TMenuItem; MenuHelp: TMenuItem; MenuAbout: TMenuItem; MenuExit: TMenuItem; MenuReboot: TMenuItem; MenuActions: TMenuItem; MenuClear: TMenuItem; MenuSave: TMenuItem; Bevel: TBevel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure TimerStartUpTimer(Sender: TObject); procedure MemoStatusChange(Sender: TObject); procedure MenuAboutClick(Sender: TObject); procedure MenuRebootClick(Sender: TObject); procedure MenuClearClick(Sender: TObject); procedure MenuSaveClick(Sender: TObject); procedure MenuExitClick(Sender: TObject); private ncounter : integer; SurveillanceController : TSurveillanceController; procedure Status(sStatus : string); procedure Reboot(); //procedure SocketError(); procedure SaveStatus; public end; var FormSurveillanceUnit: TFormSurveillanceUnit; implementation {$R *.dfm} // Constructor procedure TFormSurveillanceUnit.FormCreate(Sender: TObject); begin SurveillanceController := TSurveillanceController.Create(self); SurveillanceController.OnStatus := Status; SurveillanceController.OnClientError := Reboot; //SurveillanceController.OnSocketError := SocketError; // problems at reboot ncounter := 0; Status('Loading local settings'); end; // Destructor procedure TFormSurveillanceUnit.FormDestroy(Sender: TObject); begin SurveillanceController.Free; end; // adds new status message to MemoStatus procedure TFormSurveillanceUnit.Status(sStatus: string); begin MemoStatus.Lines.Add( DateToStr(Date) + ' ' + TimeToStr(Time) + ' > ' + sStatus); end; // StartUpTimer starts system in steps. This is needed because of // communication to dataunit. procedure TFormSurveillanceUnit.TimerStartUpTimer(Sender: TObject); begin if ncounter = 0 then begin SurveillanceController.LoadLocalSettings('.\localconfig.ini'); Status('Connecting to dataunit'); SurveillanceController.Connect; end else if ncounter >= 1 then begin Status('Preparing devices'); SurveillanceController.Prepare; SurveillanceController.Start; Status('System started'); TimerStartUp.Enabled := false; end; ncounter := ncounter + 1; end; // This is removes line at the beginign of the MemoStatus so it wont // become too long. procedure TFormSurveillanceUnit.MemoStatusChange(Sender: TObject); begin if MemoStatus.Lines.Count > 30 then begin MemoStatus.Lines.Delete(0); end; end; //Saves MemoStatus lines to a file procedure TFormSurveillanceUnit.SaveStatus; var sFileName, sdatehelp, stimehelp, shelp : string; F : TextFile; i : integer; begin sdatehelp := DateToStr(Date); stimehelp := TimeToStr(Time); shelp := sdatehelp; sFileName := ParseString(shelp,'.',1) + '_'; // year sFileName := sFileName + ParseString(shelp,'.',1) + '_'; // month sFileName := sFileName + shelp + '_'; // day shelp := stimehelp; sFileName := sFileName + ParseString(shelp,':') + '_'; // hour sFileName := sFileName + ParseString(shelp,':') + '_'; // min sFileName := sFileName + shelp + '.dat'; // sec sFileName := '.\actions\' + sFileName; if not DirectoryExists('.\actions\') then CreateDir('.\actions\'); AssignFile(F,sFilename); Rewrite(F); for i:=0 to MemoStatus.Lines.Count - 1 do Writeln(F, MemoStatus.Lines.Strings[i] ); Flush(F); CloseFile(F); end; // Saves MemoStatus to file, closes this application and executes another // surveillance unit. procedure TFormSurveillanceUnit.Reboot; begin Status('Rebooting system'); SaveStatus; Close; sleep(1000); ShellExecute(handle, 'open', '.\SurveillanceUnit.exe', nil, nil, SW_SHOWNORMAL); end; // Opens about window procedure TFormSurveillanceUnit.MenuAboutClick(Sender: TObject); begin Aboutbox.ShowModal; end; // reboots system procedure TFormSurveillanceUnit.MenuRebootClick(Sender: TObject); begin Reboot; end; // Clears MemoStatus procedure TFormSurveillanceUnit.MenuClearClick(Sender: TObject); begin MemoStatus.Clear; end; // Saves MemoStatus procedure TFormSurveillanceUnit.MenuSaveClick(Sender: TObject); begin SaveStatus; end; procedure TFormSurveillanceUnit.MenuExitClick(Sender: TObject); begin Close; end; end.