// Author: Simon Gockner // Created: 2021-04-10 // Copyright(c) 2021 SimonG. All Rights Reserved. using Lib.Audio.Interfaces; using NAudio.CoreAudioApi; namespace Lib.Audio { public class MasterControllable : IMasterControllable { private readonly AudioEndpointVolume _audioEndpointVolume; private readonly IControllableCollector _controllableCollector; public MasterControllable(AudioEndpointVolume audioEndpointVolume, string name, IControllableCollector controllableCollector) { _audioEndpointVolume = audioEndpointVolume; Name = name; _controllableCollector = controllableCollector; } public string Name { get; } public string? IconPath => null; public void SetVolume(float volume) { // try // { // // _audioEndpointVolume.MasterVolumeLevelScalar = volume; // MasterControllable? masterControllable = _controllableCollector.Controllables.OfType().FirstOrDefault(c => c.Equals(this)); // if (masterControllable != null) // masterControllable._audioEndpointVolume.MasterVolumeLevelScalar = volume; // } // catch (InvalidComObjectException) // { // MasterControllable? masterControllable = _controllableCollector.Controllables.OfType().FirstOrDefault(c => c.Equals(this)); // if (masterControllable != null) // masterControllable._audioEndpointVolume.MasterVolumeLevelScalar = volume; // } // catch (COMException) // { // // } } public void Mute() => _audioEndpointVolume.Mute = true; public void UnMute() => _audioEndpointVolume.Mute = false; public override string ToString() => Name; // public override bool Equals(object? obj) // { // if (obj is not MasterControllable masterControllable) // return false; // // return _name.Equals(masterControllable._name); // } } }