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

Side by Side Diff: ui/views/controls/slider.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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 | « ui/views/controls/slide_out_view.cc ('k') | ui/views/controls/slider.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef UI_VIEWS_CONTROLS_SLIDER_H_
6 #define UI_VIEWS_CONTROLS_SLIDER_H_
7
8 #include "ui/gfx/animation/animation_delegate.h"
9 #include "ui/views/view.h"
10 #include "ui/views/views_export.h"
11
12 typedef unsigned int SkColor;
13
14 namespace gfx {
15 class ImageSkia;
16 class SlideAnimation;
17 }
18
19 namespace views {
20
21 namespace test {
22 class SliderTestApi;
23 }
24
25 class Slider;
26
27 enum SliderChangeReason {
28 VALUE_CHANGED_BY_USER, // value was changed by the user (by clicking, e.g.)
29 VALUE_CHANGED_BY_API, // value was changed by a call to SetValue.
30 };
31
32 class VIEWS_EXPORT SliderListener {
33 public:
34 virtual void SliderValueChanged(Slider* sender,
35 float value,
36 float old_value,
37 SliderChangeReason reason) = 0;
38
39 // Invoked when a drag starts or ends (more specifically, when the mouse
40 // button is pressed or released).
41 virtual void SliderDragStarted(Slider* sender) {}
42 virtual void SliderDragEnded(Slider* sender) {}
43
44 protected:
45 virtual ~SliderListener() {}
46 };
47
48 class VIEWS_EXPORT Slider : public View, public gfx::AnimationDelegate {
49 public:
50 enum Orientation {
51 HORIZONTAL,
52 VERTICAL
53 };
54
55 Slider(SliderListener* listener, Orientation orientation);
56 virtual ~Slider();
57
58 float value() const { return value_; }
59 void SetValue(float value);
60
61 // Set the delta used for changing the value via keyboard.
62 void SetKeyboardIncrement(float increment);
63
64 void SetAccessibleName(const base::string16& name);
65
66 void set_enable_accessibility_events(bool enabled) {
67 accessibility_events_enabled_ = enabled;
68 }
69
70 void set_focus_border_color(SkColor color) { focus_border_color_ = color; }
71
72 // Update UI based on control on/off state.
73 void UpdateState(bool control_on);
74
75 private:
76 friend class test::SliderTestApi;
77
78 void SetValueInternal(float value, SliderChangeReason reason);
79
80 // Should be called on the Mouse Down event. Used to calculate relative
81 // position of the mouse cursor (or the touch point) on the button to
82 // accurately move the button using the MoveButtonTo() method.
83 void PrepareForMove(const gfx::Point& point);
84
85 // Moves the button to the specified point and updates the value accordingly.
86 void MoveButtonTo(const gfx::Point& point);
87
88 void OnPaintFocus(gfx::Canvas* canvas);
89
90 // Notify the listener_, if not NULL, that dragging started.
91 void OnSliderDragStarted();
92
93 // Notify the listener_, if not NULL, that dragging ended.
94 void OnSliderDragEnded();
95
96 // views::View overrides:
97 virtual gfx::Size GetPreferredSize() const override;
98 virtual void OnPaint(gfx::Canvas* canvas) override;
99 virtual bool OnMousePressed(const ui::MouseEvent& event) override;
100 virtual bool OnMouseDragged(const ui::MouseEvent& event) override;
101 virtual void OnMouseReleased(const ui::MouseEvent& event) override;
102 virtual bool OnKeyPressed(const ui::KeyEvent& event) override;
103 virtual void GetAccessibleState(ui::AXViewState* state) override;
104 virtual void OnFocus() override;
105 virtual void OnBlur() override;
106
107 // ui::EventHandler overrides:
108 virtual void OnGestureEvent(ui::GestureEvent* event) override;
109
110 // gfx::AnimationDelegate overrides:
111 virtual void AnimationProgressed(const gfx::Animation* animation) override;
112
113 void set_listener(SliderListener* listener) {
114 listener_ = listener;
115 }
116
117 SliderListener* listener_;
118 Orientation orientation_;
119
120 scoped_ptr<gfx::SlideAnimation> move_animation_;
121
122 float value_;
123 float keyboard_increment_;
124 float animating_value_;
125 bool value_is_valid_;
126 base::string16 accessible_name_;
127 bool accessibility_events_enabled_;
128 SkColor focus_border_color_;
129
130 // Relative position of the mouse cursor (or the touch point) on the slider's
131 // button.
132 gfx::Point initial_button_offset_;
133
134 const int* bar_active_images_;
135 const int* bar_disabled_images_;
136 const gfx::ImageSkia* thumb_;
137 const gfx::ImageSkia* images_[4];
138 int bar_height_;
139
140 DISALLOW_COPY_AND_ASSIGN(Slider);
141 };
142
143 } // namespace views
144
145 #endif // UI_VIEWS_CONTROLS_SLIDER_H_
OLDNEW
« no previous file with comments | « ui/views/controls/slide_out_view.cc ('k') | ui/views/controls/slider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698