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
3// found in the LICENSE file.
4
5#ifndef UI_VIEWS_CONTROLS_PROGRESS_BAR_H_
6#define UI_VIEWS_CONTROLS_PROGRESS_BAR_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "ui/views/view.h"
11
12namespace views {
13
14// Progress bar is a control that indicates progress visually.
15class VIEWS_EXPORT ProgressBar : public View {
16 public:
17  // The value range defaults to [0.0, 1.0].
18  ProgressBar();
19  virtual ~ProgressBar();
20
21  double current_value() const { return current_value_; }
22
23  // Gets a normalized current value in [0.0, 1.0] range based on current value
24  // range and the min/max display value range.
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);
34
35  // Sets the tooltip text.  Default behavior for a progress bar is to show no
36  // tooltip on mouse hover. Calling this lets you set a custom tooltip.  To
37  // revert to default behavior, call this with an empty string.
38  void SetTooltipText(const base::string16& tooltip_text);
39
40  // Overridden from View:
41  virtual bool GetTooltipText(const gfx::Point& p,
42                              base::string16* tooltip) const OVERRIDE;
43  virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE;
44
45 private:
46  static const char kViewClassName[];
47
48  // Overridden from View:
49  virtual gfx::Size GetPreferredSize() const OVERRIDE;
50  virtual const char* GetClassName() const OVERRIDE;
51  virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
52
53  // Inclusive range used when displaying values.
54  double min_display_value_;
55  double max_display_value_;
56
57  // Current value.  May be outside of [min_display_value_, max_display_value_].
58  double current_value_;
59
60  // Tooltip text.
61  base::string16 tooltip_text_;
62
63  DISALLOW_COPY_AND_ASSIGN(ProgressBar);
64};
65
66}  // namespace views
67
68#endif  // UI_VIEWS_CONTROLS_PROGRESS_BAR_H_
69