From d3ac1ce74477725129438c9d5e2591f33096114b Mon Sep 17 00:00:00 2001 From: fmaheux Date: Mon, 4 Mar 2019 18:41:02 -0500 Subject: [PATCH] Invert page and/or images independently --- src/background.js | 27 +++++++++++++++------------ src/manifest.json | 4 ++-- src/options.html | 6 ++++-- src/options.js | 17 ++++++++++++----- 4 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/background.js b/src/background.js index 934ca1e..e276849 100644 --- a/src/background.js +++ b/src/background.js @@ -3,20 +3,21 @@ function nullFunc() { function setColors(tabId) { browser.storage.local.get().then((res) => { - setColorsToState(tabId, res.InvertColorsState, res.ImgColorNoInvert); + setColorsToState(tabId, res.InvertColorsState, res.InvertPage, res.InvertImage); }); } -function setColorsToState(tabId, state, imgNoInvert) { +function setColorsToState(tabId, state, invertPage, invertImage) { if (state == true) { - invertColors(tabId); - if (imgNoInvert) invertImg(tabId); + if (invertPage) invertColors(tabId); + if (invertImage != invertPage) invertImg(tabId); } else { revertImg(tabId); revertColors(tabId); } browser.sessions.setTabValue(tabId, "invertColors", state).then(nullFunc(), nullFunc()); - browser.sessions.setTabValue(tabId, "imgNoInvert", imgNoInvert).then(nullFunc(), nullFunc()); + browser.sessions.setTabValue(tabId, "invertPage", invertPage).then(nullFunc(), nullFunc()); + browser.sessions.setTabValue(tabId, "invertImage", invertImage).then(nullFunc(), nullFunc()); } function toggleColors(obj, tab) { @@ -24,9 +25,11 @@ function toggleColors(obj, tab) { if (tab) { browser.sessions.getTabValue(tab.id, "invertColors").then( tabState => { tabState = !tabState; - browser.sessions.getTabValue(tab.id, "imgNoInvert").then( imgNoInvert => { - setColorsToState(tab.id, tabState, res.ImgColorNoInvert); - setPageIconState(tab, tabState); + browser.sessions.getTabValue(tab.id, "invertPage").then( invertPage => { + browser.sessions.getTabValue(tab.id, "invertImage").then( invertImage => { + setColorsToState(tab.id, tabState, res.InvertPage, res.InvertImage); + setPageIconState(tab, tabState); + }, nullFunc()); }, nullFunc()); }, nullFunc()); } else { @@ -34,11 +37,11 @@ function toggleColors(obj, tab) { state = obj != false ? !state : state; setIconState(state); - browser.storage.local.set({ InvertColorsState: state, ImgColorNoInvert: res.ImgColorNoInvert }); + browser.storage.local.set({ InvertColorsState: state, InvertPage: res.InvertPage, InvertImage: res.InvertImage }); browser.tabs.query({}).then((tabs) => { for (var tab of tabs) { - setColorsToState(tab.id, state, res.ImgColorNoInvert); + setColorsToState(tab.id, state, res.InvertPage, res.InvertImage); }; }); } @@ -99,14 +102,14 @@ function handleUpdated(tabId, changeInfo, tabInfo) { function handleStorageUpdate(changes, area) { if (area == "local") { for (var item of Object.keys(changes)) { - if (item == "InvertColorsState" || item == "ImgColorNoInvert") { + if (item == "InvertColorsState" || item == "InvertPageOnly" || item == "InvertPageAndImage" || item == "InvertImageOnly") { browser.storage.local.get().then((res) => { var state = res.InvertColorsState ? res.InvertColorsState : false; setIconState(state); browser.tabs.query({}).then((tabs) => { for (var tab of tabs) { - setColorsToState(tab.id, state, res.ImgColorNoInvert); + setColorsToState(tab.id, state, res.InvertPage, res.InvertImage); }; }); }); diff --git a/src/manifest.json b/src/manifest.json index 2fb4415..22b07b5 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -3,7 +3,7 @@ "name": "Invert Colors", "version": "0.1.6.1", "author": "Max Badran", - "description": "A simple add-on that inverts the page colors.", + "description": "A simple add-on that inverts page and/or image colors.", "homepage_url": "https://github.com/Max-Github/FireFoxInvertColors", "background": { "scripts": [ @@ -48,4 +48,4 @@ "contextMenus", "" ] -} \ No newline at end of file +} diff --git a/src/options.html b/src/options.html index 4104b2a..2829ee4 100644 --- a/src/options.html +++ b/src/options.html @@ -10,8 +10,10 @@
- - +
+ Pages only
+ Pages and images
+ Images only

diff --git a/src/options.js b/src/options.js index a515759..b3c71df 100644 --- a/src/options.js +++ b/src/options.js @@ -1,21 +1,28 @@ function loadOptions() { browser.storage.local.get().then((res) => { - showOption(res.InvertColorsState, res.ImgColorNoInvert); + showOption(res.InvertColorsState, res.InvertPage, res.InvertImage); }); } -function showOption(state, imgNoInvert) { +function showOption(state, invertPage, invertImage) { document.querySelector("#InvertColorsState").checked = state; - document.querySelector('#ImgColorNoInvert').checked = imgNoInvert; + if (invertPage && !invertImage || !invertPage && !invertImage) + document.querySelector('input[name=InvertItems]:checked').value = "InvertPageOnly"; + if (invertPage && invertImage) + document.querySelector('input[name=InvertItems]:checked').value = "InvertPageAndImage"; + if (!invertPage && invertImage) + document.querySelector('input[name=InvertItems]:checked').value = "InvertImageOnly"; } function updateOptions(e) { browser.storage.local.set({ InvertColorsState: document.querySelector('#InvertColorsState').checked, - ImgColorNoInvert: document.querySelector('#ImgColorNoInvert').checked + InvertPage: document.querySelector('input[name=InvertItems]:checked').value == "InvertPageAndImage" + || document.querySelector('input[name=InvertItems]:checked').value == "InvertPageOnly", + InvertImage: document.querySelector('input[name=InvertItems]:checked').value == "InvertPageAndImage" + || document.querySelector('input[name=InvertItems]:checked').value == "InvertImageOnly" }); - e.preventDefault(); }