summaryrefslogtreecommitdiff
path: root/unit1.pas
diff options
context:
space:
mode:
Diffstat (limited to 'unit1.pas')
-rw-r--r--unit1.pas226
1 files changed, 46 insertions, 180 deletions
diff --git a/unit1.pas b/unit1.pas
index 50e6baa..941fe5f 100644
--- a/unit1.pas
+++ b/unit1.pas
@@ -5,41 +5,33 @@ unit Unit1;
interface
uses
- Classes, SysUtils, FileUtil, lNetComponents, Forms, Controls, Graphics,
- Dialogs, ExtCtrls, StdCtrls, lhttp, filterunit, math;
+ Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
+ Dialogs, ExtCtrls, StdCtrls, jenahunit;
type
{ TForm1 }
TForm1 = class(TForm)
- LHTTPClientComponent1: TLHTTPClientComponent;
+ unbekanntIcon: TImage;
+ busDaIcon: TImage;
+ normalIcon: TImage;
Memo1: TMemo;
- Starttimer: TTimer;
- Timer1: TTimer;
TrayIcon1: TTrayIcon;
+ procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormResize(Sender: TObject);
- procedure LHTTPClientComponent1DoneInput(ASocket: TLHTTPClientSocket);
- function LHTTPClientComponent1Input(ASocket: TLHTTPClientSocket;
- ABuffer: pchar; ASize: integer): integer;
- procedure StarttimerTimer(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
+ procedure FormShow(Sender: TObject);
procedure TrayIcon1DblClick(Sender: TObject);
procedure TrayIcon1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ private declarations }
- procedure parseOptionFile;
- procedure Station_waehlen;
- procedure Zeiten_holen;
+ procedure abfahrtenAnzeigen(sender: tObject);
public
{ public declarations }
- mastnr: array of longint;
- Stat,buff: string;
- Anzeige: array of tAbfahrt;
- Filter_s: array of tFilter;
+ jenahThread: tJenahThread;
lastButton: tMouseButton;
end;
@@ -52,27 +44,13 @@ implementation
{ TForm1 }
-procedure TForm1.Station_waehlen;
-begin
- LHTTPClientComponent1.URI:='http://fpl.jenah.de/bontip-ifgi/php/getStation.php?action=getMastNo&q='+stat+'&q2=';
- LHTTPClientComponent1.SendRequest;
-end;
-
-procedure TForm1.Zeiten_holen;
-begin
- LHTTPClientComponent1.Tag:=0;
- LHTTPClientComponent1.URI:='http://fpl.jenah.de/bontip-ifgi/php/proxy.php?vsz=120&azbid='+inttostr(mastnr[Starttimer.tag-1]);
- LHTTPClientComponent1.SendRequest;
-end;
-
procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
case lastButton of
- mbLeft: begin
- if form1.visible then Form1.Hide
- else Form1.Show;
- end;
- mbRight: Application.Terminate;
+ mbLeft:
+ form1.visible:=not form1.visible;
+ mbRight:
+ form1.close;
end{of case};
end;
@@ -82,49 +60,27 @@ begin
lastButton:=Button;
end;
-procedure TForm1.parseOptionFile;
-var f: textfile;
- s: string;
+procedure TForm1.FormCreate(Sender: TObject);
begin
- assignfile(f,extractfilepath(application.exename)+'optionen.txt');
- reset(f);
- while not eof(f) do begin
- readln(f,s);
- if (length(s)=0) or (s[1]='#') then continue;
- if pos('haltestelle:',s)=1 then begin
- delete(s,1,length('haltestelle:'));
- stat:=s;
- continue;
- end;
- if pos('filter:',s)=1 then begin
- setlength(Filter_s,length(Filter_s)+1);
- Filter_s[length(Filter_s)-1]:=TFilter.create(f);
- continue;
- end;
- raise Exception.create('Verstehe '''+s+''' nicht!');
- end;
- closefile(f);
+ lastButton:=mbLeft;
+ trayIcon1.icon:=unbekanntIcon.picture.icon;
+ trayIcon1.show;
+ jenahThread:=tJenahThread.create;
+ jenahThread.abfahrtenAnzeigen:=@abfahrtenAnzeigen;
+ jenahThread.parseOptionFile(extractfilepath(application.exename)+'optionen.txt');
+ jenahThread.suspended:=false;
end;
-procedure TForm1.FormCreate(Sender: TObject);
+procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
- buff:='';
- setlength(Filter_s,0);
- setlength(mastnr,0);
- lastButton:=mbLeft;
- TrayIcon1.Icon.LoadFromFile(extractfilepath(application.exename)+'unbekannt.ico');
- TrayIcon1.Show;
- Application.ProcessMessages;
- parseOptionFile;
+ jenahThread.beenden:=true;
end;
procedure TForm1.FormDestroy(Sender: TObject);
-var i: longint;
begin
- for i:=0 to length(Filter_s)-1 do
- Filter_s[i].destroy;
- setlength(Filter_s,0);
- setlength(mastnr,0);
+ while not jenahThread.beendet do
+ sleep(10);
+ jenahThread.free;
end;
procedure TForm1.FormResize(Sender: TObject);
@@ -133,121 +89,31 @@ begin
memo1.height:=form1.clientheight-memo1.top;
end;
-procedure TForm1.LHTTPClientComponent1DoneInput(ASocket: TLHTTPClientSocket);
-var s,t,meth,zeit: string;
- i: integer;
-begin
- s:=buff;
- buff:='';
- meth:=extract('method',S);
- if meth = 'getMastNo' then
- begin
- setlength(Anzeige,0);
- s:=extract('result',s);
- setlength(mastnr,strtoint(extract('stopcount',s)));
- for i:=0 to length(mastnr)-1 do
- begin
- mastnr[i]:=strtoint(extract('stopno',extract('stop',s)));
- delete(s,1,pos('</stop>',s));
- end;
- Starttimer.Tag:=1;
- Starttimer.enabled:=true;
- exit;
- end;
- if meth='' then
- begin
- s:=extract('AZBNachricht',s);
- while pos('<AZBFahrplanlage',s)>0 do
- begin
- t:=extract('AZBFahrplanlage',s,zeit);
- delete(s,1,pos('</AZBFahrplanlage>',s)+length('</AZBFahrplanlage>')-1);
- setlength(Anzeige,length(Anzeige)+1);
- meth:=extract('AZBID',t);
- delete(meth,1,length(meth)-4);
- Anzeige[length(Anzeige)-1].HaltestellenId:=strtoint(meth);
- Anzeige[length(Anzeige)-1].Linie:=extract('LinienText',t);
- Anzeige[length(Anzeige)-1].Ziel:=extract('ZielHst',t);
- Anzeige[length(Anzeige)-1].Richtung:=extract('RichtungsText',t);
- Anzeige[length(Anzeige)-1].sAn:=extract_time(extract('AnkunftszeitAZBPlan',t));
- Anzeige[length(Anzeige)-1].iAn:=extract_time(extract('AnkunftszeitAZBPrognose',t));
- Anzeige[length(Anzeige)-1].sAb:=extract_time(extract('AbfahrtszeitAZBPlan',t));
- Anzeige[length(Anzeige)-1].iAb:=extract_time(extract('AbfahrtszeitAZBPrognose',t));
- end;
- Starttimer.Enabled:=true;
- exit;
- end;
- Memo1.lines.add(meth);
- Memo1.lines.add(S);
-end;
-
-function TForm1.LHTTPClientComponent1Input(ASocket: TLHTTPClientSocket;
- ABuffer: pchar; ASize: integer): integer;
-begin
- buff:=buff+copy(ABuffer,1,ASize);
- result:=ASize;
-end;
+const __erstesMal: boolean = true;
-procedure TForm1.StarttimerTimer(Sender: TObject);
-var I: Integer;
- Hinweis: string;
+procedure TForm1.FormShow(Sender: TObject);
begin
- Starttimer.enabled:=false;
- if Starttimer.tag = -3 then begin
- Form1.visible:=false;
- Starttimer.tag:=-1;
- parseOptionFile;
- end;
- if Starttimer.tag = -1 then begin
- Station_waehlen;
- exit
- end;
- if Starttimer.Tag = 0 then begin
- Starttimer.Tag := -1;
- Form1.Visible:=false;
- exit;
- end;
- if Starttimer.Tag >= 1 then begin
- Zeiten_holen;
- if Starttimer.Tag>=length(mastnr) then Starttimer.Tag := -2
- else Starttimer.Tag := Starttimer.Tag + 1;
- exit;
- end;
- if Starttimer.Tag = -2 then begin
- Memo1.lines.clear;
- Hinweis:='';
- for I:=0 to length(Anzeige)-1 do begin
- if (length(Filter_s)<=0) or
- (Filter_s[0].regel_erfuellt(Anzeige[I],2)) then
- Hinweis:=Hinweis+#$0D#$0A+Anzeige[I].Linie+'('+inttostr(Anzeige[I].HaltestellenID)+'): '+timetostr(Anzeige[I].iAb);
- if (length(Filter_s)<=0) or
- (Filter_s[min(1,length(Filter_s)-1)].regel_erfuellt(Anzeige[I],1)) then begin
- Memo1.lines.add(inttostr(Anzeige[I].HaltestellenId)+': <'+
- Anzeige[I].Linie+'> '''+
- Anzeige[I].Richtung+''' nach '''+
- Anzeige[I].Ziel+''': '+
- timetostr(Anzeige[I].iAn)+' ('+
- timetostr(Anzeige[I].sAn)+') -> '+
- timetostr(Anzeige[I].iAb)+' ('+
- timetostr(Anzeige[I].sAb)+')');
- end;
- end;
- if length(Hinweis)>0 then begin
- delete(Hinweis,1,2);
- TrayIcon1.Hint:=Hinweis;
- TrayIcon1.Icon.LoadFromFile(extractfilepath(application.exename)+'bus_da.ico');
- end
- else begin
- TrayIcon1.Hint:='Busauskunft - kein Bus in Sicht!'#0;
- TrayIcon1.Icon.LoadFromFile(extractfilepath(application.exename)+'normal.ico');
- end;
- exit;
- end;
+ if __erstesMal then begin
+ __erstesMal:=false;
+ form1.visible:=false;
+ end;
+ form1.left:=
+ screen.monitors[0].left + (screen.monitors[0].width -form1.width ) div 2;
+ form1.top:=
+ screen.monitors[0].top + (screen.monitors[0].height-form1.height) div 2;
end;
-procedure TForm1.Timer1Timer(Sender: TObject);
+procedure tForm1.abfahrtenAnzeigen(sender: tObject);
begin
- starttimer.Tag:=-1;
- starttimer.enabled:=true;
+ memo1.lines.text:=jenahThread.memoZeilen;
+ if jenahThread.bahnKommt then begin
+ trayIcon1.icon:=busDaIcon.picture.icon;
+ trayIcon1.hint:=jenahThread.hinweis;
+ end
+ else begin
+ trayIcon1.icon:=normalIcon.picture.icon;
+ trayIcon1.hint:='zur Zeit keine Abfahrt';
+ end;
end;
end.