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

Side by Side Diff: chrome/browser/resources/options/chromeos/bluetooth_list_element.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: BlueTooth -> Bluetooth. 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
(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.system.bluetooth', function() {
6
James Hawkins 2011/10/04 20:43:39 Remove blank line.
kevers 2011/10/05 14:23:01 Done.
7 /**
8 * Bluetooth settings constants.
9 */
10 function Constants() {}
11
12 /**
13 * Enumeration of supported device types. Each device type has an
14 * associated icon and CSS style.
15 * @enum {string}
16 */
17 Constants.DEVICE_TYPE = {
18 HEADSET: 'headset',
James Hawkins 2011/10/04 20:43:39 Indentation should be 2 spaces.
kevers 2011/10/05 14:23:01 Done.
19 KEYBOARD: 'keyboard',
20 MOUSE: 'mouse',
21 };
22
23 /**
24 * Enumeration of possible states for a bluetooth device. The value
25 * associated with each state maps to a localized string in the global
26 * variable 'templateData'.
27 *
28 * @enum {string}
29 */
30 Constants.DEVICE_STATUS = {
31 CONNECTED: 'bluetoothDeviceConnected',
32 NOT_PAIRED: 'bluetoothDeviceNotPaired'
33 };
34
35 /**
36 * Creates an element for storing a list of bluetooth devices.
37 * @param {Object=} opt_propertyBag Optional properties.
38 * @constructor
39 * @extends {HTMLDivElement}
40 */
41 var BluetoothListElement = cr.ui.define('div');
42
43 BluetoothListElement.prototype = {
44 __proto__: HTMLDivElement.prototype,
45
46 /** @inheritDoc */
47 decorate: function() {
48 // TODO (kevers) - Implement me.
49 },
50
51 /**
52 * Loads given list of bluetooth devices. This list will comprise of
53 * devices that are currently connected. New devices are discovered
54 * via the 'Find devices' button.
55 * @param {Array} devices An array of bluetooth devices.
56 */
57 load: function(devices) {
58 this.textContent = '';
59 for (var i = 0; i < devices.length; ++i) {
James Hawkins 2011/10/04 20:43:39 s/++i/i++/
kevers 2011/10/05 14:23:01 Done.
60 if (this.isSupported_(devices[i]))
61 this.appendChild(new BluetoothItem(devices[i]));
62 }
63 },
64
65 /**
66 * Adds a bluetooth device to the list of available devices.
67 * @param {Object.<string,string>} device. Description of the bluetooth
James Hawkins 2011/10/04 20:43:39 No period, one space between parameter name and st
kevers 2011/10/05 14:23:01 Done.
68 * device.
69 */
70 appendDevice: function(device) {
71 // TODO (kevers) - check device ID to determine if already in list, in
72 // which case we should be updating the existing element.
73 // Display connected devices at the top of the list.
74 if (this.isSupported_(device))
75 this.appendChild(new BluetoothItem(device));
76 },
77
78 /**
79 * Tests if the bluetooth device is supported based on the type of device.
80 * @param {Object.<string,string>} device Desription of the device.
81 * @return {boolean} True if the device is supported.
82 * @private
83 */
84 isSupported_: function(device) {
85 var supported = false;
James Hawkins 2011/10/04 20:43:39 Remove var.
kevers 2011/10/05 14:23:01 Done.
86 var target = device.deviceType;
87 for (var key in Constants.DEVICE_TYPE) {
88 if (Constants.DEVICE_TYPE[key] == target) {
89 supported = true;
James Hawkins 2011/10/04 20:43:39 return true;
kevers 2011/10/05 14:23:01 Done.
90 break;
91 }
92 }
93 return supported;
James Hawkins 2011/10/04 20:43:39 return false;
kevers 2011/10/05 14:23:01 Done.
94 }
95 };
96
97 /**
98 * Creates an element in the list of bluetooth devices.
99 * @param{{'deviceName': string,
100 * 'deviceId': string,
101 * 'deviceType': Constants.DEVICE_TYPE,
102 * 'deviceStatus': Constants.DEVICE_STATUS} device
103 * Decription of the bluetooth device.
104 * @constructor
105 */
106 function BluetoothItem(device) {
107 var el = cr.doc.createElement('div');
108 el.data = {};
109 for (var key in device)
110 el.data[key] = device[key];
111 BluetoothItem.decorate(el);
112 return el;
113 }
114
115 /**
116 * Decorates an element as a network item.
117 * @param {!HTMLElement} el The element to decorate.
118 */
119 BluetoothItem.decorate = function(el) {
120 el.__proto__ = BluetoothItem.prototype;
121 el.decorate();
122 };
123
124 BluetoothItem.prototype = {
125 __proto__: HTMLDivElement.prototype,
126
127 /** @inheritDoc */
128 decorate: function() {
129 this.className = 'network-item';
130 this.connected = this.data.connected;
131 if (this.data.deviceId)
132 this.id = this.data.deviceId;
133
134 // textDiv holds icon, name and status text.
James Hawkins 2011/10/04 20:43:39 |textDiv|
kevers 2011/10/05 14:23:01 Done.
135 var textDiv = this.ownerDocument.createElement('div');
136 textDiv.className = 'network-item-text';
137
138 var deviceSpecificClassName = 'bluetooth-' + this.data.deviceType;
139 this.classList.add(deviceSpecificClassName);
140
141 var nameEl = this.ownerDocument.createElement('div');
142 nameEl.className = 'network-name-label';
143 nameEl.textContent = this.data.deviceName;
144 textDiv.appendChild(nameEl);
145
146 if (this.data.deviceStatus) {
147 var statusMessage = templateData[this.data.deviceStatus];
148 if (statusMessage) {
149 var statusEl = this.ownerDocument.createElement('div');
150 statusEl.className = 'network-status-label';
151 statusEl.textContent = statusMessage;
152 textDiv.appendChild(statusEl);
153 }
154 }
155 this.appendChild(textDiv);
156 }
157 };
158
159 return {
160 Constants: Constants,
161 BluetoothListElement: BluetoothListElement
162 };
163 });
164
165
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698