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

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

Issue 2831023003: Refactor AddScrollListItem() in system menu detailed views (Closed)
Patch Set: Cleanup 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 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(
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
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
OLDNEW
« ash/system/tray_accessibility.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