Index: VerpakkingsDefinitie/ApplicationContext.pas =================================================================== diff -u -r590 -r591 --- VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 590) +++ VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 591) @@ -89,6 +89,7 @@ TProductsContext = class(TSubject) private FProducten: TList; + FGeselecteerdProduct: TProductInformatie; FIsOK: Boolean; FErrorMessage: string; @@ -98,6 +99,11 @@ procedure Reset(); procedure NotifyChanged(); property Producten: TList read FProducten; + { TODO : +Immutable list type retourneren en functie om item(s) toe te voegen (met Notify) +https://stackoverflow.com/questions/22693154/make-delphi-tlist-immutable } + property GeselecteerdProduct: TProductInformatie read FGeselecteerdProduct write FGeselecteerdProduct; + { TODO : GeselecteerdProduct setter hierop plaatsen en NotifyChanged() callen } property IsOK: Boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; @@ -181,6 +187,7 @@ property DefaultRichtingen: TList read FDefaultRichtingen; property Parameters: TList read FParameters; + { TODO : Immutable list } property DeelVanID: string read FDeelVanID write FDeelVanID; property DeelVanCaption: string read FDeelVanCaption write FDeelVanCaption; @@ -193,10 +200,10 @@ constructor Create(); end; - TProductDetailContext = class(TSubject) + TProductVerpakkingContext = class(TSubject) private - FGeselecteerdProduct: TProductInformatie; FProductVerpakkingen: TList; + FGeselecteerdeVerpakking: TProductVerpakking; FIsOK: Boolean; FErrorMessage: string; @@ -205,10 +212,13 @@ constructor Create(); procedure NotifyChanged(); procedure Reset(); - property GeselecteerdProduct: TProductInformatie read FGeselecteerdProduct write FGeselecteerdProduct; property ProductVerpakkingen: TList read FProductVerpakkingen; + { TODO : +Immutable list type retourneren en functie om item(s) toe te voegen (met Notify) +https://stackoverflow.com/questions/22693154/make-delphi-tlist-immutable } function GetDeelVanOpties(ProductVerpakking: TProductVerpakking): TList; - + property GeselecteerdeVerpakking: TProductVerpakking read FGeselecteerdeVerpakking write FGeselecteerdeVerpakking; + { TODO : GeselecteerdeVerpakking setter hierop plaatsen en NotifyChanged() callen } property IsOK: Boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; @@ -221,13 +231,13 @@ FUserContext: TUserContext; FUiInstellingenContext: TUiInstellingenContext; FProductsContext: TProductsContext; - FProductDetailContext: TProductDetailContext; + FProductDetailContext: TProductVerpakkingContext; public constructor Create(); property UserContext: TUserContext read FUserContext write FUserContext; property UiInstellingenContext: TUiInstellingenContext read FUiInstellingenContext write FUiInstellingenContext; property ProductsContext: TProductsContext read FProductsContext write FProductsContext; - property ProductDetailContext: TProductDetailContext read FProductDetailContext write FProductDetailContext; + property ProductVerpakkingContext: TProductVerpakkingContext read FProductDetailContext write FProductDetailContext; end; implementation @@ -272,9 +282,10 @@ // Enkel updaten wanneer nog niet op nil stond. procedure TProductsContext.Reset(); begin - if FProducten.Count > 0 then + if (GeselecteerdProduct <> nil) or (FProducten.Count > 0) then begin FProducten.Clear(); + GeselecteerdProduct := nil; NotifyChanged(); end; end; @@ -315,29 +326,28 @@ end; // PRODUCT DETAIL -constructor TProductDetailContext.Create; +constructor TProductVerpakkingContext.Create; begin inherited Create(); FProductVerpakkingen := TList.Create(); end; -procedure TProductDetailContext.NotifyChanged(); +procedure TProductVerpakkingContext.NotifyChanged(); begin self.Change(); end; -// Enkel updaten wanneer nog niet op nil stond. -procedure TProductDetailContext.Reset(); +procedure TProductVerpakkingContext.Reset(); begin - if (GeselecteerdProduct <> nil) or (ProductVerpakkingen.Count > 0) then + if (FGeselecteerdeVerpakking <> nil) or (FProductVerpakkingen.Count > 0) then begin - GeselecteerdProduct := nil; - ProductVerpakkingen.Clear(); + FProductVerpakkingen.Clear(); + FGeselecteerdeVerpakking := nil; NotifyChanged(); end; end; -function TProductDetailContext.GetDeelVanOpties(ProductVerpakking: TProductVerpakking): TList; +function TProductVerpakkingContext.GetDeelVanOpties(ProductVerpakking: TProductVerpakking): TList; var ProductVerpakkingTeZoeken: TProductVerpakking; Namen: TList; @@ -391,7 +401,7 @@ FUserContext := TUserContext.Create(); FUiInstellingenContext := TUiInstellingenContext.Create(); FProductsContext := TProductsContext.Create(); - FProductDetailContext := TProductDetailContext.Create(); + FProductDetailContext := TProductVerpakkingContext.Create(); end; end.