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('
NAME
HOST
PORT
PASSWORD
UNIX SOCKET
SLAVE
');
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 = $('