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 "ui/views/controls/slider.h" | 5 #include "ui/views/controls/slider.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "base/stringprintf.h" | |
10 #include "base/utf_string_conversions.h" | |
9 #include "third_party/skia/include/core/SkCanvas.h" | 11 #include "third_party/skia/include/core/SkCanvas.h" |
10 #include "third_party/skia/include/core/SkColor.h" | 12 #include "third_party/skia/include/core/SkColor.h" |
11 #include "third_party/skia/include/core/SkPaint.h" | 13 #include "third_party/skia/include/core/SkPaint.h" |
14 #include "ui/base/accessibility/accessible_view_state.h" | |
12 #include "ui/base/animation/slide_animation.h" | 15 #include "ui/base/animation/slide_animation.h" |
13 #include "ui/gfx/canvas.h" | 16 #include "ui/gfx/canvas.h" |
14 #include "ui/gfx/point.h" | 17 #include "ui/gfx/point.h" |
15 #include "ui/gfx/rect.h" | 18 #include "ui/gfx/rect.h" |
19 #include "ui/views/widget/widget.h" | |
16 | 20 |
17 namespace { | 21 namespace { |
18 const int kSlideValueChangeDurationMS = 150; | 22 const int kSlideValueChangeDurationMS = 150; |
19 } | 23 } |
20 | 24 |
21 namespace views { | 25 namespace views { |
22 | 26 |
23 Slider::Slider(SliderListener* listener, Orientation orientation) | 27 Slider::Slider(SliderListener* listener, Orientation orientation) |
24 : listener_(listener), | 28 : listener_(listener), |
25 orientation_(orientation), | 29 orientation_(orientation), |
(...skipping 29 matching lines...) Expand all Loading... | |
55 // Do not animate when setting the value of the slider for the first time. | 59 // Do not animate when setting the value of the slider for the first time. |
56 // There is no message-loop when running tests. So we cannot animate then. | 60 // There is no message-loop when running tests. So we cannot animate then. |
57 animating_value_ = old_value; | 61 animating_value_ = old_value; |
58 move_animation_.reset(new ui::SlideAnimation(this)); | 62 move_animation_.reset(new ui::SlideAnimation(this)); |
59 move_animation_->SetSlideDuration(kSlideValueChangeDurationMS); | 63 move_animation_->SetSlideDuration(kSlideValueChangeDurationMS); |
60 move_animation_->Show(); | 64 move_animation_->Show(); |
61 AnimationProgressed(move_animation_.get()); | 65 AnimationProgressed(move_animation_.get()); |
62 } else { | 66 } else { |
63 SchedulePaint(); | 67 SchedulePaint(); |
64 } | 68 } |
69 GetWidget()->NotifyAccessibilityEvent( | |
sadrul
2012/03/12 08:40:47
A NULL check here for GetWidget(), in case the val
dmazzoni
2012/03/12 08:44:11
Done.
| |
70 this, ui::AccessibilityTypes::EVENT_VALUE_CHANGED, true); | |
71 } | |
72 | |
73 void Slider::SetAccessibleName(const string16& name) { | |
74 accessible_name_ = name; | |
65 } | 75 } |
66 | 76 |
67 gfx::Size Slider::GetPreferredSize() { | 77 gfx::Size Slider::GetPreferredSize() { |
68 const int kSizeMajor = 200; | 78 const int kSizeMajor = 200; |
69 const int kSizeMinor = 40; | 79 const int kSizeMinor = 40; |
70 | 80 |
71 if (orientation_ == HORIZONTAL) | 81 if (orientation_ == HORIZONTAL) |
72 return gfx::Size(kSizeMajor, kSizeMinor); | 82 return gfx::Size(kSizeMajor, kSizeMinor); |
73 return gfx::Size(kSizeMinor, kSizeMajor); | 83 return gfx::Size(kSizeMinor, kSizeMajor); |
74 } | 84 } |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
140 VALUE_CHANGED_BY_USER); | 150 VALUE_CHANGED_BY_USER); |
141 } | 151 } |
142 return true; | 152 return true; |
143 } | 153 } |
144 | 154 |
145 void Slider::AnimationProgressed(const ui::Animation* animation) { | 155 void Slider::AnimationProgressed(const ui::Animation* animation) { |
146 animating_value_ = animation->CurrentValueBetween(animating_value_, value_); | 156 animating_value_ = animation->CurrentValueBetween(animating_value_, value_); |
147 SchedulePaint(); | 157 SchedulePaint(); |
148 } | 158 } |
149 | 159 |
160 void Slider::GetAccessibleState(ui::AccessibleViewState* state) { | |
161 state->role = ui::AccessibilityTypes::ROLE_SLIDER; | |
162 state->name = accessible_name_; | |
163 state->value = UTF8ToUTF16( | |
164 base::StringPrintf("%d%%", (int)(value_ * 100 + 0.5))); | |
165 } | |
166 | |
150 } // namespace views | 167 } // namespace views |
OLD | NEW |