Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Side by Side Diff: chrome/browser/resources/options/chromeos/system_options.js

Issue 8137003: Add display of available bluetooth devices, and mechanism for retrieving the list. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Add opacity transition animation for the Bluetooth scanning indicator. Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('options', function() { 5 cr.define('options', function() {
6 6
7 var OptionsPage = options.OptionsPage; 7 var OptionsPage = options.OptionsPage;
8 ///////////////////////////////////////////////////////////////////////////// 8 /////////////////////////////////////////////////////////////////////////////
9 // SystemOptions class: 9 // SystemOptions class:
10 10
(...skipping 23 matching lines...) Expand all
34 // Disable time-related settings if we're not logged in as a real user. 34 // Disable time-related settings if we're not logged in as a real user.
35 if (AccountsOptions.loggedInAsGuest()) { 35 if (AccountsOptions.loggedInAsGuest()) {
36 var timezone = $('timezone-select'); 36 var timezone = $('timezone-select');
37 if (timezone) 37 if (timezone)
38 timezone.disabled = true; 38 timezone.disabled = true;
39 var use_24hour_clock = $('use-24hour-clock'); 39 var use_24hour_clock = $('use-24hour-clock');
40 if (use_24hour_clock) 40 if (use_24hour_clock)
41 use_24hour_clock.disabled = true; 41 use_24hour_clock.disabled = true;
42 } 42 }
43 43
44 options.system.bluetooth.BluetoothListElement.decorate(
45 $('bluetooth-device-list'));
46
44 // TODO (kevers) - Populate list of connected bluetooth devices. 47 // TODO (kevers) - Populate list of connected bluetooth devices.
45 // Set state of 'Enable bluetooth' checkbox. 48 // Set state of 'Enable bluetooth' checkbox.
46 // Set state of 'Find devices' button. 49
50 $('bluetooth-find-devices').disabled =
51 $('enable-bluetooth-label') ? false : true;
52 $('bluetooth-find-devices').onclick = function(event) {
53 findBluetoothDevices_();
54 };
47 55
48 $('language-button').onclick = function(event) { 56 $('language-button').onclick = function(event) {
49 OptionsPage.navigateToPage('language'); 57 OptionsPage.navigateToPage('language');
50 }; 58 };
51 $('modifier-keys-button').onclick = function(event) { 59 $('modifier-keys-button').onclick = function(event) {
52 OptionsPage.navigateToPage('languageCustomizeModifierKeysOverlay'); 60 OptionsPage.navigateToPage('languageCustomizeModifierKeysOverlay');
53 }; 61 };
54 $('accesibility-check').onchange = function(event) { 62 $('accesibility-check').onchange = function(event) {
55 chrome.send('accessibilityChange', 63 chrome.send('accessibilityChange',
56 [String($('accesibility-check').checked)]); 64 [String($('accesibility-check').checked)]);
(...skipping 12 matching lines...) Expand all
69 $('accesibility-check').checked = checked; 77 $('accesibility-check').checked = checked;
70 }; 78 };
71 79
72 /** 80 /**
73 * Activate the bluetooth settings section on the System settings page. 81 * Activate the bluetooth settings section on the System settings page.
74 */ 82 */
75 SystemOptions.ShowBluetoothSettings = function() { 83 SystemOptions.ShowBluetoothSettings = function() {
76 $('bluetooth-devices').hidden = false; 84 $('bluetooth-devices').hidden = false;
77 } 85 }
78 86
87 /**
88 * Adds an element to the list of available bluetooth devices.
89 * @param{{'deviceName': string,
90 * 'deviceId': string,
91 * 'deviceType': Constants.DEVICE_TYPE,
92 * 'deviceStatus': Constants.DEVICE_STATUS} device
93 * Decription of the bluetooth device.
94 */
95 SystemOptions.AddBluetoothDevice = function(device) {
James Hawkins 2011/10/06 17:20:45 Public methods should be at the bottom.
James Hawkins 2011/10/06 17:20:45 s/Add/add/
kevers 2011/10/06 20:24:41 Done.
kevers 2011/10/06 20:24:41 Done.
96 $('bluetooth-device-list').appendDevice(device);
97 }
98
99 /**
100 * Hides the scanning label and icon that are used to indicate that a device
101 * search is in progress.
102 */
103 SystemOptions.NotifyBluetoothSearchComplete = function() {
James Hawkins 2011/10/06 17:20:45 s/Notify/notify/
kevers 2011/10/06 20:24:41 Done.
104 // TDOO (kevers) - Reset state immediately once results are received
105 // asynchronously.
106 setTimeout(function() {
107 setVisibility_('bluetooth-scanning-label', false);
108 setVisibility_('bluetooth-scanning-icon', false);
109 }, 2000);
110 }
111
112 /**
113 * Scan for bluetooth devices.
114 * @private
115 */
116 function findBluetoothDevices_() {
117 setVisibility_('bluetooth-scanning-label', true);
118 setVisibility_('bluetooth-scanning-icon', true);
119
120 // Remove devices that are not currently connected.
121 var devices = $('bluetooth-device-list').childNodes;
122 for (var i = devices.length - 1; i >= 0; i--) {
123 var device = devices.item(i);
124 var data = device.data;
125 if (!data || data.status !== 'connected')
126 $('bluetooth-device-list').removeChild(device);
127 }
128 // TODO (kevers) - Set arguments to a list of the currently connected
129 // devices.
130 chrome.send('findBluetoothDevices');
131 }
132
133 /**
134 * Sets the visibility of an element.
135 * @param {string} id The id of the element.
136 * @param {boolean} visible True if the element should be made visible.
137 * @private
138 */
139 function setVisibility_(id, visible) {
140 var el = $(id);
141 if (el.hidden != visible) {
142 if (visible)
143 el.classList.remove("transparent");
144 return;
145 }
146 if (visible) {
147 el.hidden = false;
148 setTimeout(function() {
149 el.classList.remove('transparent');
150 });
151 } else {
152 el.addEventListener('webkitTransitionEnd', function f(e) {
153 if (e.propertyName != 'opacity')
154 return;
155 el.removeEventListener('webkitTransitionEnd', f);
James Hawkins 2011/10/06 17:20:45 Can't this all be done in CSS?
kevers 2011/10/06 20:24:41 Can animate opacity but not the 'hidden' attribute
156 fadeCompleted_(el);
157 });
158 el.classList.add('transparent');
159 }
160 }
161
162 /**
163 * Called when the opacity animation finishes on an element.
164 * @param {!Element} el The target element.
165 * @private
166 */
167 function fadeCompleted_(el) {
168 if (el.classList.contains('transparent'))
169 el.hidden = true;
170 }
171
79 // Export 172 // Export
80 return { 173 return {
81 SystemOptions: SystemOptions 174 SystemOptions: SystemOptions
82 }; 175 };
83 176
84 }); 177 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698