Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
100 lines
2.9 KiB
JavaScript
Executable file
100 lines
2.9 KiB
JavaScript
Executable file
/**
|
|
* Manage wallpaper and replaceable home screens.
|
|
*/
|
|
define(function(require) {
|
|
'use strict';
|
|
|
|
const VERTICALHOME_MANIFEST =
|
|
'app://verticalhome.gaiamobile.org/manifest.webapp';
|
|
|
|
var SettingsListener = require('shared/settings_listener');
|
|
var SettingsPanel = require('modules/settings_panel');
|
|
var Wallpaper = require('panels/homescreens/wallpaper');
|
|
var HomescreenCols = require('panels/homescreens/homescreen_cols');
|
|
var HomescreenName = require('panels/homescreens/homescreen_name');
|
|
|
|
var elements = {};
|
|
var gridSelect = null;
|
|
|
|
return function ctor_homescreen_panel() {
|
|
var wallpaper = Wallpaper();
|
|
var homescreenCols = HomescreenCols();
|
|
var homescreenName = HomescreenName();
|
|
|
|
return SettingsPanel({
|
|
/**
|
|
* @param {HTMLElement} panel The panel HTML element.
|
|
*/
|
|
onInit: function hp_onInit(panel) {
|
|
elements = {
|
|
wallpaper: panel.querySelector('.wallpaper'),
|
|
wallpaperPreview: panel.querySelector('.wallpaper-preview'),
|
|
currentHomescreen: panel.querySelector('.current-homescreen')
|
|
};
|
|
|
|
elements.wallpaper.addEventListener('click',
|
|
wallpaper.selectWallpaper.bind(wallpaper));
|
|
|
|
SettingsListener.observe('homescreen.manifestURL', '', manifestURL => {
|
|
homescreenCols.verticalhomeActive =
|
|
manifestURL === VERTICALHOME_MANIFEST;
|
|
});
|
|
|
|
gridSelect = panel.querySelector('[name="grid.layout.cols"]');
|
|
gridSelect.addEventListener('change', function() {
|
|
homescreenCols.setCols(this.value);
|
|
});
|
|
},
|
|
|
|
onBeforeShow: function hp_onBeforeShow(panel, options) {
|
|
this._setWallpaperPreviewSrc(wallpaper.wallpaperSrc);
|
|
this._setHomescreenName(homescreenName.name);
|
|
this._updateCols(homescreenCols.cols);
|
|
|
|
homescreenCols.observe('cols', this._updateCols);
|
|
|
|
wallpaper.observe('wallpaperSrc', this._setWallpaperPreviewSrc);
|
|
homescreenName.observe('name', this._setHomescreenName);
|
|
},
|
|
|
|
onBeforeHide: function hp_onBeforeHide() {
|
|
wallpaper.unobserve('wallpaperSrc');
|
|
homescreenName.unobserve('name');
|
|
homescreenCols.unobserve('cols');
|
|
},
|
|
|
|
/**
|
|
* @param {String} src
|
|
* @private
|
|
*/
|
|
_setWallpaperPreviewSrc: function hp_setHomescreenName(src) {
|
|
elements.wallpaperPreview.src = src;
|
|
},
|
|
|
|
/**
|
|
* @param {Number} number The number of columns in the layout.
|
|
* @private
|
|
*/
|
|
_updateCols: function hdp_updateCols(number) {
|
|
if (!number) {
|
|
return;
|
|
}
|
|
|
|
var option =
|
|
gridSelect.querySelector('[value="' + number + '"]');
|
|
|
|
if (option) {
|
|
option.selected = true;
|
|
}
|
|
},
|
|
|
|
/**
|
|
* @param {String} name
|
|
* @private
|
|
*/
|
|
_setHomescreenName: function hp_setHomescreenName(name) {
|
|
elements.currentHomescreen.textContent = name;
|
|
}
|
|
});
|
|
};
|
|
});
|