AbetoDesign_FactuGES2/Source/ApplicationBase/Configuracion/Controller/uConfiguracionController.pas

233 lines
8.4 KiB
ObjectPascal

unit uConfiguracionController;
interface
uses
Classes, SysUtils, uDADataTable, uControllerBase, uIViewConfiguracionBase,
uViewConfiguracionBase, uClassRegistryUtils, JvAppXMLStorage,
uROTypes, uDataModuleConfiguracion;
type
TEnumAlmacen = (teXML, teBD);
IPluginConfigurable = interface
['{30063608-BFD2-47B9-80FA-F10A5067AF82}']
function GetVistaConfiguracion : TClass;
function GetEtiquetaConfiguracion : String;
end;
IConfiguracionController = interface(IControllerBase)
['{F29215BA-0D34-4AE9-B9A9-C80ABF49A81D}']
procedure ConfigurarAplicacion;
procedure AplicarConfiguracion;
procedure SalvarConfiguracion;
procedure CargarConfiguracion;
function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : String = ''): String; overload;
function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ID_EMPRESA: integer; const ADefaultValue : String = ''): String; overload;
function GetSettingAsInteger(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Integer = 0): Integer;
function GetSettingAsFloat(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Float = 0): Float;
function GetSettingAsBoolean(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Boolean = False): Boolean;
procedure SetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; AValue : String);
procedure SetSettingAsInteger(const AFuente: TEnumAlmacen; const ASettingName: String; AValue : Integer);
procedure SetSettingAsFloat(const AFuente: TEnumAlmacen; const ASettingName: String; AValue : Float);
procedure SetSettingAsBoolean(const AFuente: TEnumAlmacen; const ASettingName: String; AValue : Boolean);
end;
TConfiguracionController = class(TControllerBase, IConfiguracionController)
private
FAppXMLFileStorage : TJvAppXMLFileStorage;
FAppDBStorage : TdmConfiguracion;
public
procedure SalvarConfiguracion;
procedure AplicarConfiguracion;
procedure CargarConfiguracion;
procedure ConfigurarAplicacion;
function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : String = ''): String; overload;
function GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; const ID_EMPRESA: integer; const ADefaultValue : String = ''): String; overload;
function GetSettingAsInteger(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Integer = 0): Integer;
function GetSettingAsFloat(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Float = 0): Float;
function GetSettingAsBoolean(const AFuente: TEnumAlmacen; const ASettingName: String; const ADefaultValue : Boolean = False): Boolean;
procedure SetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName: String; AValue : String);
procedure SetSettingAsInteger(const AFuente: TEnumAlmacen; const ASettingName: String; AValue : Integer);
procedure SetSettingAsFloat(const AFuente: TEnumAlmacen; const ASettingName: String; AValue : Float);
procedure SetSettingAsBoolean(const AFuente: TEnumAlmacen; const ASettingName: String; AValue : Boolean);
constructor Create; override;
destructor Destroy; override;
end;
implementation
uses
Forms, uEditorConfiguracion, uViewConfiguracionGeneral, uDMBase,
JvAppStorage, uAppInfoUtils, Controls, uViewConfiguracionRegistryUtils;
const
CONFIG_INI_FILE = 'config.xml';
{ TGestorConfiguracion }
procedure TConfiguracionController.AplicarConfiguracion;
begin
//
end;
procedure TConfiguracionController.CargarConfiguracion;
begin
FAppXMLFileStorage.Reload;
end;
procedure TConfiguracionController.ConfigurarAplicacion;
var
i: Integer;
AViewList : TStringList;
AEditor : TfConfiguracionEditor;
AView : TfrViewConfiguracionBase;
AEtiqueta : String;
begin
AViewList := TStringList.Create;
try
ViewConfiguracionRegistry.GetRegisteredClasses(AViewList);
AEditor := TfConfiguracionEditor.Create(NIL);
try
for i := 0 to AViewList.Count - 1 do
begin
AEtiqueta := AViewList[i];
AView := TfrViewConfiguracionBase(ViewConfiguracionRegistry.CreateView(AEtiqueta, AEditor));
AEditor.AnadirVista(AView, AEtiqueta);
end;
AEditor.CargarValores;
if (AEditor.ShowModal = mrOK) then
AEditor.GuardarValores;
finally
FreeANDNIL(AEditor)
end;
finally
FreeANDNIL(AViewList)
end;
end;
constructor TConfiguracionController.Create;
begin
inherited;
FAppXMLFileStorage := TJvAppXMLFileStorage.Create(NIL);
with FAppXMLFileStorage do
begin
StorageOptions.BooleanStringTrueValues := 'TRUE, YES, Y';
StorageOptions.BooleanStringFalseValues := 'FALSE, NO, N';
StorageOptions.InvalidCharReplacement := '_';
Location := flUserFolder;
RootNodeName := 'Configuration';
FileName := 'Rodax Software' + PathDelim + GetAppName + PathDelim + CONFIG_INI_FILE;
end;
FAppDBStorage := dmConfiguracion;
ViewConfiguracionRegistry.RegisterClass(TfrViewConfiguracionGeneral, 'General');
end;
destructor TConfiguracionController.Destroy;
begin
FreeANDNIL(FAppXMLFileStorage);
FAppDBStorage := NIL;
inherited;
end;
function TConfiguracionController.GetSettingAsBoolean(const AFuente: TEnumAlmacen;
const ASettingName: String; const ADefaultValue: Boolean): Boolean;
begin
case AFuente of
teXML: Result := FAppXMLFileStorage.ReadBoolean(ASettingName, ADefaultValue);
teBD: Result := FAppDBStorage.DarValor(ASettingName);
end;
end;
function TConfiguracionController.GetSettingAsFloat(const AFuente: TEnumAlmacen; const ASettingName: String;
const ADefaultValue: Float): Float;
begin
case AFuente of
teXML: Result := FAppXMLFileStorage.ReadFloat(ASettingName, ADefaultValue);
teBD: Result := FAppDBStorage.DarValor(ASettingName);
end;
end;
function TConfiguracionController.GetSettingAsInteger(const AFuente: TEnumAlmacen;
const ASettingName: String; const ADefaultValue: Integer): Integer;
begin
case AFuente of
teXML: Result := FAppXMLFileStorage.ReadInteger(ASettingName, ADefaultValue);
teBD: Result := FAppDBStorage.DarValor(ASettingName);
end;
end;
function TConfiguracionController.GetSettingAsString(
const AFuente: TEnumAlmacen; const ASettingName: String;
const ID_EMPRESA: integer; const ADefaultValue: String): String;
begin
case AFuente of
// teXML: Result := FAppXMLFileStorage.ReadStringParaEmpresa(ASettingName, ADefaultValue);
teBD: Result := FAppDBStorage.DarValorParaEmpresa(ASettingName, ID_EMPRESA);
end;
end;
function TConfiguracionController.GetSettingAsString(const AFuente: TEnumAlmacen; const ASettingName,
ADefaultValue: String): String;
begin
case AFuente of
teXML: Result := FAppXMLFileStorage.ReadString(ASettingName, ADefaultValue);
teBD: Result := FAppDBStorage.DarValor(ASettingName);
end;
end;
procedure TConfiguracionController.SalvarConfiguracion;
begin
FAppXMLFileStorage.Flush;
end;
procedure TConfiguracionController.SetSettingAsBoolean(const AFuente: TEnumAlmacen;
const ASettingName: String; AValue: Boolean);
begin
case AFuente of
teXML: FAppXMLFileStorage.WriteBoolean(ASettingName, AValue);
teBD: FAppDBStorage.GuardarValor(ASettingName, AValue);
end;
end;
procedure TConfiguracionController.SetSettingAsFloat(const AFuente: TEnumAlmacen; const ASettingName: String;
AValue: Float);
begin
case AFuente of
teXML: FAppXMLFileStorage.WriteFloat(ASettingName, AValue);
teBD: FAppDBStorage.GuardarValor(ASettingName, AValue);
end;
end;
procedure TConfiguracionController.SetSettingAsInteger(const AFuente: TEnumAlmacen;
const ASettingName: String; AValue: Integer);
begin
case AFuente of
teXML: FAppXMLFileStorage.WriteInteger(ASettingName, AValue);
teBD: FAppDBStorage.GuardarValor(ASettingName, AValue);
end;
end;
procedure TConfiguracionController.SetSettingAsString(const AFuente: TEnumAlmacen;
const ASettingName: String; AValue: String);
begin
case AFuente of
teXML: FAppXMLFileStorage.WriteString(ASettingName, AValue);
teBD: FAppDBStorage.GuardarValor(ASettingName, AValue);
end;
end;
end.