| 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_INFOBARS_INFOBARS_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_INFOBARS_INFOBARS_H_ |
| 6 #define CHROME_BROWSER_UI_VIEWS_INFOBARS_INFOBARS_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_INFOBARS_INFOBARS_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include "app/animation_delegate.h" | |
| 10 #include "base/task.h" | 9 #include "base/task.h" |
| 11 #include "chrome/browser/tab_contents/infobar_delegate.h" | 10 #include "chrome/browser/tab_contents/infobar_delegate.h" |
| 11 #include "ui/base/animation/animation_delegate.h" |
| 12 #include "views/controls/button/button.h" | 12 #include "views/controls/button/button.h" |
| 13 #include "views/controls/link.h" | 13 #include "views/controls/link.h" |
| 14 #include "views/focus/focus_manager.h" | 14 #include "views/focus/focus_manager.h" |
| 15 | 15 |
| 16 class InfoBarContainer; | 16 class InfoBarContainer; |
| 17 |
| 18 namespace ui { |
| 17 class SlideAnimation; | 19 class SlideAnimation; |
| 20 } |
| 21 |
| 18 namespace views { | 22 namespace views { |
| 19 class ExternalFocusTracker; | 23 class ExternalFocusTracker; |
| 20 class ImageButton; | 24 class ImageButton; |
| 21 class ImageView; | 25 class ImageView; |
| 22 class Label; | 26 class Label; |
| 23 class NativeButton; | 27 class NativeButton; |
| 24 } | 28 } |
| 25 | 29 |
| 26 // This file contains implementations for some general purpose InfoBars. See | 30 // This file contains implementations for some general purpose InfoBars. See |
| 27 // chrome/browser/tab_contents/infobar_delegate.h for the delegate interface(s) | 31 // chrome/browser/tab_contents/infobar_delegate.h for the delegate interface(s) |
| 28 // that you must implement to use these. | 32 // that you must implement to use these. |
| 29 | 33 |
| 30 class InfoBarBackground : public views::Background { | 34 class InfoBarBackground : public views::Background { |
| 31 public: | 35 public: |
| 32 explicit InfoBarBackground(InfoBarDelegate::Type infobar_type); | 36 explicit InfoBarBackground(InfoBarDelegate::Type infobar_type); |
| 33 | 37 |
| 34 // Overridden from views::Background: | 38 // Overridden from views::Background: |
| 35 virtual void Paint(gfx::Canvas* canvas, views::View* view) const; | 39 virtual void Paint(gfx::Canvas* canvas, views::View* view) const; |
| 36 | 40 |
| 37 private: | 41 private: |
| 38 scoped_ptr<views::Background> gradient_background_; | 42 scoped_ptr<views::Background> gradient_background_; |
| 39 | 43 |
| 40 DISALLOW_COPY_AND_ASSIGN(InfoBarBackground); | 44 DISALLOW_COPY_AND_ASSIGN(InfoBarBackground); |
| 41 }; | 45 }; |
| 42 | 46 |
| 43 class InfoBar : public views::View, | 47 class InfoBar : public views::View, |
| 44 public views::ButtonListener, | 48 public views::ButtonListener, |
| 45 public views::FocusChangeListener, | 49 public views::FocusChangeListener, |
| 46 public AnimationDelegate { | 50 public ui::AnimationDelegate { |
| 47 public: | 51 public: |
| 48 explicit InfoBar(InfoBarDelegate* delegate); | 52 explicit InfoBar(InfoBarDelegate* delegate); |
| 49 virtual ~InfoBar(); | 53 virtual ~InfoBar(); |
| 50 | 54 |
| 51 InfoBarDelegate* delegate() const { return delegate_; } | 55 InfoBarDelegate* delegate() const { return delegate_; } |
| 52 | 56 |
| 53 // Set a link to the parent InfoBarContainer. This must be set before the | 57 // Set a link to the parent InfoBarContainer. This must be set before the |
| 54 // InfoBar is added to the view hierarchy. | 58 // InfoBar is added to the view hierarchy. |
| 55 void set_container(InfoBarContainer* container) { container_ = container; } | 59 void set_container(InfoBarContainer* container) { container_ = container; } |
| 56 | 60 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 79 // Returns the available width of the View for use by child view layout, | 83 // Returns the available width of the View for use by child view layout, |
| 80 // excluding the close button. | 84 // excluding the close button. |
| 81 virtual int GetAvailableWidth() const; | 85 virtual int GetAvailableWidth() const; |
| 82 | 86 |
| 83 // Removes our associated InfoBarDelegate from the associated TabContents. | 87 // Removes our associated InfoBarDelegate from the associated TabContents. |
| 84 // (Will lead to this InfoBar being closed). | 88 // (Will lead to this InfoBar being closed). |
| 85 void RemoveInfoBar() const; | 89 void RemoveInfoBar() const; |
| 86 | 90 |
| 87 void set_target_height(double height) { target_height_ = height; } | 91 void set_target_height(double height) { target_height_ = height; } |
| 88 | 92 |
| 89 SlideAnimation* animation() { return animation_.get(); } | 93 ui::SlideAnimation* animation() { return animation_.get(); } |
| 90 | 94 |
| 91 // Returns a centered y-position of a control of height specified in | 95 // Returns a centered y-position of a control of height specified in |
| 92 // |prefsize| within the standard InfoBar height. Stable during an animation. | 96 // |prefsize| within the standard InfoBar height. Stable during an animation. |
| 93 int CenterY(const gfx::Size prefsize); | 97 int CenterY(const gfx::Size prefsize); |
| 94 | 98 |
| 95 // Returns a centered y-position of a control of height specified in | 99 // Returns a centered y-position of a control of height specified in |
| 96 // |prefsize| within the standard InfoBar height, adjusted according to the | 100 // |prefsize| within the standard InfoBar height, adjusted according to the |
| 97 // current amount of animation offset the |parent| InfoBar currently has. | 101 // current amount of animation offset the |parent| InfoBar currently has. |
| 98 // Changes during an animation. | 102 // Changes during an animation. |
| 99 int OffsetY(views::View* parent, const gfx::Size prefsize); | 103 int OffsetY(views::View* parent, const gfx::Size prefsize); |
| 100 | 104 |
| 101 // Overridden from views::ButtonListener: | 105 // Overridden from views::ButtonListener: |
| 102 virtual void ButtonPressed(views::Button* sender, const views::Event& event); | 106 virtual void ButtonPressed(views::Button* sender, const views::Event& event); |
| 103 | 107 |
| 104 // Overridden from views::FocusChangeListener: | 108 // Overridden from views::FocusChangeListener: |
| 105 virtual void FocusWillChange(View* focused_before, View* focused_now); | 109 virtual void FocusWillChange(View* focused_before, View* focused_now); |
| 106 | 110 |
| 107 // Overridden from AnimationDelegate: | 111 // Overridden from ui::AnimationDelegate: |
| 108 virtual void AnimationProgressed(const Animation* animation); | 112 virtual void AnimationProgressed(const ui::Animation* animation); |
| 109 virtual void AnimationEnded(const Animation* animation); | 113 virtual void AnimationEnded(const ui::Animation* animation); |
| 110 | 114 |
| 111 private: | 115 private: |
| 112 friend class InfoBarContainer; | 116 friend class InfoBarContainer; |
| 113 | 117 |
| 114 // Starts animating the InfoBar open. | 118 // Starts animating the InfoBar open. |
| 115 void AnimateOpen(); | 119 void AnimateOpen(); |
| 116 | 120 |
| 117 // Opens the InfoBar immediately. | 121 // Opens the InfoBar immediately. |
| 118 void Open(); | 122 void Open(); |
| 119 | 123 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 143 // The InfoBar's container | 147 // The InfoBar's container |
| 144 InfoBarContainer* container_; | 148 InfoBarContainer* container_; |
| 145 | 149 |
| 146 // The InfoBar's delegate. | 150 // The InfoBar's delegate. |
| 147 InfoBarDelegate* delegate_; | 151 InfoBarDelegate* delegate_; |
| 148 | 152 |
| 149 // The Close Button at the right edge of the InfoBar. | 153 // The Close Button at the right edge of the InfoBar. |
| 150 views::ImageButton* close_button_; | 154 views::ImageButton* close_button_; |
| 151 | 155 |
| 152 // The animation that runs when the InfoBar is opened or closed. | 156 // The animation that runs when the InfoBar is opened or closed. |
| 153 scoped_ptr<SlideAnimation> animation_; | 157 scoped_ptr<ui::SlideAnimation> animation_; |
| 154 | 158 |
| 155 // Tracks and stores the last focused view which is not the InfoBar or any of | 159 // Tracks and stores the last focused view which is not the InfoBar or any of |
| 156 // its children. Used to restore focus once the InfoBar is closed. | 160 // its children. Used to restore focus once the InfoBar is closed. |
| 157 scoped_ptr<views::ExternalFocusTracker> focus_tracker_; | 161 scoped_ptr<views::ExternalFocusTracker> focus_tracker_; |
| 158 | 162 |
| 159 // Used to delete this object after a return to the message loop. | 163 // Used to delete this object after a return to the message loop. |
| 160 ScopedRunnableMethodFactory<InfoBar> delete_factory_; | 164 ScopedRunnableMethodFactory<InfoBar> delete_factory_; |
| 161 | 165 |
| 162 // The target height for the InfoBar. | 166 // The target height for the InfoBar. |
| 163 double target_height_; | 167 double target_height_; |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 views::NativeButton* cancel_button_; | 246 views::NativeButton* cancel_button_; |
| 243 views::Link* link_; | 247 views::Link* link_; |
| 244 | 248 |
| 245 bool initialized_; | 249 bool initialized_; |
| 246 | 250 |
| 247 DISALLOW_COPY_AND_ASSIGN(ConfirmInfoBar); | 251 DISALLOW_COPY_AND_ASSIGN(ConfirmInfoBar); |
| 248 }; | 252 }; |
| 249 | 253 |
| 250 | 254 |
| 251 #endif // CHROME_BROWSER_UI_VIEWS_INFOBARS_INFOBARS_H_ | 255 #endif // CHROME_BROWSER_UI_VIEWS_INFOBARS_INFOBARS_H_ |
| OLD | NEW |