OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 cr.define('options', function() { |
| 6 |
| 7 var OptionsPage = options.OptionsPage; |
| 8 var RepeatingButton = cr.ui.RepeatingButton; |
| 9 |
| 10 ///////////////////////////////////////////////////////////////////////////// |
| 11 // SystemOptions class: |
| 12 |
| 13 /** |
| 14 * Encapsulated handling of ChromeOS system options page. |
| 15 * @constructor |
| 16 */ |
| 17 |
| 18 function SystemOptions() { |
| 19 OptionsPage.call(this, 'system', templateData.systemPageTabTitle, |
| 20 'systemPage'); |
| 21 } |
| 22 |
| 23 cr.addSingletonGetter(SystemOptions); |
| 24 |
| 25 // Inherit SystemOptions from OptionsPage. |
| 26 SystemOptions.prototype = { |
| 27 __proto__: options.OptionsPage.prototype, |
| 28 |
| 29 /** |
| 30 * Initializes SystemOptions page. |
| 31 * Calls base class implementation to starts preference initialization. |
| 32 */ |
| 33 initializePage: function() { |
| 34 OptionsPage.prototype.initializePage.call(this); |
| 35 |
| 36 // Disable time-related settings if we're not logged in as a real user. |
| 37 if (AccountsOptions.loggedInAsGuest()) { |
| 38 var timezone = $('timezone-select'); |
| 39 if (timezone) |
| 40 timezone.disabled = true; |
| 41 var use_24hour_clock = $('use-24hour-clock'); |
| 42 if (use_24hour_clock) |
| 43 use_24hour_clock.disabled = true; |
| 44 } |
| 45 |
| 46 options.system.bluetooth.BluetoothListElement.decorate( |
| 47 $('bluetooth-device-list')); |
| 48 |
| 49 // TODO(kevers): Populate list of connected bluetooth devices. |
| 50 // Set state of 'Enable bluetooth' checkbox. |
| 51 $('bluetooth-find-devices').onclick = function(event) { |
| 52 findBluetoothDevices_(); |
| 53 }; |
| 54 $('enable-bluetooth').onclick = function(event) { |
| 55 chrome.send('bluetoothEnableChange', [Boolean(true)]); |
| 56 }; |
| 57 $('disable-bluetooth').onclick = function(event) { |
| 58 chrome.send('bluetoothEnableChange', [Boolean(false)]); |
| 59 }; |
| 60 $('language-button').onclick = function(event) { |
| 61 OptionsPage.navigateToPage('language'); |
| 62 }; |
| 63 $('modifier-keys-button').onclick = function(event) { |
| 64 OptionsPage.navigateToPage('languageCustomizeModifierKeysOverlay'); |
| 65 }; |
| 66 $('accesibility-check').onchange = function(event) { |
| 67 chrome.send('accessibilityChange', |
| 68 [String($('accesibility-check').checked)]); |
| 69 }; |
| 70 initializeBrightnessButton_('brightness-decrease-button', |
| 71 'decreaseScreenBrightness'); |
| 72 initializeBrightnessButton_('brightness-increase-button', |
| 73 'increaseScreenBrightness'); |
| 74 } |
| 75 }; |
| 76 |
| 77 /** |
| 78 * Initializes a button for controlling screen brightness. |
| 79 * @param {string} id Button ID. |
| 80 * @param {string} callback Name of the callback function. |
| 81 */ |
| 82 function initializeBrightnessButton_(id, callback) { |
| 83 var button = $(id); |
| 84 cr.ui.decorate(button, RepeatingButton); |
| 85 button.repeatInterval = 300; |
| 86 button.addEventListener(RepeatingButton.Event.BUTTON_HELD, function(e) { |
| 87 chrome.send(callback); |
| 88 }); |
| 89 } |
| 90 |
| 91 /** |
| 92 * Scan for bluetooth devices. |
| 93 * @private |
| 94 */ |
| 95 function findBluetoothDevices_() { |
| 96 setVisibility_('bluetooth-scanning-label', true); |
| 97 setVisibility_('bluetooth-scanning-icon', true); |
| 98 |
| 99 // Remove devices that are not currently connected. |
| 100 var devices = $('bluetooth-device-list').childNodes; |
| 101 for (var i = devices.length - 1; i >= 0; i--) { |
| 102 var device = devices.item(i); |
| 103 var data = device.data; |
| 104 if (!data || data.status !== 'connected') |
| 105 $('bluetooth-device-list').removeChild(device); |
| 106 } |
| 107 chrome.send('findBluetoothDevices'); |
| 108 } |
| 109 |
| 110 /** |
| 111 * Sets the visibility of an element. |
| 112 * @param {string} id The id of the element. |
| 113 * @param {boolean} visible True if the element should be made visible. |
| 114 * @private |
| 115 */ |
| 116 function setVisibility_(id, visible) { |
| 117 if (visible) |
| 118 $(id).classList.remove("transparent"); |
| 119 else |
| 120 $(id).classList.add("transparent"); |
| 121 } |
| 122 |
| 123 // |
| 124 // Chrome callbacks |
| 125 // |
| 126 |
| 127 /** |
| 128 * Set the initial state of the accessibility checkbox. |
| 129 */ |
| 130 SystemOptions.SetAccessibilityCheckboxState = function(checked) { |
| 131 $('accesibility-check').checked = checked; |
| 132 }; |
| 133 |
| 134 /** |
| 135 * Activate the bluetooth settings section on the System settings page. |
| 136 */ |
| 137 SystemOptions.showBluetoothSettings = function() { |
| 138 $('bluetooth-devices').hidden = false; |
| 139 }; |
| 140 |
| 141 /** |
| 142 * Sets the state of the checkbox indicating if bluetooth is turned on. The |
| 143 * state of the "Find devices" button and the list of discovered devices may |
| 144 * also be affected by a change to the state. |
| 145 * @param {boolean} checked Flag Indicating if Bluetooth is turned on. |
| 146 */ |
| 147 SystemOptions.setBluetoothState = function(checked) { |
| 148 $('disable-bluetooth').hidden = !checked; |
| 149 $('enable-bluetooth').hidden = checked; |
| 150 $('bluetooth-finder-container').hidden = !checked; |
| 151 $('no-bluetooth-devices-label').hidden = !checked; |
| 152 if (!checked) { |
| 153 setVisibility_('bluetooth-scanning-label', false); |
| 154 setVisibility_('bluetooth-scanning-icon', false); |
| 155 } |
| 156 // Flush list of previously discovered devices if bluetooth is turned off. |
| 157 if (!checked) { |
| 158 var devices = $('bluetooth-device-list').childNodes; |
| 159 for (var i = devices.length - 1; i >= 0; i--) { |
| 160 var device = devices.item(i); |
| 161 $('bluetooth-device-list').removeChild(device); |
| 162 } |
| 163 } |
| 164 } |
| 165 |
| 166 /** |
| 167 * Adds an element to the list of available bluetooth devices. If an element |
| 168 * with a matching address is found, the existing element is updated. |
| 169 * @param {{name: string, |
| 170 * address: string, |
| 171 * icon: string, |
| 172 * paired: boolean, |
| 173 * connected: boolean}} device |
| 174 * Decription of the bluetooth device. |
| 175 */ |
| 176 SystemOptions.addBluetoothDevice = function(device) { |
| 177 if ($('bluetooth-device-list').appendDevice(device)) |
| 178 $('no-bluetooth-devices-label').hidden = true; |
| 179 }; |
| 180 |
| 181 /** |
| 182 * Hides the scanning label and icon that are used to indicate that a device |
| 183 * search is in progress. |
| 184 */ |
| 185 SystemOptions.notifyBluetoothSearchComplete = function() { |
| 186 setVisibility_('bluetooth-scanning-label', false); |
| 187 setVisibility_('bluetooth-scanning-icon', false); |
| 188 }; |
| 189 |
| 190 /** |
| 191 * Displays the Touchpad Controls section when we detect a touchpad. |
| 192 */ |
| 193 SystemOptions.showTouchpadControls = function() { |
| 194 $('touchpad-controls').hidden = false; |
| 195 }; |
| 196 |
| 197 // Export |
| 198 return { |
| 199 SystemOptions: SystemOptions |
| 200 }; |
| 201 |
| 202 }); |
OLD | NEW |