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