/*!
@file textChannelPI.js
@brief Contains PI for Text Channel action
@author Andrew story
@copyright (c) 2023, Corsair Memory, Inc. All Rights Reserved.
*/
function SetAudioDevicePI(inContext, inLanguage) {
// Inherit from PI
PI.call(this, inContext, inLanguage);
// Save a copy of a method
var piSaveSettings = this.saveSettings;
this.defaultName = "Default";
// Add fields
var fields =`
`;
document.getElementById('placeholder').innerHTML = fields;
const els = {
"mode": document.getElementById('select-mode'),
"input": document.getElementById("input"),
"output": document.getElementById("output"),
};
const containers = {
"mode": document.getElementById("mode"),
"input": document.getElementById("input-selection"),
"output": document.getElementById("output-selection")
};
this.refreshElements = function(){
const modeSelected = els.mode.value;
if (!modeSelected){
containers.input.style.display = "none";
containers.output.style.display = "none";
return;
}
if( els.mode.value == "input"){
containers.input.style.removeProperty("display");
containers.output.style.display = "none";
}
else if (els.mode.value == "output"){
containers.output.style.removeProperty("display");
containers.input.style.display = "none";
}
else if (els.mode.value == "both") {
containers.output.style.removeProperty("display");
containers.input.style.removeProperty("display");
}
};
els.mode.addEventListener("change", () => {
settings['mode'] = els.mode.value;
this.refreshElements();
piSaveSettings();
});
els.output.addEventListener("change", () => {
settings['output'] = els.output.value;
settings['outputname'] = els.output.options[els.output.selectedIndex].innerText;
this.refreshElements();
piSaveSettings();
});
els.input.addEventListener("change", () => {
settings['input'] = els.input.value;
settings['inputname'] = els.input.options[els.input.selectedIndex].innerText;
piSaveSettings();
});
els.mode.value = settings['mode'];
els.output.value = settings['output'] || "no-output";
els.input.value = settings['input'] || "no-input";
this.refreshElements();
// Before overwriting parrent method, save a copy of it
var piLoad = this.load;
// Public function called to load the fields
this.load = function (data) {
// Call PI load method
piLoad.call(this, data);
// If action enabled
if (!data.disabled && !data.unauthorized) {
this.updateName("input", "inputname", els.input);
this.updateName("output", "outputname", els.output);
let defaultsInput = {key: "default", value: this.defaultName};
let defaultsOutput = {key: "default", value: this.defaultName};
if(settings["input"]){
defaultsInput = {key: settings["input"], value: settings["inputname"]};
}
if(settings["output"]){
defaultsOutput = {key: settings["output"], value: settings["outputname"]};
}
this.loadField('input', data.inputs, defaultsInput);
this.loadField('output', data.outputs, defaultsOutput);
els.mode.value = settings['mode'];
}
// Enable / Disable the fields
els.mode.disabled = data.disabled || data.unauthorized;
els.output.disabled = data.disabled || data.unauthorized;
els.input.disabled = data.disabled || data.unauthorized;
this.refreshElements();
// Show PI
document.getElementById('pi').style.display = "block";
}
/* --- Localization --- */
// Before overwriting parent method, save a copy of it
var piLocalize = this.localize;
// Localize the UI
this.localize = function (tr) {
// Call PIs localize method
piLocalize.call(this, tr);
// Capture default name for IO device
this.defaultName = tr("IODeviceDefault") || "Default";
};
}