Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
758 lines
21 KiB
JavaScript
Executable file
758 lines
21 KiB
JavaScript
Executable file
/* global Awesomescreen */
|
|
/* global Browser */
|
|
/* global BrowserDB */
|
|
/* global LazyLoader */
|
|
/* global SearchResult */
|
|
/* global SearchUtil */
|
|
/* global Settings */
|
|
/* global Tooltip*/
|
|
/* global UrlHelper */
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* Browser app toolbar
|
|
* @namespace Toolbar
|
|
*/
|
|
var Toolbar = {
|
|
|
|
/* screen size */
|
|
SCREEN_HEIGHT: 1080,
|
|
SCREEN_WIDTH: 1920,
|
|
|
|
/* zoom */
|
|
availableZoomScale: [
|
|
{'scale': 1.25, 'disp': '100%'},
|
|
{'scale': 1.625, 'disp': '130%'},
|
|
{'scale': 2.0, 'disp': '160%'},
|
|
],
|
|
defaultZoomScale: 0,
|
|
zoomScale: 0,
|
|
availableZoomScaleYoutube: [
|
|
{'scale': 1.55, 'disp': '100%'},
|
|
{'scale': 1.775, 'disp': '130%'},
|
|
{'scale': 2.0, 'disp': '160%'},
|
|
],
|
|
|
|
urlButtonMode: null,
|
|
GO: 0,
|
|
REFRESH: 1,
|
|
STOP: 2,
|
|
SEARCH: 3,
|
|
|
|
initStart: true,
|
|
|
|
/**
|
|
* Intialise toolbar.
|
|
*/
|
|
init: function toolbar_init() {
|
|
/* get Element */
|
|
this.getAllElements();
|
|
|
|
/* Event Listener */
|
|
window.addEventListener('click', this);
|
|
|
|
this.sidebarButtonBlock.addEventListener('mouseup',
|
|
this.showHideSidebar.bind(this));
|
|
|
|
this.backButtonBlock.addEventListener('mouseup',
|
|
this.goBack.bind(this));
|
|
|
|
this.forwardButtonBlock.addEventListener('mouseup',
|
|
this.goForward.bind(this));
|
|
|
|
this.addressForm.addEventListener('submit',
|
|
this.handleUrlFormSubmit.bind(this));
|
|
|
|
this.urlInput.addEventListener('input',
|
|
this.handleUrlInputKeypress.bind(this));
|
|
|
|
this.addressButton.addEventListener('mouseup',
|
|
this.clickAddressButton.bind(this));
|
|
|
|
this.searchForm.addEventListener('submit',
|
|
this.handleSearchFormSubmit.bind(this));
|
|
|
|
this.searchInput.addEventListener('focus',
|
|
this.handleSearchInputFocus.bind(this));
|
|
|
|
// this.searchInput.addEventListener('keyup',
|
|
// this.handleSearchInputKeypress.bind(this));
|
|
|
|
this.searchInput.addEventListener('input',
|
|
this.handleSearchInputInput.bind(this));
|
|
|
|
this.searchButton.addEventListener('mouseup',
|
|
this.clickSearchButton.bind(this));
|
|
|
|
this.searchClearButton.addEventListener('mouseup',
|
|
this.clickSearchClearButton.bind(this));
|
|
|
|
this.searchCloseButton.addEventListener('mouseup',
|
|
this.clickSearchCloseButton.bind(this));
|
|
|
|
this.bookmarkButtonBlock.addEventListener('mouseup',
|
|
Browser.addBookmark.bind(Browser));
|
|
this.bookmarkButtonAnime.addEventListener('animationend',
|
|
Browser.bookmarkButtonAnimeEnd.bind(Browser));
|
|
|
|
this.showBookmarksButtonBlock.addEventListener('mouseup',
|
|
Awesomescreen.selectBookmarksTab.bind(Awesomescreen));
|
|
|
|
this.homeButtonBlock.addEventListener('mouseup',
|
|
this.clickHomeButtonBlock.bind(this));
|
|
|
|
this.zoomButtonBlock.addEventListener('mouseup',
|
|
this.clickZoomButtonBlock.bind(this));
|
|
|
|
this.tabsButtonBlock.addEventListener('click',
|
|
Awesomescreen.handleNewTab.bind(Awesomescreen));
|
|
|
|
this.newTabButtonBlock.addEventListener('click',
|
|
Awesomescreen.createAddNewTab.bind(Awesomescreen));
|
|
|
|
this.menuButtonBlock.addEventListener('mouseup',
|
|
this.clickMenuButtonBlock.bind(this));
|
|
this.historyBlock.addEventListener('mouseup',
|
|
Awesomescreen.selectHistoryTab.bind(Awesomescreen));
|
|
this.pocketBlock.addEventListener('mouseup',
|
|
this.clickPocketListBlock.bind(this));
|
|
this.privateWindowBlock.addEventListener('mouseup',
|
|
Browser.handlePrivateBrowsing.bind(Browser));
|
|
this.settingsBlock.addEventListener('mouseup',
|
|
Settings.show.bind(Settings));
|
|
|
|
this.modeButtonBlock.addEventListener('mouseover',
|
|
this.selectedModeButtonBlock.bind(this));
|
|
this.modeButtonBlock.addEventListener('mouseout',
|
|
this.unselectedModeButtonBlock.bind(this));
|
|
|
|
this.toolbarPanel.dataset.search = 'false';
|
|
|
|
var colorBar = Browser.getColorBarData();
|
|
this.panCursorButtonBlock.dataset.colorbar = colorBar[0].COLOR;
|
|
this.zoomButtonBlock.dataset.colorbar = colorBar[1].COLOR;
|
|
this.tabsButtonBlock.dataset.colorbar = colorBar[2].COLOR;
|
|
this.newTabButtonBlock.dataset.colorbar = colorBar[3].COLOR;
|
|
|
|
// li = 73px * 3(list) + 20px(hover) + 10px(padding)
|
|
this.menuBlock.style.height = 73 * 3 + 20 + 10 + 'px';
|
|
Tooltip.init();
|
|
|
|
//IFDEF_FIREFOX_SYNC
|
|
LazyLoader.load('js/sync/toolbar.js');
|
|
//ENDIF_FIREFOX_SYNC
|
|
},
|
|
|
|
/**
|
|
* toolbar bookmark registered check.
|
|
*/
|
|
isBookmarks: function toolbar_isBookmarks() {
|
|
if(Toolbar.bookmarkButton.dataset.isbookmark == 'true'){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Set search engine
|
|
*/
|
|
setSearchEngine: function toolbar_setSearchEngine() {
|
|
var engineName = SearchUtil.getCurrentEngineName().toLowerCase();
|
|
// favicon
|
|
this.searchFavicon.dataset.engine = engineName;
|
|
// placeholder
|
|
engineName = engineName.charAt(0).toUpperCase() + engineName.slice(1);
|
|
this.searchInput.placeholder = engineName;
|
|
// tooltip
|
|
navigator.mozL10n.formatValue('WB_LT_TIPS_SEARCH_BAR2', {
|
|
engine: engineName
|
|
}).then(val => {
|
|
this.searchInput.dataset.tips = val;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* CamelCase (xxx-yyy -> xxxYyy)
|
|
*/
|
|
toCamelCase: function toCamelCase(str) {
|
|
return str.replace(/-(.)/g, function replacer(str, p1) {
|
|
return p1.toUpperCase();
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Get All Elements (from id)
|
|
*/
|
|
getAllElements: function toolbar_getAllElements() {
|
|
var elementIDs = [
|
|
'toolbar-panel',
|
|
'sidebar-button-block', 'sidebar-button',
|
|
'back-button-block', 'back-button',
|
|
'forward-button-block', 'forward-button-border', 'forward-button',
|
|
'space-block',
|
|
'addressbar-block', 'address-form', 'ssl-indicator', 'url-input',
|
|
'address-button',
|
|
'searchbar-block', 'search-form', 'search-favicon', 'search-input',
|
|
'search-button', 'search-clear-button', 'search-close-button',
|
|
'iconbutton-block',
|
|
'bookmark-button-block', 'bookmark-button',
|
|
'show-bookmarks-button-block', 'show-bookmarks-button',
|
|
'home-button-block', 'home-button',
|
|
'zoom-button-block', 'zoom-button',
|
|
'tabs-button-block', 'tabs-button',
|
|
'new-tab-button-block', 'new-tab-button',
|
|
'menu-button-block', 'menu-button',
|
|
'menu-block',
|
|
'history-block', 'private-window-block',
|
|
'settings-block',
|
|
'history-tab', 'private-window-tab', 'settings-tab',
|
|
'mode-button-block',
|
|
'mode-button-title', 'pan-cursor-button', 'pan-cursor-button-block',
|
|
'pan-cursor-banner-message',
|
|
'zoom-banner-message-block', 'zoom-banner-message',
|
|
'loading-icon',
|
|
//'tooltip-block',
|
|
'bookmark-button-anime', 'show-bookmarks-button-anime',
|
|
'pocket-block', 'pocket-tab'
|
|
];
|
|
|
|
// Loop and add element with camel style name to Modal Dialog attribute.
|
|
elementIDs.forEach(function createElementRef(name) {
|
|
this[this.toCamelCase(name)] = document.getElementById(name);
|
|
}, this);
|
|
},
|
|
|
|
/**
|
|
* handle event
|
|
*/
|
|
handleEvent: function toolbar_handleEvent(ev) {
|
|
switch(ev.type) {
|
|
case 'click':
|
|
if(ev.target != this.menuButtonBlock) {
|
|
this.toolbarPanel.dataset.menu = 'hide';
|
|
}
|
|
|
|
// Settings in the display
|
|
if(Settings.isDisplayed()) {
|
|
switch(ev.target) {
|
|
case this.backButtonBlock:
|
|
case this.forwardButtonBlock:
|
|
case this.addressForm:
|
|
case this.urlInput:
|
|
case this.addressButton:
|
|
case this.searchForm:
|
|
case this.searchInput:
|
|
case this.searchButton:
|
|
case this.bookmarkButtonBlock:
|
|
case this.showBookmarksButtonBlock:
|
|
case this.homeButtonBlock:
|
|
case this.zoomButtonBlock:
|
|
case this.tabsButtonBlock:
|
|
case this.newTabButtonBlock:
|
|
case this.menuButtonBlock:
|
|
Settings.hide();
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Specialized processing youtube (zoom)
|
|
*/
|
|
checkYoutube: function toolbar_checkYoutube() {
|
|
if(!Browser.currentInfo || !Browser.currentInfo.url) {
|
|
return false;
|
|
}
|
|
var end_pos1 =
|
|
Browser.currentInfo.url.indexOf('https://www.youtube.com', 0);
|
|
var end_pos2 = Browser.currentInfo.url.indexOf('http://www.youtube.com', 0);
|
|
if(end_pos1 < 0 && end_pos2 < 0) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
|
|
/**
|
|
* Full screen or Screen with submenu
|
|
*/
|
|
showHideSidebar: function toolbar_showHideSidebar() {
|
|
this.sidebarButtonBlock.blur();
|
|
// Hide Tooltip
|
|
Tooltip.hide();
|
|
|
|
// Fade animation end event handler
|
|
var fade_event = (function() {
|
|
Browser.fadeBase.classList.toggle('fade');
|
|
if(Browser.sideBlock.dataset.sidebar == 'true'){
|
|
// Full screen
|
|
Browser.sideBlock.dataset.sidebar = 'false';
|
|
Browser.mainBlock.dataset.sidebar = 'false';
|
|
// save screen mode
|
|
BrowserDB.updateSetting('full', 'screen_mode');
|
|
}else{
|
|
// Disp side screen
|
|
Browser.sideBlock.dataset.sidebar = 'true';
|
|
Browser.mainBlock.dataset.sidebar = 'true';
|
|
// save screen mode
|
|
BrowserDB.updateSetting('side', 'screen_mode');
|
|
}
|
|
Browser.fadeBase.removeEventListener('transitionend', fade_event, false);
|
|
// Specialized processing youtube (zoom)
|
|
Browser.currentInfo.dom.zoom(Toolbar.getZoomScale());
|
|
});
|
|
// Add fade animantion event
|
|
Browser.fadeBase.addEventListener('transitionend', fade_event, false);
|
|
Browser.fadeBase.classList.toggle('fade');
|
|
this.sidebarButtonBlock.dataset.fade='true';
|
|
},
|
|
|
|
/**
|
|
* Go back to the previous page
|
|
*/
|
|
goBack: function toolbar_goBack() {
|
|
|
|
if (Awesomescreen.isDisplayedTop()){
|
|
Awesomescreen.topsiteReturnFunc();
|
|
return;
|
|
}
|
|
|
|
if (!Browser.currentInfo.dom.getCanGoBack){
|
|
return;
|
|
}
|
|
|
|
Browser.currentInfo.dom.getCanGoBack().onsuccess = (function(ev) {
|
|
if(!ev.target.result){
|
|
// dialog
|
|
// XXX: refactor this and the same code in awesomescreen.js
|
|
navigator.mozL10n.formatValue('LT_BROWSER_CONFIRM_EXIT2')
|
|
.then(result => {
|
|
if (window.confirm(result)) {
|
|
window.close();
|
|
}
|
|
});
|
|
return;
|
|
}
|
|
}).bind(this);
|
|
|
|
Browser.currentInfo.dom.goBack();
|
|
},
|
|
|
|
/**
|
|
* Go forward to the next page
|
|
*/
|
|
goForward: function toolbar_goForward() {
|
|
Browser.currentInfo.dom.goForward();
|
|
},
|
|
|
|
// Set url form input
|
|
setUrlBar: function toolbar_setUrlBar(value) {
|
|
this.urlInput.value = value;
|
|
},
|
|
// Get url form input
|
|
getUrlFromInput: function toolbar_getUrlFromInput(input) {
|
|
var hasScheme = UrlHelper.hasScheme(input);
|
|
|
|
// No scheme, prepend basic protocol and return
|
|
if (!hasScheme) {
|
|
return 'http://' + input;
|
|
}
|
|
|
|
return input;
|
|
},
|
|
/**
|
|
* Url form submit
|
|
*/
|
|
handleUrlFormSubmit: function toolbar_handleUrlFormSubmit(ev) {
|
|
if (ev) {
|
|
// Can be canceled
|
|
ev.preventDefault();
|
|
}
|
|
|
|
if (this.urlButtonMode === null) {
|
|
return;
|
|
}
|
|
|
|
var url = this.getUrlFromInput(this.urlInput.value);
|
|
|
|
if (url !== Browser.currentInfo.url) {
|
|
this.setUrlBar(url);
|
|
Browser.currentInfo.url = url;
|
|
}
|
|
|
|
this.urlInput.blur();
|
|
|
|
Browser.navigate(url);
|
|
},
|
|
|
|
/**
|
|
* Input Url
|
|
*/
|
|
handleUrlInputKeypress: function toolbar_handleUrlInputKeypress(evt) {
|
|
var input = this.urlInput.value;
|
|
if (input === '') {
|
|
this.setUrlButtonMode(null);
|
|
this.addressButton.classList.add('disable');
|
|
return;
|
|
}
|
|
|
|
this.addressButton.classList.remove('disable');
|
|
this.setUrlButtonMode(
|
|
UrlHelper.isNotURL(input) ? this.SEARCH : this.GO
|
|
);
|
|
},
|
|
|
|
/**
|
|
* Address Bookmark Current url
|
|
*/
|
|
clickAddressButton: function toolbar_clickAddressButton(ev) {
|
|
//if(this.addressButton.classList.contains('disable')){
|
|
//return;
|
|
//}
|
|
if(this.addressButton.dataset.mode == 'load') {
|
|
if(Browser.currentInfo.url){
|
|
Browser.currentInfo.dom.reload(false);
|
|
}
|
|
this.stopAddressIcon();
|
|
} else {
|
|
Browser.currentInfo.dom.stop();
|
|
this.hiddenLoadingIcon();
|
|
this.loadAddressIcon();
|
|
}
|
|
},
|
|
|
|
loadAddressIcon: function toolbar_loadAddressIcon() {
|
|
this.addressButton.dataset.mode = 'load';
|
|
this.addressButton.dataset.tips = 'WB_LT_TIPS_RELOAD';
|
|
},
|
|
|
|
stopAddressIcon: function toolbar_stopAddressIcon() {
|
|
this.addressButton.dataset.mode = 'stop';
|
|
this.addressButton.dataset.tips = 'WB_LT_TIPS_STOP_LOADING';
|
|
},
|
|
|
|
showLoadingIcon: function toolbar_showLoadingIcon() {
|
|
if(Settings.isDisplayed()) {
|
|
return;
|
|
}
|
|
if(!this.loadingIcon.classList.contains('visible')){
|
|
this.loadingIcon.classList.add('visible');
|
|
this.stopAddressIcon();
|
|
}
|
|
},
|
|
|
|
hiddenLoadingIcon: function toolbar_hiddenLoadingIcon() {
|
|
if(Tooltip.isShow(this.addressButton)){
|
|
Tooltip.hide();
|
|
}
|
|
this.loadingIcon.classList.remove('visible');
|
|
this.loadAddressIcon();
|
|
},
|
|
|
|
/**
|
|
* Submit search form
|
|
*/
|
|
handleSearchFormSubmit: function toolbar_handleSearchFormSubmit(ev) {
|
|
if (ev) {
|
|
// Can be canceled
|
|
ev.preventDefault();
|
|
}
|
|
|
|
if( SearchResult.isDisplayed() ) {
|
|
this.searchInput.blur();
|
|
SearchResult.hide();
|
|
}
|
|
var url = Browser.getSearchFromInput(this.searchInput.value);
|
|
Browser.navigate(url);
|
|
},
|
|
|
|
/**
|
|
* Click search button
|
|
*/
|
|
clickSearchButton: function toolbar_clickSearchButton(ev) {
|
|
this.handleSearchFormSubmit(ev);
|
|
},
|
|
|
|
clickSearchClearButton: function toolbar_clickSearchClearButton(ev) {
|
|
if( ev ) {
|
|
ev.preventDefault();
|
|
}
|
|
this.searchInput.value = '';
|
|
SearchResult.resultUpdate(this.searchInput.value);
|
|
},
|
|
|
|
clickSearchCloseButton: function toolbar_clickSearchCloseButton(ev) {
|
|
if( ev ) {
|
|
ev.preventDefault();
|
|
}
|
|
SearchResult.hide();
|
|
},
|
|
|
|
/**
|
|
* Input Search
|
|
*/
|
|
getSearchBarStyle: function toolbar_getSearchBarStyle() {
|
|
return this.toolbarPanel.dataset.search;
|
|
},
|
|
|
|
setSearchBarStyle: function toolbar_setSearchBarStyle(value) {
|
|
this.toolbarPanel.dataset.search = value;
|
|
},
|
|
|
|
handleSearchInputFocus: function toolbar_handleSearchInputFocus(evt) {
|
|
this.handleSearchInputKeypress(evt);
|
|
},
|
|
|
|
handleSearchInputInput: function toolbar_handleSearchInputInput(evt) {
|
|
this.handleSearchInputKeypress(evt);
|
|
},
|
|
|
|
handleSearchInputKeypress: function toolbar_handleSearchInputKeypress(evt) {
|
|
if( this.getSearchBarStyle() == 'false' ) {
|
|
if( evt ) {
|
|
evt.preventDefault();
|
|
}
|
|
if(Toolbar.searchInput.value) {
|
|
Tooltip.hide();
|
|
this.setSearchBarStyle('true');
|
|
SearchResult.show();
|
|
}
|
|
} else {
|
|
SearchResult.handleSearchResultFormInput(evt);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Click home button
|
|
*/
|
|
clickHomeButtonBlock: function toolbar_clickHomeButtonBlock(ev) {
|
|
Settings.getHomepage((function(result) {
|
|
if(result) {
|
|
Browser.navigate(result);
|
|
}
|
|
}).bind(this));
|
|
},
|
|
|
|
/**
|
|
* Click zoom button
|
|
*/
|
|
clickZoomButtonBlock: function toolbar_clickZoomButtonBlock(ev) {
|
|
if(ev){
|
|
// stop event
|
|
ev.stopPropagation();
|
|
}
|
|
clearTimeout(this.showZoomBannerTimeoutID);
|
|
|
|
this.zoomScale = Browser.currentInfo.zoom;
|
|
this.zoomScale++;
|
|
if(this.zoomScale >= this.availableZoomScale.length) {
|
|
this.zoomScale = 0;
|
|
}
|
|
Browser.currentInfo.zoom = this.zoomScale;
|
|
Browser.currentInfo.dom.zoom(this.getZoomScale());
|
|
|
|
this.zoomBannerMessage.innerHTML =
|
|
this.availableZoomScale[this.zoomScale].disp;
|
|
if(!this.zoomBannerMessageBlock.classList.contains('visible')){
|
|
this.zoomBannerMessageBlock.classList.add('visible');
|
|
}
|
|
this.showZoomBannerTimeoutID = setTimeout(function(){
|
|
Toolbar.zoomBannerMessageBlock.classList.remove('visible');
|
|
}, 1500);
|
|
},
|
|
getZoomScale: function toolbar_getZoomScale() {
|
|
if(this.checkYoutube() && Browser.sideBlock.dataset.sidebar == 'false'){
|
|
return this.availableZoomScaleYoutube[this.zoomScale].scale;
|
|
} else {
|
|
return this.availableZoomScale[this.zoomScale].scale;
|
|
}
|
|
},
|
|
setZoomScale: function toolbar_setZoomScale(scale) {
|
|
this.zoomScale = scale;
|
|
},
|
|
getDefaultZoomScale: function toolbar_getDefaultZoomScale() {
|
|
if(this.checkYoutube() && Browser.sideBlock.dataset.sidebar == 'false'){
|
|
return this.availableZoomScaleYoutube[this.defaultZoomScale].scale;
|
|
} else {
|
|
return this.availableZoomScale[this.defaultZoomScale].scale;
|
|
}
|
|
},
|
|
/**
|
|
* Zoom out(for ars)
|
|
*/
|
|
zoomOut: function toolbar_zoomOut() {
|
|
clearTimeout(this.showZoomBannerTimeoutID);
|
|
|
|
this.zoomScale = Browser.currentInfo.zoom;
|
|
if(this.zoomScale === 0) {
|
|
return;
|
|
}
|
|
|
|
this.zoomScale--;
|
|
Browser.currentInfo.zoom = this.zoomScale;
|
|
Browser.currentInfo.dom.zoom(this.getZoomScale());
|
|
|
|
this.zoomBannerMessage.innerHTML =
|
|
this.availableZoomScale[this.zoomScale].disp;
|
|
if(!this.zoomBannerMessageBlock.classList.contains('visible')){
|
|
this.zoomBannerMessageBlock.classList.add('visible');
|
|
}
|
|
this.showZoomBannerTimeoutID = setTimeout(function(){
|
|
Toolbar.zoomBannerMessageBlock.classList.remove('visible');
|
|
}, 1500);
|
|
},
|
|
|
|
/**
|
|
* Click menu button
|
|
*/
|
|
clickMenuButtonBlock: function toolbar_clickMenuButtonBlock(ev) {
|
|
if(ev){
|
|
// stop event
|
|
ev.stopPropagation();
|
|
}
|
|
if(this.toolbarPanel.dataset.menu == 'show') {
|
|
this.toolbarPanel.dataset.menu = 'hide';
|
|
} else {
|
|
this.toolbarPanel.dataset.menu = 'show';
|
|
if(!this.menuBlock.style.minWidth) {
|
|
var ar = [];
|
|
// rate 1.25
|
|
ar.push(432); // default 432(540 / 1.25)
|
|
ar.push(this.historyTab.offsetWidth);
|
|
ar.push(this.privateWindowTab.offsetWidth);
|
|
|
|
ar.push(this.settingsTab.offsetWidth);
|
|
this.menuBlock.style.minWidth =
|
|
(Math.max.apply(null, ar) * 1.25) + 'px';
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Show mode button
|
|
*/
|
|
showModeButtonTimer: function toolbar_showModeButtonTimer() {
|
|
this.showModeButtonTimeoutID = setTimeout(function(){
|
|
Toolbar.modeButtonBlock.classList.remove('visible');
|
|
}, 5000);
|
|
},
|
|
|
|
/**
|
|
* Show mode button
|
|
*/
|
|
showPanCursorButton: function toolbar_showPanCursorButton() {
|
|
if(!this.modeButtonBlock.classList.contains('visible')){
|
|
this.modeButtonBlock.classList.add('visible');
|
|
this.showModeButtonTimer();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Selected mode button
|
|
*/
|
|
selectedModeButtonBlock: function toolbar_selectedModeButtonBlock() {
|
|
clearTimeout(this.showModeButtonTimeoutID);
|
|
},
|
|
|
|
/**
|
|
* Unselected mode button
|
|
*/
|
|
unselectedModeButtonBlock: function toolbar_unselectedModeButtonBlock() {
|
|
this.showModeButtonTimer();
|
|
},
|
|
|
|
/**
|
|
* Show pan cursor banner
|
|
*/
|
|
showPanCursorBanner: function toolbar_showPanCursorBanner() {
|
|
if(!this.panCursorBannerMessage.classList.contains('visible')){
|
|
this.panCursorBannerMessage.classList.add('visible');
|
|
}
|
|
clearTimeout(this.showPanCursorBannerTimeoutID);
|
|
this.showPanCursorBannerTimeoutID = setTimeout(function(){
|
|
Toolbar.panCursorBannerMessage.classList.remove('visible');
|
|
}, 5000);
|
|
},
|
|
|
|
/**
|
|
* Click mode button
|
|
*/
|
|
clickModeButtonBlock: function toolbar_clickModeButtonBlock() {
|
|
if(Browser.getCursorPanMode() == 'cursor') {
|
|
Browser.setCursorPanMode('pan');
|
|
this.modeButtonTitle.setAttribute('data-l10n-id', 'WB_LT_PAN_MODE');
|
|
this.panCursorBannerMessage.setAttribute(
|
|
'data-l10n-id', 'WB_LT_SWITCH_PAN_MODE');
|
|
} else {
|
|
this.clearDragMode();
|
|
}
|
|
|
|
// Show mode button
|
|
this.showPanCursorButton();
|
|
// Show pan cursor banner
|
|
this.showPanCursorBanner();
|
|
},
|
|
// clear drag mode
|
|
clearDragMode: function toolbar_clearDragMode(){
|
|
if(Browser.getCursorPanMode() == 'pan') {
|
|
Browser.setCursorPanMode('cursor');
|
|
this.modeButtonTitle.setAttribute('data-l10n-id', 'WB_LT_CURSOR_MODE');
|
|
this.panCursorBannerMessage.setAttribute(
|
|
'data-l10n-id', 'WB_LT_SWITCH_CURSOR_MODE');
|
|
}
|
|
},
|
|
|
|
setUrlButtonMode: function toolbar_setUrlButtonMode(mode) {
|
|
this.urlButtonMode = mode;
|
|
},
|
|
|
|
setPrivateBrowsing: function toolbar_setPrivateBrowsing(bool) {
|
|
this.toolbarPanel.dataset.pvt = bool;
|
|
},
|
|
|
|
isPrivateBrowsing: function toolbar_getPrivateBrowsing() {
|
|
return (this.toolbarPanel.dataset.pvt == 'true');
|
|
},
|
|
|
|
initStartBrowsing: function toolbar_initStartBrowsing() {
|
|
if(this.initStart) {
|
|
this.initStart = false;
|
|
/* show pan cursor mode button */
|
|
this.showPanCursorButton();
|
|
}
|
|
},
|
|
|
|
setToolbarMode: function toolbar_setToolbarMode(mode) {
|
|
this.toolbarPanel.dataset.mode = mode;
|
|
},
|
|
getToolbarMode: function toolbar_getToolbarMode() {
|
|
return this.toolbarPanel.dataset.mode;
|
|
},
|
|
|
|
/**
|
|
* Open Pocket List
|
|
*/
|
|
clickPocketListBlock: function toolbar_clickPocketListBlock() {
|
|
var pocketHomePageUri = 'https://getpocket.com/fxostv';
|
|
if (Browser.currentInfo.url &&
|
|
UrlHelper.isURL(Browser.currentInfo.url)) {
|
|
var ev = {
|
|
detail: {
|
|
url: pocketHomePageUri,
|
|
frameElement: null
|
|
}
|
|
};
|
|
Awesomescreen.openNewTab(ev);
|
|
} else {
|
|
Browser.navigate(pocketHomePageUri);
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
|