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

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, 8 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
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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW
« ash/system/tray/tray_details_view.h ('K') | « ash/system/tray_accessibility.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698