Index: VerpakkingsDefinitie/ApplicationContext.pas =================================================================== diff -u -r595 -r596 --- VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 595) +++ VerpakkingsDefinitie/ApplicationContext.pas (.../ApplicationContext.pas) (revision 596) @@ -209,17 +209,19 @@ FIsOK: Boolean; FErrorMessage: string; FInternalErrorMessage: string; + + function GetProductVerpakkingenLijst: TReadOnlyList; + procedure SetGeselecteerdeVerpakking(ProductVerpakking: TProductVerpakking); public constructor Create(); procedure NotifyChanged(); - procedure Reset(); - 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 } + procedure Reset(Notify: Boolean = True); + + property ProductVerpakkingen: TReadOnlyList read GetProductVerpakkingenLijst; + procedure SetProductVerpakkingen(Collection: TEnumerable); function GetDeelVanOpties(ProductVerpakking: TProductVerpakking): TList; - property GeselecteerdeVerpakking: TProductVerpakking read FGeselecteerdeVerpakking write FGeselecteerdeVerpakking; - { TODO : GeselecteerdeVerpakking setter hierop plaatsen en NotifyChanged() callen } + property GeselecteerdeVerpakking: TProductVerpakking read FGeselecteerdeVerpakking write SetGeselecteerdeVerpakking; + property IsOK: Boolean read FIsOK write FIsOK; property ErrorMessage: string read FErrorMessage write FErrorMessage; property InternalErrorMessage: string read FInternalErrorMessage write FInternalErrorMessage; @@ -357,16 +359,35 @@ self.Change(); end; -procedure TProductVerpakkingenContext.Reset(); +procedure TProductVerpakkingenContext.Reset(Notify: Boolean = True); begin if (FGeselecteerdeVerpakking <> nil) or (FProductVerpakkingen.Count > 0) then begin FProductVerpakkingen.Clear(); FGeselecteerdeVerpakking := nil; - NotifyChanged(); + if Notify then + NotifyChanged(); end; end; +function TProductVerpakkingenContext.GetProductVerpakkingenLijst: TReadOnlyList; +begin + Result := TReadOnlyList.Create(FProductVerpakkingen); +end; + +procedure TProductVerpakkingenContext.SetProductVerpakkingen(Collection: TEnumerable); +begin + FProductVerpakkingen.Clear(); + FProductVerpakkingen.AddRange(Collection); + self.NotifyChanged(); +end; + +procedure TProductVerpakkingenContext.SetGeselecteerdeVerpakking(ProductVerpakking: TProductVerpakking); +begin + FGeselecteerdeVerpakking := ProductVerpakking; + self.NotifyChanged(); +end; + function TProductVerpakkingenContext.GetDeelVanOpties(ProductVerpakking: TProductVerpakking): TList; var ProductVerpakkingTeZoeken: TProductVerpakking;