Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
3216 lines
97 KiB
JavaScript
Executable file
3216 lines
97 KiB
JavaScript
Executable file
/* globals Browser, BrowserDB, Toolbar, Settings, KeyEvent, MozActivity */
|
|
/* globals SmartList, BookmarkStore, HistoryStore */
|
|
|
|
|
|
/* exported Awesomescreen */
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* Browser App Awesomescreen. Display top sites, bookmarks, histories and search
|
|
* result.
|
|
* @namespace Awesomescreen
|
|
*/
|
|
var Awesomescreen = {
|
|
|
|
DEFAULT_FAVICON: 'style/images/default-fav.svg',
|
|
DEFAULT_TAB_ADD: 'style/images/add-tab.svg',
|
|
DEFAULT_SCREENSHOT: 'style/images/mozilla_screenshot.png',
|
|
DEFAULT_BOOKMARK: 'Bookmark',
|
|
DEFAULT_HISTORY: 'History',
|
|
DEFAULT_TABVIEW: 'Tabview',
|
|
DEFAULT_TAB_DELETE: 'TabDelete',
|
|
DEFAULT_TOPSITE: 'Topsite',
|
|
DEFAULT_LOADPOSITION: 'LoadPosition',
|
|
DEFAULT_EXCLEAR: 'exclear',
|
|
//IFDEF_FIREFOX_SYNC
|
|
FIREFOX_SYNC_BOOKMARK: 'Firefox_Sync_Bookmark',
|
|
FIREFOX_SYNC_HISTORY: 'Firefox_Sync_History',
|
|
//ENDIF_FIREFOX_SYNC
|
|
TOP_SITES_COUNT: 9,
|
|
RESULT_CACHE_SIZE: 20,
|
|
TABLIST_MAX: 12,
|
|
PTH_THUMBNAIL_WIDTH_FULL: 658,
|
|
PTH_THUMBNAIL_WIDTH_SIDE: 521,
|
|
PTH_THUMBNAIL_HEIGHT: 336,
|
|
MOUSE_RIGHT_CLICK: 2,
|
|
focusList: null,
|
|
focusPos: 0,
|
|
blurFlag: false,
|
|
resultTemplate: null,
|
|
searchTemplate: null,
|
|
resultCache: {},
|
|
historyClearFlg: false,
|
|
focusSwitchFlg: null,
|
|
exeflag: true,
|
|
onmouseX: null,
|
|
onmouseY: null,
|
|
// Keep img object URLs to later clean up img file references
|
|
objectURLs: [],
|
|
tabList: null,
|
|
finalDispTabId: null,
|
|
topSiteList: null,
|
|
selectList:null,
|
|
selectMenu:null,
|
|
manifestURL: null,
|
|
pintohomeTitle: null,
|
|
clickTopListFlg:false,
|
|
clickTopActFlg:false,
|
|
clickTabListFlg:false,
|
|
clickTabActFlg:false,
|
|
bookmarkList: null,
|
|
historyList: null,
|
|
/**
|
|
* Initialise Awesomescreen.
|
|
*/
|
|
init: function awesomescreen_init() {
|
|
|
|
/* Event Listener */
|
|
window.addEventListener('click', this);
|
|
window.addEventListener('blur', this);
|
|
|
|
// Create template elements
|
|
this.resultTemplate = this.createResultTemplate();
|
|
|
|
//Create topsite,tab template elements
|
|
this.topTemplate = this.createtopTemplate();
|
|
this.topListTemplate = this.createTopList();
|
|
|
|
this.tabListTemplate = this.createNewtabTemplate();
|
|
this.tabTemplate = this.createtabList();
|
|
|
|
/* get Element */
|
|
this.getAllElements();
|
|
|
|
//awesomescreem elements
|
|
|
|
this.inputArea.addEventListener('focus',
|
|
this.handleinputAreaFocus.bind(this));
|
|
|
|
this.inputArea.addEventListener('mousedown',
|
|
this.handleinputAreaClick.bind(this));
|
|
|
|
this.inputArea.addEventListener('blur',
|
|
this.handleinputAreaBlur.bind(this));
|
|
|
|
this.inputArea.addEventListener('input',
|
|
this.handleinputAreaInput.bind(this));
|
|
|
|
this.checkBox.addEventListener('mouseup',
|
|
this.pintohomeCheck.bind(this));
|
|
|
|
this.textArea.addEventListener('mouseup',
|
|
this.pintohomeCheck.bind(this));
|
|
|
|
this.circleImg.addEventListener('mouseup',
|
|
this.inputClear.bind(this));
|
|
|
|
this.cancelButton.addEventListener('mouseup',
|
|
this.clickCancelButton.bind(this));
|
|
|
|
this.okButton.addEventListener('mouseup',
|
|
this.dialogConfirm.bind(this));
|
|
|
|
this.pinhomeButton.addEventListener('mouseup',
|
|
this.clickPinhomeButton.bind(this));
|
|
|
|
this.removeButton.addEventListener('mouseup',
|
|
this.clickRemoveButton.bind(this));
|
|
|
|
this.removeBookmarkButton.addEventListener('mouseup',
|
|
this.clickRemoveBookmarkButton.bind(this));
|
|
|
|
this.editButton.addEventListener('mouseup',
|
|
this.clickEditButton.bind(this));
|
|
|
|
this.clhistoryButton.addEventListener('mouseup',
|
|
this.clickClhistoryButton.bind(this));
|
|
|
|
this.sethomeButton.addEventListener('mouseup',
|
|
this.clickSethomeButton.bind(this));
|
|
|
|
this.removeTopsiteButton.addEventListener('mouseup',
|
|
this.clickRmtopsiteButton.bind(this));
|
|
|
|
this.removeConfirmButton.addEventListener('mouseup',
|
|
this.titleRemove.bind(this));
|
|
|
|
this.renameConfirmButton.addEventListener('mouseup',
|
|
this.titleRename.bind(this));
|
|
|
|
this.clearButton.addEventListener('mouseup',
|
|
this.clickClearButton.bind(this));
|
|
|
|
this.privateBrowsingBlock.addEventListener('mouseup',
|
|
this.handlePrivateBrowsingBlockMouseUp.bind(this));
|
|
|
|
// init BookmarkStore
|
|
BookmarkStore.init();
|
|
|
|
// init bookmark list
|
|
this.bookmarkList = new SmartList(this.bookmark, 'bookmarks');
|
|
this.handleSmartListEvent(
|
|
this.bookmark, this.bookmarkList, BookmarkStore, this.DEFAULT_BOOKMARK
|
|
);
|
|
|
|
// init history list
|
|
this.historyList = new SmartList(this.history, 'LT_SE_HISTORY');
|
|
this.handleSmartListEvent(
|
|
this.history, this.historyList, HistoryStore, this.DEFAULT_HISTORY
|
|
);
|
|
|
|
//And setting various button events
|
|
this.setEventListener();
|
|
|
|
//get to manifest
|
|
this.getManifest();
|
|
|
|
//Get the coordinates of the mouse pointer
|
|
this.mouseMoveFunc();
|
|
},
|
|
|
|
/**
|
|
* awesomescreen on/off switch
|
|
*/
|
|
showAwesomescreen: function awesomescreen_showAwesomescreen() {
|
|
document.body.classList.add('awesomescreen-screen');
|
|
},
|
|
|
|
hideAwesomescreen: function awesomescreen_hideAwesomescreen() {
|
|
document.body.classList.remove('awesomescreen-screen');
|
|
},
|
|
|
|
/**
|
|
* awesomescreen displays a confirmation.
|
|
*/
|
|
isDisplayed: function awesomescreen_isDisplayed() {
|
|
return document.body.classList.contains('awesomescreen-screen');
|
|
},
|
|
|
|
isDisplayedList: function awesomescreen_isDisplayed() {
|
|
return this.bookmarkList.isDisplay() || this.historyList.isDisplay();
|
|
},
|
|
|
|
isDisplayedTab: function awesomescreen_isDisplayed() {
|
|
return this.awesomescreen.classList.contains('awesomescreen-screen-tab');
|
|
},
|
|
|
|
isDisplayedTop: function awesomescreen_isDisplayed() {
|
|
return this.awesomescreen.classList.contains('awesomescreen-screen-top');
|
|
},
|
|
|
|
isDisplayedDialog: function awesomescreen_isDisplayed() {
|
|
return this.awesomescreen.classList.contains('awesomescreen-screen-dialog');
|
|
},
|
|
|
|
/**
|
|
* The scaling in scale change in the toolbar
|
|
*/
|
|
isScaleChange: function awesomescreen_isScaleChange(setElemnt) {
|
|
//The scale switching by the width of the screen
|
|
if(Browser.mainBlock.dataset.sidebar == 'true'){
|
|
setElemnt.classList.remove('scale-standard');
|
|
setElemnt.classList.add('scale-min');
|
|
}else{
|
|
setElemnt.classList.remove('scale-min');
|
|
setElemnt.classList.add('scale-standard');
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Save the final display tab
|
|
*/
|
|
isTabSetting: function awesomescreen_isTabSetting() {
|
|
var tabIds = Object.keys(Browser.info);
|
|
this.finalDispTabId = Browser.info[tabIds[0]].id;
|
|
},
|
|
|
|
/**
|
|
* Check whether the focus is hitting the check box
|
|
*/
|
|
isFocusCheck: function awesomescreen_isFocusCheck() {
|
|
if(document.activeElement == this.checkBox){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
|
|
document.activeElement.blur();
|
|
|
|
},
|
|
|
|
/**
|
|
* close all awesomescreen screen
|
|
*/
|
|
allHidden: function awesomescreen_allHidden() {
|
|
if(this.bookmarkList.isDisplay()) {
|
|
this.bookmarkList.close();
|
|
}
|
|
if(this.historyList.isDisplay()) {
|
|
this.historyList.close();
|
|
}
|
|
if(this.isDisplayedDialog()){
|
|
this.dialogHidden();
|
|
}
|
|
if(this.isDisplayedTop()){
|
|
this.topsiteHidden();
|
|
}
|
|
if(this.isDisplayedTab()){
|
|
this.tabviewHidden();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 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 = [
|
|
'top-sites', 'bookmark', 'history', 'topsite-dialog',
|
|
'tab-site-list', 'dialog-area', 'message-title',
|
|
'input-area', 'check-img', 'circle-img',
|
|
'button-area', 'check-box', 'bmtitle-area',
|
|
'check-area', 'message-area', 'bt-position',
|
|
'cancel-button', 'ok-button', 'pinhome-button',
|
|
'remove-button', 'edit-button', 'clhistory-button',
|
|
'sethome-button', 'remove-topsite-button',
|
|
'remove-confirm-button', 'rename-confirm-button', 'clear-button',
|
|
'tab-view', 'pointer-img',
|
|
'awesomescreen', 'dialog-banner-message' , 'bmd-dialog',
|
|
'dialog-area', 'tabview-panels', 'top-site-list', 'top-panels',
|
|
'private-browsing-block', 'top-default-list', 'awesome-loading-icon',
|
|
'remove-bookmark-button', 'text-area'];
|
|
|
|
// 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);
|
|
},
|
|
|
|
getManifest: function awesomescreen_getManifest() {
|
|
var request = navigator.mozApps.getSelf();
|
|
request.onsuccess = function() {
|
|
Awesomescreen.manifestURL = request.result.manifestURL;
|
|
};
|
|
request.onerror = function() {
|
|
this.debug('getSelf error');
|
|
};
|
|
},
|
|
|
|
setEventListener: function awesomescreen_setEventListener(){
|
|
|
|
var elementIDs = [this.cancelButton, this.checkBox, this.circleImg,
|
|
this.okButton, this.pinhomeButton, this.removeButton,
|
|
this.editButton, this.clhistoryButton, this.sethomeButton,
|
|
this.removeTopsiteButton, this.removeConfirmButton,
|
|
this.renameConfirmButton,this.clearButton,
|
|
this.removeBookmarkButton];
|
|
|
|
elementIDs.forEach(function createElementStyle(name) {
|
|
name.addEventListener('keyup', this.dialogButtonKeyup.bind(this));
|
|
}, this);
|
|
},
|
|
|
|
/**
|
|
* handle event
|
|
*/
|
|
handleEvent: function awesomescreen_handleEvent(ev) {
|
|
var state = true;
|
|
switch(ev.button){
|
|
case 0: //left click
|
|
switch(ev.target){
|
|
//I close the dialog screen
|
|
case Browser.sideBlock :
|
|
case this.dialogArea :
|
|
if(this.isDisplayedDialog() &&
|
|
(this.cancelButton.style.display == 'none') ){
|
|
this.dialogHidden();
|
|
}
|
|
state = false;
|
|
break;
|
|
case this.bookmark:
|
|
if(this.bookmarkList.isDisplay()) {
|
|
this.bookmarkList.close();
|
|
}
|
|
state = false;
|
|
break;
|
|
case this.history:
|
|
if(this.historyList.isDisplay()) {
|
|
this.historyList.close();
|
|
}
|
|
state = false;
|
|
break;
|
|
case this.topSites :
|
|
case this.topPanels :
|
|
case this.tabView :
|
|
case this.tabviewPanels :
|
|
//tabview be closed when I appear
|
|
if(this.isDisplayedTab()) {
|
|
this.tabviewHidden();
|
|
}
|
|
state = false;
|
|
break;
|
|
default:
|
|
if(this.isDisplayedTab()){
|
|
if( (ev.target.className) &&
|
|
(ev.target.className.contains('browser-tab')) ){
|
|
this.tabviewHidden();
|
|
state = false;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return state;
|
|
},
|
|
|
|
/**
|
|
* Hide Private Browsing
|
|
*/
|
|
hidePrivateBrowsingBlock: function hidePrivateBrowsingBlock() {
|
|
this.privateBrowsingBlock.classList.remove('visible');
|
|
var moreInfoEl =
|
|
document.getElementById('private-browsing-more-info-link');
|
|
moreInfoEl
|
|
.removeEventListener('click', this.openPrivateBrowsingMoreInfo);
|
|
},
|
|
|
|
/**
|
|
* Select Top Sites tab.
|
|
*/
|
|
selectTopSites: function awesomescreen_selectTopSites() {
|
|
Toolbar.setToolbarMode('top');
|
|
BrowserDB.getTopSites(this.TOP_SITES_COUNT, null,
|
|
this.populateTopSites.bind(this));
|
|
// show private browsing
|
|
this.showPrivateBrowsing();
|
|
},
|
|
|
|
/**
|
|
* show private browsing
|
|
*/
|
|
showPrivateBrowsing: function awesomescreen_showPrivateBrowsing() {
|
|
this.privateBrowsingBlock.classList.remove('visible');
|
|
if(Toolbar.isPrivateBrowsing()) {
|
|
this.privateBrowsingBlock.classList.add('visible');
|
|
var moreInfoEl =
|
|
document.getElementById('private-browsing-more-info-link');
|
|
moreInfoEl
|
|
.addEventListener('click', this.openPrivateBrowsingMoreInfo);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* handle private browsing block mouse up event
|
|
*/
|
|
handlePrivateBrowsingBlockMouseUp:
|
|
function awesomescreen_handlePrivateBrowsingBlockMouseUp(e) {
|
|
var moreInfoEl =
|
|
document.getElementById('private-browsing-more-info-link');
|
|
if(e.target !== moreInfoEl) {
|
|
this.hidePrivateBrowsingBlock();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* open private browsing more info link
|
|
*/
|
|
openPrivateBrowsingMoreInfo:
|
|
function awesomescreen_openPrivateBrowsingMoreInfo() {
|
|
Awesomescreen.createAddNewTab();
|
|
Browser.navigate('https://support.mozilla.org/en-US/kb/' +
|
|
'private-browsing-use-firefox-without-history');
|
|
},
|
|
|
|
/**
|
|
* Show the list of Top Sites.
|
|
*
|
|
* @param {Array} topSites Array of top site data.
|
|
*/
|
|
populateTopSites: function awesomescreen_populateTopSites(topSites) {
|
|
Toolbar.searchInput.value = '';
|
|
//If the top site of 0, display the default page
|
|
if(topSites.length === 0){
|
|
Settings.getDefaultHomepage(this.defaultTopsite.bind(this));
|
|
return;
|
|
}
|
|
this.topSites.style.opacity = '0';
|
|
this.topSiteList.innerHTML = '';
|
|
|
|
//Get the 'container, ul' element
|
|
var list = this.topSiteList;
|
|
this.objectURLs = [];
|
|
topSites.forEach(function(data,index) {
|
|
//Add 'topsite, tab' the list creation process of the main
|
|
list.appendChild(this.createListItemTopsite(data,null,null,index));
|
|
}, this);
|
|
|
|
this.topPanels.appendChild(list);
|
|
this.topsiteShow();
|
|
},
|
|
|
|
/**
|
|
* default topsite.
|
|
*/
|
|
defaultTopsite: function awesomescreen_defaultTopsite() {
|
|
|
|
BrowserDB.addTopSite(
|
|
Settings.DEFAULT_HOMEPAGE,
|
|
Settings.DEFAULT_HOMEPAGE,
|
|
1
|
|
);
|
|
var topListObject = {
|
|
id: 'top-list-default',
|
|
thumbnail: this.DEFAULT_SCREENSHOT
|
|
};
|
|
this.objectURLs.push(topListObject);
|
|
|
|
BrowserDB.getTopSites(
|
|
this.TOP_SITES_COUNT,
|
|
null,
|
|
this.populateTopSites.bind(this)
|
|
);
|
|
},
|
|
|
|
/**
|
|
* Select Top Sites tab.
|
|
*/
|
|
//I want to display the URL of the list and click
|
|
clickTopList: function awesomescreen_clickTopList(ev) {
|
|
if(ev) {
|
|
ev.stopPropagation();
|
|
}
|
|
this.clickTopListFlg = true;
|
|
if(this.clickTopActFlg){
|
|
this.clickTopActFlg = false;
|
|
this.clickTopListFlg = false;
|
|
var fade_top_action = (function() {
|
|
|
|
switch(ev.button){
|
|
case 0 : // left click
|
|
var uri = ev.target.childNodes[0].childNodes[1].textContent;
|
|
Toolbar.urlInput.blur();
|
|
Browser.navigate(uri);
|
|
Browser.selectInfo(Browser.currentInfo.id);
|
|
Browser.switchVisibility(Browser.currentInfo, true);
|
|
//To the tab you are currently viewing the final display tab
|
|
Awesomescreen.finalDispTabId = Browser.currentInfo.id;
|
|
if(Awesomescreen.isDisplayedTab()) {
|
|
Awesomescreen.tabviewHidden();
|
|
}
|
|
Awesomescreen.topsiteHidden();
|
|
|
|
break;
|
|
case 2: //right click
|
|
ev.keyCode = KeyEvent.DOM_VK_SUBMENU;
|
|
Awesomescreen.handleKeyEvent(ev);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
//undo the outer frame of the thumbnail
|
|
document.getElementById('default-' + ev.target.id).style.opacity = '1';
|
|
ev.target.childNodes[0]
|
|
.removeEventListener('transitionend', fade_top_action, false);
|
|
});
|
|
|
|
// Add fade animantion event
|
|
ev.target.childNodes[0]
|
|
.addEventListener('transitionend', fade_top_action, false);
|
|
ev.target.classList.remove('active');
|
|
}
|
|
},
|
|
|
|
clickTopAction: function awesomescreen_clickTopAction(evt) {
|
|
if( evt ){
|
|
evt.preventDefault();
|
|
}
|
|
var click_top_action = (function() {
|
|
Awesomescreen.clickTopActFlg = true;
|
|
if(Awesomescreen.clickTopListFlg){
|
|
Awesomescreen.clickTopList(evt);
|
|
}
|
|
evt.target.childNodes[0]
|
|
.removeEventListener('transitionend', click_top_action, false);
|
|
});
|
|
|
|
// Add fade animantion event
|
|
evt.target.childNodes[0]
|
|
.addEventListener('transitionend', click_top_action, false);
|
|
evt.target.classList.add('active');
|
|
},
|
|
|
|
/**
|
|
* topsite show.
|
|
*/
|
|
topsiteShow: function awesomescreen_topsiteShow() {
|
|
if( Browser.currentInfo ) {
|
|
if( Browser.currentInfo.url ) {
|
|
Browser.debug('stopped for TopSites display...');
|
|
this.topsiteHidden(true);
|
|
Browser.switchCursorMode(true);
|
|
return;
|
|
}
|
|
}
|
|
this.showAwesomescreen();
|
|
this.awesomescreen.classList.add('awesomescreen-screen-top');
|
|
this.topSites.style.display = 'block';
|
|
this.topSites.style.opacity = '1';
|
|
if(this.isDisplayedTab() || window.FTE){
|
|
Browser.switchCursorMode(false);
|
|
}else{
|
|
Browser.switchCursorMode(true);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* topsite hidden.
|
|
*/
|
|
topsiteHidden: function awesomescreen_topsiteHidden(type) {
|
|
if(!this.isDisplayedTab()) {
|
|
this.hideAwesomescreen();
|
|
}
|
|
this.awesomescreen.classList.remove('awesomescreen-screen-top');
|
|
Awesomescreen.topSites.style.display = 'none';
|
|
this.topSites.style.opacity = '0';
|
|
Toolbar.setToolbarMode('normal');
|
|
|
|
this.privateBrowsingBlock.classList.remove('visible');
|
|
},
|
|
|
|
/**
|
|
* Select History tab.
|
|
*/
|
|
selectHistoryTab: function awesomescreen_selectHistoryTab() {
|
|
HistoryStore.reset().then(() => {
|
|
HistoryStore.fetchCache().then(() => {
|
|
this.historyList.open();
|
|
});
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Select the Bookmarks tab.
|
|
*/
|
|
selectBookmarksTab: function awesomescreen_selectBookmarksTab() {
|
|
BookmarkStore.reset().then(() => {
|
|
BookmarkStore.updateCache().then(() => {
|
|
this.bookmarkList.open();
|
|
});
|
|
});
|
|
},
|
|
|
|
/**
|
|
* sort by object
|
|
*
|
|
* @return {prop_name} Item name you want to sort.
|
|
* @return {reverse} Alignment sequence. asc:false,desc:true
|
|
* @return {primer} parseInt and function.
|
|
*/
|
|
objectSort: function awesomescreen_objectSort(prop_name, reverse, primer) {
|
|
reverse = (reverse) ? -1 : 1;
|
|
return function(a,b){
|
|
a = a[prop_name];
|
|
b = b[prop_name];
|
|
if (typeof(primer) != 'undefined'){
|
|
a = primer(a);
|
|
b = primer(b);
|
|
}
|
|
if (a < b) {
|
|
return reverse * -1;
|
|
}
|
|
if (a > b) {
|
|
return reverse * 1;
|
|
}
|
|
return 0;
|
|
};
|
|
},
|
|
|
|
/**
|
|
* Create a template list item DOM node.
|
|
*
|
|
* @return {Element} List item element.
|
|
*/
|
|
createResultTemplate: function awesomescreen_createResultTemplate() {
|
|
var template = document.createElement('li');
|
|
var textArea = document.createElement('div');
|
|
var backImgArea = document.createElement('div');
|
|
var imgArea = document.createElement('div');
|
|
var url = document.createElement('span');
|
|
var title = document.createElement('span');
|
|
var img = document.createElement('img');
|
|
|
|
template.setAttribute('role', 'listitem');
|
|
template.classList.add('history-area');
|
|
url.classList.add('text-url');
|
|
title.classList.add('text-title');
|
|
|
|
img.classList.add('icon-img');
|
|
textArea.appendChild(title);
|
|
textArea.appendChild(url);
|
|
|
|
backImgArea.classList.add('back-icon-img');
|
|
backImgArea.appendChild(img);
|
|
imgArea.appendChild(backImgArea);
|
|
imgArea.classList.add('img-area');
|
|
|
|
textArea.classList.add('text-area');
|
|
template.appendChild(imgArea);
|
|
template.appendChild(textArea);
|
|
return template;
|
|
},
|
|
|
|
//Add "topsite, tab" an element configuration process
|
|
createTopList: function awesomescreen_createTopList() {
|
|
var topPanels = document.createElement('div');
|
|
var list = document.createElement('ul');
|
|
topPanels.id = 'top-panels';
|
|
list.setAttribute('role', 'listbox');
|
|
list.id = 'top-site-list';
|
|
topPanels.appendChild(list);
|
|
|
|
return topPanels;
|
|
},
|
|
|
|
createtabList: function awesomescreen_createtabList() {
|
|
var template = document.createElement('li');
|
|
var delArea = document.createElement('div');
|
|
var delImg = document.createElement('span');
|
|
var backArea = document.createElement('div');
|
|
var tabviewListArea = backArea.cloneNode(true);
|
|
var tabThumbnail = backArea.cloneNode(true);
|
|
var tabviewTitleArea = backArea.cloneNode(true);
|
|
var tabviewTitle = backArea.cloneNode(true);
|
|
|
|
template.classList.add('tabview-site-item');
|
|
delArea.classList.add('del-area');
|
|
delImg.classList.add('del-img');
|
|
backArea.classList.add('back-area');
|
|
delImg.classList.add('del-img');
|
|
tabviewListArea.classList.add('tabviewList-area');
|
|
tabviewTitle.classList.add('tabview-title');
|
|
tabviewTitleArea.classList.add('tabview-title-area');
|
|
tabThumbnail.classList.add('tab-thumbnail');
|
|
|
|
delArea.appendChild(delImg);
|
|
tabviewTitleArea.appendChild(tabviewTitle);
|
|
tabThumbnail.appendChild(tabviewListArea);
|
|
backArea.appendChild(tabThumbnail);
|
|
backArea.appendChild(tabviewTitleArea);
|
|
template.appendChild(delArea);
|
|
template.appendChild(backArea);
|
|
|
|
return template;
|
|
},
|
|
|
|
createNewtabTemplate: function awesomescreen_createNewtabTemplate() {
|
|
var template = document.createElement('li').cloneNode(true);
|
|
var delArea = document.createElement('div');
|
|
var delImg = document.createElement('span');
|
|
var backArea = document.createElement('div');
|
|
var tabviewListArea = backArea.cloneNode(true);
|
|
var tabThumbnail = backArea.cloneNode(true);
|
|
|
|
template.classList.add('tabview-site-item');
|
|
template.id = 'newtab';
|
|
delArea.classList.add('del-area');
|
|
delImg.classList.add('del-img');
|
|
delImg.classList.add('hidden');
|
|
backArea.classList.add('back-area');
|
|
tabviewListArea.classList.add('tabviewList-area');
|
|
|
|
tabThumbnail.id = 'new-thumbnail';
|
|
tabThumbnail.style.backgroundImage = 'url(' + this.DEFAULT_TAB_ADD + ')';
|
|
tabThumbnail.style.backgroundRepeat = 'no-repeat';
|
|
tabThumbnail.style.backgroundSize = 'contain';
|
|
tabThumbnail.style.backgroundPosition = 'center';
|
|
tabThumbnail.style.backgroundColor = '#5f6267';
|
|
|
|
delArea.appendChild(delImg);
|
|
tabThumbnail.appendChild(tabviewListArea);
|
|
backArea.appendChild(tabThumbnail);
|
|
template.appendChild(delArea);
|
|
template.appendChild(backArea);
|
|
|
|
return template;
|
|
},
|
|
|
|
createtopTemplate: function awesomescreen_createtopTemplate() {
|
|
var template = document.createElement('li');
|
|
var topListArea = document.createElement('div');
|
|
var siteTitleArea = topListArea.cloneNode(true);
|
|
var siteTitle = topListArea.cloneNode(true);
|
|
var toptabUrl = topListArea.cloneNode(true);
|
|
var thumbnailArea = topListArea.cloneNode(true);
|
|
|
|
template.classList.add('top-site-item');
|
|
topListArea.classList.add('topList-area');
|
|
thumbnailArea.classList.add('thumbnail-area');
|
|
|
|
siteTitleArea.classList.add('site-title-area');
|
|
siteTitle.classList.add('site-title');
|
|
toptabUrl.classList.add('toptab-url');
|
|
|
|
siteTitleArea.appendChild(siteTitle);
|
|
thumbnailArea.appendChild(topListArea);
|
|
thumbnailArea.appendChild(toptabUrl);
|
|
|
|
template.appendChild(thumbnailArea);
|
|
template.appendChild(siteTitleArea);
|
|
return template;
|
|
},
|
|
|
|
//Add "topsite, tab" the list creation process of the main
|
|
/**
|
|
* Create a list item representing a result.
|
|
*
|
|
* @param {Object} data Result data.
|
|
* @param {string} filter Text to highlight if necessary.
|
|
* @param {string} listType Type of list being generated e.g. 'bookmarks'.
|
|
* @param {number} data index.
|
|
* @return {Element} List item element representing result.
|
|
*/
|
|
createListItemTopsite: function awesomescreen_createListItemTopsite
|
|
(data, filter, listType, index) {
|
|
|
|
var listItem = null;
|
|
var fromCache = false;
|
|
|
|
// Clone list item element from the cache or a template
|
|
if (listType == 'search') {
|
|
if (this.searchTemplate) {
|
|
listItem = this.searchTemplate.cloneNode(true);
|
|
fromCache = true;
|
|
}else{
|
|
listItem = this.topTemplate.cloneNode(true);
|
|
this.searchTemplate = listItem;
|
|
}
|
|
}else if(this.resultCache[data.uri]) {
|
|
//listItem = this.resultCache[data.uri].cloneNode(true);
|
|
listItem = this.topTemplate.cloneNode(true);
|
|
//fromCache = true;
|
|
}else{
|
|
listItem = this.topTemplate.cloneNode(true);
|
|
this.cacheResult(data.uri, listItem);
|
|
}
|
|
|
|
// If the result was cached, nothing left to do so return it
|
|
if (fromCache) {
|
|
listItem
|
|
.addEventListener('mouseover', this.mouseOverTopsiteFunc.bind(this));
|
|
return listItem;
|
|
}
|
|
|
|
var title = listItem.childNodes[1].childNodes[0];
|
|
title.textContent = data.title;
|
|
var url = listItem.childNodes[0].childNodes[1];
|
|
url.textContent = data.uri;
|
|
|
|
//image.textarea get
|
|
var iconImg = listItem.childNodes[0];
|
|
var imgUrl = '';
|
|
// Set result icon
|
|
if (!data.screenshot) {
|
|
if(data.title == Settings.DEFAULT_HOMEPAGE){
|
|
iconImg.style.backgroundImage = 'url(' + this.DEFAULT_SCREENSHOT + ')';
|
|
iconImg.style.backgroundRepeat = 'no-repeat';
|
|
iconImg.style.backgroundPosition = 'center';
|
|
|
|
}else{
|
|
iconImg.style.backgroundImage = 'url(' + this.DEFAULT_FAVICON + ')';
|
|
iconImg.style.backgroundColor = '#a3a3a3';
|
|
iconImg.style.backgroundSize = 'contain';
|
|
iconImg.style.backgroundRepeat = 'no-repeat';
|
|
iconImg.style.backgroundPosition = 'center';
|
|
}
|
|
}else{
|
|
if(data.title == Settings.DEFAULT_HOMEPAGE){
|
|
iconImg.style.backgroundImage = 'url(' + this.DEFAULT_SCREENSHOT + ')';
|
|
iconImg.style.backgroundRepeat = 'no-repeat';
|
|
iconImg.style.backgroundPosition = 'center';
|
|
}else{
|
|
imgUrl = window.URL.createObjectURL(data.screenshot);
|
|
iconImg.style.backgroundImage = 'url(' + imgUrl + ')';
|
|
iconImg.style.backgroundRepeat = 'no-repeat';
|
|
iconImg.style.backgroundPosition = 'center';
|
|
var topListObject = {
|
|
id:'top-list-' + index,
|
|
thumbnail: data.screenshot
|
|
};
|
|
this.objectURLs.push(topListObject);
|
|
}
|
|
}
|
|
listItem.id = 'top-list-' + index;
|
|
// Add event listeners(listItem)
|
|
listItem
|
|
.addEventListener('mouseup', this.clickTopList.bind(this));
|
|
listItem
|
|
.addEventListener('mousedown', this.clickTopAction.bind(this));
|
|
listItem
|
|
.addEventListener('mouseover',this.mouseOverTopsiteFunc.bind(this));
|
|
listItem
|
|
.addEventListener('mouseout', this.mouseOutTopsiteFunc.bind(this));
|
|
return listItem;
|
|
},
|
|
|
|
/**
|
|
* Cache an awesomescreen result.
|
|
*
|
|
* Use this.resultCache as a FIFO cache of DOM elements for previous results.
|
|
*
|
|
* @param {string} uri URI of result to cache.
|
|
* @param {Element} listItem DOM element representing result.
|
|
*/
|
|
cacheResult: function awesomescreen_cacheResult(uri, listItem) {
|
|
var keys = Object.keys(this.resultCache);
|
|
if (keys.length >= this.RESULT_CACHE_SIZE) {
|
|
delete this.resultCache[keys[0]];
|
|
}
|
|
this.resultCache[uri] = listItem;
|
|
},
|
|
|
|
/**
|
|
* Clear the cache of awesomescreen results to save memory.
|
|
*/
|
|
clearResultCache: function awesomescreen_clearResultCache() {
|
|
this.resultCache = {};
|
|
this.searchTemplate = null;
|
|
|
|
this.objectURLs.forEach(function(url) {
|
|
window.URL.revokeObjectURL(url);
|
|
});
|
|
this.objectURLs = [];
|
|
},
|
|
|
|
/**
|
|
* Handle the user clicking on an awesomescreen result.
|
|
*
|
|
* @param {Event} e Click event.
|
|
*/
|
|
handleClickResult: function awesomescreen_handleClickResult(e) {
|
|
this.clearResultCache();
|
|
Browser.followLink(e);
|
|
},
|
|
|
|
/**
|
|
* Add Bookmark Current url
|
|
*
|
|
* @param {bmList} bookmark list.
|
|
*/
|
|
addBookmarkSite: function awesomescreen_addBookmarkSite(bmList) {
|
|
|
|
Awesomescreen.dialogInitialize();
|
|
if(Toolbar.isBookmarks()){
|
|
Awesomescreen.optionDialogOpen('rmBookmark');
|
|
}else{
|
|
//Bookmark maximum number check
|
|
if(bmList.length >= Browser.MAX_BOOKMARK_LIST){
|
|
//TODO This message I want to change later
|
|
Awesomescreen.dialogBannerMessage.setAttribute(
|
|
'data-l10n-id', 'WB_LT_BOOKMARK_ERROR_1');
|
|
Awesomescreen.showBannerMessage();
|
|
}else{
|
|
Awesomescreen.bmDialogSetting();
|
|
//dialog show
|
|
Awesomescreen.dialogShow();
|
|
}
|
|
}
|
|
},
|
|
|
|
/**
|
|
* bookmark dialog setting
|
|
*/
|
|
bmDialogSetting: function awesomescreen_bmDialogSetting() {
|
|
|
|
this.focusList = [];
|
|
this.blurFlag = false;
|
|
Awesomescreen.messageTitle.setAttribute(
|
|
'data-l10n-id', 'WB_LT_BOOKMARK_THIS_PAGE');
|
|
Awesomescreen.bmtitleArea.classList.remove('invalid');
|
|
Awesomescreen.inputArea.value = Browser.currentInfo.title;
|
|
Awesomescreen.okButton.classList.remove('disable');
|
|
var elementIDs = [Awesomescreen.bmtitleArea, Awesomescreen.checkArea,
|
|
Awesomescreen.okButton, Awesomescreen.cancelButton,
|
|
Awesomescreen.messageArea];
|
|
this.elementSetDisplayBlock(elementIDs);
|
|
|
|
var elementIDs2 = [Awesomescreen.inputArea, Awesomescreen.circleImg,
|
|
Awesomescreen.checkBox, Awesomescreen.okButton,
|
|
Awesomescreen.cancelButton];
|
|
|
|
this.elementSetTabindex(elementIDs2);
|
|
this.focusList.push(this.okButton);
|
|
this.focusList.push(this.cancelButton);
|
|
this.focusList.push(this.inputArea);
|
|
this.focusList.push(this.circleImg);
|
|
this.focusList.push(this.checkBox);
|
|
this.focusPos = this.focusList.length - 4;
|
|
|
|
Awesomescreen.buttonArea.style.opacity = '1';
|
|
},
|
|
|
|
/**
|
|
* AClear input content
|
|
*/
|
|
inputClear: function awesomescreen_inputClear(ev) {
|
|
if(ev){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
this.inputArea.style.color = '#020202';
|
|
Awesomescreen.inputArea.value = '';
|
|
Awesomescreen.inputArea.style.color = '#fff';
|
|
Awesomescreen.bmtitleArea.classList.add('invalid');
|
|
Awesomescreen.okButton.classList.add('disable');
|
|
Awesomescreen.renameConfirmButton.classList.add('disable');
|
|
},
|
|
|
|
/**
|
|
* "Pin to home" check processing
|
|
*/
|
|
pintohomeCheck: function awesomescreen_pintohomeCheck(ev) {
|
|
if(ev){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
if(this.checkBox.classList.contains('true')){
|
|
this.checkBox.className = 'false';
|
|
this.checkImg.style.opacity = '0';
|
|
}else{
|
|
this.checkBox.className = 'true';
|
|
this.checkImg.style.opacity = '1';
|
|
}
|
|
},
|
|
|
|
/**
|
|
* "Bookmark", "pin to home" registration process
|
|
*/
|
|
dialogConfirm: function awesomescreen_dialogConfirm(ev) {
|
|
if(ev){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
|
|
if(!this.isInputAreaValid()) {
|
|
return;
|
|
}
|
|
|
|
//remove whitespace from both side of the title
|
|
var bmTitle = this.inputArea.value.trim();
|
|
|
|
//Check confirmation of "pin to home"
|
|
if(this.checkBox.classList.contains('true')){
|
|
this.pinToHome();
|
|
this.checkBox.className = 'false';
|
|
this.checkImg.style.opacity = '0';
|
|
}
|
|
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
//add a bookmark
|
|
BrowserDB.addBookmark(
|
|
Browser.currentInfo.url,
|
|
bmTitle,
|
|
Awesomescreen.addBookmarkHidden.bind(Awesomescreen)
|
|
);
|
|
}
|
|
);
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
addBookmarkHidden: function awesomescreen_addBookmarkHidden() {
|
|
Browser.refreshBrowserParts();
|
|
this.dialogHidden();
|
|
//Check confirmation of "pin to home"
|
|
if(this.checkBox.classList.contains('true')){
|
|
this.checkBox.className = 'false';
|
|
this.showBannerMessage();
|
|
}
|
|
|
|
Toolbar.bookmarkButtonAnime.dataset.anime = 'start';
|
|
Toolbar.showBookmarksButtonAnime.dataset.anime = 'start';
|
|
Toolbar.showBookmarksButton.style.display = 'none';
|
|
},
|
|
|
|
/**
|
|
* 'remove', 'rename' dialog determination process
|
|
*/
|
|
optionDialogOpen: function awesomescreen_optionDialogOpen(type) {
|
|
this.focusList = [];
|
|
this.blurFlag = false;
|
|
this.dialogInitialize();
|
|
var elementIDs = [];
|
|
//And determine the type to open the dialog menu
|
|
if(!type){
|
|
if(this.isDisplayedTop()){
|
|
type = this.DEFAULT_TOPSITE;
|
|
}
|
|
}
|
|
|
|
switch(type){
|
|
|
|
//IFDEF_FIREFOX_SYNC
|
|
case this.FIREFOX_SYNC_BOOKMARK:
|
|
case this.FIREFOX_SYNC_HISTORY:
|
|
elementIDs = [this.pinhomeButton];
|
|
this.focusList.push(this.pinhomeButton);
|
|
this.focusPos = 0;
|
|
this.elementSetDisplayBlock(elementIDs);
|
|
this.elementSetTabindex(elementIDs);
|
|
break;
|
|
//ENDIF_FIREFOX_SYNC
|
|
|
|
case this.DEFAULT_BOOKMARK:
|
|
elementIDs = [this.pinhomeButton, this.removeBookmarkButton,
|
|
this.editButton];
|
|
this.focusList.push(this.pinhomeButton);
|
|
this.focusList.push(this.removeBookmarkButton);
|
|
this.focusList.push(this.editButton);
|
|
this.focusPos = this.focusList.length - 3;
|
|
this.elementSetDisplayBlock(elementIDs);
|
|
this.elementSetTabindex(elementIDs);
|
|
break;
|
|
|
|
case this.DEFAULT_HISTORY:
|
|
elementIDs = [this.pinhomeButton, this.clhistoryButton,
|
|
this.removeButton];
|
|
this.focusList.push(this.pinhomeButton);
|
|
this.focusList.push(this.clhistoryButton);
|
|
this.focusList.push(this.removeButton);
|
|
this.focusPos = this.focusList.length - 3;
|
|
this.elementSetDisplayBlock(elementIDs);
|
|
this.elementSetTabindex(elementIDs);
|
|
break;
|
|
|
|
case this.DEFAULT_TOPSITE:
|
|
elementIDs = [this.pinhomeButton, this.sethomeButton,
|
|
this.removeTopsiteButton];
|
|
this.elementSetDisplayBlock(elementIDs);
|
|
this.elementSetTabindex(elementIDs);
|
|
this.focusList.push(this.pinhomeButton);
|
|
this.focusList.push(this.sethomeButton);
|
|
this.focusList.push(this.removeTopsiteButton);
|
|
this.focusPos = this.focusList.length - 3;
|
|
break;
|
|
|
|
case 'rmBookmark':
|
|
this.messageTitle.setAttribute(
|
|
'data-l10n-id', 'WB_LT_REMOVE_FROM_BOOKMARKS');
|
|
elementIDs = [this.messageArea, this.messageTitle,
|
|
this.removeConfirmButton, this.cancelButton];
|
|
this.elementSetDisplayBlock(elementIDs);
|
|
elementIDs = [this.removeConfirmButton, this.cancelButton];
|
|
this.elementSetTabindex(elementIDs);
|
|
this.focusList.push(this.removeConfirmButton);
|
|
this.focusList.push(this.cancelButton);
|
|
this.focusPos = this.focusList.length - 1;
|
|
break;
|
|
|
|
case 'clHistory': // remove One history item
|
|
this.messageTitle.setAttribute(
|
|
'data-l10n-id', 'WB_LT_REMOVE_HISTORY');
|
|
elementIDs = [this.messageArea, this.messageTitle,
|
|
this.removeConfirmButton, this.cancelButton];
|
|
this.elementSetDisplayBlock(elementIDs);
|
|
elementIDs = [this.removeConfirmButton, this.cancelButton];
|
|
this.elementSetTabindex(elementIDs);
|
|
this.focusList.push(this.removeConfirmButton);
|
|
this.focusList.push(this.cancelButton);
|
|
this.focusPos = this.focusList.length - 1;
|
|
break;
|
|
|
|
case 'rnBookmark':
|
|
this.messageTitle.setAttribute(
|
|
'data-l10n-id', 'WB_LT_RENAME_BOOKMARK');
|
|
this.bmtitleArea.classList.remove('invalid');
|
|
this.inputArea.value =
|
|
this.bookmarkList.getFocusItemTitle();
|
|
this.renameConfirmButton.classList.remove('disable');
|
|
elementIDs = [this.messageArea, this.bmtitleArea, this.messageTitle,
|
|
this.renameConfirmButton, this.cancelButton];
|
|
this.elementSetDisplayBlock(elementIDs);
|
|
elementIDs = [this.inputArea, this.circleImg, this.renameConfirmButton,
|
|
this.cancelButton];
|
|
this.elementSetTabindex(elementIDs);
|
|
this.focusList.push(this.renameConfirmButton);
|
|
this.focusList.push(this.cancelButton);
|
|
this.focusList.push(this.inputArea);
|
|
this.focusList.push(this.circleImg);
|
|
this.focusPos = this.focusList.length - 3;
|
|
break;
|
|
|
|
case 'rmHistory': // remove All history
|
|
this.messageTitle.setAttribute(
|
|
'data-l10n-id', 'WB_LT_CLEAR_ALL_HISTORY');
|
|
elementIDs = [this.messageArea, this.messageTitle, this.clearButton,
|
|
this.cancelButton];
|
|
this.elementSetDisplayBlock(elementIDs);
|
|
elementIDs = [this.clearButton, this.cancelButton];
|
|
this.elementSetTabindex(elementIDs);
|
|
this.focusList.push(this.clearButton);
|
|
this.focusList.push(this.cancelButton);
|
|
this.focusPos = this.focusList.length - 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
this.buttonArea.style.opacity = '1';
|
|
this.dialogShow(type);
|
|
|
|
},
|
|
|
|
/**
|
|
* tabindex ,display initialize
|
|
*/
|
|
dialogInitialize: function awesomescreen_dialogInitialize(type) {
|
|
var elementIDs = [
|
|
this.inputArea, this.circleImg, this.checkBox, this.cancelButton,
|
|
this.okButton, this.clearButton, this.clhistoryButton,
|
|
this.editButton, this.pinhomeButton, this.removeButton,
|
|
this.removeConfirmButton, this.removeTopsiteButton,
|
|
this.renameConfirmButton, this.sethomeButton,
|
|
this.removeBookmarkButton
|
|
];
|
|
|
|
// Loop and add element with camel style name to Modal Dialog attribute.
|
|
this.elementSetTabindexClear(elementIDs);
|
|
|
|
var elementIDs2 = [
|
|
this.messageArea, this.bmtitleArea, this.checkArea,
|
|
this.cancelButton,this.okButton, this.clearButton,
|
|
this.clhistoryButton, this.editButton, this.pinhomeButton,
|
|
this.removeButton, this.removeConfirmButton,
|
|
this.removeTopsiteButton, this.renameConfirmButton,
|
|
this.sethomeButton, this.removeBookmarkButton
|
|
];
|
|
|
|
// Loop and add element with camel style name to Modal Dialog attribute.
|
|
this.elementSetDisplayNone(elementIDs2);
|
|
},
|
|
|
|
elementSetTabindex: function awesomescreen_elementSetTabindex(elementIDs) {
|
|
elementIDs.forEach(function createElementTabIndex(name,index) {
|
|
name.tabIndex = index + 50;
|
|
}, this);
|
|
},
|
|
|
|
elementSetTabindexClear:
|
|
function awesomescreen_elementSetTabindexClear(elementIDs) {
|
|
elementIDs.forEach(function createElementTabIndex(name,index) {
|
|
name.tabIndex = '-1';
|
|
}, this);
|
|
},
|
|
|
|
elementSetDisplayBlock: function awesomescreen_elementSetDisplay(elementIDs) {
|
|
elementIDs.forEach(function createElementStyle(name) {
|
|
name.style.display = 'block';
|
|
}, this);
|
|
},
|
|
|
|
elementSetDisplayNone: function awesomescreen_elementSetDisplay(elementIDs) {
|
|
elementIDs.forEach(function createElementStyle(name) {
|
|
name.style.display = 'none';
|
|
}, this);
|
|
},
|
|
|
|
focusChange: function awesomescreen_focusChange(pos) {
|
|
if( Awesomescreen.blurFlag ) {
|
|
Awesomescreen.blurFlag = false;
|
|
Browser.switchCursorMode(true);
|
|
Browser.switchCursorMode(false);
|
|
}
|
|
for( var i = 0 ; i < Awesomescreen.focusList.length ; i ++ ) {
|
|
if( i == pos ) {
|
|
if(Awesomescreen.focusList[i].nodeName != 'INPUT'){
|
|
|
|
Awesomescreen.focusList[i].focus();
|
|
if(!Awesomescreen.focusList[i].id.contains('circle-img')){
|
|
Awesomescreen.bmtitleArea.classList.remove('exfocus');
|
|
}
|
|
}else{
|
|
document.activeElement.blur();
|
|
Awesomescreen.bmtitleArea.classList.add('exfocus');
|
|
}
|
|
Awesomescreen.focusImgFunc(Awesomescreen.focusList[i], null);
|
|
}
|
|
}
|
|
},
|
|
|
|
handleinputAreaFocus: function settings_handleinputAreaFocus(evt) {
|
|
if( evt ){
|
|
evt.preventDefault();
|
|
}
|
|
Awesomescreen.bmtitleArea.classList.add('input');
|
|
Awesomescreen.bmtitleArea.classList.remove('exfocus');
|
|
},
|
|
|
|
handleinputAreaClick: function awesomescreen_handleinputAreaClick(evt) {
|
|
Browser.switchCursorMode(true);
|
|
Browser.switchCursorMode(false);
|
|
|
|
Awesomescreen.bmtitleArea.classList.add('input');
|
|
Awesomescreen.bmtitleArea.classList.remove('exfocus');
|
|
Awesomescreen.focusPos = 2;
|
|
Awesomescreen.focusList[Awesomescreen.focusPos].focus();
|
|
Awesomescreen.hidePointerImg();
|
|
},
|
|
|
|
/**
|
|
* input Blur event
|
|
*/
|
|
handleinputAreaBlur: function awesomescreen_handleinputAreaBlur(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if( Awesomescreen.pointerImg.style.display == 'none' ) {
|
|
Browser.switchCursorMode(true);
|
|
Browser.switchCursorMode(false);
|
|
}
|
|
// Pointer image to the input area(fucusPos=2)
|
|
Awesomescreen.focusPos = 2;
|
|
Awesomescreen.bmtitleArea.classList.remove('input');
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
Awesomescreen.showPointerImg();
|
|
},
|
|
|
|
handleinputAreaInput: function awesomescreen_handleinputAreaInput(ev) {
|
|
if(Awesomescreen.isInputAreaValid()) {
|
|
Awesomescreen.bmtitleArea.classList.remove('invalid');
|
|
Awesomescreen.okButton.classList.remove('disable');
|
|
Awesomescreen.renameConfirmButton.classList.remove('disable');
|
|
} else {
|
|
Awesomescreen.bmtitleArea.classList.add('invalid');
|
|
Awesomescreen.okButton.classList.add('disable');
|
|
Awesomescreen.renameConfirmButton.classList.add('disable');
|
|
}
|
|
},
|
|
|
|
isInputAreaValid: function awesomescreen_isInputAreaValid() {
|
|
return Awesomescreen.inputArea.validity.valid;
|
|
},
|
|
|
|
clickEditButton: function awesomescreen_clickEditButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
Awesomescreen.optionDialogOpen('rnBookmark');
|
|
});
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
clickPinhomeButton: function awesomescreen_clickPinhomeButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
Awesomescreen.pinToHome();
|
|
});
|
|
target.addEventListener('transitionend', end_event, false);
|
|
return false;
|
|
},
|
|
|
|
clickRemoveButton: function awesomescreen_clickRemoveButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
this.optionDialogOpen('rmHistory');
|
|
},
|
|
|
|
clickRemoveBookmarkButton:
|
|
function awesomescreen_clickRemoveBookmarkButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
Awesomescreen.optionDialogOpen('rmBookmark');
|
|
});
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
clickSethomeButton: function awesomescreen_clickSethomeButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
var url = this.selectList.childNodes[0].childNodes[1].textContent;
|
|
var title = this.selectList.childNodes[1].childNodes[0].textContent;
|
|
Settings.setHomepage(url);
|
|
|
|
navigator.mozL10n.setAttributes(this.dialogBannerMessage,
|
|
'WB_LT_SET_HOMEPAGE', {value0:title});
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
Awesomescreen.allDialogHidden();
|
|
Awesomescreen.showBannerMessage();
|
|
});
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
showBannerMessage: function awesomescreen_showBannerMessage() {
|
|
this.dialogBannerMessage.style.opacity = '1';
|
|
clearTimeout(this.showBannerMessageTimeoutID);
|
|
this.showBannerMessageTimeoutID = setTimeout(function(){
|
|
Awesomescreen.dialogBannerMessage.style.opacity = '0';
|
|
Awesomescreen.dialogBannerMessage.classList.remove('visible');
|
|
}, 3000);
|
|
},
|
|
|
|
clickRmtopsiteButton: function awesomescreen_clickRmtopsiteButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
var url = this.selectList.childNodes[0].childNodes[1].textContent;
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
BrowserDB
|
|
.removeTopsite(url,Awesomescreen.topsiteReload.bind(Awesomescreen));
|
|
});
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
clickClhistoryButton: function awesomescreen_clickClhistoryButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
Awesomescreen.optionDialogOpen('clHistory');
|
|
});
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
clickClearButton: function awesomescreen_clickClearButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
this.historyClearFlg = true;
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
BrowserDB.clearHistory(Awesomescreen.allDialogHidden.bind(Awesomescreen));
|
|
});
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
clickRmconfirmButton: function awesomescreen_clickClearButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
Awesomescreen.titleRemove();
|
|
});
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
clickCancelButton: function awesomescreen_clickCancelButton(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
Awesomescreen.dialogHidden();
|
|
});
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
/**
|
|
* 'bookmark', 'history' title remove processing
|
|
*/
|
|
titleRemove: function awesomescreen_titleRemove(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
var listUrl = '';
|
|
if(this.bookmarkList.isDisplay()) {
|
|
listUrl = this.bookmarkList.getFocusItemUri();
|
|
} else if(this.historyList.isDisplay()) {
|
|
listUrl = this.historyList.getFocusItemUri();
|
|
} else {
|
|
listUrl = Browser.currentInfo.url;
|
|
}
|
|
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
if(this.bookmarkList.isDisplay()) {
|
|
BrowserDB.removeBookmark(
|
|
listUrl,
|
|
function(){
|
|
BookmarkStore.updateCache().then(() => {
|
|
this.bookmarkList.removeFocusItem();
|
|
Browser.refreshBrowserParts();
|
|
});
|
|
}.bind(this)
|
|
);
|
|
} else if(this.historyList.isDisplay()){
|
|
BrowserDB.removeHistory(
|
|
listUrl,
|
|
function(){
|
|
var index = this.historyList.getFocusItemIndex();
|
|
HistoryStore.removeCache(index);
|
|
this.historyList.removeFocusItem();
|
|
}.bind(this)
|
|
);
|
|
} else {
|
|
BrowserDB.removeBookmark(
|
|
listUrl,
|
|
function(){
|
|
this.dialogHidden();
|
|
Browser.switchCursorMode(true);
|
|
this.hidePointerImg();
|
|
Browser.refreshBrowserParts();
|
|
}.bind(this)
|
|
);
|
|
}
|
|
}).bind(this);
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
/**
|
|
* "Bookmark" title rename processing
|
|
*/
|
|
titleRename: function awesomescreen_titleRename(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if(ev.button == 2){
|
|
return;
|
|
}
|
|
|
|
if(!this.isInputAreaValid()) {
|
|
return;
|
|
}
|
|
//title is I do check if empty
|
|
var bmTitle = this.inputArea.value.trim(),
|
|
listUrl = this.bookmarkList.getFocusItemUri();
|
|
|
|
// Animation end event
|
|
var target = ev.currentTarget;
|
|
var end_event = (function() {
|
|
target.removeEventListener('transitionend', end_event, false);
|
|
//updateBookmark
|
|
BrowserDB.updateBookmark(
|
|
listUrl,
|
|
bmTitle,
|
|
function(){
|
|
BookmarkStore.updateCache().then(() => {
|
|
this.bookmarkList.updateFocusItemTitle(bmTitle);
|
|
});
|
|
}.bind(this)
|
|
);
|
|
}).bind(this);
|
|
target.addEventListener('transitionend', end_event, false);
|
|
},
|
|
|
|
dialogShow: function awesomescreen_dialogShow(type) {
|
|
Awesomescreen.dialogArea.style.opacity = '1';
|
|
this.showAwesomescreen();
|
|
this.awesomescreen.classList.add('awesomescreen-screen-dialog');
|
|
this.dialogArea.style.display = 'block';
|
|
Browser.switchCursorMode(true);
|
|
Browser.switchCursorMode(false);
|
|
this.focusChange(this.focusPos);
|
|
},
|
|
|
|
dialogHidden: function awesomescreen_dialogHidden(ev) {
|
|
if(ev){
|
|
ev.preventDefault();
|
|
}
|
|
if((ev) && (ev.button == 2)){
|
|
return;
|
|
}
|
|
if(Awesomescreen.isDisplayedDialog()){
|
|
Awesomescreen
|
|
.awesomescreen.classList.remove('awesomescreen-screen-dialog');
|
|
Awesomescreen.dialogArea.style.display = 'none';
|
|
}
|
|
if( (!(Awesomescreen.isDisplayedList())) &&
|
|
(!Awesomescreen.isDisplayedTop()) ) {
|
|
this.hideAwesomescreen();
|
|
}
|
|
|
|
if(Awesomescreen.checkBox.classList.contains('true')){
|
|
Awesomescreen.checkBox.className = 'false';
|
|
Awesomescreen.checkImg.style.opacity = '0';
|
|
}
|
|
|
|
Awesomescreen.exeflag = true;
|
|
|
|
//And release the focus of active elements
|
|
if( Awesomescreen.isDisplayed() ) {
|
|
if(Awesomescreen.isDisplayedTop() ){
|
|
if(Awesomescreen.isDisplayedList() ){
|
|
Browser.switchCursorMode(false);
|
|
}else{
|
|
Browser.switchCursorMode(true);
|
|
}
|
|
}else{
|
|
Browser.switchCursorMode(true);
|
|
Browser.switchCursorMode(false);
|
|
Awesomescreen.selectList.focus();
|
|
}
|
|
} else {
|
|
Browser.switchCursorMode(true);
|
|
}
|
|
if( !Awesomescreen.isDisplayedList()){
|
|
this.hidePointerImg();
|
|
}
|
|
Awesomescreen.dialogArea.style.display = 'none';
|
|
},
|
|
|
|
/**
|
|
* bookmark,history list hidden and dialog menu hidden.
|
|
*/
|
|
allDialogHidden: function awesomescreen_allDialogHidden() {
|
|
this.dialogHidden();
|
|
Browser.switchCursorMode(true);
|
|
|
|
this.hidePointerImg();
|
|
if(this.bookmarkList.isDisplay()) {
|
|
this.bookmarkList.close();
|
|
} else if (this.historyList.isDisplay()) {
|
|
this.historyList.close();
|
|
}
|
|
Browser.refreshBrowserParts();
|
|
},
|
|
|
|
/**
|
|
* dialog menu hidden, and topsite reload
|
|
*/
|
|
topsiteReload: function awesomescreen_topsiteReload() {
|
|
this.dialogHidden();
|
|
this.selectTopSites();
|
|
},
|
|
|
|
dialogButtonKeyup: function awesomescreen_dialogButtonKeyup(evt) {
|
|
if( evt ){
|
|
evt.preventDefault();
|
|
}
|
|
|
|
if(Awesomescreen.blurFlag){
|
|
Awesomescreen.blurFlag = false;
|
|
return;
|
|
}
|
|
|
|
switch( evt.keyCode ) {
|
|
case KeyEvent.DOM_VK_RETURN :
|
|
var elm = document.activeElement;
|
|
elm.classList.remove('active');
|
|
var dEvt = document.createEvent('MouseEvents');
|
|
dEvt.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0,
|
|
false, false, false, false, 0, elm);
|
|
elm.dispatchEvent( dEvt );
|
|
break;
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* option dialog , pin to home
|
|
*/
|
|
pinToHome: function awesomescreen_pinToHome() {
|
|
|
|
var url = '';
|
|
var title = '';
|
|
|
|
switch(true) {
|
|
case this.bookmarkList.isDisplay():
|
|
this.showAwesomeLoadingIcon();
|
|
url = this.bookmarkList.getFocusItemUri();
|
|
this.pintohomeTitle = this.bookmarkList.getFocusItemTitle();
|
|
this.callAwesomescreenEvents(url);
|
|
break;
|
|
case this.historyList.isDisplay():
|
|
this.showAwesomeLoadingIcon();
|
|
url = this.historyList.getFocusItemUri();
|
|
this.pintohomeTitle = this.historyList.getFocusItemTitle();
|
|
this.callAwesomescreenEvents(url);
|
|
break;
|
|
case this.isDisplayedTop() :
|
|
this.showAwesomeLoadingIcon();
|
|
url = this.selectList.childNodes[0].childNodes[1].textContent;
|
|
this.pintohomeTitle =
|
|
this.selectList.childNodes[1].childNodes[0].textContent;
|
|
this.callAwesomescreenEvents(url);
|
|
break;
|
|
case this.isDisplayedDialog() :
|
|
if(this.checkBox.classList.contains('true')){
|
|
this.showAwesomeLoadingIcon(this.DEFAULT_LOADPOSITION);
|
|
}else{
|
|
this.showAwesomeLoadingIcon();
|
|
}
|
|
if(this.checkBox.classList.contains('true')){
|
|
title = this.inputArea.value;
|
|
Awesomescreen.getScreenshot(
|
|
Browser.currentInfo.dom,
|
|
Browser.currentInfo.url,
|
|
this.inputArea.value,
|
|
null
|
|
);
|
|
}
|
|
break;
|
|
case (!this.isDisplayed()) :
|
|
this.showAwesomeLoadingIcon();
|
|
Awesomescreen.getScreenshot(
|
|
Browser.currentInfo.dom,
|
|
Browser.currentInfo.url,
|
|
Browser.currentInfo.title,
|
|
null
|
|
);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Select tabview button.
|
|
*/
|
|
getScreenshot: function awesomescreen_getScreenshot(
|
|
browserElement,
|
|
url,
|
|
title,
|
|
calback) {
|
|
|
|
var widthScreenshot = '';
|
|
if(Browser.mainBlock.dataset.sidebar == 'true'){
|
|
widthScreenshot = this.PTH_THUMBNAIL_WIDTH_SIDE;
|
|
}else{
|
|
widthScreenshot = this.PTH_THUMBNAIL_WIDTH_FULL;
|
|
}
|
|
|
|
if( (this.isDisplayedList()) || (this.isDisplayedTop()) ){
|
|
title = this.pintohomeTitle;
|
|
}
|
|
|
|
if( browserElement ) {
|
|
browserElement.getScreenshot(
|
|
widthScreenshot, this.PTH_THUMBNAIL_HEIGHT).onsuccess =
|
|
(function(ev) {
|
|
var blob = new Blob([ev.target.result], {type: 'image/jpeg'});
|
|
this.callMozActivity(url, title, blob, calback);
|
|
}).bind(this);
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* Select tabview button.
|
|
*/
|
|
callAwesomescreenEvents: function awesomescreen_callAwesomescreenEvents(url) {
|
|
this.finalDispTabId = Browser.currentInfo.id;
|
|
var tabId = Browser.createIframe(url);
|
|
this.bindAwesomescreenEvents(Browser.info[tabId].dom, Browser.info[tabId]);
|
|
},
|
|
|
|
/**
|
|
* call to pin to home Activity.
|
|
*/
|
|
callMozActivity:
|
|
function awesomescreen_callMozActivity(url, title, blob, callback) {
|
|
var entryPoint = 'index.html';
|
|
var launchURL = location.origin + '/' + entryPoint + '#' + url;
|
|
this.getManifest();
|
|
if(!title){
|
|
title = url;
|
|
}
|
|
var activity = new MozActivity({
|
|
name: 'pin',
|
|
data: {
|
|
name: {
|
|
raw: title,
|
|
},
|
|
type: 'Application',
|
|
group: 'website',
|
|
manifestURL: this.manifestURL ,
|
|
launchURL: launchURL,
|
|
thumbnail: blob
|
|
}
|
|
});
|
|
|
|
activity.onsuccess = function() {
|
|
if(Awesomescreen.isDisplayedDialog()){
|
|
Awesomescreen.dialogHidden();
|
|
}
|
|
Awesomescreen.hiddenAwesomeLoadingIcon();
|
|
if(callback){
|
|
callback();
|
|
}
|
|
};
|
|
|
|
activity.onerror = function() {
|
|
Browser.debug(activity.error.name + ' : pin');
|
|
Awesomescreen.hiddenAwesomeLoadingIcon();
|
|
if(callback){
|
|
callback();
|
|
}
|
|
};
|
|
},
|
|
|
|
handleAwesomescreenEvent:
|
|
function awesomescreen_handleAwesomescreenEvent(tab) {
|
|
return (function(evt) {
|
|
switch (evt.type) {
|
|
case 'mozbrowserloadstart':
|
|
Browser.debug('awesomescreen mozbrowserloadstart[' + tab.id + ']');
|
|
evt.preventDefault();
|
|
tab.title = null;
|
|
tab.iconUrl = null;
|
|
break;
|
|
case 'mozbrowserloadend':
|
|
Browser.debug('awesomescreen mozbrowserloadend[' + tab.id + ']');
|
|
evt.preventDefault();
|
|
Awesomescreen.getScreenshot(
|
|
tab.dom,
|
|
tab.url,
|
|
tab.title,
|
|
this.deleteIframe.bind(tab.id)
|
|
);
|
|
break;
|
|
case 'mozbrowsercontextmenu':
|
|
Awesomescreen.hiddenAwesomeLoadingIcon();
|
|
Browser.debug('awesomescreen mozbrowsercontextmenu[' + tab.id + ']');
|
|
evt.preventDefault();
|
|
break;
|
|
case 'mozbrowsererror':
|
|
Awesomescreen.hiddenAwesomeLoadingIcon();
|
|
Browser.debug('awesomescreen mozbrowsererror[' + tab.id + ']');
|
|
evt.preventDefault();
|
|
break;
|
|
default:
|
|
Browser.debug('other event = ' + evt.type);
|
|
break;
|
|
}
|
|
}).bind(this);
|
|
},
|
|
|
|
deleteIframe: function awesomescreen_deleteIframe() {
|
|
if (Browser.info[this].alive) {
|
|
Browser.info[this].dom.parentNode.removeChild(Browser.info[this].dom);
|
|
Browser.info[this].alive = false;
|
|
}
|
|
delete Browser.info[this];
|
|
Browser.switchVisibility(Browser.info[Awesomescreen.finalDispTabId], true);
|
|
},
|
|
|
|
showAwesomeLoadingIcon: function toolbar_showAwesomeLoadingIcon(type) {
|
|
if(!this.awesomeLoadingIcon.classList.contains('visible')){
|
|
if(type == this.DEFAULT_LOADPOSITION){
|
|
if(Browser.mainBlock.dataset.sidebar == 'true'){
|
|
this.awesomeLoadingIcon.classList.add('bookmarkPos1');
|
|
}else{
|
|
this.awesomeLoadingIcon.classList.add('bookmarkPos2');
|
|
}
|
|
}else{
|
|
if(Browser.mainBlock.dataset.sidebar == 'true'){
|
|
this.awesomeLoadingIcon.classList.add('sideBarPos1');
|
|
}
|
|
}
|
|
this.awesomeLoadingIcon.classList.add('visible');
|
|
}
|
|
},
|
|
|
|
hiddenAwesomeLoadingIcon: function toolbar_hiddenAwesomeLoadingIcon() {
|
|
this.awesomeLoadingIcon.classList.remove('visible');
|
|
if(this.awesomeLoadingIcon.classList.contains('sideBarPos1')){
|
|
this.awesomeLoadingIcon.classList.remove('sideBarPos1');
|
|
}
|
|
if(this.awesomeLoadingIcon.classList.contains('bookmarkPos1')){
|
|
this.awesomeLoadingIcon.classList.remove('bookmarkPos1');
|
|
}
|
|
if(this.awesomeLoadingIcon.classList.contains('bookmarkPos2')){
|
|
this.awesomeLoadingIcon.classList.remove('bookmarkPos2');
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Add Browser Event (iframe)
|
|
*/
|
|
bindAwesomescreenEvents:
|
|
function awesomescreen_bindAwesomescreenEvents(iframe, tab) {
|
|
var awesomescreenEvents = ['loadstart', 'loadend', 'contextmenu',
|
|
'error'];
|
|
awesomescreenEvents.forEach(function attachAwesomescreenEvent(type) {
|
|
iframe.addEventListener('mozbrowser' + type,
|
|
this.handleAwesomescreenEvent(tab));
|
|
}, this);
|
|
},
|
|
|
|
/**
|
|
* Select tabview button.
|
|
*/
|
|
selectTabviewSitesTab:
|
|
function awesomescreen_selectTabviewSitesTab(data,count) {
|
|
|
|
var id = data.id;
|
|
var url = data.url;
|
|
var title = data.title;
|
|
var thumbnail = data.screenshot;
|
|
|
|
var tabNum = count + 1;
|
|
this.createTabpanel(id,url,title,thumbnail,tabNum);
|
|
},
|
|
|
|
/**
|
|
* Click event listener of the new tab button.
|
|
* @param {Event} e
|
|
*/
|
|
handleNewTab: function browserHandleNewTab(e,type) {
|
|
|
|
this.tabSiteList.innerHTML = '';
|
|
//I get the information from the "iframe"
|
|
var tabCount = Object.keys(Browser.info).length;
|
|
var tabIds = Object.keys(Browser.info);
|
|
|
|
if(tabCount > Awesomescreen.TABLIST_MAX){
|
|
tabCount = Awesomescreen.TABLIST_MAX - 1;
|
|
}
|
|
if(tabCount === 0){
|
|
Awesomescreen.tabNewCreate(Awesomescreen.tabSiteList,tabCount);
|
|
}else{
|
|
for( var i=0; i < tabCount; i++) {
|
|
Awesomescreen.selectTabviewSitesTab(Browser.info[tabIds[i]] ,i);
|
|
}
|
|
}
|
|
switch(true){
|
|
case tabCount <= 3:
|
|
Awesomescreen.tabView.style.height = '360px';
|
|
break;
|
|
case tabCount <= 7:
|
|
Awesomescreen.tabView.style.height = '720px';
|
|
break;
|
|
default:
|
|
Awesomescreen.tabView.style.height = '1080px';
|
|
break;
|
|
}
|
|
Awesomescreen.tabviewShow();
|
|
},
|
|
|
|
/**
|
|
* tabview show.
|
|
*/
|
|
tabviewShow:function awesomescreen_tabviewShow() {
|
|
this.hidePointerImg();
|
|
Browser.switchCursorMode(false);
|
|
Awesomescreen.blurFlag = false;
|
|
var fade_event_tabview_show = (function() {
|
|
Awesomescreen.awesomescreen.classList.add('awesomescreen-screen-tab');
|
|
Awesomescreen.showAwesomescreen();
|
|
Awesomescreen.tabList =
|
|
document.getElementsByClassName('tabview-site-item');
|
|
Awesomescreen.tabList[0].childNodes[1].focus();
|
|
Awesomescreen.focusImgFunc(Awesomescreen.tabList[0].childNodes[1]);
|
|
Awesomescreen.tabView.removeEventListener(
|
|
'transitionend',
|
|
fade_event_tabview_show,
|
|
false
|
|
);
|
|
});
|
|
|
|
// Add fade animantion event
|
|
Awesomescreen.tabView.addEventListener(
|
|
'transitionend',
|
|
fade_event_tabview_show,
|
|
false
|
|
);
|
|
Awesomescreen.tabView.style.transform = 'translateY(0px)';
|
|
},
|
|
|
|
/**
|
|
* tabview hidden.
|
|
*/
|
|
tabviewHidden:function awesomescreen_tabviewHidden() {
|
|
Awesomescreen.hidePointerImg();
|
|
if(!(Awesomescreen.isDisplayedTop())){
|
|
Awesomescreen.hideAwesomescreen();
|
|
}
|
|
Awesomescreen.awesomescreen.classList.remove('awesomescreen-screen-tab');
|
|
document.activeElement.blur();
|
|
if( Awesomescreen.isDisplayed() ) {
|
|
if(Awesomescreen.isDisplayedTop()){
|
|
Browser.switchCursorMode(true);
|
|
}else{
|
|
Browser.switchCursorMode(false);
|
|
}
|
|
} else {
|
|
Browser.switchCursorMode(true);
|
|
}
|
|
// Fade animation end event handler
|
|
var fade_event_tabview_hidden = (function() {
|
|
Awesomescreen.tabView.removeEventListener(
|
|
'transitionend',
|
|
fade_event_tabview_hidden,
|
|
false
|
|
);
|
|
});
|
|
Awesomescreen.tabView.addEventListener(
|
|
'transitionend',
|
|
fade_event_tabview_hidden,
|
|
false
|
|
);
|
|
Awesomescreen.tabView.style.transform = 'translateY(-1080px)';
|
|
|
|
},
|
|
/**
|
|
* Update tab counter.
|
|
*/
|
|
updateTabsCount: function awesomescreen_updateTabsCount() {
|
|
var tabsCount = Object.keys(Browser.info).length;
|
|
if(tabsCount >= 0 && tabsCount <= this.TABLIST_MAX){
|
|
Toolbar.tabsButtonBlock.dataset.tabs =
|
|
'tab' + ('00' + tabsCount).slice(-2);
|
|
}
|
|
|
|
// tabs icon action
|
|
Toolbar.tabsButtonBlock.dataset.update = 'true';
|
|
setTimeout( function() {
|
|
Toolbar.tabsButtonBlock.dataset.update = 'false';
|
|
}, 1000);
|
|
},
|
|
|
|
/**
|
|
* Draw heading to divide up history list.
|
|
*
|
|
* @param {url} URL of the page you are currently viewing.
|
|
* @param {title} Title of the page you are currently viewing.
|
|
* @param {thumbnail} Thumbnail of the page you are currently viewing.
|
|
*/
|
|
creatNewThumbnail:
|
|
function awesomescreen_creatNewThumbnail(url,title,thumbnail) {
|
|
|
|
var list = this.tabTemplate.cloneNode(true);
|
|
var tabThumbnail = list.childNodes[1].childNodes[0];
|
|
var tabTitle = list.childNodes[1].childNodes[1].childNodes[0];
|
|
tabTitle.textContent = title;
|
|
tabTitle.url = url;
|
|
if((url != null) && (thumbnail)){
|
|
var imgUrl = window.URL.createObjectURL(thumbnail);
|
|
tabThumbnail.style.backgroundImage = 'url(' + imgUrl + ')';
|
|
tabThumbnail.style.backgroundRepeat = 'no-repeat';
|
|
tabThumbnail.style.backgroundPosition = 'center';
|
|
}else{
|
|
tabThumbnail.style.backgroundImage =
|
|
'url(' + this.DEFAULT_FAVICON + ')';
|
|
tabThumbnail.style.backgroundColor = '#5f6267';
|
|
tabThumbnail.style.backgroundSize = 'contain';
|
|
tabThumbnail.style.backgroundRepeat = 'no-repeat';
|
|
tabThumbnail.style.backgroundPosition = 'center';
|
|
|
|
}
|
|
tabThumbnail.url = url;
|
|
return list;
|
|
|
|
},
|
|
|
|
/**
|
|
* event processing in the tab view screen.
|
|
*
|
|
* @param {ul} Parent element of the list you are currently viewing.
|
|
*/
|
|
clickTabEvent: function awesomescreen_clickTabEvent(ev) {
|
|
|
|
if( ev.keyCode !== KeyEvent.DOM_VK_RETURN &&
|
|
ev.button !== 0 ) {
|
|
return;
|
|
}
|
|
var actionElem = '';
|
|
this.clickTabListFlg = true;
|
|
if(this.clickTabActFlg){
|
|
this.clickTabActFlg = false;
|
|
this.clickTabListFlg = false;
|
|
|
|
var fade_tab_action = (function() {
|
|
var cName = ev.target.className;
|
|
var list_Id = ev.target.parentNode;
|
|
var tabid = ev.target.parentNode.id;
|
|
actionElem.removeEventListener('transitionend', fade_tab_action, false);
|
|
if(cName == 'del-img'){
|
|
Awesomescreen.tabDelete(list_Id, ev);
|
|
}else if(cName == 'back-area'){
|
|
if(tabid == 'newtab'){
|
|
Awesomescreen.createAddNewTab();
|
|
}else{
|
|
Awesomescreen.currentTabShow(ev.target);
|
|
}
|
|
}
|
|
});
|
|
if(ev.target){
|
|
|
|
if(ev.target.className.contains('back-area')){
|
|
actionElem = ev.target.childNodes[0];
|
|
}else if(ev.target.className.contains('del-img')){
|
|
actionElem = ev.target;
|
|
}
|
|
// Add fade animantion event
|
|
actionElem.addEventListener('transitionend', fade_tab_action, false);
|
|
ev.target.classList.remove('active');
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* event processing in the tab view screen.
|
|
*
|
|
* @param {ul} Parent element of the list you are currently viewing.
|
|
*/
|
|
createAddNewTab: function awesomescreen_createAddNewTab() {
|
|
//If you want to create a 13 second tab, delete the oldest tab
|
|
if(Object.keys(Browser.info).length >= this.TABLIST_MAX){
|
|
this.oldTabDelete();
|
|
}
|
|
|
|
var tabCount = Object.keys(Browser.info).length;
|
|
var tabIds = Object.keys(Browser.info);
|
|
//store to tabid,timestamp
|
|
for( var i=0; i < tabCount; i++) {
|
|
//Save the ID of the final display tab
|
|
if(Browser.info[tabIds[i]].dom.style.display == 'block') {
|
|
this.finalDispTabId = Browser.info[tabIds[i]].id;
|
|
}
|
|
}
|
|
Browser.selectInfo(Browser.createIframe());
|
|
Browser.refreshBrowserParts();
|
|
this.updateTabsCount();
|
|
if(this.isDisplayedTab()){
|
|
this.tabviewHidden();
|
|
}
|
|
this.selectTopSites();
|
|
},
|
|
|
|
openNewTab: function awesomescreen_openNewTab(evt) {
|
|
if( evt == null ){
|
|
return;
|
|
}
|
|
|
|
//If you want to create a 13 second tab, delete the oldest tab
|
|
if(Object.keys(Browser.info).length >= this.TABLIST_MAX){
|
|
this.oldTabDelete();
|
|
}
|
|
this.finalDispTabId =
|
|
Browser.createIframe(evt.detail.url, evt.detail.frameElement);
|
|
Browser.selectInfo(this.finalDispTabId);
|
|
this.updateTabsCount();
|
|
},
|
|
|
|
oldTabDelete: function awesomescreen_oldTabDelete(evt) {
|
|
|
|
var tabCount = Object.keys(Browser.info).length;
|
|
var tabIds = Object.keys(Browser.info);
|
|
var tabDateObj = [];
|
|
//store to tabid,timestamp
|
|
for( var i=0; i < tabCount; i++) {
|
|
var tabDate = {
|
|
tabId: Browser.info[tabIds[i]].id,
|
|
timestamp: Browser.info[tabIds[i]].timestamp
|
|
};
|
|
tabDateObj.push(tabDate);
|
|
}
|
|
tabDateObj.sort(this.objectSort('timestamp', false, parseInt));
|
|
|
|
//delete to iframe
|
|
if (Browser.info[tabDateObj[0].tabId].alive) {
|
|
Browser.info[tabDateObj[0].tabId].dom.parentNode
|
|
.removeChild(Browser.info[tabDateObj[0].tabId].dom);
|
|
Browser.info[tabDateObj[0].tabId].alive = false;
|
|
}
|
|
|
|
//delete to info
|
|
delete Browser.info[tabDateObj[0].tabId];
|
|
|
|
},
|
|
/**
|
|
* event processing in the tab view screen.
|
|
*
|
|
* @param {ul} Parent element of the list you are currently viewing.
|
|
*/
|
|
currentTabShow: function awesomescreen_currentTabShow(activeElem) {
|
|
var currentTabId = activeElem.parentNode.id.slice(5);
|
|
var tabCount = Object.keys(Browser.info).length;
|
|
var tabIds = Object.keys(Browser.info);
|
|
|
|
//Hide all tab
|
|
for( var i=0; i < tabCount; i++) {
|
|
|
|
if(tabIds[i] != currentTabId){
|
|
Browser.switchVisibility(Browser.info[tabIds[i]], false);
|
|
}else{
|
|
//Show the selected tab
|
|
Browser.selectInfo(tabIds[i]);
|
|
if(( Browser.info[tabIds[i]].url !== null ) &&
|
|
( Browser.info[tabIds[i]].url !== '' )) {
|
|
if(!Browser.info[tabIds[i]].alive){
|
|
Browser.info[tabIds[i]].dom.src = Browser.info[tabIds[i]].url;
|
|
}
|
|
Browser.switchVisibility(Browser.info[tabIds[i]], true);
|
|
this.finalDispTabId = Browser.info[tabIds[i]].id;
|
|
if(this.isDisplayedTop()){
|
|
this.topsiteHidden();
|
|
}
|
|
}else{
|
|
Browser.switchVisibility(Browser.info[tabIds[i]], true);
|
|
this.selectTopSites();
|
|
}
|
|
}
|
|
|
|
}
|
|
Browser.refreshBrowserParts();
|
|
if(this.isDisplayedTab()){
|
|
this.tabviewHidden();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* To tab of the page you are viewing in the browser screen.
|
|
*
|
|
* @param {url} URL of the page you are currently viewing.
|
|
* @param {title} Title of the page you are currently viewing.
|
|
* @param {thumbnail} Thumbnail of the page you are currently viewing.
|
|
*/
|
|
createTabpanel:
|
|
function awesomescreen_createTabpanel(id,url,title,thumbnail,count) {
|
|
//I get the number of tab currently displayed
|
|
var newtab = '';
|
|
|
|
if(this.tabSiteList.lastChild){
|
|
newtab = this.tabSiteList.lastChild;
|
|
}
|
|
|
|
//Tab displays the newtab If it is less than 12
|
|
if(count < this.TABLIST_MAX ){
|
|
|
|
//remove any element of newtab
|
|
if(newtab.id == 'newtab'){
|
|
this.tabSiteList.lastChild.style.opacity = '0';
|
|
this.tabSiteList.removeChild(newtab);
|
|
}
|
|
//create a newtab
|
|
this.tabListEdit(id,url,title,thumbnail,count);
|
|
|
|
//create a addtab
|
|
this.tabNewCreate(this.tabSiteList,count);
|
|
|
|
}else if(count == this.TABLIST_MAX){
|
|
if(newtab.id == 'newtab'){
|
|
this.tabSiteList.removeChild(newtab);
|
|
this.tabListEdit(id,url,title,thumbnail,count);
|
|
}
|
|
}
|
|
},
|
|
|
|
clickTabAction: function awesomescreen_clickTabAction(ev) {
|
|
if( ev ){
|
|
ev.preventDefault();
|
|
}
|
|
if( ev.keyCode !== KeyEvent.DOM_VK_RETURN &&
|
|
ev.button !== 0 ){
|
|
return;
|
|
}
|
|
|
|
var actionElem = '';
|
|
|
|
var click_tab_action = (function() {
|
|
Awesomescreen.clickTabActFlg = true;
|
|
if(Awesomescreen.clickTabListFlg){
|
|
Awesomescreen.clickTabEvent(ev);
|
|
}
|
|
actionElem.removeEventListener(
|
|
'transitionend',
|
|
click_tab_action,
|
|
false
|
|
);
|
|
});
|
|
|
|
if(ev.target){
|
|
if(ev.target.className.contains('back-area')){
|
|
actionElem = ev.target.childNodes[0];
|
|
}else if(ev.target.className.contains('del-img')){
|
|
actionElem = ev.target;
|
|
}
|
|
// Add fade animantion event
|
|
actionElem.addEventListener('transitionend', click_tab_action, false);
|
|
ev.target.classList.add('active');
|
|
}
|
|
|
|
},
|
|
/**
|
|
* Configuring the tab list.
|
|
*
|
|
* @param {url} URL of the page you are currently viewing.
|
|
* @param {title} Title of the page you are currently viewing.
|
|
* @param {thumbnail} Thumbnail of the page you are currently viewing.
|
|
* @param {count} now tab count.
|
|
*/
|
|
tabListEdit:
|
|
function awesomescreen_tabListEdit(id,url,title,thumbnail,count) {
|
|
var list = null;
|
|
|
|
list = this.creatNewThumbnail(url,title,thumbnail);
|
|
list.id = 'list-' + id;
|
|
list.childNodes[0].childNodes[0].tabIndex = count + 120;
|
|
list.childNodes[1].tabIndex = count + 100;
|
|
|
|
//Events additional Delete button
|
|
list.childNodes[0].childNodes[0]
|
|
.addEventListener('mouseup',this.clickTabEvent.bind(this));
|
|
list.childNodes[0].childNodes[0]
|
|
.addEventListener('keyup',this.clickTabEvent.bind(this));
|
|
list.childNodes[0].childNodes[0]
|
|
.addEventListener('mousedown',this.clickTabAction.bind(this));
|
|
list.childNodes[0].childNodes[0]
|
|
.addEventListener('mouseover', this.mouseOverFunc.bind(this));
|
|
list.childNodes[0].childNodes[0]
|
|
.addEventListener('mouseout', this.mouseOutFunc.bind(this));
|
|
|
|
//Events additional thumbnail
|
|
list.childNodes[1]
|
|
.addEventListener('mouseup',this.clickTabEvent.bind(this));
|
|
list.childNodes[1]
|
|
.addEventListener('keyup',this.clickTabEvent.bind(this));
|
|
list.childNodes[1]
|
|
.addEventListener('mousedown',this.clickTabAction.bind(this));
|
|
list.childNodes[1]
|
|
.addEventListener('mouseover', this.mouseOverFunc.bind(this));
|
|
list.childNodes[1]
|
|
.addEventListener('mouseout', this.mouseOutFunc.bind(this));
|
|
|
|
Awesomescreen.isScaleChange(list);
|
|
|
|
|
|
this.tabSiteList.appendChild(list);
|
|
Awesomescreen.tabSiteList.lastChild.style.opacity = '1';
|
|
},
|
|
|
|
/**
|
|
* Configuring the tab list.
|
|
*
|
|
* @param {tab} Elements of the tab that is currently creating.
|
|
* @param {thumbnail} Thumbnail of the page you are currently viewing.
|
|
*/
|
|
tabNewCreate: function awesomescreen_tabNewCreate(tab,tabNum) {
|
|
//create a newtab
|
|
//tab if is long been displayed 12, does not create a new tab is
|
|
if(tabNum < this.TABLIST_MAX){
|
|
tab.appendChild(this.tabListTemplate.cloneNode(true));
|
|
tab.lastChild.childNodes[1].tabIndex = tabNum + 101;
|
|
tab.lastChild.childNodes[1]
|
|
.addEventListener('mouseup',this.clickTabEvent.bind(this));
|
|
tab.lastChild.childNodes[1]
|
|
.addEventListener('keyup',this.clickTabEvent.bind(this));
|
|
tab.lastChild.childNodes[1]
|
|
.addEventListener('mousedown',this.clickTabAction.bind(this));
|
|
tab.lastChild.childNodes[1]
|
|
.addEventListener('mouseover', this.mouseOverFunc.bind(this));
|
|
tab.lastChild.childNodes[1]
|
|
.addEventListener('mouseout', this.mouseOutFunc.bind(this));
|
|
tab.lastChild.style.opacity = '1';
|
|
|
|
Awesomescreen.isScaleChange(tab.lastChild);
|
|
}
|
|
},
|
|
|
|
/**
|
|
*Remove the selected tab.
|
|
*
|
|
* @param {list_id} selected tab id.
|
|
*/
|
|
tabDelete: function awesomescreen_tabDelete(list_id, ev) {
|
|
|
|
var tabCount = Object.keys(Browser.info).length;
|
|
var tabIds = Object.keys(Browser.info);
|
|
|
|
//Tab I close the tabview if 1
|
|
if(tabCount == 1){
|
|
this.tabviewHidden();
|
|
return;
|
|
}
|
|
|
|
//Remove the elements of the iframe corresponding to the id
|
|
var id = list_id.parentNode.id.slice(5);
|
|
var topsiteViewflg = false;
|
|
var nextElem = list_id.parentNode.nextSibling;
|
|
var prevElem = list_id.parentNode.previousSibling;
|
|
var focusElem = '';
|
|
//Only if the current URL as the deleted selected URL matches,
|
|
//to perform the switching of the tab
|
|
if(id != Browser.currentInfo.id ) {
|
|
|
|
//It is not the focus in the case of click
|
|
if(ev.type == 'keydown' || ev.type == 'keyup') {
|
|
if(nextElem != null) {
|
|
if(nextElem.id.contains('newtab')){
|
|
prevElem.childNodes[0].childNodes[0].focus();
|
|
}else{
|
|
nextElem.childNodes[0].childNodes[0].focus();
|
|
focusElem = nextElem.childNodes[0].childNodes[0];
|
|
}
|
|
}else{
|
|
prevElem.childNodes[0].childNodes[0].focus();
|
|
focusElem = nextElem.childNodes[0].childNodes[0];
|
|
}
|
|
}
|
|
this.tabDeleteFunc(id, list_id, focusElem);
|
|
tabCount = Object.keys(Browser.info).length;
|
|
if(tabCount == 1){
|
|
this.tabviewHidden();
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (Browser.info[id].dom) {
|
|
if( Browser.info[id].loading ){
|
|
Browser.info[id].dom.stop();
|
|
}
|
|
//all tab hide
|
|
for( var i=0; i < tabCount; i++) {
|
|
Browser.switchVisibility(Browser.info[tabIds[i]], false);
|
|
}
|
|
//switch between tabs
|
|
for( i=0; i < tabCount; i++) {
|
|
if(tabIds[i] == id){
|
|
topsiteViewflg =
|
|
this.switchCurrentTab(tabIds,i,id,list_id.parentNode,ev);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Current tab judgment
|
|
if( (list_id.parentNode.nextSibling) &&
|
|
(!(list_id.parentNode.nextSibling.id.contains('newtab'))) ){
|
|
Browser.currentInfo =
|
|
Browser.info[list_id.parentNode.nextSibling.id.slice(5)];
|
|
}else if(list_id.parentNode.previousSibling){
|
|
Browser.currentInfo =
|
|
Browser.info[list_id.parentNode.previousSibling.id.slice(5)];
|
|
}
|
|
Toolbar.setPrivateBrowsing(Browser.currentInfo.pvtBrowse);
|
|
this.showPrivateBrowsing();
|
|
|
|
this.tabDeleteFunc(id, list_id);
|
|
tabCount = Object.keys(Browser.info).length;
|
|
//URL is not set to the tab, which will be displayed
|
|
if(topsiteViewflg){
|
|
this.selectTopSites();
|
|
}else{
|
|
if(this.isDisplayedTop()) {
|
|
this.topsiteHidden();
|
|
}
|
|
}
|
|
//Tab I close the tabview if 1
|
|
if(tabCount == 1) {
|
|
this.tabviewHidden();
|
|
}
|
|
},
|
|
|
|
/**
|
|
* switch between tabs.
|
|
* @param {ev} key event.
|
|
*/
|
|
switchCurrentTab:
|
|
function awesomescreen_switchCurrentTab(tabIds,array,tabId, list, ev) {
|
|
|
|
var topsiteViewflg = false;
|
|
var focusElem = '';
|
|
var dispTab = '';
|
|
if(Browser.info[tabIds[array + 1]]) {
|
|
focusElem = list.nextSibling;
|
|
dispTab = Browser.info[tabIds[array + 1]];
|
|
}else if(Browser.info[tabIds[array - 1]]) {
|
|
focusElem = list.previousSibling;
|
|
dispTab = Browser.info[tabIds[array - 1]];
|
|
}
|
|
Browser.switchVisibility(dispTab, true);
|
|
Browser.selectInfo(dispTab.id);
|
|
|
|
//focus set
|
|
if( (ev.type == 'keydown') || (ev.type == 'keyup') ){
|
|
if(!(focusElem.childNodes[0].childNodes[0].className.contains('hidden'))){
|
|
focusElem.childNodes[0].childNodes[0].focus();
|
|
this.focusImgFunc(
|
|
focusElem.childNodes[0].childNodes[0],
|
|
this.DEFAULT_TABVIEW
|
|
);
|
|
}else{
|
|
focusElem.childNodes[1].focus();
|
|
this.focusImgFunc(focusElem.childNodes[1], this.DEFAULT_TABVIEW);
|
|
}
|
|
}
|
|
if(!dispTab.url){
|
|
topsiteViewflg = true;
|
|
}
|
|
|
|
return topsiteViewflg;
|
|
},
|
|
|
|
/**
|
|
* tab delete function.
|
|
* @param {id} ID of the selected tab.
|
|
* @param {list_id} Elements of the selected tab list
|
|
*/
|
|
tabDeleteFunc: function awesomescreen_tabDeleteFunc(id, list_id, focusElem) {
|
|
var list = this.tabSiteList;
|
|
var list_num = list.childElementCount;
|
|
|
|
if (Browser.info[id].dom) {
|
|
//Remove iframe of the relevant
|
|
if (Browser.info[id].alive) {
|
|
Browser.info[id].dom.parentNode.removeChild(Browser.info[id].dom);
|
|
Browser.info[id].alive = false;
|
|
}
|
|
}
|
|
|
|
list.removeChild(list_id.parentNode);
|
|
this.focusImgFunc(document.activeElement , this.DEFAULT_TAB_DELETE);
|
|
if(focusElem){
|
|
this.focusImgFunc(focusElem, this.DEFAULT_TAB_DELETE);
|
|
}else{
|
|
this.focusImgFunc(document.activeElemnt, this.DEFAULT_TAB_DELETE);
|
|
}
|
|
//And adjusting the height in accordance with the number of tabs
|
|
switch(true){
|
|
case list_num -1 <= 4:
|
|
Awesomescreen.tabView.style.height = '360px';
|
|
break;
|
|
case list_num -1 <= 8:
|
|
Awesomescreen.tabView.style.height = '720px';
|
|
break;
|
|
default:
|
|
Awesomescreen.tabView.style.height = '1080px';
|
|
break;
|
|
}
|
|
|
|
if(list.lastChild.id != 'newtab'){
|
|
Awesomescreen.tabNewCreate(list,list.childElementCount);
|
|
}
|
|
|
|
//Hide iframe related to the selected tab
|
|
delete Browser.info[id];
|
|
this.updateTabsCount();
|
|
Browser.refreshBrowserParts();
|
|
},
|
|
|
|
/**
|
|
* Handle Key Event.
|
|
* @param {ev} key event.
|
|
*/
|
|
handleKeyEvent: function awesomescreen_handleKeyEvent(ev) {
|
|
var state = true;
|
|
// in the input area focus (= display keyboard)
|
|
if(document.activeElement.nodeName == 'INPUT') {
|
|
return;
|
|
}
|
|
var hoverElem =
|
|
document.elementFromPoint(Awesomescreen.onmouseX, Awesomescreen.onmouseY);
|
|
// in the input area focus (= display keyboard)
|
|
if(document.activeElement == this.inputArea){
|
|
return true;
|
|
}
|
|
|
|
switch(true){
|
|
case Awesomescreen.isDisplayedDialog():
|
|
this.selectMenu = document.activeElement;
|
|
break;
|
|
case Awesomescreen.isDisplayedTab():
|
|
break;
|
|
case Awesomescreen.isDisplayedTop():
|
|
if(ev.type !== 'keydown'){
|
|
this.selectList = ev.target;
|
|
}
|
|
break;
|
|
default :
|
|
this.selectList = ev.target;
|
|
break;
|
|
}
|
|
|
|
switch( ev.keyCode ) {
|
|
case KeyEvent.DOM_VK_ESCAPE:
|
|
switch(true){
|
|
case Awesomescreen.isDisplayedDialog() :
|
|
// close bookmark.history to dialog
|
|
Awesomescreen.hidePointerImg();
|
|
Awesomescreen.dialogHidden();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
state = false;
|
|
break;
|
|
|
|
case KeyEvent.DOM_VK_BACK_SPACE:
|
|
switch(true){
|
|
case Awesomescreen.isDisplayedDialog() :
|
|
// close bookmark.history to dialog
|
|
Awesomescreen.hidePointerImg();
|
|
Awesomescreen.dialogHidden();
|
|
break;
|
|
case Awesomescreen.isDisplayedList():
|
|
break;
|
|
case Awesomescreen.isDisplayedTab() :
|
|
// close tabview
|
|
Awesomescreen.tabviewHidden();
|
|
break;
|
|
case Awesomescreen.isDisplayedTop() :
|
|
// close topsite
|
|
this.topsiteReturnFunc();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
state = false;
|
|
break;
|
|
|
|
case KeyEvent.DOM_VK_SUBMENU:
|
|
switch(true){
|
|
case this.isDisplayedDialog() :
|
|
break;
|
|
case this.isDisplayedTop() && !(this.isDisplayedTab()):
|
|
if(hoverElem == this.topSites){
|
|
state = true;
|
|
} else if( (this.selectList) &&
|
|
(this.selectList.className.contains('top-site-item')) ) {
|
|
this.optionDialogOpen();
|
|
state = false;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
state = false;
|
|
break;
|
|
case KeyEvent.DOM_VK_MYBUTTON:
|
|
if(!(Awesomescreen.isDisplayed())){
|
|
Awesomescreen.pinToHome();
|
|
}
|
|
state = false;
|
|
break;
|
|
case KeyEvent.DOM_VK_UP :
|
|
case KeyEvent.DOM_VK_DOWN :
|
|
case KeyEvent.DOM_VK_LEFT :
|
|
case KeyEvent.DOM_VK_RIGHT :
|
|
case KeyEvent.DOM_VK_RETURN :
|
|
|
|
//If the cursor overlaps the element ,
|
|
//and calls the cursor switch only once
|
|
if(this.focusSwitchFlg){
|
|
this.focusSwitchFlg = false;
|
|
Browser.switchCursorMode(true);
|
|
Browser.switchCursorMode(false);
|
|
}
|
|
|
|
switch(true){
|
|
case Awesomescreen.isDisplayedDialog() :
|
|
Awesomescreen.dialogKeyCont(ev,this.selectMenu);
|
|
break;
|
|
case this.bookmarkList.isDisplay():
|
|
this.bookmarkList.focusFirstVisibleItem();
|
|
ev.preventDefault();
|
|
break;
|
|
case this.historyList.isDisplay():
|
|
this.historyList.focusFirstVisibleItem();
|
|
ev.preventDefault();
|
|
break;
|
|
case Awesomescreen.isDisplayedTab() :
|
|
if(Awesomescreen.blurFlag){
|
|
Awesomescreen.blurFlag = false;
|
|
ev.preventDefault();
|
|
//After the pointer is released, I to focus on list
|
|
this.defaultFocusFunc(
|
|
this.DEFAULT_TABVIEW,
|
|
this.tabSiteList,
|
|
'tabview-site-item',
|
|
0
|
|
);
|
|
}else{
|
|
Awesomescreen.tabviewKeyCont(ev);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
state = false;
|
|
break;
|
|
default:
|
|
if( (Awesomescreen.isDisplayedList()) ||
|
|
(Awesomescreen.isDisplayedDialog()) ){
|
|
state = false;
|
|
}
|
|
break;
|
|
}
|
|
return state;
|
|
},
|
|
|
|
defaultFocusFunc: function awesomescreen_defaultFocusFunc(
|
|
type,
|
|
listObject,
|
|
listClassName,
|
|
selectNum) {
|
|
var visiList = listObject.getElementsByClassName(listClassName);
|
|
var focusElem = null;
|
|
//After the pointer is released, I to focus on list
|
|
switch(type){
|
|
case this.DEFAULT_TABVIEW :
|
|
focusElem = visiList[selectNum].childNodes[1];
|
|
break;
|
|
case this.DEFAULT_BOOKMARK :
|
|
focusElem = visiList[selectNum];
|
|
break;
|
|
default :
|
|
break;
|
|
}
|
|
|
|
if(visiList.length > 0){
|
|
Browser.switchCursorMode(true);
|
|
Browser.switchCursorMode(false);
|
|
focusElem.focus();
|
|
this.focusImgFunc(focusElem, null);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* goBack,return key Event.
|
|
* @param {ev} key event.
|
|
*/
|
|
topsiteReturnFunc: function awesomescreen_topsiteReturnFunc() {
|
|
if((Browser.info[Awesomescreen.finalDispTabId]) &&
|
|
(Browser.info[Awesomescreen.finalDispTabId].url)) {
|
|
var tabCount = Object.keys(Browser.info).length;
|
|
var tabIds = Object.keys(Browser.info);
|
|
//all tab hide
|
|
for( var i=0; i < tabCount; i++) {
|
|
Browser.switchVisibility(Browser.info[tabIds[i]], false);
|
|
}
|
|
|
|
if(!Browser.info[Awesomescreen.finalDispTabId].alive){
|
|
Browser.info[Awesomescreen.finalDispTabId].dom.src =
|
|
Browser.info[Awesomescreen.finalDispTabId].url;
|
|
}
|
|
Browser.switchVisibility(Browser.info[Awesomescreen.finalDispTabId],true);
|
|
Browser.selectInfo(Awesomescreen.finalDispTabId);
|
|
Browser.refreshBookmarkButton();
|
|
this.topsiteHidden();
|
|
}else{
|
|
navigator.mozL10n.formatValue('LT_BROWSER_CONFIRM_EXIT2').then(result => {
|
|
if (window.confirm(result)) {
|
|
window.close();
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* opsition dialog Key Event.
|
|
* @param {ev} key event.
|
|
*/
|
|
dialogKeyCont: function awesomescreen_dialogKeyCont(ev) {
|
|
|
|
//If the focus is outside , I return to the default position
|
|
if(Awesomescreen.blurFlag){
|
|
Awesomescreen.focusPos = 0;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
Awesomescreen.blurFlag = true;
|
|
return;
|
|
}
|
|
|
|
switch( ev.keyCode ) {
|
|
case KeyEvent.DOM_VK_UP :
|
|
ev.preventDefault();
|
|
if( (Awesomescreen.focusPos == 4) ||
|
|
((( Awesomescreen.focusPos === 0 ) ||
|
|
( Awesomescreen.focusPos == 1 )) &&
|
|
(Awesomescreen.focusList.length == 4)) ) {
|
|
Awesomescreen.focusPos = 2;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
}else if( (( Awesomescreen.focusPos === 0 ) ||
|
|
( Awesomescreen.focusPos == 1 )) &&
|
|
(Awesomescreen.focusList.length == 5) ) {
|
|
Awesomescreen.focusPos = 4;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
}
|
|
break;
|
|
case KeyEvent.DOM_VK_DOWN :
|
|
ev.preventDefault();
|
|
if( Awesomescreen.focusPos == 2 ) {
|
|
if(Awesomescreen.focusList.length >= 5) {
|
|
Awesomescreen.focusPos = 4;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
}else if(Awesomescreen.focusList.length == 4) {
|
|
Awesomescreen.focusPos = 0;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
}
|
|
}else if( (Awesomescreen.focusPos == 3) ||
|
|
(Awesomescreen.focusPos == 4)) {
|
|
Awesomescreen.focusPos = 0;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
}
|
|
break;
|
|
case KeyEvent.DOM_VK_LEFT :
|
|
ev.preventDefault();
|
|
if( ( Awesomescreen.focusPos == 1 ) ||
|
|
( (Awesomescreen.focusPos == 2) &&
|
|
( Awesomescreen.focusList[2].nodeName != 'INPUT') ) ||
|
|
( Awesomescreen.focusPos == 3 )) {
|
|
Awesomescreen.focusPos --;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
}
|
|
break;
|
|
case KeyEvent.DOM_VK_RIGHT :
|
|
ev.preventDefault();
|
|
if( Awesomescreen.focusPos === 0 ) {
|
|
Awesomescreen.focusPos ++;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
}else if( (Awesomescreen.focusPos == 1 ) &&
|
|
(Awesomescreen.focusList.length == 3) ) {
|
|
Awesomescreen.focusPos ++;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
}else if( ( Awesomescreen.focusPos == 2 ) &&
|
|
( Awesomescreen.focusList.length != 3 )) {
|
|
Awesomescreen.focusPos ++;
|
|
Awesomescreen.focusChange(Awesomescreen.focusPos);
|
|
}
|
|
break;
|
|
case KeyEvent.DOM_VK_RETURN :
|
|
ev.preventDefault();
|
|
if( (Awesomescreen.focusPos == 2) &&
|
|
( Awesomescreen.focusList[2].nodeName == 'INPUT') ) {
|
|
Awesomescreen.hidePointerImg();
|
|
Awesomescreen.focusList[2].focus();
|
|
}else if(Awesomescreen.focusPos != -1) {
|
|
if(!Awesomescreen.blurFlag) {
|
|
document.activeElement.classList.add('active');
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* tabview Key controll.
|
|
* @param {ev} key event.
|
|
*/
|
|
tabviewKeyCont: function awesomescreen_tabviewKeyCont(ev) {
|
|
|
|
var activeElem = null;
|
|
var thumbnailFlg = null;
|
|
var currentPos = '';
|
|
|
|
//Get the current focus element
|
|
if(document.activeElement.className.contains('back-area')){
|
|
activeElem = document.activeElement.parentNode;
|
|
thumbnailFlg = true;
|
|
}else{
|
|
activeElem = document.activeElement.parentNode.parentNode;
|
|
thumbnailFlg = false;
|
|
}
|
|
|
|
//Get the element number of the array from the focus element
|
|
for(var i = 0; i < this.tabList.length; i++){
|
|
if(activeElem == this.tabList[i]){
|
|
currentPos = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch( ev.keyCode ) {
|
|
case KeyEvent.DOM_VK_UP :
|
|
if(thumbnailFlg){ //Focus is on the thumbnail area
|
|
if(this.tabList[currentPos].id.contains('newtab')){
|
|
if(this.tabList[currentPos - 4]){
|
|
this.tabUpdownControl(thumbnailFlg, (currentPos - 4));
|
|
}
|
|
}else{
|
|
this.tabUpdownControl(false, currentPos);
|
|
}
|
|
}else{ //Focus is on the delete area
|
|
if(this.tabList[currentPos - 4]){
|
|
this.tabUpdownControl(true, (currentPos - 4));
|
|
}
|
|
}
|
|
break;
|
|
case KeyEvent.DOM_VK_DOWN :
|
|
if(thumbnailFlg){ //Focus is on the thumbnail area
|
|
if(this.tabList[currentPos + 4]){
|
|
if(this.tabList[currentPos + 4].id.contains('newtab')){
|
|
this.tabUpdownControl(thumbnailFlg, (currentPos + 4));
|
|
}else{
|
|
this.tabUpdownControl(false, (currentPos + 4));
|
|
}
|
|
}
|
|
}else{ //Focus is on the delete area
|
|
if(this.tabList[currentPos]){
|
|
this.tabUpdownControl(true, currentPos);
|
|
}
|
|
}
|
|
break;
|
|
case KeyEvent.DOM_VK_LEFT :
|
|
if(this.tabList[currentPos - 1]){
|
|
this.tabUpdownControl(thumbnailFlg, (currentPos - 1));
|
|
}
|
|
break;
|
|
case KeyEvent.DOM_VK_RIGHT :
|
|
if(this.tabList[currentPos + 1]){
|
|
if(this.tabList[currentPos + 1].id.contains('newtab')){
|
|
this.tabUpdownControl(true, (currentPos + 1));
|
|
}else{
|
|
this.tabUpdownControl(thumbnailFlg, (currentPos + 1));
|
|
}
|
|
}
|
|
break;
|
|
case KeyEvent.DOM_VK_RETURN :
|
|
this.clickTabAction(ev);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* tabview focus control event
|
|
*/
|
|
tabUpdownControl: function awesomescreen_tabUpdownControl(thumbnailFlg, pos) {
|
|
|
|
//Move focus to the thumbnail area
|
|
if(thumbnailFlg){
|
|
this.tabList[pos].childNodes[1].focus();
|
|
this.focusImgFunc(this.tabList[pos].childNodes[1], this.DEFAULT_TABVIEW);
|
|
}else{
|
|
//Move focus to Delete area
|
|
this.tabList[pos].childNodes[0].childNodes[0].focus();
|
|
this.focusImgFunc(
|
|
this.tabList[pos].childNodes[0].childNodes[0],
|
|
this.DEFAULT_TAB_DELETE
|
|
);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* mouse over event bookmark,history list
|
|
*/
|
|
mouseOverFunc: function awesomescreen_mouseOverFunc(ev) {
|
|
this.hidePointerImg();
|
|
this.focusSwitchFlg = true;
|
|
ev.currentTarget.focus();
|
|
return;
|
|
},
|
|
|
|
/**
|
|
* mouse over event topsite
|
|
*/
|
|
mouseOverTopsiteFunc: function awesomescreen_mouseOverTopsiteFunc(ev) {
|
|
var defaultTopId = document.getElementById('default-' + ev.target.id);
|
|
defaultTopId.style.opacity = '0';
|
|
this.selectList = ev.currentTarget;
|
|
return;
|
|
},
|
|
|
|
/**
|
|
* mouse out event bookmark,history list
|
|
*/
|
|
mouseOutFunc: function awesomescreen_mouseOutFunc(ev) {
|
|
this.focusSwitchFlg = false;
|
|
ev.target.blur();
|
|
if(ev.target.className.contains('active')){
|
|
ev.target.classList.remove('active');
|
|
}
|
|
return false;
|
|
},
|
|
|
|
/**
|
|
* mouse out event topsite
|
|
*/
|
|
mouseOutTopsiteFunc: function awesomescreen_mouseOutTopsiteFunc(ev) {
|
|
var defaultTopId = document.getElementById('default-' + ev.target.id);
|
|
defaultTopId.style.opacity = '1';
|
|
if(ev.target.className.contains('active')){
|
|
ev.target.classList.remove('active');
|
|
}
|
|
},
|
|
|
|
/**
|
|
* get mouse pointer
|
|
*/
|
|
mouseMoveFunc: function awesomescreen_mouseMoveFunc() {
|
|
this.hidePointerImg();
|
|
window.document.onmousemove = function(e){
|
|
Awesomescreen.onmouseX = e.pageX;
|
|
Awesomescreen.onmouseY = e.pageY;
|
|
};
|
|
},
|
|
|
|
/**
|
|
* get mouse pointer
|
|
* @param {focusElem} Elements that give focus.
|
|
* @param {type} Type processing.
|
|
* @param {setTop} Adjustment to yop position
|
|
* @param {setLeft} Adjustment to left position.
|
|
*/
|
|
focusImgFunc: function awesomescreen_focusImgFunc(focusElem, type) {
|
|
//get to pointer img
|
|
if( !focusElem ){
|
|
return;
|
|
}
|
|
var elemPos = focusElem.getBoundingClientRect();
|
|
var elemBottom = Math.ceil(elemPos.bottom);
|
|
var elemRight = Math.ceil(elemPos.right);
|
|
var elemCenter = Math.ceil(elemPos.x + (elemPos.width / 2));
|
|
var transposX = null;
|
|
var transposY = null;
|
|
|
|
//Side view discriminant
|
|
if(Browser.mainBlock.dataset.sidebar == 'true'){
|
|
elemRight = elemRight - Browser.SIDE_WINDOW_WIDTH;
|
|
elemCenter -= Browser.SIDE_WINDOW_WIDTH;
|
|
}
|
|
transposX = elemRight - 20;
|
|
transposY = elemBottom - 120;
|
|
|
|
//Type processing
|
|
switch(type){
|
|
case this.DEFAULT_BOOKMARK:
|
|
if(elemBottom < 375){
|
|
elemBottom = 375;
|
|
}
|
|
if(elemBottom > 840){
|
|
elemBottom = 840;
|
|
}
|
|
break;
|
|
case this.DEFAULT_TABVIEW:
|
|
transposX = elemRight - 25;
|
|
transposY = elemBottom - 120;
|
|
break;
|
|
case this.DEFAULT_TAB_DELETE:
|
|
transposX = elemRight - 10;
|
|
transposY = elemBottom - 110;
|
|
break;
|
|
case this.DEFAULT_EXCLEAR:
|
|
transposX += 63;
|
|
transposY += 3;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
// Position adjustment at the time of the input area
|
|
if(focusElem.nodeName == 'INPUT') {
|
|
transposX = elemCenter + 200;
|
|
if( transposX > elemPos.right - 90 ) {
|
|
transposX = elemPos.right - 90;
|
|
}
|
|
transposY += 10;
|
|
}
|
|
|
|
//position setting
|
|
this.pointerImg.style.transform =
|
|
'translate(' + transposX + 'px,' + transposY + 'px)';
|
|
this.showPointerImg();
|
|
|
|
// Specialized processing (for authentication text clear element)
|
|
this.fE = focusElem;
|
|
if(focusElem.classList.contains('special-pointer') &&
|
|
this.oldFocusElem &&
|
|
this.oldFocusElem.classList.contains('special-pointer')) {
|
|
// Animation end event
|
|
var trans_image = (function() {
|
|
var focusElem = Awesomescreen.fE;
|
|
focusElem.removeEventListener('transitionend', trans_image, false);
|
|
// Interval timer stop (for Tracking pointer image)
|
|
clearInterval(Awesomescreen.TrackingTID);
|
|
});
|
|
focusElem.addEventListener('transitionend', trans_image, false);
|
|
|
|
// Interval timer start (for Tracking pointer image)
|
|
this.TrackingTID = setInterval(function(){
|
|
var focusElem = Awesomescreen.fE;
|
|
var elemPos = focusElem.getBoundingClientRect();
|
|
var elemBottom = Math.ceil(elemPos.bottom);
|
|
var elemRight = Math.ceil(elemPos.right);
|
|
var transposX = null;
|
|
var transposY = null;
|
|
|
|
//Side view discriminant
|
|
if(Browser.mainBlock.dataset.sidebar == 'true'){
|
|
elemRight = elemRight - Browser.SIDE_WINDOW_WIDTH;
|
|
}
|
|
transposX = elemRight - 20;
|
|
transposY = elemBottom - 120;
|
|
|
|
Awesomescreen.pointerImg.style.transform =
|
|
'translate(' + transposX + 'px,' + transposY + 'px)';
|
|
}, 50);
|
|
}
|
|
|
|
this.oldFocusElem = focusElem;
|
|
},
|
|
|
|
/**
|
|
* show pointer image
|
|
*/
|
|
showPointerImg: function awesomescreen_showPointerImg() {
|
|
if(Awesomescreen.pointerImg.style.display != 'block') {
|
|
Awesomescreen.pointerImg.style.display = 'block';
|
|
}
|
|
},
|
|
|
|
/**
|
|
* hide pointer image
|
|
*/
|
|
hidePointerImg: function awesomescreen_hidePointerImg() {
|
|
if(Awesomescreen.pointerImg.style.display != 'none') {
|
|
Awesomescreen.pointerImg.style.display = 'none';
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Handle smartList event binding
|
|
* @param {Node} el - Dom element of smartList.
|
|
* @param {Object} list - SmartList object.
|
|
* @param {Object} store - Store object.
|
|
* @param {String} type - SmartList display type, now only support bookmark
|
|
* and history.
|
|
*/
|
|
handleSmartListEvent:
|
|
function awesomescreen_handleSmartListEvent(el, list, store, type) {
|
|
|
|
el.addEventListener('open',
|
|
this.showAwesomescreen.bind(this)
|
|
);
|
|
|
|
el.addEventListener('close', (function(e) {
|
|
if(!this.isDisplayedTop()) {
|
|
this.hideAwesomescreen();
|
|
}
|
|
}).bind(this));
|
|
|
|
el.addEventListener('itemUpdated', (function(e){
|
|
this.dialogHidden();
|
|
}).bind(this));
|
|
|
|
el.addEventListener('itemRemoved', (function(e){
|
|
this.dialogHidden();
|
|
}).bind(this));
|
|
|
|
if (type === this.DEFAULT_BOOKMARK) {
|
|
el.addEventListener('showSubMenu', (function(e){
|
|
var option = type;
|
|
|
|
//IFDEF_FIREFOX_SYNC
|
|
option =
|
|
e.detail.readOnly === 'true' ? this.FIREFOX_SYNC_BOOKMARK : type;
|
|
//ENDIF_FIREFOX_SYNC
|
|
|
|
this.optionDialogOpen(option);
|
|
}).bind(this));
|
|
} else if (type === this.DEFAULT_HISTORY) {
|
|
el.addEventListener('showSubMenu', (function(e){
|
|
var option = type;
|
|
//IFDEF_FIREFOX_SYNC
|
|
option =
|
|
e.detail.readOnly === 'true' ? this.FIREFOX_SYNC_HISTORY : type;
|
|
//ENDIF_FIREFOX_SYNC
|
|
this.optionDialogOpen(option);
|
|
}).bind(this));
|
|
}
|
|
|
|
el.addEventListener('displayWebsite', (function(e){
|
|
var uri = e.detail;
|
|
Browser.navigate(uri);
|
|
Browser.switchCursorMode(true);
|
|
}).bind(this));
|
|
|
|
el.addEventListener('loadDataByRange', (function(e){
|
|
var detail = e.detail;
|
|
store.getByRange(
|
|
detail.startAt,
|
|
detail.number,
|
|
detail.folderId,
|
|
detail.callback
|
|
);
|
|
}).bind(this));
|
|
|
|
el.addEventListener('loadDataByIndex', (function(e){
|
|
var detail = e.detail;
|
|
store.getByIndex(
|
|
detail.dataIndex,
|
|
detail.folderId,
|
|
list.addItem.bind(list, detail.listIndex)
|
|
);
|
|
}).bind(this));
|
|
}
|
|
};
|