OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "ash/system/tray_accessibility.h" | 5 #include "ash/system/tray_accessibility.h" |
6 | 6 |
7 #include "ash/accessibility_delegate.h" | 7 #include "ash/accessibility_delegate.h" |
8 #include "ash/accessibility_types.h" | 8 #include "ash/accessibility_types.h" |
9 #include "ash/resources/vector_icons/vector_icons.h" | 9 #include "ash/resources/vector_icons/vector_icons.h" |
10 #include "ash/session/session_state_delegate.h" | 10 #include "ash/session/session_state_delegate.h" |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 Reset(); | 208 Reset(); |
209 AppendAccessibilityList(); | 209 AppendAccessibilityList(); |
210 CreateTitleRow(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TITLE); | 210 CreateTitleRow(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TITLE); |
211 Layout(); | 211 Layout(); |
212 } | 212 } |
213 | 213 |
214 void AccessibilityDetailedView::AppendAccessibilityList() { | 214 void AccessibilityDetailedView::AppendAccessibilityList() { |
215 CreateScrollableList(); | 215 CreateScrollableList(); |
216 | 216 |
217 AccessibilityDelegate* delegate = Shell::Get()->accessibility_delegate(); | 217 AccessibilityDelegate* delegate = Shell::Get()->accessibility_delegate(); |
| 218 |
218 spoken_feedback_enabled_ = delegate->IsSpokenFeedbackEnabled(); | 219 spoken_feedback_enabled_ = delegate->IsSpokenFeedbackEnabled(); |
219 spoken_feedback_view_ = AddScrollListItem( | 220 spoken_feedback_view_ = AddScrollListCheckableItem( |
| 221 kSystemMenuAccessibilityChromevoxIcon, |
220 l10n_util::GetStringUTF16( | 222 l10n_util::GetStringUTF16( |
221 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SPOKEN_FEEDBACK), | 223 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SPOKEN_FEEDBACK), |
222 spoken_feedback_enabled_, kSystemMenuAccessibilityChromevoxIcon); | 224 spoken_feedback_enabled_); |
223 | 225 |
224 high_contrast_enabled_ = delegate->IsHighContrastEnabled(); | 226 high_contrast_enabled_ = delegate->IsHighContrastEnabled(); |
225 high_contrast_view_ = AddScrollListItem( | 227 high_contrast_view_ = AddScrollListCheckableItem( |
| 228 kSystemMenuAccessibilityContrastIcon, |
226 l10n_util::GetStringUTF16( | 229 l10n_util::GetStringUTF16( |
227 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGH_CONTRAST_MODE), | 230 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGH_CONTRAST_MODE), |
228 high_contrast_enabled_, kSystemMenuAccessibilityContrastIcon); | 231 high_contrast_enabled_); |
| 232 |
229 screen_magnifier_enabled_ = delegate->IsMagnifierEnabled(); | 233 screen_magnifier_enabled_ = delegate->IsMagnifierEnabled(); |
230 screen_magnifier_view_ = AddScrollListItem( | 234 screen_magnifier_view_ = AddScrollListCheckableItem( |
| 235 kSystemMenuAccessibilityScreenMagnifierIcon, |
231 l10n_util::GetStringUTF16( | 236 l10n_util::GetStringUTF16( |
232 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SCREEN_MAGNIFIER), | 237 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SCREEN_MAGNIFIER), |
233 screen_magnifier_enabled_, kSystemMenuAccessibilityScreenMagnifierIcon); | 238 screen_magnifier_enabled_); |
234 | 239 |
235 autoclick_enabled_ = delegate->IsAutoclickEnabled(); | 240 autoclick_enabled_ = delegate->IsAutoclickEnabled(); |
236 autoclick_view_ = AddScrollListItem( | 241 autoclick_view_ = AddScrollListCheckableItem( |
| 242 kSystemMenuAccessibilityAutoClickIcon, |
237 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_AUTOCLICK), | 243 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_AUTOCLICK), |
238 autoclick_enabled_, kSystemMenuAccessibilityAutoClickIcon); | 244 autoclick_enabled_); |
239 | 245 |
240 virtual_keyboard_enabled_ = delegate->IsVirtualKeyboardEnabled(); | 246 virtual_keyboard_enabled_ = delegate->IsVirtualKeyboardEnabled(); |
241 virtual_keyboard_view_ = | 247 virtual_keyboard_view_ = AddScrollListCheckableItem( |
242 AddScrollListItem(l10n_util::GetStringUTF16( | 248 kSystemMenuKeyboardIcon, |
243 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_VIRTUAL_KEYBOARD), | 249 l10n_util::GetStringUTF16( |
244 virtual_keyboard_enabled_, kSystemMenuKeyboardIcon); | 250 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_VIRTUAL_KEYBOARD), |
| 251 virtual_keyboard_enabled_); |
245 | 252 |
246 scroll_content()->AddChildView( | 253 scroll_content()->AddChildView( |
247 TrayPopupUtils::CreateListSubHeaderSeparator()); | 254 TrayPopupUtils::CreateListSubHeaderSeparator()); |
248 | 255 |
249 AddSubHeader(l10n_util::GetStringUTF16( | 256 AddScrollListSubHeader(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_ADDITIONAL_SETTINGS); |
250 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_ADDITIONAL_SETTINGS)); | |
251 | 257 |
252 large_cursor_enabled_ = delegate->IsLargeCursorEnabled(); | 258 large_cursor_enabled_ = delegate->IsLargeCursorEnabled(); |
253 large_cursor_view_ = AddScrollListItemWithoutIcon( | 259 large_cursor_view_ = AddScrollListCheckableItem( |
254 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LARGE_CURSOR), | 260 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LARGE_CURSOR), |
255 large_cursor_enabled_); | 261 large_cursor_enabled_); |
256 | 262 |
257 mono_audio_enabled_ = delegate->IsMonoAudioEnabled(); | 263 mono_audio_enabled_ = delegate->IsMonoAudioEnabled(); |
258 mono_audio_view_ = AddScrollListItemWithoutIcon( | 264 mono_audio_view_ = AddScrollListCheckableItem( |
259 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_MONO_AUDIO), | 265 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_MONO_AUDIO), |
260 mono_audio_enabled_); | 266 mono_audio_enabled_); |
261 | 267 |
262 caret_highlight_enabled_ = delegate->IsCaretHighlightEnabled(); | 268 caret_highlight_enabled_ = delegate->IsCaretHighlightEnabled(); |
263 caret_highlight_view_ = AddScrollListItemWithoutIcon( | 269 caret_highlight_view_ = AddScrollListCheckableItem( |
264 l10n_util::GetStringUTF16( | 270 l10n_util::GetStringUTF16( |
265 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_CARET_HIGHLIGHT), | 271 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_CARET_HIGHLIGHT), |
266 caret_highlight_enabled_); | 272 caret_highlight_enabled_); |
267 | 273 |
268 highlight_mouse_cursor_enabled_ = delegate->IsCursorHighlightEnabled(); | 274 highlight_mouse_cursor_enabled_ = delegate->IsCursorHighlightEnabled(); |
269 highlight_mouse_cursor_view_ = AddScrollListItemWithoutIcon( | 275 highlight_mouse_cursor_view_ = AddScrollListCheckableItem( |
270 l10n_util::GetStringUTF16( | 276 l10n_util::GetStringUTF16( |
271 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_MOUSE_CURSOR), | 277 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_MOUSE_CURSOR), |
272 highlight_mouse_cursor_enabled_); | 278 highlight_mouse_cursor_enabled_); |
273 | 279 |
274 // Focus highlighting can't be on when spoken feedback is on because | 280 // Focus highlighting can't be on when spoken feedback is on because |
275 // ChromeVox does its own focus highlighting. | 281 // ChromeVox does its own focus highlighting. |
276 if (!spoken_feedback_enabled_) { | 282 if (!spoken_feedback_enabled_) { |
277 highlight_keyboard_focus_enabled_ = delegate->IsFocusHighlightEnabled(); | 283 highlight_keyboard_focus_enabled_ = delegate->IsFocusHighlightEnabled(); |
278 highlight_keyboard_focus_view_ = AddScrollListItemWithoutIcon( | 284 highlight_keyboard_focus_view_ = AddScrollListCheckableItem( |
279 l10n_util::GetStringUTF16( | 285 l10n_util::GetStringUTF16( |
280 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_KEYBOARD_FOCUS), | 286 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_KEYBOARD_FOCUS), |
281 highlight_keyboard_focus_enabled_); | 287 highlight_keyboard_focus_enabled_); |
282 } | 288 } |
283 | 289 |
284 sticky_keys_enabled_ = delegate->IsStickyKeysEnabled(); | 290 sticky_keys_enabled_ = delegate->IsStickyKeysEnabled(); |
285 sticky_keys_view_ = AddScrollListItemWithoutIcon( | 291 sticky_keys_view_ = AddScrollListCheckableItem( |
286 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_STICKY_KEYS), | 292 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_STICKY_KEYS), |
287 sticky_keys_enabled_); | 293 sticky_keys_enabled_); |
288 | 294 |
289 tap_dragging_enabled_ = delegate->IsTapDraggingEnabled(); | 295 tap_dragging_enabled_ = delegate->IsTapDraggingEnabled(); |
290 tap_dragging_view_ = AddScrollListItemWithoutIcon( | 296 tap_dragging_view_ = AddScrollListCheckableItem( |
291 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TAP_DRAGGING), | 297 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TAP_DRAGGING), |
292 tap_dragging_enabled_); | 298 tap_dragging_enabled_); |
293 } | 299 } |
294 | 300 |
295 HoverHighlightView* AccessibilityDetailedView::AddScrollListItem( | |
296 const base::string16& text, | |
297 bool checked, | |
298 const gfx::VectorIcon& icon) { | |
299 HoverHighlightView* container = new HoverHighlightView(this); | |
300 gfx::ImageSkia image = CreateVectorIcon(icon, kMenuIconColor); | |
301 container->AddIconAndLabel(image, text); | |
302 TrayPopupUtils::InitializeAsCheckableRow(container, checked); | |
303 scroll_content()->AddChildView(container); | |
304 return container; | |
305 } | |
306 | |
307 HoverHighlightView* AccessibilityDetailedView::AddScrollListItemWithoutIcon( | |
308 const base::string16& text, | |
309 bool checked) { | |
310 HoverHighlightView* container = new HoverHighlightView(this); | |
311 container->AddLabelRow(text); | |
312 TrayPopupUtils::InitializeAsCheckableRow(container, checked); | |
313 scroll_content()->AddChildView(container); | |
314 return container; | |
315 } | |
316 | |
317 void AccessibilityDetailedView::AddSubHeader( | |
318 const base::string16& header_text) { | |
319 TriView* header = TrayPopupUtils::CreateSubHeaderRowView(); | |
320 TrayPopupUtils::ConfigureAsStickyHeader(header); | |
321 | |
322 views::Label* label = TrayPopupUtils::CreateDefaultLabel(); | |
323 label->SetText(header_text); | |
324 TrayPopupItemStyle style(TrayPopupItemStyle::FontStyle::SUB_HEADER); | |
325 style.SetupLabel(label); | |
326 header->AddView(TriView::Container::CENTER, label); | |
327 | |
328 scroll_content()->AddChildView(header); | |
329 } | |
330 | |
331 void AccessibilityDetailedView::HandleViewClicked(views::View* view) { | 301 void AccessibilityDetailedView::HandleViewClicked(views::View* view) { |
332 AccessibilityDelegate* delegate = Shell::Get()->accessibility_delegate(); | 302 AccessibilityDelegate* delegate = Shell::Get()->accessibility_delegate(); |
333 UserMetricsAction user_action; | 303 UserMetricsAction user_action; |
334 if (view == spoken_feedback_view_) { | 304 if (view == spoken_feedback_view_) { |
335 user_action = delegate->IsSpokenFeedbackEnabled() | 305 user_action = delegate->IsSpokenFeedbackEnabled() |
336 ? ash::UMA_STATUS_AREA_DISABLE_SPOKEN_FEEDBACK | 306 ? ash::UMA_STATUS_AREA_DISABLE_SPOKEN_FEEDBACK |
337 : ash::UMA_STATUS_AREA_ENABLE_SPOKEN_FEEDBACK; | 307 : ash::UMA_STATUS_AREA_ENABLE_SPOKEN_FEEDBACK; |
338 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 308 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
339 } else if (view == high_contrast_view_) { | 309 } else if (view == high_contrast_view_) { |
340 user_action = delegate->IsHighContrastEnabled() | 310 user_action = delegate->IsHighContrastEnabled() |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 if (detailed_popup_) | 527 if (detailed_popup_) |
558 detailed_popup_->GetWidget()->Close(); | 528 detailed_popup_->GetWidget()->Close(); |
559 if (detailed_menu_) | 529 if (detailed_menu_) |
560 detailed_menu_->GetWidget()->Close(); | 530 detailed_menu_->GetWidget()->Close(); |
561 } | 531 } |
562 | 532 |
563 previous_accessibility_state_ = accessibility_state; | 533 previous_accessibility_state_ = accessibility_state; |
564 } | 534 } |
565 | 535 |
566 } // namespace ash | 536 } // namespace ash |
OLD | NEW |