Tecsitel_FactuGES2/Source/Cliente/uMainMenuController.pas

146 lines
3.7 KiB
ObjectPascal

unit uMainMenuController;
interface
uses
SysUtils, Menus, Controls, Classes, uHostManager,
PngImageList, uPantallaPrincipal;
type
TMainMenuController = class(TObject)
private
FMainMenu: TMainMenu;
FMainForm: IMainForm;
FLargeImages: TImageList;
FSmallImages: TImageList;
procedure SetMainMenu(const Value: TMainMenu);
procedure CambiarEmpresaClick(Sender: TObject);
published
public
procedure RegisterModule(AModuleInfo : TModuleInfo);
procedure SortMenuByTag;
procedure InitMainMenu;
property MainMenu : TMainMenu read FMainMenu write SetMainMenu;
property SmallImages: TImageList read FSmallImages write FSmallImages;
property LargeImages: TImageList read FLargeImages write FLargeImages;
property MainForm : IMainForm read FMainForm write FMainForm;
end;
procedure CopyImages(const SrcList: TPngImageList; var DstList:
TPngImageList; out Index, Count: Integer);
var
MainMenuController : TMainMenuController;
implementation
uses
Dialogs, PNGImage, uModuleController, uPluginEmpresas,
uBizEmpresas, schEmpresasClient_Intf,
uMenuUtils;
{ TMainMenuController }
procedure CopyImages(const SrcList: TPngImageList; var DstList:
TPngImageList; out Index, Count: Integer);
begin
Index := -1;
Count := 0;
if not Assigned(SrcList) or not Assigned(DstList) then
Exit;
DstList.BeginUpdate;
try
Index := DstList.Count;
DstList.AddImages(SrcList);
Count := SrcList.Count;
finally
DstList.EndUpdate;
end;
end;
procedure TMainMenuController.CambiarEmpresaClick(Sender: TObject);
begin
// OJOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
// dmUsuarios.IDEmpresaActual := (Sender as TMenuItem).Tag;
end;
procedure TMainMenuController.InitMainMenu;
var
AEmpresas : IBizEmpresa;
AEmpresaMenu : TMenuItem;
AListaEmpresasItem : TMenuItem;
AItem: TMenuItem;
begin
AEmpresaMenu := BuscarMenu(FMainMenu, 'Empresa');
AListaEmpresasItem := AEmpresaMenu.Find('Lista de empresas');
if Assigned(AListaEmpresasItem) then
begin
AEmpresas := FMainForm.EmpresasController.BuscarTodos;
try
AEmpresas.DataTable.Active := True;
while not AEmpresas.DataTable.EOF do
begin
AItem := TMenuItem.Create(nil);
with AItem do
begin
Caption := AEmpresas.NOMBRE;
Tag := AEmpresas.ID;
AutoCheck := True;
ShortCut := 0;
OnClick := CambiarEmpresaClick;
HelpContext := 0;
RadioItem := True;
Enabled := True;
end;
AListaEmpresasItem.Add(AItem);
AEmpresas.Next;
end;
finally
AEmpresas := NIL;
end;
end;
end;
procedure TMainMenuController.RegisterModule(AModuleInfo: TModuleInfo);
var
AModule: TModuleController;
AIndex: Integer;
ACount: Integer;
AMenu : TMainMenu;
begin
AModule := AModuleInfo.Module;
if Assigned(AModule.ModuleMenu) then
begin
CopyImages(TPngImageList(AModule.SmallImages), TPngImageList(FSmallImages), AIndex, ACount);
CopyImages(TPngImageList(AModule.LargeImages), TPngImageList(FLargeImages), AIndex, ACount);
MergeMenus(AModule.ModuleMenu, FMainMenu, AIndex);
end;
end;
procedure TMainMenuController.SetMainMenu(const Value: TMainMenu);
begin
FMainMenu := Value;
end;
procedure TMainMenuController.SortMenuByTag;
begin
uMenuUtils.SortMenuByTag(FMainMenu);
end;
initialization
MainMenuController := TMainMenuController.Create;
finalization
MainMenuController.Free;
MainMenuController := NIL;
end.