--- a/ginebra/chrome/bedrockchrome/urlsearch.snippet/urlsearch.js Fri May 14 15:40:36 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,567 +0,0 @@
-/*!
- \file urlsearch.js This module contains the UrlSearch class.
-*/
-
-var enumObj = new Object();
-enumObj.state = {Loading:0, Editing:1, Reloadable:2}
-
-/* The following "classes" are psudo classes since javascript doesn't have
- true classes. The prototype object is a property of all JavaScript
- objects and can be used to impart properties to each instance of a
- class - these properties become public and can't access private class
- members. Another way to create a public method is to add code like the
- following inside of the class constructor.
-
- // create a public method named clearPBar
- this.clearPBar = function()
- {
- }
-
- Methods created this way can access private members. Syntax-wise,
- private member variables and methods are created in the usual fasion but
- within the class constructor. Semantically they are simulated in JavaScript
- using closures.
-*/
-
-/*!
- Class to handle displaying and updating the URL search bar. Only 1 search
- bar should be created for the browser. This class is not designed to be code
- space efficient for creating multiple URL search bar objects.
-*/
-function UrlSearch(lastUrl)
-{
- /*!
- Class to handle displaying and updating the URL text box.
- */
- function UrlTextBox()
- {
- }
-
- //! UrlTextBox Public Methods
-
- UrlTextBox.prototype.getTextBoxValue = function()
- {
- return document.gotoUrlForm.textBox.value;
- }
-
- UrlTextBox.prototype.setTextBoxValue = function(text)
- {
- //window.chrome.alert("setTextBoxValue" + text);
- document.gotoUrlForm.textBox.value = text;
- }
-
- // Unused Method
- UrlTextBox.prototype.textBoxFocus = function()
- {
- document.gotoUrlForm.textBox.focus();
- }
-
- UrlTextBox.prototype.hasFocus = function()
- {
- return document.getElementById("urlBox").hasFocus;
- }
-
- UrlTextBox.prototype.setFocus = function(hasFocus)
- {
- document.getElementById("urlBox").hasFocus = hasFocus;
- }
-
- /*!
- Class to handle displaying and updating the URL tri-state button.
- */
- function UrlTriStateButton()
- {
- }
-
- //! UrlTriStateButton Public Methods
- UrlTriStateButton.prototype.setButton = function()
- {
- //window.chrome.alert("setButton " + window.pageController.loadState);
- btnDom = document.getElementById("tristateBtn").button;
- switch (window.pageController.loadState) {
- case enumObj.state.Loading:
- btnDom.updateImages("urlsearch.snippet/icons/stop.png",
- "urlsearch.snippet/icons/stop_pushed.png",
- "urlsearch.snippet/icons/stop.png");
- break;
- case enumObj.state.Editing:
- btnDom.updateImages("urlsearch.snippet/icons/goto.png",
- "urlsearch.snippet/icons/goto_pushed.png",
- "urlsearch.snippet/icons/goto.png");
- break;
- case enumObj.state.Reloadable:
- btnDom.updateImages("urlsearch.snippet/icons/reload.png",
- "urlsearch.snippet/icons/reload_pushed.png",
- "urlsearch.snippet/icons/reload.png");
- break;
- default:
- window.chrome.alert("Incorrect state");
- break;
- }
-
- document.getElementById("tristateBtn").button.updateButton();
- }
-
- // Unused Method
- UrlTriStateButton.prototype.changeTriState = function(a)
- {
- if (this.getValue() != a) {
- this.setValue(a);
- /* Shouln't have to do this check. This function should be
- * called only after chrome has completed loading which
- * means that all snippets have also been created.
- */
- if (window.snippets.UrlSearchChromeId) {
- window.snippets.UrlSearchChromeId.repaint();
- }
- }
- }
-
- /*!
- Class to handle displaying and updating the URL progress bar.
- */
- function UrlProgressBar()
- {
- this.oldpercent = 0;
- }
-
- //! UrlProgressBar Public Methods
-
- UrlProgressBar.prototype.setProgress = function(widthStr)
- {
- document.getElementById("PBar").style.width = widthStr;
- }
-
- UrlProgressBar.prototype.handlePageLoadProgress = function(percent)
- {
- //window.chrome.alert("Load prog "+percent);
- if ((window.viewManager.currentView.type == "webView") &&
- (this.oldpercent != percent)) {
- this.oldpercent = percent;
- //window.chrome.alert("Load prog "+percent);
- var parentWidth = document.getElementById("PWrap").offsetWidth;
- this.setProgress((parentWidth * percent)/100 + "px");
- }
- }
-
- UrlProgressBar.prototype.updateProgress = function(percent)
- {
- if (percent != 100) {
- //window.chrome.alert("Load prog "+percent);
- var parentWidth = document.getElementById("PWrap").offsetWidth;
- this.setProgress((parentWidth * percent)/100 + "px");
- } else {
- //clearProgressBar();
- this.setProgress("0%");
- oldpercent = 0;
- }
- }
-
- // UrlSearch Private Member Variables
- var animator;
- var animating = false;
- var defaultPos;
- var defaultHeight;
- var animateDuration = 500;
- var __blockDeselect = false;
- var urlBarTextBox = new UrlTextBox();
- var urlBarButton = new UrlTriStateButton();
- var urlBarProgressBar = new UrlProgressBar();
- var searchSuggestEngine = new SearchSuggest();
- // UrlSearch Private Methods
-
- function _urlsearch_write(lastUrl) {
- var html = ''+
- '<form name = "gotoUrlForm">' +
- '<table id="UrlSearchTable">' +
- '<tr>' +
- '<td id="faviconCell"><img id = "favicon" src="urlsearch.snippet/icons/defaultFavicon.png"></td>'+
- '<td>' +
- '<div id="PWrap">' +
- '<input type ="text" id = "urlBox" name = "textBox" value="' + lastUrl + '" ' +
- 'maxlength="256" '+
- 'OnFocus="urlsearch.focusElement(this,event)" '+
- 'OnMouseUp="return urlsearch.mouseUpElement(this,event)" '+
- 'OnMouseDown="urlsearch.mouseDownElement(this,event)" '+
- 'OnKeyUp="urlsearch.resetTriState();urlsearch.querySuggests();"/>' +
- '<div id="PBar"></div>' +
- '</div>' +
- '</td>' +
- '<td id="tristateBtnCell"' +
- '<img id="tristateBtn">' +
- '</td>' +
- '</tr>' +
- '</table>' +
- '</form>';
-
- document.write(html);
- }
-
- function loadToMainWindow(gotourl){
- // use a single call to guess url and goto url
- // (could do as separate calls, but we try to eliminate lag with a single call)
-
- //var correctedUrl = window.chrome.guessAndGotoUrl(gotourl);
- //urlBarTextBox.setTextBoxValue(correctedUrl);
-
- var gotourl = window.chrome.guessUrlFromString(gotourl);
- window.pageController.currentLoad(gotourl);
- urlBarTextBox.setTextBoxValue(gotourl);
- window.pageController.urlTextChanged(gotourl);
- }
-
- function loadSearchUrl(gotourl){
- var gotourl = window.chrome.searchUrl(gotourl);
- window.pageController.currentLoad(gotourl);
- urlBarTextBox.setTextBoxValue(gotourl);
- window.pageController.urlTextChanged(gotourl);
- }
-
- function chromeAlert(){
- window.chrome.alert("chrome Alert!");
- }
-
- function canSeeUrl()
- {
- return (!window.snippets.UrlSearchChromeId.isHiding && window.snippets.UrlSearchChromeId.isVisible());
- }
-
- function showUrlBar()
- {
- if (!canSeeUrl()) {
- //window.chrome.alert("showUrlbar");
- window.snippets.UrlSearchChromeId.zValue = window.snippets.StatusBarChromeId.zValue - 1;
- window.snippets.UrlSearchChromeId.setPosition(0,defaultPos);
- window.snippets.UrlSearchChromeId.show(false);
- window.chrome.updateViewPort();
- }
- }
-
- function hideUrlBar()
- {
- //window.chrome.alert("hideUrlbar");
- if (canSeeUrl()) {
- window.snippets.UrlSearchChromeId.hide(false);
- }
- }
-
- function slideUrlOut() {
- //window.chrome.alert("slideUrlOut");
- if (canSeeUrl()) {
- window.snippets.UrlSearchChromeId.zValue = window.snippets.StatusBarChromeId.zValue - 1;
- animating = true;
- //window.snippets.UrlSearchChromeId.isHiding = true;
- animator = window.snippets.UrlSearchChromeId.animate(animateDuration).translateBy(0, -1 * defaultHeight).start();
- animator.updated.connect(animationUpdated);
- animator.finished.connect(hideAnimationFinished);
- }
- }
-
- function slideUrlIn()
- {
- /* show it at right position and zorder first */
- window.snippets.UrlSearchChromeId.zValue = window.snippets.StatusBarChromeId.zValue - 1;
- window.snippets.UrlSearchChromeId.setPosition(0, defaultPos-defaultHeight);
- window.snippets.UrlSearchChromeId.show(false);
- //window.snippets.UrlSearchChromeId.isHiding = false;
-
- animating = true;
- animator = window.snippets.UrlSearchChromeId.animate(animateDuration).translateBy(0, defaultHeight).start();
- animator.updated.connect(animationUpdated);
- animator.finished.connect(showAnimationFinished);
- }
-
- function setUrlSearchValues()
- {
- //window.chrome.alert("setUrlSearchValues " + window.pageController.loadText);
- urlBarTextBox.setTextBoxValue(window.pageController.loadText);
- urlBarButton.setButton();
-
- //window.chrome.alert("setProgress " + "New: " + window.pageController.loadProgressValue + " Old Value: " + oldpercent );
- var percent = window.pageController.loadProgressValue;
-
- urlBarProgressBar.updateProgress(percent);
- if (percent == 100) {
- __blockDeselect = false;
- urlBarTextBox.setFocus(false);
- }
- window.snippets.UrlSearchChromeId.repaint();
- }
-
- function animationUpdated(value)
- {
- window.chrome.updateViewPort();
- }
-
- function hideAnimationFinished()
- {
- //window.chrome.alert("hideAnimationFinished");
- animating = false;
- window.snippets.UrlSearchChromeId.isHiding = true;
- }
-
- function showAnimationFinished()
- {
- //window.chrome.alert("showAnimationFinished");
- animating = false;
- window.snippets.UrlSearchChromeId.isHiding = false;
- }
-
- // Public Methods
- this.focusElement = function(el, event)
- {
- el.select();
- __blockDeselect = true;
- document.getElementById("urlBox").scrollLeft = 1000;
- urlBarTextBox.setFocus(true);
- }
-
- this.mouseDownElement = function(el, event)
- {
- // Clear __justSelected in case the element gained focus through some non-mouse event
- // and still has focus.
- __blockDeselect = false;
- }
-
- this.mouseUpElement = function(el, event)
- {
- // Return false to prevent Qt from deselecting the text if we've just selected it
- // in focusElement(), return true otherwise.
-
- var result = !__blockDeselect;
- __blockDeselect = false;
- return result;
- }
-
- this.clearPBar = function()
- {
- urlBarProgressBar.setProgress("0%");
- }
-
- this.pushTriState = function()
- {
- //window.chrome.alert("pushTriState " + window.pageController.loadState);
- switch (window.pageController.loadState) {
- case enumObj.state.Loading:
- //window.chrome.alert("In loading state, stop loading");
- window.pageController.currentStop();
- setTimeout("urlsearch.clearPBar()", 50);
- break;
- case enumObj.state.Editing:
- //window.chrome.alert("In editing state, start loading");
- loadToMainWindow(urlBarTextBox.getTextBoxValue());
- break;
- case enumObj.state.Reloadable:
- //window.chrome.alert("In reloadable state, start reloading");
- window.pageController.currentReload();
- break;
- default:
- window.chrome.alert("Incorrect state");
- break;
- }
- urlBarButton.setButton();
-
- }
-
- this.resetTriState = function()
- {
- if(window.pageController.loadState == enumObj.state.Reloadable) {
- urlBarTextBox.setFocus(true);
- //window.chrome.alert("Change to editing");
- window.pageController.setLoadState(enumObj.state.Editing);
- urlBarButton.setButton();
- }
- }
-
- this.querySuggests = function()
- {
- /* Disable suggests
- var text = urlBarTextBox.getTextBoxValue();
- //window.chrome.alert("call searchSuggest " + text);
- searchSuggests.removeAllItems();
- searchSuggests.hideSuggests();
- searchSuggestEngine.searchSuggest(text, this.updateSuggests);
- */
- }
-
- this.updateSuggests = function(result)
- {
- var curText = urlBarTextBox.getTextBoxValue();
- searchSuggests.removeAllItems();
- if (result.length > 1 && curText == result[0]){
- for(var i = 1; i < result.length; i++) {
- //window.chrome.alert(result[i]);
- searchSuggests.addItem(result[i]);
- }
- searchSuggests.showSuggests();
- }
-
-
-
- }
-
- // UrlSearch Constructor
-
- // do setup
- _urlsearch_write(lastUrl);
-
-
- // Init the button
- new SimpleButton("tristateBtn",
- "urlsearch.snippet/icons/goto.png",
- "urlsearch.snippet/icons/goto_pushed.png",
- "urlsearch.snippet/icons/goto.png",
- this.pushTriState);
- urlBarButton.setButton();
-
- // Note that in the slots below the "this" object is never used directly.
- // This is because they don't have access to "this" as they are called
- // externaly.
-
- // Connect Chrome load complete signal to slot.
- window.chrome.loadComplete.connect(
- function () {
- defaultPos = window.snippets.UrlSearchChromeId.anchorOffset;
- defaultHeight = UrlSearchChromeId.offsetHeight;
- }
- );
-
- // Connect various Page Controller signals to slots.
- window.pageController.pageUrlChanged.connect(
- function(url) {
- //window.chrome.alert(url);
- //url is coming from loadContoller. So need not set it back
- urlBarTextBox.setTextBoxValue(url);
- }
- );
-
- window.pageController.pageLoadStarted.connect(
- function() {
- //window.chrome.alert("Load start");
- urlBarProgressBar.setProgress("5%");
- urlBarButton.setButton();
-
- /* show url bar if it's hiding in contentView */
- if (window.viewManager.currentView.type == "webView") {
- if (window.snippets.UrlSearchChromeId) {
- showUrlBar();
- }
- }
- }
- );
-
- window.pageController.pageLoadProgress.connect(
- function(percent) {
- urlBarProgressBar.handlePageLoadProgress(percent);
- }
- );
-
- window.pageController.pageLoadFinished.connect(
- function(ok) {
- //window.chrome.alert("pageLoadFinished: ");
- // If the load was finished normally and not due to user stopping it,
- // simulate progress completion
- if(!window.pageController.loadCanceled) {
- urlBarProgressBar.setProgress("99%");
- }
- setTimeout("urlsearch.clearPBar()", 500);
- __blockDeselect = false;
- urlBarTextBox.setFocus(false);
- urlBarButton.setButton();
-
- /* start hide animation if contentYpos is not zero */
- if (window.viewManager.currentView.type == "webView") {
- if (window.snippets.UrlSearchChromeId && window.pageController.contentsYPos > 0) {
- slideUrlOut();
- }
- }
- }
- );
-
- window.pageController.pageIconChanged.connect(
- function() {
- window.chrome.alert("FAVICON changed");
- }
- );
-
- window.pageController.pageCreated.connect(
- function() {
- //window.chrome.alert("add new window");
- showUrlBar();
- }
- );
-
- window.pageController.pageChanged.connect(
- function() {
-
- //window.chrome.alert("Page changed");
- // Set the values of the new page
- setUrlSearchValues();
- }
- );
-
- window.pageController.pageScrollPositionZero.connect(
- function() {
- var contentYPos = window.pageController.contentsYPos;
- //window.chrome.alert("pageScrollRequested contentYPos = " + contentYPos);
- if (contentYPos > 0) {
- if(canSeeUrl() && !animating && !pageController.isPageLoading) {
- slideUrlOut();
- //window.chrome.updateViewPort();
- }
- }
- else {
- if(!canSeeUrl() && !animating) {
- slideUrlIn();
- }
- }
- }
- );
-
- // Connect snippets CR signal to slot.
- window.snippets.symbianCarriageReturn.connect(
- function() {
- if (urlBarTextBox.hasFocus()) {
- // When we get load started, the button will be changed
- loadToMainWindow(urlBarTextBox.getTextBoxValue());
- }
- }
- );
-
- // Connect View Manager current view changed signal to slot.
- window.viewManager.currentViewChanged.connect(
- function() {
- if (window.viewManager.currentView.type == "webView") {
- /*window.chrome.alert("currentViewChanged window.viewManager.currentView.type =" + window.viewManager.currentView.type + "Pos " + window.pageController.contentsYPos == 0 + "Loading still: " + pageController.isPageLoading);*/
- // When we change back to content view, show the urlsearch bar if either we are
- // at the top or we are still loading the page (in this case, we will hide the urlsearch bar
- // if needed on getting loadFinished
- if (window.pageController.contentsYPos == 0 || pageController.isPageLoading) {
- // show url bar with no animation
- showUrlBar();
- }
- //set the correct values based on the window
- //window.chrome.alert("currentViewChanged " + window.pageController.loadText);
- setUrlSearchValues();
-
- // place focus in urlsearch bar when returning from adding a new window in windows view
- if (window.pageController.loadText == "") {
- __blockDeselect = false;
- document.getElementById("urlBox").focus();
- return;
- }
- } else {
- //Save url text box value
- window.pageController.urlTextChanged(urlBarTextBox.getTextBoxValue());
-
- // Remove progress bar and url text field value so that
- // incorrect values are not seen before we can update when we come back
- urlBarTextBox.setTextBoxValue("");
- urlBarProgressBar.setProgress("0%");
- hideUrlBar();
- }
-
- }
- );
-}
-