var player = function() { function playerEditor() { var self = this; var playerpu; var numhosts; function removePlayerDef(event) { if (decodeURIComponent($(event.target).parent().parent().attr('name')) == prefs.currenthost) { infobar.error(language.gettext('error_cantdeleteplayer')); } else { $(event.target).parent().parent().remove(); playerpu.setWindowToContentsSize(); } } function addNewPlayerRow() { $("#playertable").append(''+ ''+ ''+ ''+ ''+ ''+ '
'+ ''+ '' ); numhosts++; $('.clickremhost').off('click').on('click', removePlayerDef); } function updatePlayerChoices() { var newhosts = new Object(); var reloadNeeded = false; var error = false; $("#playertable").find('tr.hostdef').each(function() { var currentname = decodeURIComponent($(this).attr('name')); var newname = ""; var temp = new Object(); $(this).find('input').each(function() { if ($(this).attr('name') == 'name') { newname = $(this).val(); } else { if ($(this).attr('type') == 'checkbox') { temp[$(this).attr('name')] = $(this).is(':checked'); } else { temp[$(this).attr('name')] = $(this).val(); } } }); if (newhosts.hasOwnProperty(newname)) { infobar.error(language.gettext('error_duplicateplayer')); error = true; } newhosts[newname] = temp; if (currentname == prefs.currenthost) { if (newname != currentname) { debug.log("Current Player renamed to "+newname,"PLAYERS"); reloadNeeded = newname; } if (temp.host != prefs.multihosts[prefs.currenthost].host || temp.port != prefs.multihosts[prefs.currenthost].port|| temp.socket != prefs.multihosts[prefs.currenthost].socket || temp.password != prefs.multihosts[prefs.currenthost].password) { debug.log("Current Player connection details changed","PLAYERS"); reloadNeeded = newname; } } }); for (var i in newhosts) { if (prefs.multihosts.hasOwnProperty(i) && prefs.multihosts[i].hasOwnProperty('radioparams')) { newhosts[i].radioparams = prefs.multihosts[i].radioparams; } else { newhosts[i].radioparams = { radiomode: '', radioparam: '', radiomaster: '', radioconsume: 0 } } } if (error) { return false; } debug.log("PLAYERS",newhosts); if (reloadNeeded !== false) { prefs.save({currenthost: reloadNeeded}, function() { prefs.save({multihosts: newhosts}, function() { reloadWindow(); }); }); } else { prefs.save({multihosts: newhosts}); self.replacePlayerOptions(); prefs.setPrefs(); $('[name="playerdefs"] > .savulon').on('click', prefs.toggleRadio); } return true; } this.edit = function() { $("#configpanel").slideToggle('fast'); playerpu = new popup({ css: { width: 900, height: 800 }, fitheight: true, title: language.gettext('config_players'), helplink: "https://fatg3erman.github.io/RompR/Using-Multiple-Players"}); var mywin = playerpu.create(); numhosts = 0; mywin.append('
'); $("#playertable").append('NAMEHOSTPORTPASSWORDUNIX SOCKETSLAVE'); for (var i in prefs.multihosts) { $("#playertable").append(''+ ''+ ''+ ''+ ''+ ''+ '
'+ ''+ '' ); $('#mopidy_slave_'+numhosts).prop('checked', prefs.multihosts[i]['mopidy_slave']); numhosts++; } var buttons = $('
',{class: "pref clearfix"}).appendTo(mywin); var add = $('',{class: "icon-plus smallicon clickicon tleft"}).appendTo(buttons); add.on('click', function() { addNewPlayerRow(); playerpu.setWindowToContentsSize(); }); var c = $('