From 1471213fb324d4e5eee3cd4aac09c62788eb4bbe Mon Sep 17 00:00:00 2001 From: Jason Lepp Date: Fri, 15 Oct 2010 15:35:55 -0600 Subject: Tie the deletion to the parent window --- src/MVPtoMVVM.mvp/MvpWindow.xaml.cs | 2 +- src/MVPtoMVVM.mvp/TodoItemView.xaml.cs | 12 +++++++++++- src/MVPtoMVVM/presenters/IMvpPresenter.cs | 1 + src/MVPtoMVVM/presenters/MvpPresenter.cs | 7 ++++++- src/MVPtoMVVM/presenters/TodoItemPresenter.cs | 4 +++- src/MVPtoMVVM/repositories/TodoItemRepository.cs | 8 +++++--- src/MVPtoMVVM/views/ITodoItemView.cs | 3 +++ 7 files changed, 30 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs b/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs index e1f77eb..dc9f420 100755 --- a/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs +++ b/src/MVPtoMVVM.mvp/MvpWindow.xaml.cs @@ -21,7 +21,7 @@ namespace MVPtoMVVM.mvp public void SetTodoItems(IEnumerable presenters) { - todoItemsList.ItemsSource = presenters.Select(x => new TodoItemView(x)); + todoItemsList.ItemsSource = presenters.Select(x => new TodoItemView(x, presenter)); } public IEnumerable GetTodoItems() diff --git a/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs b/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs index 8be4149..6fe03f1 100755 --- a/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs +++ b/src/MVPtoMVVM.mvp/TodoItemView.xaml.cs @@ -1,4 +1,5 @@ using System; +using MVPtoMVVM.domain; using MVPtoMVVM.presenters; using MVPtoMVVM.views; @@ -9,8 +10,11 @@ namespace MVPtoMVVM.mvp /// public partial class TodoItemView : ITodoItemView { - public TodoItemView(ITodoItemPresenter presenter) + private readonly IMvpPresenter parent; + + public TodoItemView(ITodoItemPresenter presenter, IMvpPresenter parent) { + this.parent = parent; Presenter = presenter; InitializeComponent(); presenter.SetView(this); @@ -20,6 +24,8 @@ namespace MVPtoMVVM.mvp dueDate.SelectedDateChanged += (o, e) => presenter.DueDate = dueDate.SelectedDate.Value; } + public int Id{ get; set; } + public string Description { get { return description.Text; } @@ -39,5 +45,9 @@ namespace MVPtoMVVM.mvp } public ITodoItemPresenter Presenter { get; private set; } + public void Remove(int itemId) + { + parent.Remove(itemId); + } } } diff --git a/src/MVPtoMVVM/presenters/IMvpPresenter.cs b/src/MVPtoMVVM/presenters/IMvpPresenter.cs index 71e919f..24dc65b 100755 --- a/src/MVPtoMVVM/presenters/IMvpPresenter.cs +++ b/src/MVPtoMVVM/presenters/IMvpPresenter.cs @@ -7,5 +7,6 @@ namespace MVPtoMVVM.presenters void SetView(IMvpView view); void AddNewItem(); void CancelAllChanges(); + void Remove(int itemId); } } \ No newline at end of file diff --git a/src/MVPtoMVVM/presenters/MvpPresenter.cs b/src/MVPtoMVVM/presenters/MvpPresenter.cs index f867614..380d335 100755 --- a/src/MVPtoMVVM/presenters/MvpPresenter.cs +++ b/src/MVPtoMVVM/presenters/MvpPresenter.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; -using System.Linq; using MVPtoMVVM.domain; using MVPtoMVVM.mappers; using MVPtoMVVM.repositories; using MVPtoMVVM.views; +using System.Linq; namespace MVPtoMVVM.presenters { @@ -39,6 +39,11 @@ namespace MVPtoMVVM.presenters RefreshItems(); } + public void Remove(int itemId) + { + view.SetTodoItems(view.GetTodoItems().Where(x => x.Id != itemId)); + } + private void InitializeView() { RefreshItems(); diff --git a/src/MVPtoMVVM/presenters/TodoItemPresenter.cs b/src/MVPtoMVVM/presenters/TodoItemPresenter.cs index 8cb1c7b..96ee843 100755 --- a/src/MVPtoMVVM/presenters/TodoItemPresenter.cs +++ b/src/MVPtoMVVM/presenters/TodoItemPresenter.cs @@ -35,6 +35,7 @@ namespace MVPtoMVVM.presenters private void InitializeView() { + view.Id = Id; view.Description = Description; view.DueDate = DueDate; view.SaveButtonEnabled = false; @@ -51,7 +52,8 @@ namespace MVPtoMVVM.presenters public void DeleteItem() { var item = itemMapper.MapFrom(this); - itemRepository.Delete(item); + view.Remove(item.Id); + itemRepository.Delete(item); } private string description; diff --git a/src/MVPtoMVVM/repositories/TodoItemRepository.cs b/src/MVPtoMVVM/repositories/TodoItemRepository.cs index 01fcf01..23418e5 100755 --- a/src/MVPtoMVVM/repositories/TodoItemRepository.cs +++ b/src/MVPtoMVVM/repositories/TodoItemRepository.cs @@ -8,7 +8,7 @@ namespace MVPtoMVVM.repositories public class TodoItemRepository : ITodoItemRepository { private static readonly List items = new List(); - private int totalItems = 0; + private static int totalItems; public TodoItemRepository() { @@ -38,12 +38,14 @@ namespace MVPtoMVVM.repositories public void Delete(TodoItem item) { - items.Remove(item); + var repoItem = items.Find(x => x.Id == item.Id); + items.Remove(repoItem); } private void UpdateItem(TodoItem item) { - items.Remove(items.Single(x => x.Id == item.Id)); + var oldItem = items.Single(x => x.Id == item.Id); + items.Remove(oldItem); items.Add(item); } diff --git a/src/MVPtoMVVM/views/ITodoItemView.cs b/src/MVPtoMVVM/views/ITodoItemView.cs index eae05fe..7d8c787 100755 --- a/src/MVPtoMVVM/views/ITodoItemView.cs +++ b/src/MVPtoMVVM/views/ITodoItemView.cs @@ -1,13 +1,16 @@ using System; +using MVPtoMVVM.domain; using MVPtoMVVM.presenters; namespace MVPtoMVVM.views { public interface ITodoItemView { + int Id { get; set; } string Description { get; set; } DateTime DueDate { get; set; } bool SaveButtonEnabled { get; set; } ITodoItemPresenter Presenter { get; } + void Remove(int itemId); } } \ No newline at end of file -- cgit v1.2.3