diff -r 6aeb7a756187 -r 3c88a81ff781 ginebra2/chrome/bedrockchrome/chrome.js --- a/ginebra2/chrome/bedrockchrome/chrome.js Thu Sep 23 15:32:11 2010 -0400 +++ b/ginebra2/chrome/bedrockchrome/chrome.js Fri Oct 15 17:30:59 2010 -0400 @@ -1,4 +1,25 @@ +var BOOKMARKVIEW_PAGE = ":/bookmarkview/BookmarkView.html"; +var SETTINGSVIEW_PAGE = ":/settingsview/SettingsView.html"; +var HISTORYVIEW_PAGE = ":/historyview/historyView.html"; +var SUGGESTS_PAGE = "qrc:///suggests/suggests.html"; + var preLoadBookmarksDone=0; + +document.getElementsByClassName = function(class_name) { + var docList = this.all || this.getElementsByTagName('*'); + var matchArray = new Array(); + + /*Create a regular expression object for class*/ + var re = new RegExp("(?:^|\\s)"+class_name+"(?:\\s|$)"); + for (var i = 0; i < docList.length; i++) { + if (re.test(docList[i].className) ) { + matchArray[matchArray.length] = docList[i]; + } + } + + return matchArray; +} + function calcToolbarPopAnchorOffset(anchoredSnippet, anchorToSnippet, xCenterOffset, @@ -24,39 +45,67 @@ return([xOffset,yOffset]); } +function hidePopups(){ + + if (window.snippets.MostVisitedViewId.isVisible()) + window.snippets.MostVisitedViewId.hide(); + + if (window.snippets.SuggestsChromeId.isVisible()) { + window.snippets.SuggestsChromeId.hide(false); + views.WebView.enabled = true; + views.WebView.unfreeze(); + } + + if(app.ui() != "maemo5_ui") + return; + + snippets.BookmarkDialogId.hide(); +} + // Display the super-page with the given name and path. function showSuperPage(pageName, path) { if (window.views.WebView[pageName] == undefined) { window.views.WebView.createSuperPage(pageName, true); - window.views.WebView[pageName].load(chrome.baseDirectory + path); + window.views.WebView[pageName].load(/*chrome.baseDirectory +*/ path); } + else { + // FIXME: this is a workaround temporary solution + // this is used to render CSS styles for super pages + // instead of just popping them up from ViewStack which somehow prevent proper CSS styling on page display + window.views.WebView[pageName].load(path); + } + if (!window.views.WebView.bedrockTiledBackingStoreEnabled()){ window.views.WebView.setSavedZoomValueInView(window.views.WebView.zoomFactor); window.views.WebView.zoomFactor = 1.0; } //window.views.WebView.showSuperPage(pageName); window.ViewStack.switchView(pageName, "WebView"); + if (!window.views.WebView.bedrockTiledBackingStoreEnabled()) window.views.WebView.touchNav.doubleClickEnabled = false; + + hidePopups(); } function chrome_showBookmarksView() { - showSuperPage("BookmarkTreeView", "bookmarkview.superpage/BookmarkView.html"); + showSuperPage("BookmarkTreeView", BOOKMARKVIEW_PAGE); } function chrome_showHistoryView() { - showSuperPage("BookmarkHistoryView", "historyview.superpage/historyView.html"); + showSuperPage("BookmarkHistoryView", HISTORYVIEW_PAGE); } function chrome_showWindowsView() { - window.snippets.ZoomBarId.hide(); // hide Zoom Bar while showing windows view + if(app.ui() != "maemo5_ui") + window.snippets.ZoomBarId.hide(); // hide Zoom Bar while showing windows view window.snippets.MostVisitedViewId.hide(); window.ViewStack.switchView("WindowView", "WebView"); } function chrome_showSettingsView() { - showSuperPage("SettingsView", "settingsview.superpage/SettingsView.html"); + showSuperPage("SettingsView", SETTINGSVIEW_PAGE); } function chrome_showBasicMenu() { @@ -92,23 +141,27 @@ } function onActivateBookmarkView() { + snippets.BookmarkViewToolbarId.enabled = true; + try { window.bookmarksController.launchBookmarkEditDailog.connect(showBookmarkEditDialog); + } + catch (e){;} // just in case bookmarksHistoryManager is not ready yet + } function preLoad() { - preloadSuperPage("BookmarkTreeView", "bookmarkview.superpage/BookmarkView.html"); - preloadSuperPage("SettingsView", "settingsview.superpage/SettingsView.html"); + preloadSuperPage("BookmarkTreeView", BOOKMARKVIEW_PAGE); + preloadSuperPage("SettingsView", SETTINGSVIEW_PAGE); preLoadBookmarksDone=1; } function _updateHistory() { - preloadSuperPage("BookmarkHistoryView", "historyview.superpage/historyView.html"); - + preloadSuperPage("BookmarkHistoryView", HISTORYVIEW_PAGE); } function _updateBookmarks() { - preloadSuperPage("BookmarkTreeView", "bookmarkview.superpage/BookmarkView.html"); + preloadSuperPage("BookmarkTreeView", BOOKMARKVIEW_PAGE); } // chrome_popupShownCount keeps a count of how many popups are currently being shown so that @@ -160,16 +213,122 @@ if (window.views.WebView[pageName] == undefined) { window.views.WebView.createSuperPage(pageName, true); } - window.views.WebView[pageName].load(chrome.baseDirectory + path); + window.views.WebView[pageName].load(/*chrome.baseDirectory +*/ path); +} + +//var chrome_blockPopupsAction; + +// Handle Block/Allow Popups action. +function chrome_toggleBlockPopups() { + hidePopups(); + pageController.savePopupSettings(!pageController.getPopupSettings()); + chrome_blockPopupsAction.text = chrome_getBlockPopupsActionText(); +} + +// Returns the text for the Block/Allow Popups action based on the the current setting in the page controller. +function chrome_getBlockPopupsActionText() { + return window.localeDelegate.translateText(pageController.getPopupSettings() + ? "txt_browser_content_view_menu_page_allow_popups" + : "txt_browser_content_view_menu_page_block_popups"); +} + +function chrome_setZoomButtonActions() { + snippets.ZoomInButtonSnippet.connectAction("zoomIn", "WebView", true, true); + snippets.ZoomOutButtonSnippet.connectAction("zoomOut", "WebView", true, true); } -function onChromeComplete(){ +// Create an action and add it to the Maemo menu bar. +function chrome_addMaemoMenuBarAction(text, callback) { + var action = app.createAction(text); + action.triggered.connect(callback); + app.addMenuBarAction(action); + return action; +} +function chrome_updateMaemoMenuBarItems() { + app.setMenuBarEnabled(!views.WebView.currentPageIsSuperPage()); +} + +// Create actions that appear in the Maemo system menu at the top of the screen. +function chrome_createMaemoMenuBarItems() { + // Global menu items. + chrome_addMaemoMenuBarAction(window.localeDelegate.translateText("txt_browser_content_view_menu_nav_bookmarks"), + chrome_showBookmarksView); + chrome_addMaemoMenuBarAction(window.localeDelegate.translateText("txt_browser_content_view_menu_page_add_bookmark"), + function() { hidePopups(); launchBookmarkDialog(pageController.currentDocTitle, pageController.currentDocUrl,-1,0); } ); + chrome_addMaemoMenuBarAction(window.localeDelegate.translateText("txt_browser_content_view_menu_nav_history"), + chrome_showHistoryView); + chrome_blockPopupsAction = chrome_addMaemoMenuBarAction(chrome_getBlockPopupsActionText(), + chrome_toggleBlockPopups); + chrome_addMaemoMenuBarAction(window.localeDelegate.translateText("txt_browser_content_view_menu_page_share"), + function() { hidePopups(); pageController.share(pageController.currentDocUrl); } ); + chrome_addMaemoMenuBarAction(window.localeDelegate.translateText("txt_browser_content_view_menu_nav_settings"), + chrome_showSettingsView); +} +function onChromeActivated() { + + snippets.SuggestsChromeId.hide(false); + + if(!views.WebView.currentPageIsSuperPage()) { + views.WebView.enabled = true; + views.WebView.unfreeze(); + } + snippets.MostVisitedViewId.hide(); + + if(app.ui() == "maemo5_ui") { + snippets.UrlSearchChromeId.grabFocus(); + } +} + +function onChromeComplete() { + if (app.ui() == "orbit_ui") { snippets.StatusBarChromeId.hide(); } if (app.layoutType() == "tenone") { window.snippets.TitleUrlId.anchorToView("top"); + + // Disable content view while Most Visited view is shown. + snippets.MostVisitedViewId.shown.connect( + function() { + views.WebView.enabled = false; + views.WebView.unfreeze(); + } + ); + // Enable content view when Most Visited view is hidden. + snippets.MostVisitedViewId.hidden.connect( + function() { + views.WebView.enabled = true; + } + ); + + } + else if(app.ui() == "maemo5_ui") { + + chrome_createMaemoMenuBarItems(); + + // Update the menu items when the page type changes. + views.WebView.normalPageShown.connect(chrome_updateMaemoMenuBarItems); + views.WebView.superPageShown.connect(chrome_updateMaemoMenuBarItems); + window.snippets.UrlSearchChromeId.anchorToView("top"); + chrome_setZoomButtonActions(); + + // Disable content view while Most Visited view is shown. + snippets.MostVisitedViewId.shown.connect( + function() { + views.WebView.enabled = false; + snippets.UrlSearchChromeId.enabled = false; + } + ); + + // Enable content view when Most Visited view is hidden. + snippets.MostVisitedViewId.hidden.connect( + function() { + views.WebView.enabled = true; + snippets.UrlSearchChromeId.enabled = true; + } + ); + } else { window.snippets.UrlSearchChromeId.anchorToView("top"); @@ -179,24 +338,40 @@ window.snippets.BookmarkViewToolbarId.addBookmarkSelected.connect(chrome_addBookmark); window.snippets.WebViewToolbarId.menuButtonCanceled.connect(chrome_cancelMenu); + // Dismiss Most Visited view when it gets an external click event. + snippets.MostVisitedViewId.externalMouseEvent.connect( + function(type, name, description) { + if(name == "MouseClick") { + // Use timer here to hide the view even when the Most Visited page button is clicked, + // otherwise the button re-displays the view. + setTimeout('snippets.MostVisitedViewId.hide()', 100); + } + }); + //window.snippets.ButtonContainer.setVisibilityAnimator("G_VISIBILITY_FADE_ANIMATOR"); - + if(app.ui() != "maemo5_ui"){ result = new Array; result = calcToolbarPopAnchorOffset(window.snippets.ZoomBarId, window.snippets.ZoomButtonSnippet, 0,10); window.snippets.ZoomBarId.anchorTo("ZoomButtonSnippet",result[0],result[1]); + } - snippets.SuggestsChromeId.url = chrome.baseDirectory + "suggests.snippet/suggests.html"; + snippets.SuggestsChromeId.url = /*chrome.baseDirectory +*/ SUGGESTS_PAGE; window.ViewStack.activateBookmark.connect(onActivateBookmarkView); chrome.popupShown.connect(onPopupShown); chrome.popupHidden.connect(onPopupHidden); + + if(app.ui() == "maemo5_ui") + chrome.chromeActivated.connect(onChromeActivated); + window.pageController.loadFinished.connect(_updateHistory); window.pageController.loadFinishedForBackgroundWindow.connect(_updateHistory); window.bookmarksController.bookmarksCleared.connect(_updateBookmarks); window.historyManager.historyCleared.connect(_updateHistory); + } // For debugging: prints all properties and functions attached to a given object. @@ -207,3 +382,4 @@ } app.debug(str); } +