git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@361 0c75b7a4-871f-7646-8a2f-f78d34cc349f
372 lines
10 KiB
ObjectPascal
372 lines
10 KiB
ObjectPascal
unit uFactuGES_App;
|
||
|
||
interface
|
||
|
||
uses
|
||
SysUtils, Classes, Forms, uBizUsuarios, uBizEmpresas, uControllerBase,
|
||
uEmpresasController, uUsuariosController, uHostManager;
|
||
|
||
type
|
||
TDoLoadModulesEvent = procedure;
|
||
TDoMainFormEvent = procedure;
|
||
|
||
IAppSplashForm = interface
|
||
['{9905DF57-4476-42E6-A7CD-B1479A84E220}']
|
||
procedure Show;
|
||
procedure Hide;
|
||
procedure Update;
|
||
function GetMensaje: String;
|
||
procedure SetMensaje(const AMensaje : String);
|
||
property Mensaje : String read GetMensaje write SetMensaje;
|
||
end;
|
||
|
||
IAppFactuGES = interface
|
||
['{FB6A0F3C-C1D1-462D-AFD4-2A368F85E920}']
|
||
function GetMainForm: TCustomForm;
|
||
function GetEmpresasController: IEmpresasController;
|
||
function GetUsuariosController: IUsuariosController;
|
||
function GetAppName: String;
|
||
function GetAppVersion: String;
|
||
function GetAppFullName: String;
|
||
function GetUsuarioActivo: IBizUsuario;
|
||
function GetEmpresaActiva: IBizEmpresa;
|
||
function GetModuleManager : THostManager;
|
||
function GetTerminated: Boolean;
|
||
|
||
function GetLoadModulesEvent : TDoLoadModulesEvent;
|
||
procedure SetLoadModulesEvent (ALoadModulesEvent : TDoLoadModulesEvent);
|
||
|
||
function GetDoMainFormEvent : TDoMainFormEvent;
|
||
procedure SetDoMainFormEvent (AMainFormEvent : TDoMainFormEvent);
|
||
|
||
function GetAppSplashForm : IAppSplashForm;
|
||
procedure SetAppSplashForm (AAppSplashForm : IAppSplashForm);
|
||
|
||
procedure CambiarEmpresa(const AIDEmpresa : Integer);
|
||
|
||
procedure ShowSplashForm;
|
||
procedure HideSplashForm;
|
||
|
||
procedure Run;
|
||
procedure Terminate;
|
||
|
||
property AppVersion : String read GetAppVersion;
|
||
property AppName : String read GetAppName;
|
||
property AppFullName : String read GetAppFullName;
|
||
property MainForm : TCustomForm read GetMainForm;
|
||
property EmpresaActiva : IBizEmpresa read GetEmpresaActiva;
|
||
property UsuarioActivo : IBizUsuario read GetUsuarioActivo;
|
||
property EmpresasController : IEmpresasController read GetEmpresasController;
|
||
property UsuariosController : IUsuariosController read GetUsuariosController;
|
||
property AppSplashForm : IAppSplashForm read GetAppSplashForm write SetAppSplashForm;
|
||
property ModuleManager : THostManager read GetModuleManager;
|
||
property DoMainFormEvent : TDoMainFormEvent read GetDoMainFormEvent write SetDoMainFormEvent;
|
||
property DoLoadModulesEvent : TDoLoadModulesEvent read GetLoadModulesEvent write SetLoadModulesEvent;
|
||
property Terminated : Boolean read GetTerminated;
|
||
|
||
procedure ShowCapado;
|
||
end;
|
||
|
||
|
||
TAppFactuGES = class(TInterfacedObject, IAppFactuGES)
|
||
private
|
||
FEmpresasController : IEmpresasController;
|
||
FUsuariosController: IUsuariosController;
|
||
FEmpresaActiva: IBizEmpresa;
|
||
FAppSplashForm : IAppSplashForm;
|
||
FHostManager : THostManager;
|
||
FTerminated : Boolean;
|
||
|
||
FDoMainFormEvent: TDoMainFormEvent;
|
||
FDoLoadModulesEvent: TDoMainFormEvent;
|
||
|
||
function GetMainForm: TCustomForm;
|
||
function GetEmpresasController: IEmpresasController;
|
||
function GetUsuariosController: IUsuariosController;
|
||
function GetAppName: String;
|
||
function GetAppVersion: String;
|
||
function GetAppFullName: String;
|
||
function GetUsuarioActivo: IBizUsuario;
|
||
function GetEmpresaActiva: IBizEmpresa;
|
||
function GetModuleManager : THostManager;
|
||
function GetTerminated: Boolean;
|
||
|
||
function GetLoadModulesEvent : TDoLoadModulesEvent;
|
||
procedure SetLoadModulesEvent (ALoadModulesEvent : TDoLoadModulesEvent);
|
||
|
||
function GetDoMainFormEvent : TDoMainFormEvent;
|
||
procedure SetDoMainFormEvent (AMainFormEvent : TDoMainFormEvent);
|
||
|
||
function GetAppSplashForm : IAppSplashForm;
|
||
procedure SetAppSplashForm (AAppSplashForm : IAppSplashForm);
|
||
|
||
procedure AfterLoadModule(Sender: TObject; AModuleInfo: TModuleInfo);
|
||
procedure RegisterModule(AModuleInfo : TModuleInfo);
|
||
protected
|
||
procedure DoMainForm;
|
||
|
||
procedure CargarModulos;
|
||
procedure ShowSplashForm;
|
||
procedure HideSplashForm;
|
||
procedure UpdateSplashForm;
|
||
public
|
||
constructor Create; virtual;
|
||
destructor Destroy; override;
|
||
|
||
procedure Run;
|
||
procedure Terminate;
|
||
|
||
procedure CambiarEmpresa(const AIDEmpresa : Integer);
|
||
|
||
property AppVersion : String read GetAppVersion;
|
||
property AppName : String read GetAppName;
|
||
property AppFullName : String read GetAppFullName;
|
||
property MainForm : TCustomForm read GetMainForm;
|
||
property EmpresaActiva : IBizEmpresa read GetEmpresaActiva;
|
||
property AppSplashForm : IAppSplashForm read GetAppSplashForm write SetAppSplashForm;
|
||
property UsuarioActivo : IBizUsuario read GetUsuarioActivo;
|
||
property EmpresasController : IEmpresasController read GetEmpresasController;
|
||
property UsuariosController : IUsuariosController read GetUsuariosController;
|
||
property ModuleManager : THostManager read GetModuleManager;
|
||
property DoMainFormEvent : TDoMainFormEvent read GetDoMainFormEvent write SetDoMainFormEvent;
|
||
property DoLoadModulesEvent : TDoLoadModulesEvent read GetLoadModulesEvent write SetLoadModulesEvent;
|
||
property Terminated : Boolean read GetTerminated;
|
||
|
||
procedure ShowCapado;
|
||
end;
|
||
|
||
var
|
||
AppFactuGES : IAppFactuGES = nil;
|
||
|
||
implementation
|
||
|
||
uses
|
||
Dialogs, uDialogUtils, cxControls, uUsuariosViewRegister,
|
||
uEmpresasViewRegister, uAppInfoUtils;
|
||
|
||
procedure TAppFactuGES.CambiarEmpresa(const AIDEmpresa: Integer);
|
||
var
|
||
Aux : IBizEmpresa;
|
||
begin
|
||
Aux := EmpresasController.Buscar(AIDEmpresa);
|
||
if Assigned(Aux) then
|
||
begin
|
||
Aux.DataTable.Active := True;
|
||
if not Aux.IsEmpty then
|
||
FEmpresaActiva := Aux;
|
||
end;
|
||
end;
|
||
|
||
procedure TAppFactuGES.CargarModulos;
|
||
begin
|
||
if not Assigned(FDoLoadModulesEvent) then
|
||
raise Exception.Create('Evento para la carga de los m<>dulos de la aplicaci<63>n no asignado (CargarModulos)');
|
||
|
||
FDoLoadModulesEvent();
|
||
end;
|
||
|
||
constructor TAppFactuGES.Create;
|
||
begin
|
||
FTerminated := False;
|
||
FDoMainFormEvent := NIL;
|
||
FDoLoadModulesEvent := NIL;
|
||
FAppSplashForm := NIL;
|
||
FEmpresaActiva := NIL;
|
||
FUsuariosController := NIL; // Se crea la primera vez que se usa
|
||
|
||
FEmpresasController := NIL; // Se crea la primera vez que se usa
|
||
|
||
FHostManager := THostManager.Create(NIL);
|
||
with FHostManager do
|
||
begin
|
||
OnAfterLoad := AfterLoadModule;
|
||
// Ruta por defecto de los m<>dulos
|
||
BPLPath := ExtractFilePath(Application.ExeName) + PathDelim;
|
||
end;
|
||
end;
|
||
|
||
destructor TAppFactuGES.Destroy;
|
||
begin
|
||
FAppSplashForm := NIL;
|
||
|
||
FHostManager.UnloadModules;
|
||
FreeAndNIL(FHostManager);
|
||
|
||
FEmpresaActiva := NIL;
|
||
FUsuariosController := NIL;
|
||
FEmpresasController := NIL;
|
||
|
||
inherited;
|
||
end;
|
||
|
||
procedure TAppFactuGES.DoMainForm;
|
||
begin
|
||
if not Assigned(FDoMainFormEvent) then
|
||
raise Exception.Create('Evento para la creaci<63>n del formulario principal no asignado (DoMainForm)');
|
||
|
||
FDoMainFormEvent();
|
||
end;
|
||
|
||
function TAppFactuGES.GetMainForm: TCustomForm;
|
||
begin
|
||
Result := Application.MainForm;
|
||
end;
|
||
|
||
function TAppFactuGES.GetDoMainFormEvent: TDoMainFormEvent;
|
||
begin
|
||
Result := FDoMainFormEvent;
|
||
end;
|
||
|
||
function TAppFactuGES.GetAppFullName: String;
|
||
begin
|
||
Result := uAppInfoUtils.GetAppFullName;
|
||
end;
|
||
|
||
function TAppFactuGES.GetAppName: String;
|
||
begin
|
||
Result := uAppInfoUtils.GetAppName;
|
||
end;
|
||
|
||
function TAppFactuGES.GetAppSplashForm: IAppSplashForm;
|
||
begin
|
||
Result := FAppSplashForm;
|
||
end;
|
||
|
||
function TAppFactuGES.GetAppVersion: String;
|
||
begin
|
||
Result := uAppInfoUtils.GetAppVersion;
|
||
end;
|
||
|
||
function TAppFactuGES.GetEmpresaActiva: IBizEmpresa;
|
||
begin
|
||
Result := FEmpresaActiva;
|
||
end;
|
||
|
||
function TAppFactuGES.GetEmpresasController: IEmpresasController;
|
||
begin
|
||
if not Assigned(FEmpresasController) then
|
||
FEmpresasController := TEmpresasController.Create;
|
||
|
||
Result := FEmpresasController;
|
||
end;
|
||
|
||
function TAppFactuGES.GetLoadModulesEvent: TDoLoadModulesEvent;
|
||
begin
|
||
Result := FDoLoadModulesEvent;
|
||
end;
|
||
|
||
function TAppFactuGES.GetModuleManager: THostManager;
|
||
begin
|
||
Result := FHostManager;
|
||
end;
|
||
|
||
function TAppFactuGES.GetTerminated: Boolean;
|
||
begin
|
||
Result := FTerminated;
|
||
end;
|
||
|
||
function TAppFactuGES.GetUsuarioActivo: IBizUsuario;
|
||
begin
|
||
Result := UsuariosController.CurrentUser;
|
||
end;
|
||
|
||
function TAppFactuGES.GetUsuariosController: IUsuariosController;
|
||
begin
|
||
if not Assigned(FUsuariosController) then
|
||
FUsuariosController := TUsuariosController.Create;
|
||
|
||
Result := FUsuariosController;
|
||
end;
|
||
|
||
procedure TAppFactuGES.HideSplashForm;
|
||
begin
|
||
if not Assigned(FAppSplashForm) then
|
||
raise Exception.Create('AppSplashForm no asignado (HideSplashForm)');
|
||
|
||
FAppSplashForm.Hide;
|
||
end;
|
||
|
||
procedure TAppFactuGES.AfterLoadModule(Sender: TObject;
|
||
AModuleInfo: TModuleInfo);
|
||
begin
|
||
RegisterModule(AModuleInfo);
|
||
end;
|
||
|
||
procedure TAppFactuGES.RegisterModule(AModuleInfo: TModuleInfo);
|
||
begin
|
||
AppSplashForm.Mensaje := 'Cargando ''' + AModuleInfo.Module.ModuleName + '''...';
|
||
end;
|
||
|
||
procedure TAppFactuGES.Run;
|
||
begin
|
||
if UsuariosController.StartLogin then
|
||
begin
|
||
ShowHourglassCursor;
|
||
try
|
||
CargarModulos;
|
||
DoMainForm;
|
||
finally
|
||
HideHourglassCursor;
|
||
HideSplashForm;
|
||
end;
|
||
end;
|
||
Application.Run;
|
||
Terminate;
|
||
end;
|
||
|
||
procedure TAppFactuGES.SetDoMainFormEvent(
|
||
AMainFormEvent: TDoMainFormEvent);
|
||
begin
|
||
FDoMainFormEvent := AMainFormEvent;
|
||
end;
|
||
|
||
procedure TAppFactuGES.SetAppSplashForm(AAppSplashForm: IAppSplashForm);
|
||
begin
|
||
FAppSplashForm := AAppSplashForm;
|
||
end;
|
||
|
||
procedure TAppFactuGES.SetLoadModulesEvent(
|
||
ALoadModulesEvent: TDoLoadModulesEvent);
|
||
begin
|
||
FDoLoadModulesEvent := ALoadModulesEvent;
|
||
end;
|
||
|
||
procedure TAppFactuGES.ShowCapado;
|
||
begin
|
||
ShowInfoMessage('Sin Acceso', 'Funcionalidad en desarrollo, disculpen las molestias');
|
||
end;
|
||
|
||
procedure TAppFactuGES.ShowSplashForm;
|
||
begin
|
||
if not Assigned(FAppSplashForm) then
|
||
raise Exception.Create('AppSplashForm no asignado (ShowSplashForm)');
|
||
|
||
FAppSplashForm.Show;
|
||
FAppSplashForm.Update;
|
||
end;
|
||
|
||
procedure TAppFactuGES.Terminate;
|
||
begin
|
||
ModuleManager.UnloadModules;
|
||
FTerminated := True;
|
||
end;
|
||
|
||
procedure TAppFactuGES.UpdateSplashForm;
|
||
begin
|
||
FAppSplashForm.Update;
|
||
end;
|
||
|
||
initialization
|
||
// Pongo esto aqu<71> por ahora
|
||
uUsuariosViewRegister.RegisterViews;
|
||
uEmpresasViewRegister.RegisterViews;
|
||
|
||
finalization
|
||
// Pongo esto aqu<71> por ahora
|
||
AppFactuGES := NIL;
|
||
|
||
uUsuariosViewRegister.UnregisterViews;
|
||
uEmpresasViewRegister.UnregisterViews;
|
||
|
||
end.
|