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( |
250 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_ADDITIONAL_SETTINGS)); | 257 gfx::kNoneIcon, |
| 258 l10n_util::GetStringUTF16( |
| 259 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_ADDITIONAL_SETTINGS)); |
251 | 260 |
252 large_cursor_enabled_ = delegate->IsLargeCursorEnabled(); | 261 large_cursor_enabled_ = delegate->IsLargeCursorEnabled(); |
253 large_cursor_view_ = AddScrollListItemWithoutIcon( | 262 large_cursor_view_ = AddScrollListCheckableItem( |
| 263 gfx::kNoneIcon, |
254 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LARGE_CURSOR), | 264 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_LARGE_CURSOR), |
255 large_cursor_enabled_); | 265 large_cursor_enabled_); |
256 | 266 |
257 mono_audio_enabled_ = delegate->IsMonoAudioEnabled(); | 267 mono_audio_enabled_ = delegate->IsMonoAudioEnabled(); |
258 mono_audio_view_ = AddScrollListItemWithoutIcon( | 268 mono_audio_view_ = AddScrollListCheckableItem( |
| 269 gfx::kNoneIcon, |
259 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_MONO_AUDIO), | 270 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_MONO_AUDIO), |
260 mono_audio_enabled_); | 271 mono_audio_enabled_); |
261 | 272 |
262 caret_highlight_enabled_ = delegate->IsCaretHighlightEnabled(); | 273 caret_highlight_enabled_ = delegate->IsCaretHighlightEnabled(); |
263 caret_highlight_view_ = AddScrollListItemWithoutIcon( | 274 caret_highlight_view_ = AddScrollListCheckableItem( |
| 275 gfx::kNoneIcon, |
264 l10n_util::GetStringUTF16( | 276 l10n_util::GetStringUTF16( |
265 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_CARET_HIGHLIGHT), | 277 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_CARET_HIGHLIGHT), |
266 caret_highlight_enabled_); | 278 caret_highlight_enabled_); |
267 | 279 |
268 highlight_mouse_cursor_enabled_ = delegate->IsCursorHighlightEnabled(); | 280 highlight_mouse_cursor_enabled_ = delegate->IsCursorHighlightEnabled(); |
269 highlight_mouse_cursor_view_ = AddScrollListItemWithoutIcon( | 281 highlight_mouse_cursor_view_ = AddScrollListCheckableItem( |
| 282 gfx::kNoneIcon, |
270 l10n_util::GetStringUTF16( | 283 l10n_util::GetStringUTF16( |
271 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_MOUSE_CURSOR), | 284 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_MOUSE_CURSOR), |
272 highlight_mouse_cursor_enabled_); | 285 highlight_mouse_cursor_enabled_); |
273 | 286 |
274 // Focus highlighting can't be on when spoken feedback is on because | 287 // Focus highlighting can't be on when spoken feedback is on because |
275 // ChromeVox does its own focus highlighting. | 288 // ChromeVox does its own focus highlighting. |
276 if (!spoken_feedback_enabled_) { | 289 if (!spoken_feedback_enabled_) { |
277 highlight_keyboard_focus_enabled_ = delegate->IsFocusHighlightEnabled(); | 290 highlight_keyboard_focus_enabled_ = delegate->IsFocusHighlightEnabled(); |
278 highlight_keyboard_focus_view_ = AddScrollListItemWithoutIcon( | 291 highlight_keyboard_focus_view_ = AddScrollListCheckableItem( |
| 292 gfx::kNoneIcon, |
279 l10n_util::GetStringUTF16( | 293 l10n_util::GetStringUTF16( |
280 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_KEYBOARD_FOCUS), | 294 IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGHLIGHT_KEYBOARD_FOCUS), |
281 highlight_keyboard_focus_enabled_); | 295 highlight_keyboard_focus_enabled_); |
282 } | 296 } |
283 | 297 |
284 sticky_keys_enabled_ = delegate->IsStickyKeysEnabled(); | 298 sticky_keys_enabled_ = delegate->IsStickyKeysEnabled(); |
285 sticky_keys_view_ = AddScrollListItemWithoutIcon( | 299 sticky_keys_view_ = AddScrollListCheckableItem( |
| 300 gfx::kNoneIcon, |
286 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_STICKY_KEYS), | 301 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_STICKY_KEYS), |
287 sticky_keys_enabled_); | 302 sticky_keys_enabled_); |
288 | 303 |
289 tap_dragging_enabled_ = delegate->IsTapDraggingEnabled(); | 304 tap_dragging_enabled_ = delegate->IsTapDraggingEnabled(); |
290 tap_dragging_view_ = AddScrollListItemWithoutIcon( | 305 tap_dragging_view_ = AddScrollListCheckableItem( |
| 306 gfx::kNoneIcon, |
291 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TAP_DRAGGING), | 307 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ACCESSIBILITY_TAP_DRAGGING), |
292 tap_dragging_enabled_); | 308 tap_dragging_enabled_); |
293 } | 309 } |
294 | 310 |
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) { | 311 void AccessibilityDetailedView::HandleViewClicked(views::View* view) { |
332 AccessibilityDelegate* delegate = Shell::Get()->accessibility_delegate(); | 312 AccessibilityDelegate* delegate = Shell::Get()->accessibility_delegate(); |
333 UserMetricsAction user_action; | 313 UserMetricsAction user_action; |
334 if (view == spoken_feedback_view_) { | 314 if (view == spoken_feedback_view_) { |
335 user_action = delegate->IsSpokenFeedbackEnabled() | 315 user_action = delegate->IsSpokenFeedbackEnabled() |
336 ? ash::UMA_STATUS_AREA_DISABLE_SPOKEN_FEEDBACK | 316 ? ash::UMA_STATUS_AREA_DISABLE_SPOKEN_FEEDBACK |
337 : ash::UMA_STATUS_AREA_ENABLE_SPOKEN_FEEDBACK; | 317 : ash::UMA_STATUS_AREA_ENABLE_SPOKEN_FEEDBACK; |
338 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 318 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
339 } else if (view == high_contrast_view_) { | 319 } else if (view == high_contrast_view_) { |
340 user_action = delegate->IsHighContrastEnabled() | 320 user_action = delegate->IsHighContrastEnabled() |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 if (detailed_popup_) | 537 if (detailed_popup_) |
558 detailed_popup_->GetWidget()->Close(); | 538 detailed_popup_->GetWidget()->Close(); |
559 if (detailed_menu_) | 539 if (detailed_menu_) |
560 detailed_menu_->GetWidget()->Close(); | 540 detailed_menu_->GetWidget()->Close(); |
561 } | 541 } |
562 | 542 |
563 previous_accessibility_state_ = accessibility_state; | 543 previous_accessibility_state_ = accessibility_state; |
564 } | 544 } |
565 | 545 |
566 } // namespace ash | 546 } // namespace ash |
OLD | NEW |