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.
5 #include "ui/views/examples/progress_bar_example.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "ui/views/controls/button/label_button.h"
11 #include "ui/views/controls/progress_bar.h"
12 #include "ui/views/layout/grid_layout.h"
13 #include "ui/views/view.h"
17 const double kStepSize
= 0.1;
19 double SetToMax(double percent
) {
20 return std::min(std::max(percent
, 0.0), 1.0);
28 ProgressBarExample::ProgressBarExample()
29 : ExampleBase("Progress Bar"),
33 current_percent_(0.0) {
36 ProgressBarExample::~ProgressBarExample() {
39 void ProgressBarExample::CreateExampleView(View
* container
) {
40 GridLayout
* layout
= new GridLayout(container
);
41 container
->SetLayoutManager(layout
);
43 ColumnSet
* column_set
= layout
->AddColumnSet(0);
44 column_set
->AddColumn(GridLayout::LEADING
, GridLayout::FILL
,
45 0, GridLayout::USE_PREF
, 0, 0);
46 column_set
->AddPaddingColumn(0, 8);
47 column_set
->AddColumn(GridLayout::FILL
, GridLayout::FILL
,
48 1, GridLayout::USE_PREF
, 0, 0);
49 column_set
->AddPaddingColumn(0, 8);
50 column_set
->AddColumn(GridLayout::TRAILING
, GridLayout::FILL
,
51 0, GridLayout::USE_PREF
, 0, 0);
53 layout
->StartRow(0, 0);
54 minus_button_
= new LabelButton(this, base::ASCIIToUTF16("-"));
55 layout
->AddView(minus_button_
);
56 progress_bar_
= new ProgressBar();
57 layout
->AddView(progress_bar_
);
58 plus_button_
= new LabelButton(this, base::ASCIIToUTF16("+"));
59 layout
->AddView(plus_button_
);
62 void ProgressBarExample::ButtonPressed(Button
* sender
, const ui::Event
& event
) {
63 if (sender
== minus_button_
)
64 current_percent_
= SetToMax(current_percent_
- kStepSize
);
65 else if (sender
== plus_button_
)
66 current_percent_
= SetToMax(current_percent_
+ kStepSize
);
68 progress_bar_
->SetValue(current_percent_
);
71 } // namespace examples