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