Home | History | Annotate | Download | only in examples
      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 #include "ui/views/examples/throbber_example.h"
      6 
      7 #include "ui/views/controls/throbber.h"
      8 #include "ui/views/layout/fill_layout.h"
      9 #include "ui/views/view.h"
     10 
     11 namespace views {
     12 namespace examples {
     13 
     14 namespace {
     15 
     16 // Time in ms per throbber frame.
     17 const int kThrobberFrameMs = 60;
     18 
     19 class ThrobberView : public View {
     20  public:
     21   ThrobberView() {
     22     throbber_ = new Throbber(kThrobberFrameMs, false);
     23     AddChildView(throbber_);
     24     throbber_->SetVisible(true);
     25     throbber_->Start();
     26   }
     27 
     28   virtual gfx::Size GetPreferredSize() const OVERRIDE {
     29     return gfx::Size(width(), height());
     30   }
     31 
     32   virtual void Layout() OVERRIDE {
     33     View* child = child_at(0);
     34     gfx::Size ps = child->GetPreferredSize();
     35     child->SetBounds((width() - ps.width()) / 2,
     36                      (height() - ps.height()) / 2,
     37                      ps.width(), ps.height());
     38     SizeToPreferredSize();
     39   }
     40 
     41  private:
     42   Throbber* throbber_;
     43 
     44   DISALLOW_COPY_AND_ASSIGN(ThrobberView);
     45 };
     46 
     47 }  // namespace
     48 
     49 ThrobberExample::ThrobberExample() : ExampleBase("Throbber") {
     50 }
     51 
     52 ThrobberExample::~ThrobberExample() {
     53 }
     54 
     55 void ThrobberExample::CreateExampleView(View* container) {
     56   container->SetLayoutManager(new FillLayout());
     57   container->AddChildView(new ThrobberView());
     58 }
     59 
     60 }  // namespace examples
     61 }  // namespace views
     62