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
215
gaia/apps/settings/js/telephony_items_handler.js
Executable file
215
gaia/apps/settings/js/telephony_items_handler.js
Executable file
|
|
@ -0,0 +1,215 @@
|
|||
/* global AirplaneModeHelper */
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Singleton object that helps to enable/disable and to show card state
|
||||
* information for telephony-related items from the root in the setting app.
|
||||
*/
|
||||
window.TelephonyItemsHandler = (function() {
|
||||
var DATA_TYPE_SETTING = 'operatorResources.data.icon';
|
||||
|
||||
var dataTypeMapping = {
|
||||
'lte' : '4G LTE',
|
||||
'ehrpd': '4G CDMA',
|
||||
'hspa+': '3.5G HSPA+',
|
||||
'hsdpa': '3.5G HSDPA',
|
||||
'hsupa': '3.5G HSDPA',
|
||||
'hspa' : '3.5G HSDPA',
|
||||
'evdo0': 'EVDO',
|
||||
'evdoa': 'EVDO',
|
||||
'evdob': 'EVDO',
|
||||
'1xrtt': '1xRTT',
|
||||
'umts' : '3G UMTS',
|
||||
'edge' : '2G EDGE',
|
||||
'is95a': '1xRTT',
|
||||
'is95b': '1xRTT',
|
||||
'gprs' : '2G GPRS'
|
||||
};
|
||||
|
||||
var CARD_STATE_MAPPING = {
|
||||
'pinRequired' : 'simCardLockedMsg',
|
||||
'pukRequired' : 'simCardLockedMsg',
|
||||
'permanentBlocked': 'simCardBlockedMsg',
|
||||
'networkLocked' : 'simLockedPhone',
|
||||
'serviceProviderLocked' : 'simLockedPhone',
|
||||
'corporateLocked' : 'simLockedPhone',
|
||||
'network1Locked' : 'simLockedPhone',
|
||||
'network2Locked' : 'simLockedPhone',
|
||||
'hrpdNetworkLocked' : 'simLockedPhone',
|
||||
'ruimCorporateLocked' : 'simLockedPhone',
|
||||
'ruimServiceProviderLocked' : 'simLockedPhone',
|
||||
'unknown' : 'unknownSimCardState',
|
||||
'illegal' : 'simCardIllegal',
|
||||
'absent' : 'noSimCard',
|
||||
'null' : 'simCardNotReady',
|
||||
'ready': ''
|
||||
};
|
||||
|
||||
function tih_updateDataTypeMapping() {
|
||||
var req;
|
||||
try {
|
||||
req = navigator.mozSettings.createLock().get(DATA_TYPE_SETTING) || {};
|
||||
req.onsuccess = function() {
|
||||
var dataTypeValues = req.result[DATA_TYPE_SETTING] || {};
|
||||
for (var key in dataTypeValues) {
|
||||
if (dataTypeMapping[key]) {
|
||||
dataTypeMapping[key] = dataTypeValues[key];
|
||||
}
|
||||
}
|
||||
};
|
||||
req.onerror = function() {
|
||||
console.error('Error loading ' + DATA_TYPE_SETTING + ' settings. ' +
|
||||
req.error && req.error.name);
|
||||
};
|
||||
} catch (e) {
|
||||
console.error('Error loading ' + DATA_TYPE_SETTING + ' settings. ' + e);
|
||||
}
|
||||
}
|
||||
|
||||
var _iccManager;
|
||||
var _mobileConnections;
|
||||
|
||||
/**
|
||||
* Init function.
|
||||
*/
|
||||
function tih_init() {
|
||||
tih_updateDataTypeMapping();
|
||||
_iccManager = window.navigator.mozIccManager;
|
||||
_mobileConnections = window.navigator.mozMobileConnections;
|
||||
if (!_mobileConnections || !_iccManager) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable or disable the items according the state of the ICC card and the
|
||||
* airplane mode status. It also show a short description about the ICC card
|
||||
* status and the carrier name and the data connection type.
|
||||
*/
|
||||
function tih_handleItems() {
|
||||
var itemIds = [
|
||||
'simCardManager-settings',
|
||||
'call-settings',
|
||||
'messaging-settings',
|
||||
'data-connectivity',
|
||||
'simSecurity-settings'
|
||||
];
|
||||
|
||||
if (AirplaneModeHelper.getStatus() !== 'disabled') {
|
||||
tih_showICCCardDetails(CARD_STATE_MAPPING.null);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_mobileConnections.length === 1) {
|
||||
// Single ICC card device.
|
||||
itemIds = [
|
||||
'call-settings',
|
||||
'messaging-settings',
|
||||
'data-connectivity',
|
||||
'simSecurity-settings'
|
||||
];
|
||||
if (!_mobileConnections[0].iccId) {
|
||||
// There is no ICC card.
|
||||
tih_showICCCardDetails(CARD_STATE_MAPPING.absent);
|
||||
return;
|
||||
}
|
||||
|
||||
var iccCard = _iccManager.getIccById(_mobileConnections[0].iccId);
|
||||
if (!iccCard) {
|
||||
tih_showICCCardDetails('');
|
||||
return;
|
||||
}
|
||||
itemIds = [
|
||||
'call-settings',
|
||||
'messaging-settings',
|
||||
'data-connectivity'
|
||||
];
|
||||
|
||||
var cardState = iccCard.cardState;
|
||||
if (cardState === 'ready') {
|
||||
tih_showICCCardDetails('');
|
||||
|
||||
// Card state is ready let's show carrier name and connection data type
|
||||
// for data calls for the 'Cellular & Data' menu item.
|
||||
var dataDesc = document.getElementById('data-desc');
|
||||
dataDesc.style.fontStyle = 'normal';
|
||||
|
||||
var network = _mobileConnections[0].voice.network;
|
||||
var iccInfo = iccCard.iccInfo;
|
||||
var carrier = network ? (network.shortName || network.longName) : null;
|
||||
|
||||
if (carrier && iccInfo && iccInfo.isDisplaySpnRequired && iccInfo.spn) {
|
||||
if (iccInfo.isDisplayNetworkNameRequired && carrier !== iccInfo.spn) {
|
||||
carrier = carrier + ' ' + iccInfo.spn;
|
||||
} else {
|
||||
carrier = iccInfo.spn;
|
||||
}
|
||||
}
|
||||
dataDesc.textContent = carrier;
|
||||
var dataType = (_mobileConnections[0].data.connected &&
|
||||
_mobileConnections[0].data.type) ?
|
||||
dataTypeMapping[_mobileConnections[0].data.type] :
|
||||
'';
|
||||
if (dataType) {
|
||||
dataDesc.textContent += ' - ' + dataType;
|
||||
}
|
||||
} else {
|
||||
tih_showICCCardDetails(CARD_STATE_MAPPING[cardState]);
|
||||
}
|
||||
} else {
|
||||
// Multi ICC card device.
|
||||
itemIds = [
|
||||
'simCardManager-settings',
|
||||
'call-settings',
|
||||
'messaging-settings',
|
||||
'data-connectivity'
|
||||
];
|
||||
if (!_mobileConnections[0].iccId &&
|
||||
!_mobileConnections[1].iccId) {
|
||||
// There is no ICC cards.
|
||||
tih_showICCCardDetails(CARD_STATE_MAPPING.absent);
|
||||
} else {
|
||||
// There is ICC card.
|
||||
tih_showICCCardDetails('');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show some details (card state) of the ICC card.
|
||||
*
|
||||
* @param {String} details What to show as ICC card details.
|
||||
*/
|
||||
function tih_showICCCardDetails(details) {
|
||||
var itemIds = [
|
||||
'simmanager-desc',
|
||||
'call-desc',
|
||||
'messaging-desc',
|
||||
'data-desc'
|
||||
];
|
||||
for (var id = 0; id < itemIds.length; id++) {
|
||||
var desc = document.getElementById(itemIds[id]);
|
||||
if (!desc) {
|
||||
continue;
|
||||
}
|
||||
desc.style.fontStyle = 'italic';
|
||||
|
||||
if (details !== '') {
|
||||
desc.setAttribute('data-l10n-id', details);
|
||||
} else {
|
||||
desc.removeAttribute('data-l10n-id');
|
||||
desc.textContent = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Public API.
|
||||
return {
|
||||
init: tih_init,
|
||||
handleItems: function() {
|
||||
AirplaneModeHelper.ready(function() {
|
||||
tih_handleItems();
|
||||
});
|
||||
}
|
||||
};
|
||||
})();
|
||||
Loading…
Reference in a new issue