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

Unified Diff: chrome/browser/resources/options/chromeos/bluetooth_list_element.js

Issue 8539022: Bluetooth UI update. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with trunk. Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/resources/options/chromeos/system_options.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/options/chromeos/bluetooth_list_element.js
diff --git a/chrome/browser/resources/options/chromeos/bluetooth_list_element.js b/chrome/browser/resources/options/chromeos/bluetooth_list_element.js
index 5f311008cb9fa900d25c46ec0affddbc746e445c..638c35dc93e56ff50150cb86e798f10cfa2a6043 100644
--- a/chrome/browser/resources/options/chromeos/bluetooth_list_element.js
+++ b/chrome/browser/resources/options/chromeos/bluetooth_list_element.js
@@ -83,17 +83,18 @@ cr.define('options.system.bluetooth', function() {
* existing device is updated.
* @param {Object.<string,string>} device Description of the bluetooth
* device.
+ * @return {boolean} True if the devies was successfully added or updated.
*/
appendDevice: function(device) {
if (!this.isSupported_(device))
- return;
+ return false;
var item = new BluetoothItem(device);
var existing = this.findDevice(device.address);
- if (existing) {
+ if (existing)
this.replaceChild(item, existing);
- return;
- }
- this.appendChild(item);
+ else
+ this.appendChild(item);
+ return true;
},
/**
@@ -142,23 +143,17 @@ cr.define('options.system.bluetooth', function() {
* @constructor
*/
function BluetoothItem(device) {
- var el = cr.doc.createElement('div');
+ var el = $('bluetooth-item-template').cloneNode(true);
+ el.__proto__ = BluetoothItem.prototype;
+ el.removeAttribute('id');
+ el.hidden = false;
el.data = {};
for (var key in device)
el.data[key] = device[key];
- BluetoothItem.decorate(el);
+ el.decorate();
return el;
}
- /**
- * Decorates an element as a bluetooth item.
- * @param {!HTMLElement} el The element to decorate.
- */
- BluetoothItem.decorate = function(el) {
- el.__proto__ = BluetoothItem.prototype;
- el.decorate();
- };
-
BluetoothItem.prototype = {
__proto__: HTMLDivElement.prototype,
@@ -170,68 +165,57 @@ cr.define('options.system.bluetooth', function() {
// we are interested in tracking paired devices that are not connected.
this.paired = this.data.paired && !this.data.connected;
this.connecting = !!this.data.pairing;
- this.addIcon_();
this.addLabels_();
this.addButtons_();
},
/**
- * Adds an icon corresponding to the device category.
+ * Retrieves the descendent element with the matching class name.
+ * @param {string} className The class name for the target element.
+ * @return {Element|undefined} Returns the matching element if
+ * found and unique.
* @private
*/
- addIcon_: function() {
- var iconElement = this.ownerDocument.createElement('div');
- iconElement.className = 'bluetooth-' + this.data.icon;
- iconElement.classList.add('bluetooth-icon');
- this.appendChild(iconElement);
+ getNodeByClass_:function(className) {
+ var elements = this.getElementsByClassName(className);
+ if (elements && elements.length == 1)
+ return elements[0];
},
/**
- * Adds an element containing the display name, status and device pairing
- * instructions.
+ * Sets the text content for an element.
+ * @param {string} className The class name of the target element.
+ * @param {string} label Text content for the element.
* @private
*/
- addLabels_: function() {
- var textDiv = this.ownerDocument.createElement('div');
- textDiv.className = 'bluetooth-item-text';
- var nameEl = this.ownerDocument.createElement('div');
- nameEl.className = 'network-name-label';
- nameEl.textContent = this.data.name;
- textDiv.appendChild(nameEl);
- this.appendChild(textDiv);
- this.setDeviceStatus_(textDiv);
- if (this.data.pairing) {
- this.addPairingInstructions_(textDiv);
- }
+ setLabel_: function(className, label) {
+ var el = this.getNodeByClass_(className);
+ el.textContent = label;
},
/**
- * Adds a label showing the status of the device.
- * @param {!Element} textDiv Target element for inserting the status label.
+ * Adds an element containing the display name, status and device pairing
+ * instructions.
* @private
*/
- setDeviceStatus_: function(textDiv) {
+ addLabels_: function() {
+ this.setLabel_('network-name-label', this.data.name);
var status;
if (this.data.connected)
status = Constants.DEVICE_STATUS.CONNECTED;
- else if (this.data.paired)
- status = Constants.DEVICE_STATUS.PAIRED;
else if (this.data.pairing)
status = Constants.DEVICE_STATUS.CONNECTING;
- else
- status = Constants.DEVICE_STATUS.NOT_PAIRED;
- var statusMessage = templateData[status];
- if (statusMessage) {
- var statusEl = this.ownerDocument.createElement('div');
- statusEl.className = 'network-status-label';
- statusEl.textContent = statusMessage;
+ if (status) {
+ var statusMessage = templateData[status];
+ if (statusMessage)
+ this.setLabel_('network-status-label', statusMessage);
if (this.connecting) {
- var throbber = this.ownerDocument.createElement('div');
- throbber.className = 'throbber';
- statusEl.appendChild(throbber);
+ var spinner = this.getNodeByClass_('inline-spinner');
+ spinner.hidden = false;
}
- textDiv.appendChild(statusEl);
}
+ if (this.data.pairing)
+ this.addPairingInstructions_();
},
/**
@@ -239,9 +223,8 @@ cr.define('options.system.bluetooth', function() {
* @param {!Element} textDiv Target element for inserting the instructions.
* @private
*/
- addPairingInstructions_: function(textDiv) {
- var instructionsEl = this.ownerDocument.createElement('div');
- instructionsEl.className = 'bluetooth-instructions';
+ addPairingInstructions_: function() {
+ var instructionsEl = this.getNodeByClass_('bluetooth-instructions');
var message = templateData[this.data.pairing];
var array = this.formatInstructions_(message);
for (var i = 0; i < array.length; i++) {
@@ -253,7 +236,6 @@ cr.define('options.system.bluetooth', function() {
input.className = 'bluetooth-passkey-field';
instructionsEl.appendChild(input);
}
- textDiv.appendChild(instructionsEl);
},
/**
@@ -336,8 +318,7 @@ cr.define('options.system.bluetooth', function() {
* @private.
*/
addButtons_: function() {
- var buttonsDiv = this.ownerDocument.createElement('div');
- buttonsDiv.className = 'bluetooth-button-group';
+ var buttonsDiv = this.getNodeByClass_('bluetooth-button-group');
var buttonLabelKey = null;
var callbackType = null;
if (this.connected) {
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/resources/options/chromeos/system_options.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698