unit AppCentreForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, InterfaceAppCentre, StdCtrls, ExtCtrls, AppsLayout, FlatForm, cefvcl, ceflib, ChromeDebug; type TAppCentreForm = class(TFlatForm) chrm1: TChromium; procedure FormShow(Sender: TObject); procedure chrm1ProcessMessageReceived(Sender: TObject; const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage; out Result: Boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure chrm1KeyEvent(Sender: TObject; const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg; out Result: Boolean); private FChromeDebugForm: TChromeDebugForm; function OnAppAdded(AJsonApp: string): boolean; function OnAppClicked(AJsonApp: string): boolean; function OnAppDeleted(AJsonApp: string): boolean; public procedure ChangeUIColor(AColor: TColor); override; constructor Create(AOwner: TComponent); override; procedure OpenDebug; destructor Destroy; override; end; var AppCentreFrm: TAppCentreForm; implementation uses AppCentreImport, superobject, LoggerImport, UApp; {$R *.dfm} procedure TAppCentreForm.ChangeUIColor(AColor: TColor); begin // inherited ChangeUIColor(AColor); // Self.Color := AColor; // pnlClient.Color := Self.Color; end; procedure TAppCentreForm.chrm1KeyEvent(Sender: TObject; const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg; out Result: Boolean); begin if (event^.windows_key_code = VK_F12) then OpenDebug; end; procedure TAppCentreForm.chrm1ProcessMessageReceived(Sender: TObject; const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage; out Result: Boolean); begin Debug(Format('Mothed:%s,Param:%s',[message.ArgumentList.GetString(0), message.ArgumentList.GetString(1)]), 'ProcessMessageReceived'); if CompareText(message.ArgumentList.GetString(0), 'OnAppAdded') = 0 then begin OnAppAdded(message.ArgumentList.GetString(1)); Result := True; end else if CompareText(message.ArgumentList.GetString(0), 'OnAppClicked') = 0 then begin OnAppClicked(message.ArgumentList.GetString(1)); Result := True; end else if CompareText(message.ArgumentList.GetString(0), 'OnAppDeleted') = 0 then begin OnAppDeleted(message.ArgumentList.GetString(1)); Result := True; end else Result := False; end; constructor TAppCentreForm.Create(AOwner: TComponent); begin inherited; FChromeDebugForm := TChromeDebugForm.Create(Self); end; destructor TAppCentreForm.Destroy; begin FChromeDebugForm.Free; inherited; end; //{"AppKey":"",} function TAppCentreForm.OnAppAdded(AJsonApp: string): boolean; var jo: ISuperObject; AAppKey: string; begin jo := SO(AJsonApp); if jo.S['AppKey'] <> '' then GetAppCentre.AddHotApp(jo.S['AppKey'], THotApp.Create); end; function TAppCentreForm.OnAppClicked(AJsonApp: string): boolean; var AAppCentre: IAppCentre; jo: ISuperObject; begin AAppCentre := GetAppCentre; try jo := SO(AJsonApp); if jo.S['AppKey'] <> '' then AAppCentre.SSO(jo.S['AppKey']); except on E: Exception do begin Error(E.Message, 'TAppUIController.OnAppClicked'); end; end; end; function TAppCentreForm.OnAppDeleted(AJsonApp: string): boolean; var jo: ISuperObject; begin jo := SO(AJsonApp); if jo.S['AppKey'] <> '' then GetAppCentre.RemoveHotApp(jo.S['AppKey']); end; procedure TAppCentreForm.OpenDebug; begin FChromeDebugForm.ChromiumDevTools1.ShowDevTools(chrm1.Browser); FChromeDebugForm.Show; end; procedure TAppCentreForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if CefSingleProcess then chrm1.Load('about:blank'); CanClose := True; end; procedure TAppCentreForm.FormShow(Sender: TObject); var AURL: string; begin AURL := string(GetAppCentre.GetAppCentreURL); chrm1.Load(AURL); // chrm1.Browser.ShowDevTools; end; initialization end.