AppCentreForm.pas 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. unit AppCentreForm;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, InterfaceAppCentre, StdCtrls, ExtCtrls, AppsLayout,
  6. FlatForm, cefvcl, ceflib, ChromeDebug;
  7. type
  8. TAppCentreForm = class(TFlatForm)
  9. chrm1: TChromium;
  10. procedure FormShow(Sender: TObject);
  11. procedure chrm1ProcessMessageReceived(Sender: TObject;
  12. const browser: ICefBrowser; sourceProcess: TCefProcessId;
  13. const message: ICefProcessMessage; out Result: Boolean);
  14. procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  15. procedure chrm1KeyEvent(Sender: TObject; const browser: ICefBrowser;
  16. const event: PCefKeyEvent; osEvent: PMsg; out Result: Boolean);
  17. private
  18. FChromeDebugForm: TChromeDebugForm;
  19. function OnAppAdded(AJsonApp: string): boolean;
  20. function OnAppClicked(AJsonApp: string): boolean;
  21. function OnAppDeleted(AJsonApp: string): boolean;
  22. public
  23. procedure ChangeUIColor(AColor: TColor); override;
  24. constructor Create(AOwner: TComponent); override;
  25. procedure OpenDebug;
  26. destructor Destroy; override;
  27. end;
  28. {$INCLUDE ..\Client\LXTalk.inc}
  29. var
  30. AppCentreFrm: TAppCentreForm;
  31. implementation
  32. uses
  33. AppCentreImport, superobject, LoggerImport, UApp;
  34. {$R *.dfm}
  35. procedure TAppCentreForm.ChangeUIColor(AColor: TColor);
  36. begin
  37. // inherited ChangeUIColor(AColor);
  38. // Self.Color := AColor;
  39. // pnlClient.Color := Self.Color;
  40. end;
  41. procedure TAppCentreForm.chrm1KeyEvent(Sender: TObject;
  42. const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg;
  43. out Result: Boolean);
  44. begin
  45. if (event^.windows_key_code = VK_F12) then
  46. OpenDebug;
  47. end;
  48. procedure TAppCentreForm.chrm1ProcessMessageReceived(Sender: TObject;
  49. const browser: ICefBrowser; sourceProcess: TCefProcessId;
  50. const message: ICefProcessMessage; out Result: Boolean);
  51. begin
  52. Debug(Format('Mothed:%s,Param:%s',[message.ArgumentList.GetString(0), message.ArgumentList.GetString(1)]), 'ProcessMessageReceived');
  53. if CompareText(message.ArgumentList.GetString(0), 'OnAppAdded') = 0 then
  54. begin
  55. OnAppAdded(message.ArgumentList.GetString(1));
  56. Result := True;
  57. end
  58. else if CompareText(message.ArgumentList.GetString(0), 'OnAppClicked') = 0 then
  59. begin
  60. OnAppClicked(message.ArgumentList.GetString(1));
  61. Result := True;
  62. end
  63. else if CompareText(message.ArgumentList.GetString(0), 'OnAppDeleted') = 0 then
  64. begin
  65. OnAppDeleted(message.ArgumentList.GetString(1));
  66. Result := True;
  67. end
  68. else
  69. Result := False;
  70. end;
  71. constructor TAppCentreForm.Create(AOwner: TComponent);
  72. begin
  73. inherited;
  74. FChromeDebugForm := TChromeDebugForm.Create(Self);
  75. end;
  76. destructor TAppCentreForm.Destroy;
  77. begin
  78. FChromeDebugForm.Free;
  79. inherited;
  80. end;
  81. //{"AppKey":"",}
  82. function TAppCentreForm.OnAppAdded(AJsonApp: string): boolean;
  83. var
  84. jo: ISuperObject;
  85. AAppKey: string;
  86. begin
  87. jo := SO(AJsonApp);
  88. if jo.S['AppKey'] <> '' then
  89. GetAppCentre.AddHotApp(jo.S['AppKey'], THotApp.Create);
  90. end;
  91. function TAppCentreForm.OnAppClicked(AJsonApp: string): boolean;
  92. var
  93. AAppCentre: IAppCentre;
  94. jo: ISuperObject;
  95. begin
  96. AAppCentre := GetAppCentre;
  97. try
  98. jo := SO(AJsonApp);
  99. if jo.S['AppKey'] <> '' then
  100. AAppCentre.SSO(jo.S['AppKey']);
  101. except
  102. on E: Exception do
  103. begin
  104. Error(E.Message, 'TAppUIController.OnAppClicked');
  105. end;
  106. end;
  107. end;
  108. function TAppCentreForm.OnAppDeleted(AJsonApp: string): boolean;
  109. var
  110. jo: ISuperObject;
  111. begin
  112. jo := SO(AJsonApp);
  113. if jo.S['AppKey'] <> '' then
  114. GetAppCentre.RemoveHotApp(jo.S['AppKey']);
  115. end;
  116. procedure TAppCentreForm.OpenDebug;
  117. begin
  118. FChromeDebugForm.ChromiumDevTools1.ShowDevTools(chrm1.Browser);
  119. FChromeDebugForm.Show;
  120. end;
  121. procedure TAppCentreForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  122. begin
  123. if CefSingleProcess then
  124. chrm1.Load('about:blank');
  125. CanClose := True;
  126. end;
  127. procedure TAppCentreForm.FormShow(Sender: TObject);
  128. var
  129. AURL: string;
  130. begin
  131. AURL := string(GetAppCentre.GetAppCentreURL);
  132. chrm1.Load(AURL);
  133. end;
  134. initialization
  135. end.