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