store the last selected audio device

This commit is contained in:
Thijs Wenker 2014-10-05 21:11:42 +02:00
parent 864dd0152d
commit b7165cb353

View file

@ -41,6 +41,9 @@ if (typeof String.prototype.trimEndsWith != 'function') {
}; };
} }
const INPUT_DEVICE_SETTING = "audio_input_device";
const OUTPUT_DEVICE_SETTING = "audio_output_device";
var selectedInputMenu = ""; var selectedInputMenu = "";
var selectedOutputMenu = ""; var selectedOutputMenu = "";
@ -48,9 +51,14 @@ function setupAudioMenus() {
Menu.addMenu("Tools > Audio"); Menu.addMenu("Tools > Audio");
Menu.addSeparator("Tools > Audio","Output Audio Device"); Menu.addSeparator("Tools > Audio","Output Audio Device");
var outputDeviceSetting = Settings.getValue(OUTPUT_DEVICE_SETTING);
var outputDevices = AudioDevice.getOutputDevices(); var outputDevices = AudioDevice.getOutputDevices();
var selectedOutputDevice = AudioDevice.getOutputDevice(); var selectedOutputDevice = AudioDevice.getOutputDevice();
if (outputDevices.indexOf(outputDeviceSetting) != -1 && selectedOutputDevice != outputDeviceSetting) {
if (AudioDevice.setOutputDevice(outputDeviceSetting)) {
selectedOutputDevice = outputDeviceSetting;
}
}
for(var i = 0; i < outputDevices.length; i++) { for(var i = 0; i < outputDevices.length; i++) {
var thisDeviceSelected = (outputDevices[i] == selectedOutputDevice); var thisDeviceSelected = (outputDevices[i] == selectedOutputDevice);
var menuItem = "Use " + outputDevices[i] + " for Output"; var menuItem = "Use " + outputDevices[i] + " for Output";
@ -67,9 +75,14 @@ function setupAudioMenus() {
Menu.addSeparator("Tools > Audio","Input Audio Device"); Menu.addSeparator("Tools > Audio","Input Audio Device");
var inputDeviceSetting = Settings.getValue(INPUT_DEVICE_SETTING);
var inputDevices = AudioDevice.getInputDevices(); var inputDevices = AudioDevice.getInputDevices();
var selectedInputDevice = AudioDevice.getInputDevice(); var selectedInputDevice = AudioDevice.getInputDevice();
if (inputDevices.indexOf(inputDeviceSetting) != -1 && selectedInputDevice != inputDeviceSetting) {
if (AudioDevice.setInputDevice(inputDeviceSetting)) {
selectedInputDevice = inputDeviceSetting;
}
}
for(var i = 0; i < inputDevices.length; i++) { for(var i = 0; i < inputDevices.length; i++) {
var thisDeviceSelected = (inputDevices[i] == selectedInputDevice); var thisDeviceSelected = (inputDevices[i] == selectedInputDevice);
var menuItem = "Use " + inputDevices[i] + " for Input"; var menuItem = "Use " + inputDevices[i] + " for Input";
@ -85,7 +98,8 @@ function setupAudioMenus() {
} }
} }
setupAudioMenus(); // Have a small delay before the menu's get setup and the audio devices can switch to the last selected ones
Script.setTimeout(function() { setupAudioMenus(); }, 5000);
function scriptEnding() { function scriptEnding() {
Menu.removeMenu("Tools > Audio"); Menu.removeMenu("Tools > Audio");
@ -101,15 +115,18 @@ function menuItemEvent(menuItem) {
Menu.setIsOptionChecked(selectedOutputMenu, false); Menu.setIsOptionChecked(selectedOutputMenu, false);
selectedOutputMenu = menuItem; selectedOutputMenu = menuItem;
Menu.setIsOptionChecked(selectedOutputMenu, true); Menu.setIsOptionChecked(selectedOutputMenu, true);
AudioDevice.setOutputDevice(selectedDevice); if (AudioDevice.setOutputDevice(selectedDevice)) {
Settings.setValue(OUTPUT_DEVICE_SETTING, selectedDevice);
}
} else if (menuItem.endsWith(" for Input")) { } else if (menuItem.endsWith(" for Input")) {
var selectedDevice = menuItem.trimStartsWith("Use ").trimEndsWith(" for Input"); var selectedDevice = menuItem.trimStartsWith("Use ").trimEndsWith(" for Input");
print("input audio selection..." + selectedDevice); print("input audio selection..." + selectedDevice);
Menu.setIsOptionChecked(selectedInputMenu, false); Menu.setIsOptionChecked(selectedInputMenu, false);
selectedInputMenu = menuItem; selectedInputMenu = menuItem;
Menu.setIsOptionChecked(selectedInputMenu, true); Menu.setIsOptionChecked(selectedInputMenu, true);
AudioDevice.setInputDevice(selectedDevice); if (AudioDevice.setInputDevice(selectedDevice)) {
Settings.setValue(INPUT_DEVICE_SETTING, selectedDevice);
}
} }
} }
} }