From 5ade017c37f874059c4a950abc912db0986e88d9 Mon Sep 17 00:00:00 2001 From: "matt%netscape.com" Date: Fri, 11 May 2001 04:16:35 +0000 Subject: [PATCH] added code to set search engine. r=mcafee sr=alecf http://bugzilla.mozilla.org/show_bug.cgi?id=73238 http://bugzilla.mozilla.org/show_bug.cgi?id=76544 --- .../search/resources/search-panel.js | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/xpfe/components/search/resources/search-panel.js b/xpfe/components/search/resources/search-panel.js index d1fe9974a3d4..be5761475f7f 100644 --- a/xpfe/components/search/resources/search-panel.js +++ b/xpfe/components/search/resources/search-panel.js @@ -133,6 +133,47 @@ function updateSearchMode() return searchMode; } +function readRDFString(aDS,aRes,aProp) { + var n = aDS.GetTarget(aRes, aProp, true); + if (n) + return n.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; +} + + +function ensureDefaultEnginePrefs(aRDF,aDS) + { + + mPrefs = Components.classes["@mozilla.org/preferences;1"].getService(Components.interfaces.nsIPrefBranch); + var defaultName = mPrefs.getComplexValue("browser.search.defaultenginename" , Components.interfaces.nsIPrefLocalizedString); + kNC_Root = aRDF.GetResource("NC:SearchEngineRoot"); + kNC_child = aRDF.GetResource("http://home.netscape.com/NC-rdf#child"); + kNC_Name = aRDF.GetResource("http://home.netscape.com/NC-rdf#Name"); + + var arcs = aDS.GetTargets(kNC_Root, kNC_child, true); + while (arcs.hasMoreElements()) { + var engineRes = arcs.getNext().QueryInterface(Components.interfaces.nsIRDFResource); + var name = readRDFString(aDS, engineRes, kNC_Name); + if (name == defaultName) + mPrefs.setCharPref("browser.search.defaultengine", engineRes.Value); + } + } + + +function ensureSearchPref() { + + + var rdf = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + mPrefs = Components.classes["@mozilla.org/preferences;1"].getService(Components.interfaces.nsIPrefBranch); + var ds = rdf.GetDataSource("rdf:internetsearch"); + kNC_Name = rdf.GetResource("http://home.netscape.com/NC-rdf#Name"); + try { + defaultEngine = mPrefs.getCharPref("browser.search.defaultengine"); + } catch(ex) { + ensureDefaultEnginePrefs(rdf, ds); + defaultEngine = mPrefs.getCharPref("browser.search.defaultengine"); + } + } + // Initialize the Search panel: // 1) init the category list // 2) load the search engines associated with this category @@ -145,7 +186,9 @@ function SearchPanelStartup() rootNode = rdf.GetResource("NC:LastSearchRoot", true); textArc = rdf.GetResource("http://home.netscape.com/NC-rdf#LastText", true); modeArc = rdf.GetResource("http://home.netscape.com/NC-rdf#SearchMode", true); - + + ensureSearchPref() + var tree = document.getElementById("Tree"); tree.database.AddObserver(RDF_observer);