OLD | NEW |
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 /** | 5 /** |
6 * @fileoverview Oobe user image screen implementation. | 6 * @fileoverview Oobe user image screen implementation. |
7 */ | 7 */ |
8 | 8 |
9 cr.define('oobe', function() { | 9 cr.define('oobe', function() { |
10 /** | 10 /** |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 }; | 91 }; |
92 | 92 |
93 /** | 93 /** |
94 * Appends new image to the end of the image list. | 94 * Appends new image to the end of the image list. |
95 * @param {string} src A url for the user image. | 95 * @param {string} src A url for the user image. |
96 * @param {function} clickHandler A handler for click on image. | 96 * @param {function} clickHandler A handler for click on image. |
97 */ | 97 */ |
98 UserImageScreen.addUserImage = function(src, clickHandler) { | 98 UserImageScreen.addUserImage = function(src, clickHandler) { |
99 var imageElement = document.createElement('img'); | 99 var imageElement = document.createElement('img'); |
100 imageElement.src = src; | 100 imageElement.src = src; |
| 101 imageElement.setAttribute('role', 'option'); |
| 102 imageElement.setAttribute('tabindex', '-1'); |
| 103 imageElement.setAttribute( |
| 104 'aria-label', src.replace(/(.*\/|\.png)/g, '').replace(/_/g, ' ')); |
101 imageElement.addEventListener('click', | 105 imageElement.addEventListener('click', |
102 clickHandler, | 106 clickHandler, |
103 false); | 107 false); |
104 $('user-image-list').appendChild(imageElement); | 108 $('user-image-list').appendChild(imageElement); |
105 }; | 109 }; |
106 | 110 |
107 /** | 111 /** |
108 * Appends received images to the list. | 112 * Appends received images to the list. |
109 * @param {List} images A list of urls to user images. | 113 * @param {List} images A list of urls to user images. |
110 */ | 114 */ |
111 UserImageScreen.addUserImages = function(images) { | 115 UserImageScreen.addUserImages = function(images) { |
112 for (var i = 0; i < images.length; i++) { | 116 for (var i = 0; i < images.length; i++) { |
113 var imageUrl = images[i]; | 117 var imageUrl = images[i]; |
114 UserImageScreen.addUserImage( | 118 UserImageScreen.addUserImage( |
115 imageUrl, | 119 imageUrl, |
116 UserImageScreen.handleImageClick); | 120 UserImageScreen.handleImageClick); |
117 } | 121 } |
| 122 |
| 123 var userImageScreen = $('user-image'); |
| 124 var userImageList = $('user-image-list'); |
| 125 userImageList.addEventListener('keydown', function(e) { |
| 126 var prevIndex = userImageScreen.selectedUserImage_; |
| 127 var len = userImageList.children.length; |
| 128 if (e.keyCode == 39 || e.keyCode == 40) { // right or down |
| 129 if (prevIndex < len - 1) |
| 130 UserImageScreen.selectUserImage(prevIndex + 1); |
| 131 } else if (e.keyCode == 37 || e.keyCode == 38) { // left or up |
| 132 if (prevIndex > 0) |
| 133 UserImageScreen.selectUserImage(prevIndex - 1); |
| 134 } |
| 135 }); |
118 }; | 136 }; |
119 | 137 |
120 /** | 138 /** |
121 * Selects the specified user image and shows it in preview. | 139 * Selects the specified user image and shows it in preview. |
122 * @param {number} index The index of the image to select. | 140 * @param {number} index The index of the image to select. |
123 */ | 141 */ |
124 UserImageScreen.selectUserImage = function(index) { | 142 UserImageScreen.selectUserImage = function(index) { |
125 var userImageList = $('user-image-list'); | 143 var userImageList = $('user-image-list'); |
126 var userImageScreen = $('user-image'); | 144 var userImageScreen = $('user-image'); |
127 var prevIndex = userImageScreen.selectedUserImage_; | 145 var prevIndex = userImageScreen.selectedUserImage_; |
128 if (prevIndex != -1) { | 146 if (prevIndex != -1) { |
129 userImageList.children[prevIndex].classList.remove('user-image-selected'); | 147 userImageList.children[prevIndex].classList.remove('user-image-selected'); |
| 148 userImageList.children[prevIndex].setAttribute('tabIndex', '-1'); |
130 } | 149 } |
131 if (index != -1) { | 150 if (index != -1) { |
132 var selectedImage = userImageList.children[index]; | 151 var selectedImage = userImageList.children[index]; |
133 selectedImage.classList.add('user-image-selected'); | 152 selectedImage.classList.add('user-image-selected'); |
| 153 selectedImage.setAttribute('tabIndex', '0'); |
| 154 selectedImage.focus(); |
134 $('user-image-preview').src = selectedImage.src; | 155 $('user-image-preview').src = selectedImage.src; |
135 } | 156 } |
136 userImageScreen.selectedUserImage_ = index; | 157 userImageScreen.selectedUserImage_ = index; |
137 }; | 158 }; |
138 | 159 |
139 return { | 160 return { |
140 UserImageScreen: UserImageScreen | 161 UserImageScreen: UserImageScreen |
141 }; | 162 }; |
142 }); | 163 }); |
OLD | NEW |