From 43976e1268727009edc63f0b53fdb81c78b6f345 Mon Sep 17 00:00:00 2001 From: Imad Rahmouni Date: Sun, 6 Mar 2016 21:26:53 +0100 Subject: [PATCH] Homework 2 done Implement IPropertyChangedNotifier for DataManger class --- RestaurantManager.Models/DataManager.cs | 16 +++++++-- .../ExpediteDataManager.cs | 17 ++++++++-- RestaurantManager.Models/OrderDataManager.cs | 33 +++++++++++++++++-- RestaurantManager.Models/RestaurantContext.cs | 2 +- .../MainPage.xaml | 3 +- .../OrderPage.xaml | 2 +- 6 files changed, 62 insertions(+), 11 deletions(-) diff --git a/RestaurantManager.Models/DataManager.cs b/RestaurantManager.Models/DataManager.cs index 0488dab..8692459 100644 --- a/RestaurantManager.Models/DataManager.cs +++ b/RestaurantManager.Models/DataManager.cs @@ -1,6 +1,10 @@ -namespace RestaurantManager.Models +using System.ComponentModel; +using System.Diagnostics.Tracing; +using System.Runtime.CompilerServices; + +namespace RestaurantManager.Models { - public abstract class DataManager + public abstract class DataManager : INotifyPropertyChanged { protected RestaurantContext Repository { get; private set; } @@ -16,6 +20,14 @@ private async void LoadData() OnDataLoaded(); } + public event PropertyChangedEventHandler PropertyChanged; + + public void OnPropertyChanged([CallerMemberName] string propName=null) + { + if (PropertyChanged != null) + PropertyChanged(this, new PropertyChangedEventArgs(propName)); + } + protected abstract void OnDataLoaded(); } } diff --git a/RestaurantManager.Models/ExpediteDataManager.cs b/RestaurantManager.Models/ExpediteDataManager.cs index ad72e3e..43bde17 100644 --- a/RestaurantManager.Models/ExpediteDataManager.cs +++ b/RestaurantManager.Models/ExpediteDataManager.cs @@ -4,14 +4,27 @@ namespace RestaurantManager.Models { public class ExpediteDataManager : DataManager { + private List _orderItems; + protected override void OnDataLoaded() { - + OrderItems = Repository.Orders; } public List OrderItems { - get { return base.Repository.Orders; } + get + { + return Repository.Orders; + } + set + { + if (_orderItems != value) + { + _orderItems = value; + OnPropertyChanged(); + } + } } } } diff --git a/RestaurantManager.Models/OrderDataManager.cs b/RestaurantManager.Models/OrderDataManager.cs index 618c8d3..ff99ff7 100644 --- a/RestaurantManager.Models/OrderDataManager.cs +++ b/RestaurantManager.Models/OrderDataManager.cs @@ -3,7 +3,9 @@ namespace RestaurantManager.Models { public class OrderDataManager : DataManager - { + { + private List _menuItems, _currentlySelectedMenuItems; + protected override void OnDataLoaded() { this.MenuItems = base.Repository.StandardMenuItems; @@ -13,10 +15,35 @@ protected override void OnDataLoaded() this.MenuItems[3], this.MenuItems[5] }; + } - public List MenuItems { get; set; } + public List MenuItems + { + get { return _menuItems; } + set + { + if (_menuItems != value) + { + _menuItems = value; + OnPropertyChanged(); + } + + } + } - public List CurrentlySelectedMenuItems { get; set; } + public List CurrentlySelectedMenuItems + { + get { return _currentlySelectedMenuItems; } + set + { + if (value != _currentlySelectedMenuItems) + { + _currentlySelectedMenuItems = value; + OnPropertyChanged(); + + } + } + } } } diff --git a/RestaurantManager.Models/RestaurantContext.cs b/RestaurantManager.Models/RestaurantContext.cs index 6e4ea42..8c9e1db 100644 --- a/RestaurantManager.Models/RestaurantContext.cs +++ b/RestaurantManager.Models/RestaurantContext.cs @@ -17,7 +17,7 @@ public sealed class RestaurantContext public async Task InitializeContextAsync() { //DO NOT REMOVE: Simulates network congestion - await Task.Delay(TimeSpan.FromSeconds(2.5d)); + await Task.Delay(TimeSpan.FromSeconds(1.5d)); this.Tables = new List { diff --git a/RestaurantManager.UniversalWindows/MainPage.xaml b/RestaurantManager.UniversalWindows/MainPage.xaml index 9740ca9..1055e6a 100644 --- a/RestaurantManager.UniversalWindows/MainPage.xaml +++ b/RestaurantManager.UniversalWindows/MainPage.xaml @@ -1,5 +1,4 @@ - - +