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:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,121 @@
/**
* SettingsPanel extends Panel with basic settings services. It presets the UI
* elements based on the values in mozSettings and add listeners responding to
* mozSettings changes in onReady. In onInit it parses the panel element for
* activating links. It also removes listeners in onDone so that we can avoid
* unwanted UI updates when the panel is outside of the viewport.
*
* @module SettingsPanel
*/
define(function(require) {
'use strict';
var Panel = require('modules/panel');
var SettingsCache = require('modules/settings_cache');
var PanelUtils = require('modules/panel_utils');
var _emptyFunc = function panel_emptyFunc() {};
/**
* @alias module:SettingsPanel
* @param {Object} options
* Options are used to override the internal functions of
* Panel.
* @returns {SettingsPanel}
*/
var SettingsPanel = function ctor_SettingsPanel(options) {
/**
* The root element of the panel.
*
* @type {HTMLElement}
*/
var _panel = null;
/**
* The handler is called when settings change.
*
* @param {Event} event
*/
var _settingsChangeHandler = function(event) {
PanelUtils.onSettingsChange(_panel, event);
};
/**
* Add listeners to make the panel be able to respond to setting changes
* and user interactions.
*
* @param {HTMLElement} panel
*/
var _addListeners = function panel_addListeners(panel) {
if (!panel) {
return;
}
SettingsCache.addEventListener('settingsChange',
_settingsChangeHandler);
panel.addEventListener('change', PanelUtils.onInputChange);
panel.addEventListener('click', PanelUtils.onLinkClick);
};
/**
* Remove all listeners.
*
* @param {HTMLElement} panel
*/
var _removeListeners = function panel_removeListeners(panel) {
if (!panel) {
return;
}
SettingsCache.removeEventListener('settingsChange',
_settingsChangeHandler);
panel.removeEventListener('change', PanelUtils.onInputChange);
panel.removeEventListener('click', PanelUtils.onLinkClick);
};
options = options || {};
options.onInit = options.onInit || _emptyFunc;
options.onUninit = options.onUninit || _emptyFunc;
options.onShow = options.onShow || _emptyFunc;
options.onHide = options.onHide || _emptyFunc;
options.onBeforeShow = options.onBeforeShow || _emptyFunc;
options.onBeforeHide = options.onBeforeHide || _emptyFunc;
return Panel({
onInit: function(panel, initOptions) {
if (!panel) {
return;
}
_panel = panel;
PanelUtils.activate(panel);
return options.onInit(panel, initOptions);
},
onUninit: function() {
_removeListeners(_panel);
_panel = null;
options.onUninit();
},
onShow: function(panel, showOptions) {
return options.onShow(panel, showOptions);
},
onHide: function() {
// Remove listeners.
_removeListeners(_panel);
return options.onHide();
},
onBeforeShow: function(panel, beforeShowOptions) {
// Preset the panel every time when it is presented.
PanelUtils.preset(panel);
_addListeners(panel);
return options.onBeforeShow(panel, beforeShowOptions);
},
onBeforeHide: function() {
return options.onBeforeHide();
}
});
};
return SettingsPanel;
});