Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/apps/system/js/quick_settings.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/system/js/quick_settings.js')
-rw-r--r--apps/system/js/quick_settings.js279
1 files changed, 0 insertions, 279 deletions
diff --git a/apps/system/js/quick_settings.js b/apps/system/js/quick_settings.js
deleted file mode 100644
index 328bb35..0000000
--- a/apps/system/js/quick_settings.js
+++ /dev/null
@@ -1,279 +0,0 @@
-/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- /
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
-
-'use strict';
-
-var QuickSettings = {
- // Indicate setting status of geolocation.enabled
- geolocationEnabled: false,
- WIFI_STATUSCHANGE_TIMEOUT: 2000,
-
- init: function qs_init() {
- var settings = window.navigator.mozSettings;
- var conn = window.navigator.mozMobileConnection;
- if (!settings || !conn)
- return;
-
- this.getAllElements();
-
- this.overlay.addEventListener('click', this);
- window.addEventListener('utilitytrayshow', this);
-
- var self = this;
-
- /*
- * Monitor data network icon
- */
- conn.addEventListener('datachange', function qs_onDataChange() {
- var label = {
- 'lte': '4G', // 4G LTE
- 'ehrpd': '4G', // 4G CDMA
- 'hspa+': 'H+', // 3.5G HSPA+
- 'hsdpa': 'H', 'hsupa': 'H', 'hspa': 'H', // 3.5G HSDPA
- 'evdo0': '3G', 'evdoa': '3G', 'evdob': '3G', '1xrtt': '3G', // 3G CDMA
- 'umts': '3G', // 3G
- 'edge': 'E', // EDGE
- 'is95a': '2G', 'is95b': '2G', // 2G CDMA
- 'gprs': '2G'
- };
- self.data.dataset.network = label[conn.data.type];
- });
-
- /* monitor data setting
- * TODO prevent quickly tapping on it
- */
- SettingsListener.observe('ril.data.enabled', true, function(value) {
- if (value) {
- self.data.dataset.enabled = 'true';
- } else {
- delete self.data.dataset.enabled;
- }
- });
-
- /* monitor bluetooth setting and initialization/disable ready event
- * - when settings changed, update UI and lock toogle to prevent quickly
- * tapping on it.
- * - when got bluetooth initialization/disable ready, active toogle, so
- * return the control to user.
- */
- var btFirstSet = true;
- SettingsListener.observe('bluetooth.enabled', true, function(value) {
- // check self.bluetooth.dataset.enabled and value are identical
- if ((self.bluetooth.dataset.enabled && value) ||
- (self.bluetooth.dataset.enabled === undefined && !value))
- return;
-
- if (value) {
- self.bluetooth.dataset.enabled = 'true';
- } else {
- delete self.bluetooth.dataset.enabled;
- }
-
- // Set to the initializing state to block user interaction until the
- // operation completes. (unless we are being called for the first time,
- // where Bluetooth is already initialize
- if (!btFirstSet)
- self.bluetooth.dataset.initializing = 'true';
- btFirstSet = false;
- });
- window.addEventListener('bluetooth-adapter-added', this);
- window.addEventListener('bluetooth-disabled', this);
-
-
- /* monitor wifi setting and initialization/disable ready event
- * - when settings changed, update UI and lock toogle to prevent quickly
- * tapping on it.
- * - when got bluetooth initialization/disable ready, active toogle, so
- * return the control to user.
- */
- var wifiFirstSet = true;
- SettingsListener.observe('wifi.enabled', true, function(value) {
- // check self.wifi.dataset.enabled and value are identical
- if ((self.wifi.dataset.enabled && value) ||
- (self.wifi.dataset.enabled === undefined && !value))
- return;
-
- if (value) {
- self.wifi.dataset.enabled = 'true';
- } else {
- delete self.wifi.dataset.enabled;
- }
- // Set to the initializing state to block user interaction until the
- // operation completes. (unless we are being called for the first time,
- // where Wifi is already initialize
- if (!wifiFirstSet)
- self.wifi.dataset.initializing = 'true';
- wifiFirstSet = false;
- });
- window.addEventListener('wifi-enabled', this);
- window.addEventListener('wifi-disabled', this);
- window.addEventListener('wifi-statuschange', this);
-
- /* monitor geolocation setting
- * TODO prevent quickly tapping on it
- */
- SettingsListener.observe('geolocation.enabled', true, function(value) {
- self.geolocationEnabled = value;
- });
-
- // monitor airplane mode
- SettingsListener.observe('ril.radio.disabled', false, function(value) {
- self.data.dataset.airplaneMode = value;
- if (value) {
- self.data.classList.add('quick-settings-airplane-mode');
- self.airplaneMode.dataset.enabled = 'true';
- } else {
- self.data.classList.remove('quick-settings-airplane-mode');
- delete self.airplaneMode.dataset.enabled;
- }
- });
- },
-
- handleEvent: function qs_handleEvent(evt) {
- evt.preventDefault();
- switch (evt.type) {
- case 'click':
- switch (evt.target) {
- case this.wifi:
- // do nothing if wifi isn't ready
- if (this.wifi.dataset.initializing)
- return;
- var enabled = !!this.wifi.dataset.enabled;
- SettingsListener.getSettingsLock().set({
- 'wifi.enabled': !enabled
- });
- if (!enabled)
- this.toggleAutoConfigWifi = true;
- break;
-
- case this.data:
- if (this.data.dataset.airplaneMode !== 'true') {
- // TODO should ignore the action if data initialization isn't done
- var enabled = !!this.data.dataset.enabled;
-
- SettingsListener.getSettingsLock().set({
- 'ril.data.enabled': !enabled
- });
- }
-
- break;
-
- case this.bluetooth:
- // do nothing if bluetooth isn't ready
- if (this.bluetooth.dataset.initializing)
- return;
-
- var enabled = !!this.bluetooth.dataset.enabled;
- SettingsListener.getSettingsLock().set({
- 'bluetooth.enabled': !enabled
- });
- break;
-
- case this.airplaneMode:
- var enabled = !!this.airplaneMode.dataset.enabled;
- SettingsListener.getSettingsLock().set({
- 'ril.radio.disabled': !enabled
- });
- break;
-
- case this.fullApp:
- // XXX: This should be replaced probably by Web Activities
- var host = document.location.host;
- var domain = host.replace(/(^[\w\d]+\.)?([\w\d]+\.[a-z]+)/, '$2');
- var protocol = document.location.protocol + '//';
- Applications.getByManifestURL(protocol + 'settings.' +
- domain + '/manifest.webapp').launch();
-
- UtilityTray.hide();
- break;
- }
- break;
-
- case 'utilitytrayshow':
- break;
-
- // unlock bluetooth toggle
- case 'bluetooth-adapter-added':
- case 'bluetooth-disabled':
- delete this.bluetooth.dataset.initializing;
- break;
- // unlock wifi toggle
- case 'wifi-enabled':
- delete this.wifi.dataset.initializing;
- if (this.toggleAutoConfigWifi) {
- // Check whether it found a wifi to connect after a timeout.
- this.wifiStatusTimer = setTimeout(this.autoConfigWifi.bind(this),
- this.WIFI_STATUSCHANGE_TIMEOUT);
- }
- break;
- case 'wifi-disabled':
- delete this.wifi.dataset.initializing;
- if (this.toggleAutoConfigWifi) {
- clearTimeout(this.wifiStatusTimer);
- this.wifiStatusTimer = null;
- this.toggleAutoConfigWifi = false;
- }
- break;
-
- case 'wifi-statuschange':
- if (this.toggleAutoConfigWifi && !this.wifi.dataset.initializing)
- this.autoConfigWifi();
- break;
- }
- },
-
- getAllElements: function qs_getAllElements() {
- // ID of elements to create references
- var elements = ['wifi', 'data', 'bluetooth', 'airplane-mode', 'full-app'];
-
- var toCamelCase = function toCamelCase(str) {
- return str.replace(/\-(.)/g, function replacer(str, p1) {
- return p1.toUpperCase();
- });
- };
-
- elements.forEach(function createElementRef(name) {
- this[toCamelCase(name)] =
- document.getElementById('quick-settings-' + name);
- }, this);
-
- this.overlay = document.getElementById('quick-settings');
- },
-
- // XXX Break down obj keys in a for each loop because mozSettings
- // does not currently supports multiple keys in one set()
- // https://bugzilla.mozilla.org/show_bug.cgi?id=779381
- setMozSettings: function qs_setter(keypairs) {
- var setlock = SettingsListener.getSettingsLock();
- for (var key in keypairs) {
- var obj = {};
- obj[key] = keypairs[key];
- setlock.set(obj);
- }
- },
-
- /* Auto-config wifi if user enabled wifi from quick settings bar.
- * If there are no known networks around, wifi settings page
- * will be opened. Otherwise nothing will be done.
- */
- autoConfigWifi: function qs_autoConfigWifi() {
- clearTimeout(this.wifiStatusTimer);
- this.wifiStatusTimer = null;
- this.toggleAutoConfigWifi = false;
-
- var wifiManager = window.navigator.mozWifiManager;
- var status = wifiManager.connection.status;
-
- if (status == 'disconnected') {
- var activity = new MozActivity({
- name: 'configure',
- data: {
- target: 'device',
- section: 'wifi'
- }
- });
- }
- }
-};
-
-QuickSettings.init();