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

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

Issue 2329633003: Implement progress bar spec (determinate and indeterminate). (Closed)
Patch Set: self review Created 4 years, 3 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #ifndef UI_VIEWS_CONTROLS_PROGRESS_BAR_H_ 5 #ifndef UI_VIEWS_CONTROLS_PROGRESS_BAR_H_
6 #define UI_VIEWS_CONTROLS_PROGRESS_BAR_H_ 6 #define UI_VIEWS_CONTROLS_PROGRESS_BAR_H_
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "ui/gfx/animation/animation_delegate.h"
10 #include "ui/views/view.h" 11 #include "ui/views/view.h"
11 12
13 namespace gfx {
14 class LinearAnimation;
15 }
16
12 namespace views { 17 namespace views {
13 18
14 // Progress bar is a control that indicates progress visually. 19 // Progress bar is a control that indicates progress visually.
15 class VIEWS_EXPORT ProgressBar : public View { 20 class VIEWS_EXPORT ProgressBar : public View, public gfx::AnimationDelegate {
16 public: 21 public:
17 // The value range defaults to [0.0, 1.0]. 22 // The value range defaults to [0.0, 1.0].
18 ProgressBar(); 23 ProgressBar();
19 ~ProgressBar() override; 24 ~ProgressBar() override;
20 25
26 // This convenience function makes it easier to use ProgressBars with layout
27 // managers that size to preferred size.
28 void set_preferred_height(int preferred_height) {
sky 2016/09/13 02:30:08 If the value changes won't this need to trigger a
Evan Stade 2016/09/13 15:45:39 Yea but I would expect that this is called by the
29 preferred_height_ = preferred_height;
30 }
31
32 // Overridden from View:
33 void GetAccessibleState(ui::AXViewState* state) override;
34 gfx::Size GetPreferredSize() const override;
35 const char* GetClassName() const override;
36 void OnPaint(gfx::Canvas* canvas) override;
37
21 double current_value() const { return current_value_; } 38 double current_value() const { return current_value_; }
22 39
23 // Gets a normalized current value in [0.0, 1.0] range based on current value 40 // Sets the current value. Values outside of the display range of 0.0-1.0 will
24 // range and the min/max display value range. 41 // be displayed with an infinite loading animation.
25 double GetNormalizedValue() const;
26
27 // Sets the inclusive range of values to be displayed. Values outside of the
28 // range will be capped when displayed.
29 void SetDisplayRange(double min_display_value, double max_display_value);
30
31 // Sets the current value. Values outside of the range [min_display_value_,
32 // max_display_value_] will be stored unmodified and capped for display.
33 void SetValue(double value); 42 void SetValue(double value);
34 43
35 // Sets the tooltip text. Default behavior for a progress bar is to show no 44 protected:
36 // tooltip on mouse hover. Calling this lets you set a custom tooltip. To 45 // The color of the progress portion.
37 // revert to default behavior, call this with an empty string. 46 SkColor GetForegroundColor() const;
38 void SetTooltipText(const base::string16& tooltip_text); 47 // The color of the portion that displays potential progress.
48 SkColor GetBackgroundColor() const;
39 49
40 // Overridden from View: 50 int preferred_height() const { return preferred_height_; }
41 bool GetTooltipText(const gfx::Point& p,
42 base::string16* tooltip) const override;
43 void GetAccessibleState(ui::AXViewState* state) override;
44 51
45 private: 52 private:
46 static const char kViewClassName[]; 53 static const char kViewClassName[];
47 54
48 // Overridden from View: 55 // gfx::AnimationDelegate:
49 gfx::Size GetPreferredSize() const override; 56 void AnimationProgressed(const gfx::Animation* animation) override;
50 const char* GetClassName() const override; 57 void AnimationEnded(const gfx::Animation* animation) override;
51 void OnPaint(gfx::Canvas* canvas) override;
52 58
53 // Inclusive range used when displaying values. 59 bool IsIndeterminate();
54 double min_display_value_; 60 void OnPaintIndeterminate(gfx::Canvas* canvas);
55 double max_display_value_;
56 61
57 // Current value. May be outside of [min_display_value_, max_display_value_]. 62 // Current progress to display, should be in the range 0.0 to 1.0.
58 double current_value_; 63 double current_value_;
59 64
60 // Tooltip text. 65 // In DP, the preferred height of this progress bar. Default is 5.
61 base::string16 tooltip_text_; 66 int preferred_height_;
sky 2016/09/13 02:30:08 optional: = 5 and remove comment about default.
Evan Stade 2016/09/13 15:45:39 default moved to ctor
67
68 std::unique_ptr<gfx::LinearAnimation> indeterminate_bar_animation_;
62 69
63 DISALLOW_COPY_AND_ASSIGN(ProgressBar); 70 DISALLOW_COPY_AND_ASSIGN(ProgressBar);
64 }; 71 };
65 72
66 } // namespace views 73 } // namespace views
67 74
68 #endif // UI_VIEWS_CONTROLS_PROGRESS_BAR_H_ 75 #endif // UI_VIEWS_CONTROLS_PROGRESS_BAR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698