39 lines
861 B
C#
39 lines
861 B
C#
using CoreAudio;
|
|
using System;
|
|
|
|
namespace FocusVolumeControl.AudioSessions;
|
|
|
|
internal class SystemVolumeAudioSession : IAudioSession
|
|
{
|
|
public SystemVolumeAudioSession(AudioEndpointVolume volumeControl)
|
|
{
|
|
_volumeControl = volumeControl;
|
|
}
|
|
|
|
AudioEndpointVolume _volumeControl;
|
|
|
|
public string DisplayName => "System Volume";
|
|
public string GetIcon() => "Images/encoderIcon";
|
|
|
|
public void ToggleMute()
|
|
{
|
|
_volumeControl.Mute = !_volumeControl.Mute;
|
|
}
|
|
|
|
public bool IsMuted() => _volumeControl.Mute;
|
|
|
|
public void IncrementVolumeLevel(int step, int ticks)
|
|
{
|
|
var level = _volumeControl.MasterVolumeLevelScalar;
|
|
|
|
level += (0.01f * step) * ticks;
|
|
level = Math.Max(level, 0);
|
|
level = Math.Min(level, 1);
|
|
|
|
_volumeControl.MasterVolumeLevelScalar = level;
|
|
}
|
|
|
|
public int GetVolumeLevel() => (int)(_volumeControl.MasterVolumeLevelScalar * 100);
|
|
|
|
}
|