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

Side by Side Diff: ash/system/tray_accessibility.cc

Issue 2831023003: Refactor AddScrollListItem() in system menu detailed views (Closed)
Patch Set: Rebased Created 3 years, 7 months 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 unified diff | Download patch
« no previous file with comments | « ash/system/tray_accessibility.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « ash/system/tray_accessibility.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698