package com.kedzie.vbox.api.jaxb; import java.io.Serializable; public enum AudioDriverType implements Serializable { /** Null value, also means "dummy audio driver". */ NULL("Null"), /** Windows multimedia (Windows hosts only). */ WIN_MM("WinMM"), /** Open Sound System (Linux hosts only). */ OSS("OSS"), /**Advanced Linux Sound Architecture (Linux hosts only). */ ALSA("ALSA"), /** DirectSound (Windows hosts only). */ DIRECT_SOUND("DirectSound"), /** CoreAudio (Mac hosts only). */ CORE_AUDIO("CoreAudio"), /** Reserved for historical reasons. */ MMPM("MMPM"), /** PulseAudio (Linux hosts only). */ PULSE("Pulse"), /** Solaris audio (Solaris hosts only). */ SOL_AUDIO("SolAudio"); private final String value; public String toString() { return value; } AudioDriverType(String v) { value = v; } public String value() { return value; } public static AudioDriverType fromValue(String v) { for (AudioDriverType c: AudioDriverType.values()) { if (c.value.equals(v)) { return c; } } throw new IllegalArgumentException(v); } /** * Get valid Audio Drivers for a particular operating system * @param os Operating System family * @return valid {@link AudioDriverType}s for particular operating system */ public static AudioDriverType[] getAudioDrivers(String os) { if(os.toLowerCase().equals("linux")) return new AudioDriverType[] { NULL, OSS, ALSA, PULSE }; else if(os.toLowerCase().equals("solaris")) return new AudioDriverType[] { NULL, SOL_AUDIO }; else if(os.toLowerCase().equals("windows")) return new AudioDriverType[] { NULL, WIN_MM, DIRECT_SOUND }; else if(os.toLowerCase().equals("macos")) return new AudioDriverType[] { NULL, CORE_AUDIO }; return new AudioDriverType[0]; } }