issue #4 Add option to hide number of enabled styles in active tab from toolbar icon
This commit is contained in:
parent
41fb65c841
commit
ecc3bf18a9
|
@ -145,6 +145,14 @@
|
||||||
"message": "Manage installed styles.",
|
"message": "Manage installed styles.",
|
||||||
"description": "Link to open the manage page."
|
"description": "Link to open the manage page."
|
||||||
},
|
},
|
||||||
|
"optionsHeading": {
|
||||||
|
"message": "Options",
|
||||||
|
"description": "Heading for options section on manage page."
|
||||||
|
},
|
||||||
|
"prefShowBadge": {
|
||||||
|
"message": "Show number of styles active for the current site on the toolbar button",
|
||||||
|
"description": "Label for the checkbox controlling toolbar badge text."
|
||||||
|
},
|
||||||
"sectionAdd": {
|
"sectionAdd": {
|
||||||
"message": "Add another section",
|
"message": "Add another section",
|
||||||
"description": "Label for the button to add a section"
|
"description": "Label for the button to add a section"
|
||||||
|
|
|
@ -3,12 +3,14 @@ chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
|
||||||
case "getStyles":
|
case "getStyles":
|
||||||
getStyles(request, function(r) {
|
getStyles(request, function(r) {
|
||||||
sendResponse(r);
|
sendResponse(r);
|
||||||
if (request.updateBadge) {
|
if (localStorage["show-badge"] == "true") {
|
||||||
var t = getBadgeText(r);
|
if (request.updateBadge) {
|
||||||
console.log("Tab " + sender.tab.id + " (" + sender.tab.url + ") badge text set to '" + t + "'.");
|
var t = getBadgeText(r);
|
||||||
chrome.browserAction.setBadgeText({text: t, tabId: sender.tab.id});
|
console.log("Tab " + sender.tab.id + " (" + sender.tab.url + ") badge text set to '" + t + "'.");
|
||||||
} else {
|
chrome.browserAction.setBadgeText({text: t, tabId: sender.tab.id});
|
||||||
console.log("Tab " + sender.tab.id + " (" + sender.tab.url + ") doesn't get badge text.");
|
} else {
|
||||||
|
console.log("Tab " + sender.tab.id + " (" + sender.tab.url + ") doesn't get badge text.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
|
@ -293,3 +295,5 @@ function getDomains(url) {
|
||||||
return domains;
|
return domains;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the DB so that any first run actions will be performed immediately when the background page loads.
|
||||||
|
getDatabase(function() {}, reportError);
|
||||||
|
|
|
@ -97,6 +97,10 @@
|
||||||
<p id="manage-text"></p>
|
<p id="manage-text"></p>
|
||||||
<p><button id="check-all-updates"></button></p>
|
<p><button id="check-all-updates"></button></p>
|
||||||
<p><a href="edit.html"><button id="add-style-label"></button></a></p>
|
<p><a href="edit.html"><button id="add-style-label"></button></a></p>
|
||||||
|
<div id="options">
|
||||||
|
<h2 id="options-heading"></h2>
|
||||||
|
<input id="show-badge" type="checkbox"><label id="show-badge-label" for="show-badge"></label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="installed"></div>
|
<div id="installed"></div>
|
||||||
|
|
||||||
|
|
29
manage.js
29
manage.js
|
@ -14,6 +14,8 @@ function showStyles(styles) {
|
||||||
styles.map(createStyleElement).forEach(function(e) {
|
styles.map(createStyleElement).forEach(function(e) {
|
||||||
installed.appendChild(e);
|
installed.appendChild(e);
|
||||||
});
|
});
|
||||||
|
// prefs may be defaulted in storage.js - at this point they'll have been loaded
|
||||||
|
loadPrefs();
|
||||||
}
|
}
|
||||||
|
|
||||||
function createStyleElement(style) {
|
function createStyleElement(style) {
|
||||||
|
@ -342,10 +344,37 @@ function getType(o) {
|
||||||
throw "Not supported - " + o;
|
throw "Not supported - " + o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isCheckbox(el) {
|
||||||
|
return el.nodeName.toLowerCase() == "input" && "checkbox" == el.type.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
function changePref(event) {
|
||||||
|
var el = event.target;
|
||||||
|
localStorage[el.id] = isCheckbox(el) ? el.checked : el.value;
|
||||||
|
notifyAllTabs({method: "prefChanged"});
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadPrefs() {
|
||||||
|
["show-badge"].forEach(function(id) {
|
||||||
|
var value = localStorage[id];
|
||||||
|
var el = document.getElementById(id);
|
||||||
|
if (isCheckbox(el)) {
|
||||||
|
if (value == "true") {
|
||||||
|
el.checked = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
el.value = value;
|
||||||
|
}
|
||||||
|
el.addEventListener("change", changePref);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
document.title = t("manageTitle");
|
document.title = t("manageTitle");
|
||||||
tE("manage-heading", "manageHeading");
|
tE("manage-heading", "manageHeading");
|
||||||
tE("manage-text", "manageText", null, false);
|
tE("manage-text", "manageText", null, false);
|
||||||
tE("check-all-updates", "checkAllUpdates");
|
tE("check-all-updates", "checkAllUpdates");
|
||||||
tE("add-style-label", "addStyleLabel");
|
tE("add-style-label", "addStyleLabel");
|
||||||
|
tE("options-heading", "optionsHeading");
|
||||||
|
tE("show-badge-label", "prefShowBadge");
|
||||||
|
|
||||||
document.getElementById("check-all-updates").addEventListener("click", checkUpdateAll, false);
|
document.getElementById("check-all-updates").addEventListener("click", checkUpdateAll, false);
|
||||||
|
|
14
messaging.js
14
messaging.js
|
@ -10,11 +10,15 @@ function notifyAllTabs(request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateBadgeText(tab) {
|
function updateBadgeText(tab) {
|
||||||
chrome.extension.sendMessage({method: "getStyles", matchUrl: tab.url, enabled: true}, function(styles) {
|
if (localStorage["show-badge"] == "true") {
|
||||||
var t = getBadgeText(styles);
|
chrome.extension.sendMessage({method: "getStyles", matchUrl: tab.url, enabled: true}, function(styles) {
|
||||||
console.log("Tab " + tab.id + " (" + tab.url + ") badge text set to '" + t + "'.");
|
var t = getBadgeText(styles);
|
||||||
chrome.browserAction.setBadgeText({text: t, tabId: tab.id});
|
console.log("Tab " + tab.id + " (" + tab.url + ") badge text set to '" + t + "'.");
|
||||||
});
|
chrome.browserAction.setBadgeText({text: t, tabId: tab.id});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
chrome.browserAction.setBadgeText({text: "", tabId: tab.id});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBadgeText(styles) {
|
function getBadgeText(styles) {
|
||||||
|
|
12
storage.js
12
storage.js
|
@ -1,6 +1,7 @@
|
||||||
var stylishDb = null;
|
var stylishDb = null;
|
||||||
function getDatabase(ready, error) {
|
function getDatabase(ready, error) {
|
||||||
if (stylishDb != null) {
|
console.log("getting tha db");
|
||||||
|
if (stylishDb != null && stylishDb.version == "1.5") {
|
||||||
ready(stylishDb);
|
ready(stylishDb);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -57,19 +58,22 @@ function dbV13(d, error, done) {
|
||||||
// clear out orphans
|
// clear out orphans
|
||||||
t.executeSql('DELETE FROM section_meta WHERE section_id IN (SELECT sections.id FROM sections LEFT JOIN styles ON styles.id = sections.style_id WHERE styles.id IS NULL);');
|
t.executeSql('DELETE FROM section_meta WHERE section_id IN (SELECT sections.id FROM sections LEFT JOIN styles ON styles.id = sections.style_id WHERE styles.id IS NULL);');
|
||||||
t.executeSql('DELETE FROM sections WHERE id IN (SELECT sections.id FROM sections LEFT JOIN styles ON styles.id = sections.style_id WHERE styles.id IS NULL);');
|
t.executeSql('DELETE FROM sections WHERE id IN (SELECT sections.id FROM sections LEFT JOIN styles ON styles.id = sections.style_id WHERE styles.id IS NULL);');
|
||||||
}, error, function() { done(d)});
|
}, error, function() { dbV14(d, error, done)});
|
||||||
}
|
}
|
||||||
|
|
||||||
function dbV14(d, error, done) {
|
function dbV14(d, error, done) {
|
||||||
d.changeVersion(d.version, '1.4', function (t) {
|
d.changeVersion(d.version, '1.4', function (t) {
|
||||||
t.executeSql('UPDATE styles SET url = null WHERE url = "undefined";');
|
t.executeSql('UPDATE styles SET url = null WHERE url = "undefined";');
|
||||||
}, error, function() { done(d)});
|
}, error, function() { dbV15(d, error, done)});
|
||||||
}
|
}
|
||||||
|
|
||||||
function dbV15(d, error, done) {
|
function dbV15(d, error, done) {
|
||||||
|
if (!("show-badge" in localStorage)) {
|
||||||
|
localStorage["show-badge"] = true;
|
||||||
|
}
|
||||||
d.changeVersion(d.version, '1.5', function (t) {
|
d.changeVersion(d.version, '1.5', function (t) {
|
||||||
t.executeSql('ALTER TABLE styles ADD COLUMN originalMd5 TEXT NULL;');
|
t.executeSql('ALTER TABLE styles ADD COLUMN originalMd5 TEXT NULL;');
|
||||||
}, error, function() { done(d)});
|
}, error, function() { done(d, error, done)});
|
||||||
}
|
}
|
||||||
|
|
||||||
function enableStyle(id, enabled) {
|
function enableStyle(id, enabled) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user