|
|
|
|
@ -2,10 +2,46 @@ |
|
|
|
|
// Created: 2021-04-06 |
|
|
|
|
// Copyright(c) 2021 SimonG. All Rights Reserved. |
|
|
|
|
|
|
|
|
|
using System; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using System.Windows.Input; |
|
|
|
|
using Lib.Audio.Factories; |
|
|
|
|
using Lib.Audio.Interfaces; |
|
|
|
|
using ReactiveUI; |
|
|
|
|
|
|
|
|
|
namespace Mystify.ViewModels |
|
|
|
|
{ |
|
|
|
|
public class MainWindowViewModel : ViewModelBase |
|
|
|
|
{ |
|
|
|
|
public MainWindowViewModel() |
|
|
|
|
{ |
|
|
|
|
if (!IsInDesignMode) |
|
|
|
|
throw new InvalidOperationException("Constructor is for design time usage only."); |
|
|
|
|
|
|
|
|
|
Channels = new List<IChannel>(); |
|
|
|
|
Controllables = new List<IControllable>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public MainWindowViewModel(IDeviceFactory deviceFactory, IControllableCollectorFactory controllableCollectorFactory) |
|
|
|
|
{ |
|
|
|
|
IDevice device = deviceFactory.Create(); |
|
|
|
|
IControllableCollector controllableCollector = controllableCollectorFactory.Create(); |
|
|
|
|
|
|
|
|
|
Channels = device.Channels; |
|
|
|
|
Controllables = controllableCollector.Controllables; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public List<IChannel> Channels { get; } |
|
|
|
|
public List<IControllable> Controllables { get; } |
|
|
|
|
|
|
|
|
|
public IChannel? SelectedChannel { get; set; } |
|
|
|
|
public IControllable? SelectedControllable { get; set; } |
|
|
|
|
|
|
|
|
|
public ICommand AllocateControllableCommand => |
|
|
|
|
ReactiveCommand.Create(() => |
|
|
|
|
{ |
|
|
|
|
if (SelectedControllable != null) |
|
|
|
|
SelectedChannel?.AllocateControllable(SelectedControllable); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|