VulpesOS/gaia/apps/system/js/roaming_icon.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

59 lines
1.8 KiB
JavaScript
Executable file

/* global BaseIcon, Service */
'use strict';
(function(exports) {
var RoamingIcon = function(manager, index) {
BaseIcon.call(this, manager, index);
};
RoamingIcon.prototype = Object.create(BaseIcon.prototype);
RoamingIcon.prototype.name = 'RoamingIcon';
RoamingIcon.prototype.DEBUG = false;
RoamingIcon.prototype.view = function() {
// jshint ignore: start
var index = this.index;
return `<div class="sb-icon sb-icon-roaming" role="listitem" data-index="${index}">
</div>`;
// jshint ignore: end
};
RoamingIcon.prototype.render = function() {
this.debug('renderring...');
this.containerElement =
document.getElementById('statusbar-mobile-connection');
this.containerElement.insertAdjacentHTML('beforeend', this.view());
this.element =
this.containerElement.querySelector('.sb-icon-roaming[data-index="' +
this.index + '"]');
};
RoamingIcon.prototype.update = function() {
var simslot = this.manager;
var conn = simslot.conn;
var voice = conn.voice;
var data = conn.data;
if (!voice || !this.element) {
this.debug('no element or no voice');
return;
}
if (!Service.query('Radio.settingEnabled')) {
this.debug('radio disabled');
this.hide();
return;
}
if (simslot.isAbsent() || simslot.isLocked()) {
this.debug('simcard absent or locked');
this.hide();
} else if (data && data.connected &&
data.type && data.type.startsWith('evdo')) {
this.debug('data roaming?', data.roaming);
data.roaming ? this.show() : this.hide();
} else if (voice.connected || Service.query('hasActiveCall', this.index)) {
this.debug('voice roaming?', voice.roaming);
voice.roaming ? this.show() : this.hide();
} else {
this.hide();
}
};
exports.RoamingIcon = RoamingIcon;
}(window));