Sewermainview angefangen

This commit is contained in:
Husky
2021-09-25 19:01:47 +02:00
parent 56feac58bb
commit de9c12acef
26 changed files with 395 additions and 29 deletions

View File

@@ -0,0 +1,32 @@
using DaSaSo.Domain.Enums;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
class UpdateCurrentSewerViewModelCommand : AsyncCommandBase
{
private INavigator _navigator;
private readonly IViewModelSewerMainFactory _viewModelFactory;
public UpdateCurrentSewerViewModelCommand(INavigator navigator, IViewModelSewerMainFactory viewModelFactory)
{
_navigator = navigator;
_viewModelFactory = viewModelFactory;
}
public override async Task ExecuteAsync(object? parameter)
{
if (parameter is ESewerWindowViewType)
{
ESewerWindowViewType viewType = (ESewerWindowViewType)parameter;
_navigator.CurrentViewModel = _viewModelFactory.CreateViewModel(viewType);
//throw new NotImplementedException(parameter.GetType().ToString());
}
}
}
}

View File

@@ -1,6 +1,8 @@
using DaSaSo.Domain.Enums;
using DaSaSo.ViewModel.Enums;
using DaSaSo.ViewModel.Interface;
using System;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel.Commands

View File

@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.0-rc1" />
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.0" />
</ItemGroup>
<ItemGroup>

View File

@@ -1,5 +1,6 @@
using DaSaSo.Domain.Enums;
using DaSaSo.ViewModel.Interface;
using System;
namespace DaSaSo.ViewModel.Factories
{
@@ -11,7 +12,7 @@ namespace DaSaSo.ViewModel.Factories
private CreateViewModel<ProjectListViewModel> _createProjektListViewModel;
private CreateViewModel<BuildingsiteListViewModel> _createBuildingsiteListViewModel;
private CreateViewModel<SewerObjectListViewModel> _createSewerObjectListViewModel;
private CreateViewModel<SewerMainMenuListViewModel> _createSewerMainMenuListViewModel;
private CreateViewModel<SewerMainListViewModel> _createSewerMainMenuListViewModel;
public MainWindowViewModelFactory(
CreateViewModel<HomeViewModel> createHomeViewModel,
@@ -20,7 +21,7 @@ namespace DaSaSo.ViewModel.Factories
CreateViewModel<ProjectListViewModel> createProjektListViewModel,
CreateViewModel<BuildingsiteListViewModel> createBuildingsiteListViewModel,
CreateViewModel<SewerObjectListViewModel> createSewerObjectListViewModel,
CreateViewModel<SewerMainMenuListViewModel> createSewerMainMenuListViewModel
CreateViewModel<SewerMainListViewModel> createSewerMainMenuListViewModel
)
{
_createHomeViewModel = createHomeViewModel;

View File

@@ -0,0 +1,37 @@
using DaSaSo.Domain.Enums;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Factories
{
public class SewerWindowViewModelFactory : IViewModelSewerMainFactory
{
private CreateViewModel<SewerStammdatenViewModel> _createSewerStammdatenViewModel;
private CreateViewModel<SewerDamageListViewModel> _createSewerDamageListViewModel;
public SewerWindowViewModelFactory(
CreateViewModel<SewerStammdatenViewModel> createSewerStammdatenViewModel,
CreateViewModel<SewerDamageListViewModel> createSewerDamageListViewModel
)
{
_createSewerStammdatenViewModel = createSewerStammdatenViewModel;
_createSewerDamageListViewModel = createSewerDamageListViewModel;
}
public BaseViewModel CreateViewModel(ESewerWindowViewType viewType)
{
switch (viewType)
{
case ESewerWindowViewType.SewerStammdaten: return _createSewerStammdatenViewModel();
case ESewerWindowViewType.SewerDamageList: return _createSewerDamageListViewModel();
default:
throw new ArgumentException("The Viewtype does not have a ViewModel", "viewType");
}
}
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface IMainWindowNavigator : INavigator
{
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface ISewerMainNavigator : INavigator
{
}
}

View File

@@ -0,0 +1,14 @@
using DaSaSo.Domain.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface IViewModelSewerMainFactory
{
BaseViewModel CreateViewModel(ESewerWindowViewType viewType);
}
}

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
public class SewerMainMenuListViewModel : BaseViewModel
public class SewerDamageListViewModel : BaseViewModel
{
}
}

View File

@@ -0,0 +1,31 @@
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class SewerMainListViewModel : BaseViewModel
{
private ISewerMainNavigator _navigator { get; set; }
private IActualProject _actualProject { get; set; }
public ICommand UpdateCurrentSewerViewModelCommand { get; }
public BaseViewModel CurrentSewerViewModel => _navigator.CurrentViewModel;
public SewerMainListViewModel(ISewerMainNavigator navigator,IActualProject actualProject, IViewModelSewerMainFactory viewModelFactory)
{
_navigator = navigator;
_actualProject = actualProject;
UpdateCurrentSewerViewModelCommand = new UpdateCurrentSewerViewModelCommand(_navigator, viewModelFactory);
_navigator.StateChanged += () =>
{
OnPropertyChanged(nameof(CurrentSewerViewModel));
}; //_navigator_StateChanged;
}
}
}

View File

@@ -0,0 +1,65 @@
using DaSaSo.Domain.Model;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
public class SewerStammdatenViewModel : BaseViewModel
{
private readonly IActualProject _actualProject;
private SewerObject _model;
public string Haltungsname
{
get => _model.ObjektName;
set
{
if(_model.ObjektName != value)
{
_model.ObjektName = value;
OnPropertyChanged();
}
}
}
public string Oberepunkt { get; set; }
public string Unterepunkt { get; set; }
public string Durchmesser { get; set; }
public string Material { get; set; }
public decimal Leitungslenght {
get => _model.SewerLength;
set
{
if(_model.SewerLength != value)
{
_model.SewerLength = value;
OnPropertyChanged();
}
}
}
public string Strasse
{
get => _model.StreetName;
set
{
if (_model.StreetName != value)
{
_model.StreetName = value;
OnPropertyChanged();
}
}
}
public string Ort
{
get;set;
}
public SewerStammdatenViewModel(IActualProject actualProject)
{
_actualProject = actualProject;
_model = actualProject.AktuellSewerObject;
}
}
}

View File

@@ -1,12 +1,13 @@
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Input;
namespace DaSaSo.ViewModel.State.Navigation
{
public class Navigator : ObservableObject, INavigator
public class MainWindowNavigator : ObservableObject, IMainWindowNavigator
{
private BaseViewModel _currentViewModel;

View File

@@ -0,0 +1,25 @@
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.State.Navigation
{
public class SewerMainNavigator : ISewerMainNavigator
{
private BaseViewModel _currentViewModel;
public BaseViewModel CurrentViewModel
{
get => _currentViewModel;
set
{
_currentViewModel?.Dispose();
_currentViewModel = value;
StateChanged?.Invoke();
}
}
public event Action StateChanged;
}
}

View File

@@ -9,10 +9,10 @@ namespace DaSaSo.ViewModel.State.Navigation
{
public class ViewModelDelegateRenavigator : IRenavigator
{
private readonly INavigator _navigator;
private readonly IMainWindowNavigator _navigator;
public ViewModelDelegateRenavigator(INavigator navigator)
public ViewModelDelegateRenavigator(IMainWindowNavigator navigator)
{
_navigator = navigator;
}

View File

@@ -28,7 +28,7 @@ namespace DaSaSo.ViewModel
public bool CanSelectBuildingSite { get => _actualProject.AktuellProjekt != null; }
public bool CanSelectSewerObjects { get => _actualProject.AktuellBaustelle != null; }
public INavigator _navigator { get; set; }
public IMainWindowNavigator _navigator { get; set; }
public ICommand UpdateCurrentViewModelCommand { get; }
public BaseViewModel CurrentViewModel => _navigator.CurrentViewModel;
@@ -70,7 +70,7 @@ namespace DaSaSo.ViewModel
}
}
public MainWindowViewModel(INavigator navigator,IViewModelAbstractFactory viewModelFactory, IActualProject actualProject)
public MainWindowViewModel(IMainWindowNavigator navigator,IViewModelAbstractFactory viewModelFactory, IActualProject actualProject)
{
this._navigator = navigator;
this.viewModelFactory = viewModelFactory;
@@ -88,12 +88,12 @@ namespace DaSaSo.ViewModel
private void _actualProject_SewerObjectChanged(object? sender, EventArgs e)
{
throw new NotImplementedException();
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerMainMenu);
}
private void _navigator_StateChanged()
{
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerMainMenu);
OnPropertyChanged(nameof(CurrentViewModel));
}
private void _actualProject_BuildingSiteChanged(object? sender, EventArgs e)