AppCentreForm.pas 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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. var
  29. AppCentreFrm: TAppCentreForm;
  30. implementation
  31. uses
  32. AppCentreImport, superobject, LoggerImport, UApp;
  33. {$R *.dfm}
  34. procedure TAppCentreForm.ChangeUIColor(AColor: TColor);
  35. begin
  36. // inherited ChangeUIColor(AColor);
  37. // Self.Color := AColor;
  38. // pnlClient.Color := Self.Color;
  39. end;
  40. procedure TAppCentreForm.chrm1KeyEvent(Sender: TObject;
  41. const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg;
  42. out Result: Boolean);
  43. begin
  44. if (event^.windows_key_code = VK_F12) then
  45. OpenDebug;
  46. end;
  47. procedure TAppCentreForm.chrm1ProcessMessageReceived(Sender: TObject;
  48. const browser: ICefBrowser; sourceProcess: TCefProcessId;
  49. const message: ICefProcessMessage; out Result: Boolean);
  50. begin
  51. Debug(Format('Mothed:%s,Param:%s',[message.ArgumentList.GetString(0), message.ArgumentList.GetString(1)]), 'ProcessMessageReceived');
  52. if CompareText(message.ArgumentList.GetString(0), 'OnAppAdded') = 0 then
  53. begin
  54. OnAppAdded(message.ArgumentList.GetString(1));
  55. Result := True;
  56. end
  57. else if CompareText(message.ArgumentList.GetString(0), 'OnAppClicked') = 0 then
  58. begin
  59. OnAppClicked(message.ArgumentList.GetString(1));
  60. Result := True;
  61. end
  62. else if CompareText(message.ArgumentList.GetString(0), 'OnAppDeleted') = 0 then
  63. begin
  64. OnAppDeleted(message.ArgumentList.GetString(1));
  65. Result := True;
  66. end
  67. else
  68. Result := False;
  69. end;
  70. constructor TAppCentreForm.Create(AOwner: TComponent);
  71. begin
  72. inherited;
  73. FChromeDebugForm := TChromeDebugForm.Create(Self);
  74. end;
  75. destructor TAppCentreForm.Destroy;
  76. begin
  77. FChromeDebugForm.Free;
  78. inherited;
  79. end;
  80. //{"AppKey":"",}
  81. function TAppCentreForm.OnAppAdded(AJsonApp: string): boolean;
  82. var
  83. jo: ISuperObject;
  84. AAppKey: string;
  85. begin
  86. jo := SO(AJsonApp);
  87. if jo.S['AppKey'] <> '' then
  88. GetAppCentre.AddHotApp(jo.S['AppKey'], THotApp.Create);
  89. end;
  90. function TAppCentreForm.OnAppClicked(AJsonApp: string): boolean;
  91. var
  92. AAppCentre: IAppCentre;
  93. jo: ISuperObject;
  94. begin
  95. AAppCentre := GetAppCentre;
  96. try
  97. jo := SO(AJsonApp);
  98. if jo.S['AppKey'] <> '' then
  99. AAppCentre.SSO(jo.S['AppKey']);
  100. except
  101. on E: Exception do
  102. begin
  103. Error(E.Message, 'TAppUIController.OnAppClicked');
  104. end;
  105. end;
  106. end;
  107. function TAppCentreForm.OnAppDeleted(AJsonApp: string): boolean;
  108. var
  109. jo: ISuperObject;
  110. begin
  111. jo := SO(AJsonApp);
  112. if jo.S['AppKey'] <> '' then
  113. GetAppCentre.RemoveHotApp(jo.S['AppKey']);
  114. end;
  115. procedure TAppCentreForm.OpenDebug;
  116. begin
  117. FChromeDebugForm.ChromiumDevTools1.ShowDevTools(chrm1.Browser);
  118. FChromeDebugForm.Show;
  119. end;
  120. procedure TAppCentreForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  121. begin
  122. if CefSingleProcess then
  123. chrm1.Load('about:blank');
  124. CanClose := True;
  125. end;
  126. procedure TAppCentreForm.FormShow(Sender: TObject);
  127. var
  128. AURL: string;
  129. begin
  130. AURL := string(GetAppCentre.GetAppCentreURL);
  131. chrm1.Load(AURL);
  132. // chrm1.Browser.ShowDevTools;
  133. end;
  134. initialization
  135. end.