VulpesOS/gaia/apps/settings/js/panels/root/panel.js
OverSu b38dea0597 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.
2026-09-30 23:13:03 +02:00

134 lines
4.7 KiB
JavaScript
Executable file

define(function(require) {
'use strict';
var SettingsService = require('modules/settings_service');
var SettingsPanel = require('modules/settings_panel');
var Root = require('panels/root/root');
var AirplaneModeItem = require('panels/root/airplane_mode_item');
var ThemesItem = require('panels/root/themes_item');
var AddonsItem = require('panels/root/addons_item');
var STKItem = require('panels/root/stk_item');
var queryRootForLowPriorityItems = function(panel) {
// This is a map from the module name to the object taken by the constructor
// of the module.
return {
'BluetoothItem': panel.querySelector('.bluetooth-desc'),
'NFCItem': {
nfcMenuItem: panel.querySelector('.nfc-settings'),
nfcCheckBox: panel.querySelector('#nfc-input')
},
'LanguageItem': panel.querySelector('.language-desc'),
'BatteryItem': panel.querySelector('.battery-desc'),
'FindMyDeviceItem': panel.querySelector('.findmydevice-desc'),
'StorageUSBItem': {
mediaStorageDesc: panel.querySelector('.media-storage-desc'),
usbStorage: panel.querySelector('#menuItem-enableStorage'),
usbEnabledInfoBlock: panel.querySelector('.usb-desc'),
mediaStorageSection: panel.querySelector('.media-storage-section')
},
'StorageAppItem': panel.querySelector('.application-storage-desc'),
'WifiItem': panel.querySelector('#wifi-desc'),
'ScreenLockItem': panel.querySelector('.screenLock-desc'),
'SimSecurityItem': panel.querySelector('.simCardLock-desc')
};
};
return function ctor_root_panel() {
var root;
var airplaneModeItem;
var themesItem;
var addonsItem;
var stkItem;
var activityDoneButton;
var lowPriorityRoots = null;
var initLowPriorityItemsPromise = null;
var initLowPriorityItems = function(rootElements) {
if (!initLowPriorityItemsPromise) {
initLowPriorityItemsPromise = new Promise(function(resolve) {
require(['panels/root/low_priority_items'], resolve);
}).then(function(itemCtors) {
var result = {};
Object.keys(rootElements).forEach(function(name) {
var itemCtor = itemCtors[name];
if (itemCtor) {
result[name] = itemCtor(rootElements[name]);
}
});
return result;
});
}
return initLowPriorityItemsPromise;
};
return SettingsPanel({
onInit: function rp_onInit(panel) {
root = Root();
root.init(panel);
airplaneModeItem =
AirplaneModeItem(panel.querySelector('.airplaneMode-input'));
themesItem =
ThemesItem(panel.querySelector('.themes-section'));
addonsItem =
AddonsItem(panel.querySelector('#addons-section'));
stkItem = STKItem({
iccMainHeader: panel.querySelector('#icc-mainheader'),
iccEntries: panel.querySelector('#icc-entries')
});
activityDoneButton = panel.querySelector('#activityDoneButton');
activityDoneButton.addEventListener('click', function() {
SettingsService.back();
});
// If the device supports dsds, callSettings must be changed 'href'
// for navigating call-iccs panel first to let users choose simcard
var mozMobileConnections = navigator.mozMobileConnections;
if (mozMobileConnections && mozMobileConnections.length > 1) {
var callItem = document.getElementById('menuItem-callSettings');
callItem.setAttribute('href', '#call-iccs');
}
var idleObserver = {
time: 3,
onidle: function() {
navigator.removeIdleObserver(idleObserver);
lowPriorityRoots = queryRootForLowPriorityItems(panel);
initLowPriorityItems(lowPriorityRoots).then(function(items) {
Object.keys(items).forEach((key) => items[key].enabled = true);
});
}
};
navigator.addIdleObserver(idleObserver);
},
onShow: function rp_onShow(panel) {
airplaneModeItem.enabled = true;
themesItem.enabled = true;
addonsItem.enabled = true;
if (initLowPriorityItemsPromise) {
initLowPriorityItemsPromise.then(function(items) {
Object.keys(items).forEach((key) => items[key].enabled = true);
});
}
},
onHide: function rp_onHide() {
themesItem.enabled = false;
addonsItem.enabled = false;
if (initLowPriorityItemsPromise) {
initLowPriorityItemsPromise.then(function(items) {
Object.keys(items).forEach((key) => items[key].enabled = false);
});
}
},
onUninit: function rp_onUninit() {
airplaneModeItem.enabled = false;
}
});
};
});