| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/views/examples/throbber_example.h" |
| |
| #include "base/macros.h" |
| #include "ui/views/controls/throbber.h" |
| #include "ui/views/layout/fill_layout.h" |
| #include "ui/views/view.h" |
| |
| namespace views { |
| namespace examples { |
| |
| namespace { |
| |
| class ThrobberView : public View { |
| public: |
| ThrobberView() : throbber_(new Throbber()), is_checked_(false) { |
| AddChildView(throbber_); |
| throbber_->Start(); |
| } |
| |
| // View:: |
| gfx::Size CalculatePreferredSize() const override { |
| return gfx::Size(width(), height()); |
| } |
| |
| void Layout() override { |
| int diameter = 16; |
| throbber_->SetBounds((width() - diameter) / 2, |
| (height() - diameter) / 2, |
| diameter, diameter); |
| SizeToPreferredSize(); |
| } |
| |
| bool OnMousePressed(const ui::MouseEvent& event) override { |
| if (GetEventHandlerForPoint(event.location()) != throbber_) |
| return false; |
| |
| if (is_checked_) |
| throbber_->Start(); |
| else |
| throbber_->Stop(); |
| throbber_->SetChecked(!is_checked_); |
| is_checked_ = !is_checked_; |
| return true; |
| } |
| |
| private: |
| Throbber* throbber_; |
| bool is_checked_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ThrobberView); |
| }; |
| |
| } // namespace |
| |
| ThrobberExample::ThrobberExample() : ExampleBase("Throbber") { |
| } |
| |
| ThrobberExample::~ThrobberExample() { |
| } |
| |
| void ThrobberExample::CreateExampleView(View* container) { |
| container->SetLayoutManager(std::make_unique<FillLayout>()); |
| container->AddChildView(new ThrobberView()); |
| } |
| |
| } // namespace examples |
| } // namespace views |