Move remaining loot.js code

Temporarily moved to helpers.js as free functions until a suitable
object can be identified.
This commit is contained in:
Oliver Hamlet
2016-01-06 18:26:57 +00:00
parent 19cfe655fe
commit 17aec47564
4 changed files with 77 additions and 90 deletions
+3 -2
View File
@@ -478,17 +478,18 @@ function onCloseSettingsDialog(evt) {
loot.query(request).then(function(result){
try {
loot.installedGames = JSON.parse(result);
setInstalledGames(JSON.parse(result));
} catch (e) {
console.log(e);
console.log('getInstalledGames response: ' + results[1]);
}
loot.settings = settings;
updateSettingsUI();
}).catch(processCefError);
} else {
/* Re-apply the existing settings to the settings dialog elements. */
loot.updateSettingsUI();
updateSettingsUI();
}
evt.target.parentElement.close();
}
+71
View File
@@ -1,3 +1,4 @@
'use strict';
function processCefError(err) {
/* Error.stack seems to be Chromium-specific. It gives a lot more useful
info than just the error message. Also, this can be used to catch any
@@ -157,3 +158,73 @@ function updateSelectedGame(gameFolder) {
}
}
}
/* Call whenever installedGames is changed or game menu is rewritten. */
function updateEnabledGames(installedGames) {
/* Update the disabled games in the game menu. */
var gameMenuItems = document.getElementById('gameMenu').children;
for (var i = 0; i < gameMenuItems.length; ++i) {
if (installedGames.indexOf(gameMenuItems[i].getAttribute('value')) == -1) {
gameMenuItems[i].setAttribute('disabled', true);
gameMenuItems[i].removeEventListener('click', onChangeGame, false);
} else {
gameMenuItems[i].removeAttribute('disabled');
gameMenuItems[i].addEventListener('click', onChangeGame, false);
}
}
}
function setInstalledGames(installedGames) {
loot.installedGames = installedGames;
updateEnabledGames(installedGames);
}
/* Call whenever settings are changed. */
function updateSettingsUI() {
var gameSelect = document.getElementById('defaultGameSelect');
var gameMenu = document.getElementById('gameMenu');
var gameTable = document.getElementById('gameTable');
/* First make sure game listing elements don't have any existing entries. */
while (gameSelect.children.length > 1) {
gameSelect.removeChild(gameSelect.lastElementChild);
}
while (gameMenu.firstElementChild) {
gameMenu.firstElementChild.removeEventListener('click', onChangeGame, false);
gameMenu.removeChild(gameMenu.firstElementChild);
}
gameTable.clear();
/* Now fill with new values. */
loot.settings.games.forEach(function(game){
var menuItem = document.createElement('paper-item');
menuItem.setAttribute('value', game.folder);
menuItem.setAttribute('noink', '');
menuItem.textContent = game.name;
gameMenu.appendChild(menuItem);
gameSelect.appendChild(menuItem.cloneNode(true));
var row = gameTable.addRow(game);
gameTable.setReadOnly(row, ['name','folder','type']);
});
gameSelect.value = loot.settings.game;
document.getElementById('languageSelect').value = loot.settings.language;
document.getElementById('enableDebugLogging').checked = loot.settings.enableDebugLogging;
document.getElementById('updateMasterlist').checked = loot.settings.updateMasterlist;
updateEnabledGames(loot.installedGames);
updateSelectedGame(loot.game.folder);
}
/* Returns a cefQuery as a Promise. */
var loot = loot || {};
loot.query = function query(request) {
return new Promise(function(resolve, reject) {
window.cefQuery({
request: request,
persistent: false,
onSuccess: resolve,
onFailure: function(errorCode, errorMessage) {
reject(Error('Error code: ' + errorCode + '; ' + errorMessage))
}
});
});
}
+3 -6
View File
@@ -172,7 +172,7 @@ function initVars() {
select.setAttribute('value', select.firstElementChild.getAttribute('value'));
try {
loot.installedGames = JSON.parse(results[1]);
setInstalledGames(JSON.parse(results[1]));
} catch (e) {
console.log(e);
console.log('getInstalledGames response: ' + results[1]);
@@ -180,6 +180,7 @@ function initVars() {
try {
loot.settings = JSON.parse(results[2]);
updateSettingsUI();
restoreFilterStates();
} catch (e) {
console.log(e);
@@ -191,7 +192,7 @@ function initVars() {
loot.l10n.load().then(() => {
loot.translateStaticText(loot.l10n);
/* Also need to update the settings UI. */
loot.updateSettingsUI();
updateSettingsUI();
}).catch(processCefError);
}).then(function(){
if (result) {
@@ -231,10 +232,6 @@ window.addEventListener('polymer-ready', function(e) {
/* Set the plugin list's scroll target to its parent. */
document.getElementById('main').lastElementChild.scrollTarget = document.getElementById('main');
/* Register object observers. */
Object.observe(loot, loot.observer);
Object.observe(loot.game, loot.gameObserver);
/* Make sure settings are what I want. */
marked.setOptions({
gfm: true,
-82
View File
@@ -1,82 +0,0 @@
var loot = {
installedGames: [],
settings: {},
/* Call whenever installedGames is changed or game menu is rewritten. */
updateEnabledGames: function() {
/* Update the disabled games in the game menu. */
var gameMenuItems = document.getElementById('gameMenu').children;
for (var i = 0; i < gameMenuItems.length; ++i) {
if (this.installedGames.indexOf(gameMenuItems[i].getAttribute('value')) == -1) {
gameMenuItems[i].setAttribute('disabled', true);
gameMenuItems[i].removeEventListener('click', onChangeGame, false);
} else {
gameMenuItems[i].removeAttribute('disabled');
gameMenuItems[i].addEventListener('click', onChangeGame, false);
}
}
},
/* Call whenever settings are changed. */
updateSettingsUI: function() {
var gameSelect = document.getElementById('defaultGameSelect');
var gameMenu = document.getElementById('gameMenu');
var gameTable = document.getElementById('gameTable');
/* First make sure game listing elements don't have any existing entries. */
while (gameSelect.children.length > 1) {
gameSelect.removeChild(gameSelect.lastElementChild);
}
while (gameMenu.firstElementChild) {
gameMenu.firstElementChild.removeEventListener('click', onChangeGame, false);
gameMenu.removeChild(gameMenu.firstElementChild);
}
gameTable.clear();
/* Now fill with new values. */
this.settings.games.forEach(function(game){
var menuItem = document.createElement('paper-item');
menuItem.setAttribute('value', game.folder);
menuItem.setAttribute('noink', '');
menuItem.textContent = game.name;
gameMenu.appendChild(menuItem);
gameSelect.appendChild(menuItem.cloneNode(true));
var row = gameTable.addRow(game);
gameTable.setReadOnly(row, ['name','folder','type']);
});
gameSelect.value = this.settings.game;
document.getElementById('languageSelect').value = this.settings.language;
document.getElementById('enableDebugLogging').checked = this.settings.enableDebugLogging;
document.getElementById('updateMasterlist').checked = this.settings.updateMasterlist;
this.updateEnabledGames();
updateSelectedGame(this.game.folder);
},
/* Observer for loot members. */
observer: function(changes) {
changes.forEach(function(change){
if (change.name == 'installedGames') {
change.object.updateEnabledGames();
} else if (change.name == 'settings') {
change.object.updateSettingsUI();
}
});
},
/* Returns a cefQuery as a Promise. */
query: function(request) {
return new Promise(function(resolve, reject) {
window.cefQuery({
request: request,
persistent: false,
onSuccess: resolve,
onFailure: function(errorCode, errorMessage) {
reject(Error('Error code: ' + errorCode + '; ' + errorMessage))
}
});
});
}
};