diff --git a/resources/report/js/events.js b/resources/report/js/events.js index 37627641..665712e5 100644 --- a/resources/report/js/events.js +++ b/resources/report/js/events.js @@ -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. */ diff --git a/resources/report/js/filters.js b/resources/report/js/filters.js index 27fa7730..5071f7ac 100644 --- a/resources/report/js/filters.js +++ b/resources/report/js/filters.js @@ -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')); + } + } +} diff --git a/resources/report/js/init.js b/resources/report/js/init.js index d502e948..3dadf5d6 100644 --- a/resources/report/js/init.js +++ b/resources/report/js/init.js @@ -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]); diff --git a/src/gui/handler.cpp b/src/gui/handler.cpp index c7a3565c..bd44dcc1 100644 --- a/src/gui/handler.cpp +++ b/src/gui/handler.cpp @@ -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()] = 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; }