[tuxdroid-svn] r4741 - software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_br
Status: Beta
Brought to you by:
ks156
|
From: jerome <c2m...@c2...> - 2009-06-03 14:16:31
|
Author: jerome
Date: 2009-06-03 16:13:35 +0200 (Wed, 03 Jun 2009)
New Revision: 4741
Added:
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TXmlThread.dcu
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TXmlThread.pas
Modified:
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Project2.dpr
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dcu
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm
software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas
Log:
* Added xml parser to retrieve dongle connection state.
* Start command in a thread.
* Cleanup.
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Project2.dpr
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Project2.dpr 2009-06-03 13:32:28 UTC (rev 4740)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Project2.dpr 2009-06-03 14:13:35 UTC (rev 4741)
@@ -2,7 +2,8 @@
uses
Forms,
- Unit1 in 'Unit1.pas' {Form1};
+ Unit1 in 'Unit1.pas' {Form1},
+ TXmlThread in 'TXmlThread.pas';
{$R *.res}
Added: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TXmlThread.dcu
===================================================================
(Binary files differ)
Property changes on: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TXmlThread.dcu
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TXmlThread.pas
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TXmlThread.pas (rev 0)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/TXmlThread.pas 2009-06-03 14:13:35 UTC (rev 4741)
@@ -0,0 +1,79 @@
+unit TXmlThread;
+
+interface
+
+uses
+ Classes, LibXmlParser, LibXmlComps, SysUtils, Windows, Dialogs;
+
+type
+ TXmlThreadObject = class(TThread)
+
+ public
+ constructor create(scanner : TXmlScanner);
+ destructor destroy; override;
+ function getResult() : boolean;
+
+ private
+ { Darations priv }
+ procedure XmlScanner1Content(Sender: TObject; Content: String);
+
+ protected
+ procedure Execute; override;
+ end;
+
+var
+ xmlScanner : TXmlScanner;
+ boolValue : boolean;
+
+implementation
+
+{ TXmlThread }
+
+constructor TXmlThreadObject.create(scanner : TXmlScanner);
+begin
+ inherited create(true);
+ xmlScanner := scanner;
+ xmlScanner.OnContent := self.XmlScanner1Content;
+ boolValue := false;
+end;
+
+
+destructor TXmlThreadObject.destroy;
+begin
+ inherited;
+end;
+
+procedure TXmlThreadObject.Execute;
+begin
+ xmlScanner.Execute;
+end;
+
+
+//Xml scanner event.
+procedure TXmlThreadObject.XmlScanner1Content(Sender: TObject; Content: String);
+var
+ parser : TXmlParser;
+ value : String;
+begin
+ parser := TXmlScanner(sender).XmlParser;
+
+ if parser.CurName = 'value' then
+ begin
+ value := LowerCase(parser.CurContent);
+ if value = 'true' then
+ boolValue := true
+ else
+ boolValue := false;
+ end;
+
+end;
+
+
+//Return the thread Result.
+function TXmlThreadObject.getResult() : boolean;
+begin
+ Result := boolValue;
+end;
+
+end.
+
\ No newline at end of file
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dcu
===================================================================
(Binary files differ)
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm 2009-06-03 13:32:28 UTC (rev 4740)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.dfm 2009-06-03 14:13:35 UTC (rev 4741)
@@ -59,6 +59,7 @@
Height = 600
Align = alClient
TabOrder = 0
+ Silent = False
DisableCtrlShortcuts = 'N'
UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes]
DisabledPopupMenus = [rcmAll]
@@ -719,7 +720,7 @@
Left = 72
Top = 8
Bitmap = {
- 494C010105000900040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
+ 494C010105000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000003000000001002000000000000030
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -1119,11 +1120,22 @@
F00FF00FF00FF00FF007F007F007F007E003E003E003E003E001E001E001E001
C001C001C001C001C000C000C000C00080008000800080008000800080008000
8000800080008000800080008000800080008000800080008001800180018001
- C21FC21FC21FC21FFFFFFFFFFFFFFFFF}
+ C21FC21FC21FC21FFFFFFFFFFFFFFFFF00000000000000000000000000000000
+ 000000000000}
end
object Timer1: TTimer
Interval = 3000
Left = 104
Top = 8
end
+ object XmlScanner1: TXmlScanner
+ Normalize = True
+ Left = 136
+ Top = 8
+ end
+ object EwbControl1: TEwbControl
+ InternetFeatures = [Behaviors, DisableMkProtocol, GetUrlDomFilePathUnencoded]
+ Left = 856
+ Top = 424
+ end
end
Modified: software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas
===================================================================
--- software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas 2009-06-03 13:32:28 UTC (rev 4740)
+++ software_suite_v3/software/tool/tux_droid_browser/windows/trunk/tux_droid_browser/Unit1.pas 2009-06-03 14:13:35 UTC (rev 4741)
@@ -28,7 +28,8 @@
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB, ShellAPI, Menus, Registry,
- ImgList, PngImageList, LibXmlParser, LibXmlComps, IEDownload, ExtCtrls, TlHelp32;
+ ImgList, PngImageList, LibXmlParser, LibXmlComps, IEDownload, ExtCtrls, TlHelp32,
+ EwbControlComponent, TXmlThread;
const wm_AppelMessage = wm_user + 1;
@@ -44,6 +45,8 @@
PngImageList1: TPngImageList;
ImageList1: TImageList;
Timer1: TTimer;
+ XmlScanner1: TXmlScanner;
+ EwbControl1: TEwbControl;
procedure FormCreate(Sender: TObject);
procedure PopupMenu1Popup(Sender: TObject);
@@ -52,13 +55,16 @@
procedure Help1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Mute1Click(Sender: TObject);
+ procedure XmlThreadTerminated(Sender: TObject);
private
{ Darations priv }
procedure WMAppelMessage(var msg : TMessage); message wm_AppelMessage;
function OpenUrl(const url : String) : boolean;
+
function isTuxDroidServerStarted() : boolean;
+ function isDongleConnected() : boolean;
public
{ Darations publiques }
@@ -70,8 +76,8 @@
Tray : TNotifyIconData;
AppIcon : TIcon;
serverStarted : boolean;
+ radioState : boolean;
-
implementation
{$R *.dfm}
@@ -83,8 +89,11 @@
//Form initialization.
procedure TForm1.FormCreate(Sender: TObject);
+var
+ inputValue : String;
begin
url := 'http://127.0.0.1:270/devel/';
+ radioState := false;
//Tray icon initialization.
Tray.cbSize := SizeOf(Tray);
@@ -106,6 +115,7 @@
//Embedded browser initialization.
EmbeddedWB1.Go(url);
+ //Changing tray icon if server isn't started or no radio detected.
if ( not isTuxDroidServerStarted() ) then
begin
ImageList1.GetIcon(3, AppIcon);
@@ -113,6 +123,8 @@
Shell_NotifyIcon(Nim_Modify, @tray);
end;
+ isDongleConnected();
+
end;
@@ -120,6 +132,8 @@
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
+ ShowHide1.Caption := 'Show';
+ ShowHide1.ImageIndex := 4;
Form1.Hide;
end;
@@ -238,9 +252,18 @@
begin
//Showing application.
if Form1.Visible then
- Form1.Hide
+ begin
+ Form1.Hide;
+ ShowHide1.Caption := 'Show';
+ ShowHide1.ImageIndex := 4;
+ end
else
+ begin
Form1.Show;
+ ShowHide1.Caption := 'Hide';
+ ShowHide1.ImageIndex := 5;
+ end;
+
end
else if msg.LParam = Wm_RButtonDown then
begin
@@ -284,5 +307,63 @@
end;
+
+function TForm1.isDongleConnected() : boolean;
+var
+ targetDir : String;
+ downloaded : boolean;
+ xmlFile : TFileName;
+ xmlThread : TXmlThreadObject;
+
+const
+ command = 'http://127.0.0.1:270/0/status/request_one?status_name=radio_state';
+ fileName = 'radio.xml';
+
+begin
+
+ targetDir := ExtractFilePath(Application.ExeName);
+ downloaded := false;
+
+ //Checking if file exists and remove it.
+ if FileExists(targetDir + '\' + fileName) then
+ begin
+ DeleteFile(fileName);
+ end;
+
+ Try
+ downloaded := self.EmbeddedWB1.DownloadFile(command, targetDir + '\' + fileName);
+ Except
+ ShowMessage('Error while retrieving dongle state');
+ end;
+
+ //Getting result.
+ if downloaded then
+ begin
+ xmlFile := targetDir + '\' + fileName;
+ self.XmlScanner1.LoadFromFile(xmlFile);
+
+ xmlThread := TXmlThreadObject.create(self.XmlScanner1);
+ xmlThread.Resume;
+
+ boolValue := xmlThread.getResult();
+ xmlThread.OnTerminate := Form1.XmlThreadTerminated;
+ end;
+
+ DeleteFile(targetDir + '\' + fileName);
+ Result := boolValue;
+
+end;
+
+
+procedure TForm1.XmlThreadTerminated(Sender: TObject);
+begin
+ if ( not boolValue ) then
+ begin
+ ImageList1.GetIcon(3, AppIcon);
+ Tray.hIcon := AppIcon.Handle;
+ Shell_NotifyIcon(Nim_Modify, @tray);
+ end;
+end;
+
end.
|