package call;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class Speakers extends AudioDevices<Speaker> {
private static final Speakers instance = new Speakers();
private static List<Speaker> speakers = new ArrayList<>();
private Speakers() {}
public static Speakers getInstance() {
return instance;
}
public static List<Speaker> getSpeakers() {
return speakers;
}
@Override
public List<Speaker> getAudioDevices() {
return speakers;
}
public static void setSpeakers(Collection<Speaker> speakers) {
Speakers.speakers = new ArrayList<>(speakers);
Collections.sort(Speakers.speakers, new AudioDeviceComparator());
}
@Override
public String getId() {
return "Speakers";
}
public static void setCurrentSpeaker(Speaker selected) {
instance.setCurrentDevice(selected);
}
public static Speaker getCurrentSpeaker() throws UnknownDefaultValueException {
return instance.getCurrentDevice();
}
@Override
public Speaker getCurrentDevice() throws UnknownDefaultValueException {
return (Speaker) Config.SELECTED_SPEAKER.getDeserializedValue();
}
@Override
public void setCurrentDevice(AudioDevice selected) {
AudioDevice current = null;
try {
current = Config.SELECTED_SPEAKER.getDeserializedValue();
} catch (UnknownDefaultValueException e) {}
if (current == null || !current.equals(selected)) {
Config.SELECTED_SPEAKER.setDeserializedValue((Speaker) selected);
}
}
public static class Serializer extends AudioDeviceSerializer<Speaker> {
private final List<Speaker> devices;
public Serializer(Collection<Speaker> speakers) {
this.devices = new ArrayList<>(speakers);
}
public Serializer() {
this.devices = null;
}
@Override
public List<Speaker> getAudioDevices() {
return devices != null ? devices : speakers;
}
public void setAudioDevices(Collection<Speaker> devices) {
this.devices.addAll(devices);
}
@Override
public String getConfigPrefix() {
return "speaker";
}
@Override
public Speaker getDefaultValue() throws NoAudioDeviceException {
List<Speaker> devicelist = getAudioDevices();
if (devicelist.size() > 0) {
return devicelist.get(0);
} else {
throw new NoAudioDeviceException("No speaker found!");
}
}
@Override
public String getId() {
return "Microphones.Serializer";
}
}
}