Home | History | Annotate | Download | only in tray
      1 // Copyright (c) 2013 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 ASH_SYSTEM_TRAY_THROBBER_VIEW_H_
      6 #define ASH_SYSTEM_TRAY_THROBBER_VIEW_H_
      7 
      8 #include "ui/gfx/size.h"
      9 #include "ui/views/controls/throbber.h"
     10 #include "ui/views/view.h"
     11 
     12 namespace ash {
     13 namespace internal {
     14 
     15 // A SmoothedThrobber with tooltip.
     16 class SystemTrayThrobber : public views::SmoothedThrobber {
     17  public:
     18   SystemTrayThrobber(int frame_delay_ms);
     19   virtual ~SystemTrayThrobber();
     20 
     21   void SetTooltipText(const base::string16& tooltip_text);
     22 
     23   // Overriden from views::View.
     24   virtual bool GetTooltipText(
     25         const gfx::Point& p, base::string16* tooltip) const OVERRIDE;
     26 
     27  private:
     28   // The current tooltip text.
     29   base::string16 tooltip_text_;
     30 
     31   DISALLOW_COPY_AND_ASSIGN(SystemTrayThrobber);
     32 };
     33 
     34 // A View containing a SystemTrayThrobber with animation for starting/stopping.
     35 class ThrobberView : public views::View {
     36  public:
     37   ThrobberView();
     38   virtual ~ThrobberView();
     39 
     40   void Start();
     41   void Stop();
     42   void SetTooltipText(const base::string16& tooltip_text);
     43 
     44   // Overriden from views::View.
     45   virtual gfx::Size GetPreferredSize() OVERRIDE;
     46   virtual void Layout() OVERRIDE;
     47   virtual bool GetTooltipText(
     48       const gfx::Point& p, base::string16* tooltip) const OVERRIDE;
     49 
     50  private:
     51   // Schedules animation for starting/stopping throbber.
     52   void ScheduleAnimation(bool start_throbber);
     53 
     54   SystemTrayThrobber* throbber_;
     55 
     56   // The current tooltip text.
     57   base::string16 tooltip_text_;
     58 
     59   DISALLOW_COPY_AND_ASSIGN(ThrobberView);
     60 };
     61 
     62 }  // namespace internal
     63 }  // namespace ash
     64 
     65 #endif  // ASH_SYSTEM_TRAY_THROBBER_VIEW_H_
     66