Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
110
gaia/apps/settings/js/settings.js
Executable file
110
gaia/apps/settings/js/settings.js
Executable file
|
|
@ -0,0 +1,110 @@
|
|||
'use strict';
|
||||
|
||||
/**
|
||||
* Debug note: to test this app in a desktop browser, you'll have to set
|
||||
* the `dom.mozSettings.enabled' preference to false in order to avoid an
|
||||
* `uncaught exception: 2147500033' message (= 0x80004001).
|
||||
*/
|
||||
|
||||
window.Settings = {
|
||||
get hasMozSettings() {
|
||||
// return navigator.mozSettings when properly supported, null otherwise
|
||||
// (e.g. when debugging on a browser...)
|
||||
var settings = navigator.mozSettings;
|
||||
return (settings && typeof(settings.createLock) == 'function') ?
|
||||
settings : null;
|
||||
},
|
||||
|
||||
isTabletAndLandscape: function is_tablet_and_landscape() {
|
||||
return this.ScreenLayout.getCurrentLayout('tabletAndLandscaped');
|
||||
},
|
||||
|
||||
_isTabletAndLandscapeLastTime: null,
|
||||
|
||||
rotate: function rotate(evt) {
|
||||
var isTabletAndLandscapeThisTime = Settings.isTabletAndLandscape();
|
||||
var panelsWithCurrentClass;
|
||||
if (Settings._isTabletAndLandscapeLastTime !==
|
||||
isTabletAndLandscapeThisTime) {
|
||||
panelsWithCurrentClass = document.querySelectorAll(
|
||||
'section[role="region"].current');
|
||||
// in two column style if we have only 'root' panel displayed,
|
||||
// (left: root panel, right: blank)
|
||||
// then show default panel too
|
||||
if (panelsWithCurrentClass.length === 1 &&
|
||||
panelsWithCurrentClass[0].id === 'root') {
|
||||
// go to default panel
|
||||
Settings.currentPanel = Settings.initialPanelForTablet;
|
||||
}
|
||||
}
|
||||
Settings._isTabletAndLandscapeLastTime = isTabletAndLandscapeThisTime;
|
||||
},
|
||||
|
||||
initialPanelForTablet: '#wifi',
|
||||
|
||||
_currentPanel: null,
|
||||
|
||||
get currentPanel() {
|
||||
return this._currentPanel;
|
||||
},
|
||||
|
||||
set currentPanel(hash) {
|
||||
if (!hash.startsWith('#')) {
|
||||
hash = '#' + hash;
|
||||
}
|
||||
|
||||
if (hash === this._currentPanel) {
|
||||
return;
|
||||
}
|
||||
|
||||
// take off # first
|
||||
var panelID = hash;
|
||||
if (panelID.startsWith('#')) {
|
||||
panelID = panelID.substring(1);
|
||||
}
|
||||
|
||||
this.SettingsService.navigate(panelID, this._initialOptions);
|
||||
},
|
||||
|
||||
get _initialOptions() {
|
||||
// After initial navigation, initial panel options are not necessary.
|
||||
delete this._initialOptions;
|
||||
// If initial panel has options, use them once at initial navigation.
|
||||
return window.LaunchContext.activityHandler &&
|
||||
window.LaunchContext.activityHandler.targetPanelOptions;
|
||||
},
|
||||
|
||||
init: function settings_init(options) {
|
||||
if (!this.hasMozSettings || !navigator.mozSetMessageHandler) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.SettingsService = options.SettingsService;
|
||||
this.ScreenLayout = options.ScreenLayout;
|
||||
|
||||
// XXX: We need to set to currentPanel here although SettingsService already
|
||||
// knows the default panel id. This line will be removed along with
|
||||
// "currentPanel" soon.
|
||||
this.currentPanel = window.LaunchContext.initialPanelId;
|
||||
|
||||
// make operations not block the load time
|
||||
setTimeout((function nextTick() {
|
||||
// With async pan zoom enable, the page starts with a viewport
|
||||
// of 980px before beeing resize to device-width. So let's delay
|
||||
// the rotation listener to make sure it is not triggered by fake
|
||||
// positive.
|
||||
this.ScreenLayout.watch(
|
||||
'tabletAndLandscaped',
|
||||
'(min-width: 768px) and (orientation: landscape)');
|
||||
window.addEventListener('screenlayoutchange', this.rotate);
|
||||
|
||||
// WifiHelper is guaranteed to be loaded in main.js before calling to
|
||||
// this line.
|
||||
if (this.isTabletAndLandscape()) {
|
||||
this.currentPanel = this.initialPanelForTablet;
|
||||
}
|
||||
}).bind(this));
|
||||
|
||||
window.performance.mark('startupPathEnd');
|
||||
}
|
||||
};
|
||||
Loading…
Reference in a new issue