Bug 730445 - Add UI to specify a default search engine. r=mfinkle

This commit is contained in:
Margaret Leibovic 2013-04-12 12:03:43 -07:00
parent 9542fc882f
commit e21cd12cb8
4 changed files with 45 additions and 0 deletions

View File

@ -41,6 +41,7 @@ var ContextMenus = {
document.getElementById("contextmenu-enable").setAttribute("hidden", "true");
document.getElementById("contextmenu-disable").setAttribute("hidden", "true");
document.getElementById("contextmenu-uninstall").setAttribute("hidden", "true");
document.getElementById("contextmenu-default").setAttribute("hidden", "true");
return;
}
@ -58,6 +59,12 @@ var ContextMenus = {
document.getElementById("contextmenu-enable").removeAttribute("hidden");
document.getElementById("contextmenu-disable").setAttribute("hidden", "true");
}
if (addon.type == "search") {
document.getElementById("contextmenu-default").removeAttribute("hidden");
} else {
document.getElementById("contextmenu-default").setAttribute("hidden", "true");
}
},
enable: function(event) {
@ -74,6 +81,11 @@ var ContextMenus = {
Addons.uninstall(this.target.addon);
this.target = null;
},
setDefaultSearch: function(event) {
Addons.setDefaultSearch(this.target.addon);
this.target = null;
}
}
function init() {
@ -316,6 +328,18 @@ var Addons = {
else
uninstallBtn.removeAttribute("disabled");
let defaultButton = document.getElementById("default-btn");
if (addon.type == "search") {
if (addon.id == Services.search.defaultEngine.name)
defaultButton.setAttribute("disabled", "true");
else
defaultButton.removeAttribute("disabled");
defaultButton.removeAttribute("hidden");
} else {
defaultButton.setAttribute("hidden", "true");
}
let box = document.querySelector("#addons-details > .addon-item .options-box");
box.innerHTML = "";
@ -479,6 +503,20 @@ var Addons = {
listItem.setAttribute("opType", opType);
},
setDefaultSearch: function setDefaultSearch(aAddon) {
let addon = aAddon || document.querySelector("#addons-details > .addon-item").addon;
if (addon.type != "search")
return;
let engine = Services.search.getEngineByName(addon.id);
// Move the new default search engine to the top of the search engine list.
Services.search.moveEngine(engine, 0);
Services.search.defaultEngine = engine;
document.getElementById("default-btn").setAttribute("disabled", "true");
},
showRestart: function showRestart() {
this._restartCount++;
gChromeWin.XPInstallObserver.showRestartPrompt();

View File

@ -57,6 +57,7 @@
<menuitem id="contextmenu-enable" label="&addonAction.enable;" onclick="ContextMenus.enable();"></menuitem>
<menuitem id="contextmenu-disable" label="&addonAction.disable;" onclick="ContextMenus.disable();"></menuitem>
<menuitem id="contextmenu-uninstall" label="&addonAction.uninstall;" onclick="ContextMenus.uninstall();"></menuitem>
<menuitem id="contextmenu-default" label="&addonAction.setDefault;" onclick="ContextMenus.setDefaultSearch();"></menuitem>
</menu>
<div id="addons-header" class="header">
@ -83,6 +84,7 @@
<button id="disable-btn" class="show-on-enable hide-on-disable hide-on-uninstall" onclick="Addons.disable();">&addonAction.disable;</button>
<button id="uninstall-btn" class="hide-on-uninstall" onclick="Addons.uninstall();">&addonAction.uninstall;</button>
<button id="cancel-btn" class="show-on-uninstall" onclick="Addons.cancelUninstall();">&addonAction.undo;</button>
<button id="default-btn" class="show-on-enable hide-on-disable hide-on-uninstall" onclick="Addons.setDefaultSearch();">&addonAction.setDefault;</button>
</div>
<div class="options-header">&aboutAddons.options;</div>
<div class="options-box"></div>

View File

@ -10,3 +10,4 @@
<!ENTITY addonAction.disable "Disable">
<!ENTITY addonAction.uninstall "Uninstall">
<!ENTITY addonAction.undo "Undo">
<!ENTITY addonAction.setDefault "Set as Default">

View File

@ -113,6 +113,10 @@ body[dir="ltr"] .icon {
color: #b5b5b5;
}
.buttons > button[hidden="true"] {
display: none;
}
.buttons:first-child {
-moz-border-start-color: transparent;
}