﻿//Copyright (c) 2007-2016 ppy Pty Ltd <contact@ppy.sh>.
//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE

namespace osu.Game.Overlays.Options.Sections.Audio
{
    public class AudioDevicesOptions : OptionsSubsection
    {
        protected override string Header => "Devices";

        public AudioDevicesOptions()
        {
            Children = new[]
            {
                new OptionLabel { Text = "Output device: TODO dropdown" }
            };
        }
    }
}
﻿//Copyright (c) 2007-2016 ppy Pty Ltd <contact@ppy.sh>.
//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE

using osu.Framework.Allocation;
using osu.Framework.Audio;
using osu.Framework.Graphics;
using System.Collections.Generic;
using System.Linq;

namespace osu.Game.Overlays.Options.Sections.Audio
{
    public class AudioDevicesOptions : OptionsSubsection
    {
        protected override string Header => "Devices";

        private AudioManager audio;

        [BackgroundDependencyLoader]
        private void load(AudioManager audio)
        {
            this.audio = audio;
        }

        protected override void LoadComplete()
        {
            base.LoadComplete();

            var deviceItems = new List<KeyValuePair<string, string>>();
            deviceItems.Add(new KeyValuePair<string, string>("Standard", ""));
            deviceItems.AddRange(audio.GetDeviceNames().Select(d => new KeyValuePair<string, string>(d, d)));
            Children = new Drawable[]
            {
                new OptionDropDown<string>()
                {
                    Items = deviceItems,
                    Bindable = audio.AudioDevice
                },
            };
        }
    }
}
Allow audio device selection in settings
Allow audio device selection in settings
