OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_UI_VIEWS_TABS_BASE_TAB_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_TABS_BASE_TAB_H_ |
6 #define CHROME_BROWSER_UI_VIEWS_TABS_BASE_TAB_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_TABS_BASE_TAB_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include "app/animation_container.h" | |
10 #include "app/animation_delegate.h" | |
11 #include "base/ref_counted.h" | 9 #include "base/ref_counted.h" |
12 #include "base/scoped_ptr.h" | 10 #include "base/scoped_ptr.h" |
13 #include "chrome/browser/views/tabs/tab_renderer_data.h" | 11 #include "chrome/browser/views/tabs/tab_renderer_data.h" |
| 12 #include "ui/base/animation/animation_container.h" |
| 13 #include "ui/base/animation/animation_delegate.h" |
14 #include "views/controls/button/button.h" | 14 #include "views/controls/button/button.h" |
15 #include "views/view.h" | 15 #include "views/view.h" |
16 | 16 |
17 class AnimationContainer; | |
18 class BaseTab; | 17 class BaseTab; |
19 class SlideAnimation; | |
20 class TabController; | 18 class TabController; |
21 class ThrobAnimation; | |
22 | 19 |
23 namespace gfx { | 20 namespace gfx { |
24 class Font; | 21 class Font; |
25 } // namespace gfx | 22 } |
| 23 |
| 24 namespace ui { |
| 25 class AnimationContainer; |
| 26 class SlideAnimation; |
| 27 class ThrobAnimation; |
| 28 } |
26 | 29 |
27 namespace views { | 30 namespace views { |
28 class ImageButton; | 31 class ImageButton; |
29 } // namespace views | 32 } |
30 | 33 |
31 // Base class for tab renderers. | 34 // Base class for tab renderers. |
32 class BaseTab : public AnimationDelegate, | 35 class BaseTab : public ui::AnimationDelegate, |
33 public views::ButtonListener, | 36 public views::ButtonListener, |
34 public views::ContextMenuController, | 37 public views::ContextMenuController, |
35 public views::View { | 38 public views::View { |
36 public: | 39 public: |
37 explicit BaseTab(TabController* controller); | 40 explicit BaseTab(TabController* controller); |
38 virtual ~BaseTab(); | 41 virtual ~BaseTab(); |
39 | 42 |
40 // Sets the data this tabs displays. Invokes DataChanged for subclasses to | 43 // Sets the data this tabs displays. Invokes DataChanged for subclasses to |
41 // update themselves appropriately. | 44 // update themselves appropriately. |
42 void SetData(const TabRendererData& data); | 45 void SetData(const TabRendererData& data); |
43 const TabRendererData& data() const { return data_; } | 46 const TabRendererData& data() const { return data_; } |
44 | 47 |
45 // Sets the network state. If the network state changes NetworkStateChanged is | 48 // Sets the network state. If the network state changes NetworkStateChanged is |
46 // invoked. | 49 // invoked. |
47 virtual void UpdateLoadingAnimation(TabRendererData::NetworkState state); | 50 virtual void UpdateLoadingAnimation(TabRendererData::NetworkState state); |
48 | 51 |
49 // Starts/Stops a pulse animation. | 52 // Starts/Stops a pulse animation. |
50 void StartPulse(); | 53 void StartPulse(); |
51 void StopPulse(); | 54 void StopPulse(); |
52 | 55 |
53 // Used to set/check whether this Tab is being animated closed. | 56 // Used to set/check whether this Tab is being animated closed. |
54 void set_closing(bool closing) { closing_ = closing; } | 57 void set_closing(bool closing) { closing_ = closing; } |
55 bool closing() const { return closing_; } | 58 bool closing() const { return closing_; } |
56 | 59 |
57 // See description above field. | 60 // See description above field. |
58 void set_dragging(bool dragging) { dragging_ = dragging; } | 61 void set_dragging(bool dragging) { dragging_ = dragging; } |
59 bool dragging() const { return dragging_; } | 62 bool dragging() const { return dragging_; } |
60 | 63 |
61 // Sets the container all animations run from. | 64 // Sets the container all animations run from. |
62 void set_animation_container(AnimationContainer* container) { | 65 void set_animation_container(ui::AnimationContainer* container) { |
63 animation_container_ = container; | 66 animation_container_ = container; |
64 } | 67 } |
65 AnimationContainer* animation_container() const { | 68 ui::AnimationContainer* animation_container() const { |
66 return animation_container_.get(); | 69 return animation_container_.get(); |
67 } | 70 } |
68 | 71 |
69 // Set the theme provider - because we get detached, we are frequently | 72 // Set the theme provider - because we get detached, we are frequently |
70 // outside of a hierarchy with a theme provider at the top. This should be | 73 // outside of a hierarchy with a theme provider at the top. This should be |
71 // called whenever we're detached or attached to a hierarchy. | 74 // called whenever we're detached or attached to a hierarchy. |
72 void set_theme_provider(ThemeProvider* provider) { | 75 void set_theme_provider(ThemeProvider* provider) { |
73 theme_provider_ = provider; | 76 theme_provider_ = provider; |
74 } | 77 } |
75 | 78 |
(...skipping 19 matching lines...) Expand all Loading... |
95 virtual void DataChanged(const TabRendererData& old) {} | 98 virtual void DataChanged(const TabRendererData& old) {} |
96 | 99 |
97 // Invoked if data_.network_state changes, or the network_state is not none. | 100 // Invoked if data_.network_state changes, or the network_state is not none. |
98 virtual void AdvanceLoadingAnimation(TabRendererData::NetworkState old_state, | 101 virtual void AdvanceLoadingAnimation(TabRendererData::NetworkState old_state, |
99 TabRendererData::NetworkState state); | 102 TabRendererData::NetworkState state); |
100 | 103 |
101 TabController* controller() const { return controller_; } | 104 TabController* controller() const { return controller_; } |
102 | 105 |
103 // Returns the pulse animation. The pulse animation is non-null if StartPulse | 106 // Returns the pulse animation. The pulse animation is non-null if StartPulse |
104 // has been invoked. | 107 // has been invoked. |
105 ThrobAnimation* pulse_animation() const { return pulse_animation_.get(); } | 108 ui::ThrobAnimation* pulse_animation() const { return pulse_animation_.get(); } |
106 | 109 |
107 // Returns the hover animation. This may return null. | 110 // Returns the hover animation. This may return null. |
108 const SlideAnimation* hover_animation() const { | 111 const ui::SlideAnimation* hover_animation() const { |
109 return hover_animation_.get(); | 112 return hover_animation_.get(); |
110 } | 113 } |
111 | 114 |
112 views::ImageButton* close_button() const { return close_button_; } | 115 views::ImageButton* close_button() const { return close_button_; } |
113 | 116 |
114 // Paints the icon at the specified coordinates, mirrored for RTL if needed. | 117 // Paints the icon at the specified coordinates, mirrored for RTL if needed. |
115 void PaintIcon(gfx::Canvas* canvas, int x, int y); | 118 void PaintIcon(gfx::Canvas* canvas, int x, int y); |
116 void PaintTitle(gfx::Canvas* canvas, SkColor title_color); | 119 void PaintTitle(gfx::Canvas* canvas, SkColor title_color); |
117 | 120 |
118 // Overridden from AnimationDelegate: | 121 // Overridden from AnimationDelegate: |
119 virtual void AnimationProgressed(const Animation* animation); | 122 virtual void AnimationProgressed(const ui::Animation* animation); |
120 virtual void AnimationCanceled(const Animation* animation); | 123 virtual void AnimationCanceled(const ui::Animation* animation); |
121 virtual void AnimationEnded(const Animation* animation); | 124 virtual void AnimationEnded(const ui::Animation* animation); |
122 | 125 |
123 // views::ButtonListener overrides: | 126 // views::ButtonListener overrides: |
124 virtual void ButtonPressed(views::Button* sender, | 127 virtual void ButtonPressed(views::Button* sender, |
125 const views::Event& event); | 128 const views::Event& event); |
126 | 129 |
127 // views::ContextMenuController overrides: | 130 // views::ContextMenuController overrides: |
128 virtual void ShowContextMenu(views::View* source, | 131 virtual void ShowContextMenu(views::View* source, |
129 const gfx::Point& p, | 132 const gfx::Point& p, |
130 bool is_mouse_gesture); | 133 bool is_mouse_gesture); |
131 | 134 |
(...skipping 29 matching lines...) Expand all Loading... |
161 | 164 |
162 TabRendererData data_; | 165 TabRendererData data_; |
163 | 166 |
164 // True if the tab is being animated closed. | 167 // True if the tab is being animated closed. |
165 bool closing_; | 168 bool closing_; |
166 | 169 |
167 // True if the tab is being dragged. | 170 // True if the tab is being dragged. |
168 bool dragging_; | 171 bool dragging_; |
169 | 172 |
170 // Pulse animation. | 173 // Pulse animation. |
171 scoped_ptr<ThrobAnimation> pulse_animation_; | 174 scoped_ptr<ui::ThrobAnimation> pulse_animation_; |
172 | 175 |
173 // Hover animation. | 176 // Hover animation. |
174 scoped_ptr<SlideAnimation> hover_animation_; | 177 scoped_ptr<ui::SlideAnimation> hover_animation_; |
175 | 178 |
176 // Crash animation. | 179 // Crash animation. |
177 scoped_ptr<FavIconCrashAnimation> crash_animation_; | 180 scoped_ptr<FavIconCrashAnimation> crash_animation_; |
178 | 181 |
179 scoped_refptr<AnimationContainer> animation_container_; | 182 scoped_refptr<ui::AnimationContainer> animation_container_; |
180 | 183 |
181 views::ImageButton* close_button_; | 184 views::ImageButton* close_button_; |
182 | 185 |
183 // The current index of the loading animation. | 186 // The current index of the loading animation. |
184 int loading_animation_frame_; | 187 int loading_animation_frame_; |
185 | 188 |
186 // Whether to disable throbber animations. Only true if this is an app tab | 189 // Whether to disable throbber animations. Only true if this is an app tab |
187 // renderer and a command line flag has been passed in to disable the | 190 // renderer and a command line flag has been passed in to disable the |
188 // animations. | 191 // animations. |
189 bool throbber_disabled_; | 192 bool throbber_disabled_; |
190 | 193 |
191 ThemeProvider* theme_provider_; | 194 ThemeProvider* theme_provider_; |
192 | 195 |
193 // The offset used to animate the favicon location. This is used when the tab | 196 // The offset used to animate the favicon location. This is used when the tab |
194 // crashes. | 197 // crashes. |
195 int fav_icon_hiding_offset_; | 198 int fav_icon_hiding_offset_; |
196 | 199 |
197 bool should_display_crashed_favicon_; | 200 bool should_display_crashed_favicon_; |
198 | 201 |
199 static gfx::Font* font_; | 202 static gfx::Font* font_; |
200 static int font_height_; | 203 static int font_height_; |
201 | 204 |
202 DISALLOW_COPY_AND_ASSIGN(BaseTab); | 205 DISALLOW_COPY_AND_ASSIGN(BaseTab); |
203 }; | 206 }; |
204 | 207 |
205 #endif // CHROME_BROWSER_UI_VIEWS_TABS_BASE_TAB_H_ | 208 #endif // CHROME_BROWSER_UI_VIEWS_TABS_BASE_TAB_H_ |
OLD | NEW |