mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
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:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user