Implemented filter memory for checkbox filters.

This commit is contained in:
Oliver Hamlet
2015-05-25 10:28:42 +01:00
parent 492d8abaac
commit 1f227ddd55
4 changed files with 70 additions and 0 deletions
+18
View File
@@ -1,3 +1,13 @@
function saveFilterState(evt) {
var request = JSON.stringify({
name: 'saveFilterState',
args: [
evt.target.id,
evt.target.checked,
]
});
loot.query(request).catch(processCefError);
}
function onToggleDisplayCSS(evt) {
var attr = 'data-hide-' + evt.target.getAttribute('data-class');
if (evt.target.checked) {
@@ -644,13 +654,21 @@ function onContentRefresh(evt) {
function setupEventHandlers() {
/*Set up handlers for filters.*/
document.getElementById('hideVersionNumbers').addEventListener('change', onToggleDisplayCSS, false);
document.getElementById('hideVersionNumbers').addEventListener('change', saveFilterState, false);
document.getElementById('hideCRCs').addEventListener('change', onToggleDisplayCSS, false);
document.getElementById('hideCRCs').addEventListener('change', saveFilterState, false);
document.getElementById('hideBashTags').addEventListener('change', onToggleBashTags, false);
document.getElementById('hideBashTags').addEventListener('change', saveFilterState, false);
document.getElementById('hideNotes').addEventListener('change', setFilteredUIData, false);
document.getElementById('hideNotes').addEventListener('change', saveFilterState, false);
document.getElementById('hideDoNotCleanMessages').addEventListener('change', setFilteredUIData, false);
document.getElementById('hideDoNotCleanMessages').addEventListener('change', saveFilterState, false);
document.getElementById('hideInactivePlugins').addEventListener('change', setFilteredUIData, false);
document.getElementById('hideInactivePlugins').addEventListener('change', saveFilterState, false);
document.getElementById('hideAllPluginMessages').addEventListener('change', setFilteredUIData, false);
document.getElementById('hideAllPluginMessages').addEventListener('change', saveFilterState, false);
document.getElementById('hideMessagelessPlugins').addEventListener('change', setFilteredUIData, false);
document.getElementById('hideMessagelessPlugins').addEventListener('change', saveFilterState, false);
document.body.addEventListener('loot-filter-conflicts', onConflictsFilter, false);
/* Set up event handlers for content filter. */
+34
View File
@@ -213,3 +213,37 @@ function setFilteredUIData() {
}
});
}
function restoreFilterStates() {
if (loot.settings.filters) {
//document.getElementById('searchBox').value = loot.settings.filters.content;
document.getElementById('hideMessagelessPlugins').checked = loot.settings.filters.hideMessagelessPlugins;
document.getElementById('hideInactivePlugins').checked = loot.settings.filters.hideInactivePlugins;
document.getElementById('hideNotes').checked = loot.settings.filters.hideNotes;
document.getElementById('hideDoNotCleanMessages').checked = loot.settings.filters.hideDoNotCleanMessages;
document.getElementById('hideAllPluginMessages').checked = loot.settings.filters.hideAllPluginMessages;
document.getElementById('hideVersionNumbers').checked = loot.settings.filters.hideVersionNumbers;
document.getElementById('hideCRCs').checked = loot.settings.filters.hideCRCs;
document.getElementById('hideBashTags').checked = loot.settings.filters.hideBashTags;
if (loot.settings.filters.hideMessagelessPlugins
|| loot.settings.filters.hideInactivePlugins
|| loot.settings.filters.hideNotes
|| loot.settings.filters.hideDoNotCleanMessages
|| loot.settings.filters.hideAllPluginMessages) {
setFilteredUIData();
}
if (loot.settings.filters.hideVersionNumbers) {
document.getElementById('hideVersionNumbers').dispatchEvent(new Event('change'));
}
if (loot.settings.filters.hideCRCs) {
document.getElementById('hideCRCs').dispatchEvent(new Event('change'));
}
if (loot.settings.filters.hideBashTags) {
document.getElementById('hideBashTags').dispatchEvent(new Event('change'));
}
}
}
+1
View File
@@ -133,6 +133,7 @@ function initVars() {
try {
loot.settings = JSON.parse(results[2]);
restoreFilterStates();
} catch (e) {
console.log(e);
console.log('getSettings response: ' + results[2]);
+17
View File
@@ -323,6 +323,23 @@ namespace loot {
}
return true;
}
else if (requestName == "saveFilterState") {
// Has two args: the first is the filter ID, the second is the value.
BOOST_LOG_TRIVIAL(trace) << "Saving filter states.";
try {
YAML::Node settings = g_app_state.GetSettings();
settings["filters"][request["args"][0].as<string>()] = request["args"][1];
g_app_state.UpdateSettings(settings);
callback->Success("");
}
catch (exception &e) {
BOOST_LOG_TRIVIAL(error) << e.what();
callback->Failure(-1, e.what());
}
return true;
}
return false;
}