- add more information to model

- rename allocate to map
master
Simon G 5 years ago
parent 65763bcbb5
commit 46af4cdec4
  1. 2
      Lib.Audio/Channel.cs
  2. 2
      Lib.Audio/Interfaces/IChannel.cs
  3. 12
      Mystify/MainModel.cs
  4. 38
      Mystify/ViewModels/MainWindowViewModel.cs
  5. 2
      Mystify/Views/MainWindow.axaml

@ -50,7 +50,7 @@ namespace Lib.Audio
public List<IButton>? Buttons { get; } public List<IButton>? Buttons { get; }
public IControllable? Controllable { get; private set; } public IControllable? Controllable { get; private set; }
public void AllocateControllable(IControllable controllable) => Controllable = controllable; public void MapControllable(IControllable controllable) => Controllable = controllable;
public void HandleMessage(IMidiMessage message) public void HandleMessage(IMidiMessage message)
{ {
if (message is NoteOnMessage noteOnMessage) if (message is NoteOnMessage noteOnMessage)

@ -18,7 +18,7 @@ namespace Lib.Audio.Interfaces
IControllable? Controllable { get; } IControllable? Controllable { get; }
void AllocateControllable(IControllable controllable); void MapControllable(IControllable controllable);
void HandleMessage(IMidiMessage message); void HandleMessage(IMidiMessage message);
void SendAcknowledge(IMidiCommunication midiCommunication); void SendAcknowledge(IMidiCommunication midiCommunication);
} }

@ -27,9 +27,13 @@ namespace Mystify
_controllableCollectorFactory = controllableCollectorFactory; _controllableCollectorFactory = controllableCollectorFactory;
} }
public string? DeviceName => _device?.Name;
public List<IChannel>? Channels => _device?.Channels; public List<IChannel>? Channels => _device?.Channels;
public List<IControllable>? Controllables => _controllableCollector?.Controllables; public List<IControllable>? Controllables => _controllableCollector?.Controllables;
public string? DeviceName => _device?.Name; public IChannel? SelectedChannel { get; set; }
public IControllable? SelectedControllable { get; set; }
public bool UseMidiView { get; set; }
public void LoadDriverAndDevice(string driverPath, bool useMidiView) public void LoadDriverAndDevice(string driverPath, bool useMidiView)
{ {
@ -43,5 +47,11 @@ namespace Mystify
_device.StartCommunication(useMidiView); _device.StartCommunication(useMidiView);
} }
public void MapControllable()
{
if (SelectedControllable != null)
SelectedChannel?.MapControllable(SelectedControllable);
}
} }
} }

@ -33,9 +33,35 @@ namespace Mystify.ViewModels
public List<IChannel>? Channels => _mainModel?.Channels; public List<IChannel>? Channels => _mainModel?.Channels;
public List<IControllable>? Controllables => _mainModel?.Controllables; public List<IControllable>? Controllables => _mainModel?.Controllables;
public IChannel? SelectedChannel { get; set; } public IChannel? SelectedChannel
public IControllable? SelectedControllable { get; set; } {
public bool UseMidiView { get; set; } get => _mainModel?.SelectedChannel;
set
{
if (_mainModel != null)
_mainModel.SelectedChannel = value;
}
}
public IControllable? SelectedControllable
{
get => _mainModel?.SelectedControllable;
set
{
if (_mainModel != null)
_mainModel.SelectedControllable = value;
}
}
public bool UseMidiView
{
get => _mainModel is {UseMidiView: true};
set
{
if (_mainModel != null)
_mainModel.UseMidiView = value;
}
}
public string SelectedDeviceText => $"Selected Device: {_mainModel?.DeviceName ?? "-"}"; public string SelectedDeviceText => $"Selected Device: {_mainModel?.DeviceName ?? "-"}";
@ -55,11 +81,7 @@ namespace Mystify.ViewModels
RaisePropertyChanged(() => Controllables); RaisePropertyChanged(() => Controllables);
}); });
public ICommand AllocateControllableCommand => ReactiveCommand.Create(() => public ICommand MapControllableCommand => ReactiveCommand.Create(() => _mainModel?.MapControllable());
{
if (SelectedControllable != null)
SelectedChannel?.AllocateControllable(SelectedControllable);
});
public void UpdateChannelsAndControllables() public void UpdateChannelsAndControllables()
{ {

@ -35,6 +35,6 @@
Margin="5"/> Margin="5"/>
</StackPanel> </StackPanel>
<Button Margin="15" Content="Allocate selected Controllable" Command="{Binding AllocateControllableCommand}"/> <Button Margin="15" Content="Map selected Controllable" Command="{Binding MapControllableCommand}"/>
</StackPanel> </StackPanel>
</Window> </Window>

Loading…
Cancel
Save