| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_GTK_INFOBARS_INFOBAR_GTK_H_ | 5 #ifndef CHROME_BROWSER_UI_GTK_INFOBARS_INFOBAR_GTK_H_ |
| 6 #define CHROME_BROWSER_UI_GTK_INFOBARS_INFOBAR_GTK_H_ | 6 #define CHROME_BROWSER_UI_GTK_INFOBARS_INFOBAR_GTK_H_ |
| 7 | 7 |
| 8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 class MenuModel; | 26 class MenuModel; |
| 27 } | 27 } |
| 28 | 28 |
| 29 class InfoBarGtk : public InfoBar, | 29 class InfoBarGtk : public InfoBar, |
| 30 public content::NotificationObserver { | 30 public content::NotificationObserver { |
| 31 public: | 31 public: |
| 32 // Conversion from cairo colors to SkColor. | 32 // Conversion from cairo colors to SkColor. |
| 33 typedef void (InfoBarGtk::*ColorGetter)(InfoBarDelegate::Type, | 33 typedef void (InfoBarGtk::*ColorGetter)(InfoBarDelegate::Type, |
| 34 double* r, double* g, double* b); | 34 double* r, double* g, double* b); |
| 35 | 35 |
| 36 InfoBarGtk(InfoBarService* owner, InfoBarDelegate* delegate); | 36 explicit InfoBarGtk(scoped_ptr<InfoBarDelegate> delegate); |
| 37 virtual ~InfoBarGtk(); | 37 virtual ~InfoBarGtk(); |
| 38 | 38 |
| 39 // Must be called before we try to show the infobar. Inits any widgets and | |
| 40 // related objects necessary. This must be called only once during the | |
| 41 // infobar's life. | |
| 42 // | |
| 43 // NOTE: Subclasses who need to init widgets should override this function and | |
| 44 // explicitly call their parent's implementation first, then continue with | |
| 45 // further work they need to do. Failing to call the parent implementation | |
| 46 // first (or at all), or setting up widgets in the constructor instead of | |
| 47 // here, will lead to bad side effects like crashing or having this function | |
| 48 // get called repeatedly. | |
| 49 virtual void InitWidgets(); | |
| 50 | |
| 51 // Get the top level native GTK widget for this infobar. | 39 // Get the top level native GTK widget for this infobar. |
| 52 GtkWidget* widget() { return widget_.get(); } | 40 GtkWidget* widget() { return widget_.get(); } |
| 53 | 41 |
| 54 GdkColor GetBorderColor() const; | 42 GdkColor GetBorderColor() const; |
| 55 | 43 |
| 56 // Returns the target height of the infobar if the bar is animating, | 44 // Returns the target height of the infobar if the bar is animating, |
| 57 // otherwise 0. We care about this number since we want to prevent | 45 // otherwise 0. We care about this number since we want to prevent |
| 58 // unnecessary renderer repaints while animating. | 46 // unnecessary renderer repaints while animating. |
| 59 int AnimatingHeight() const; | 47 int AnimatingHeight() const; |
| 60 | 48 |
| 61 SkColor ConvertGetColor(ColorGetter getter); | 49 SkColor ConvertGetColor(ColorGetter getter); |
| 62 | 50 |
| 63 // Retrieves the component colors for the infobar's background | 51 // Retrieves the component colors for the infobar's background |
| 64 // gradient. (This varies by infobars and can be animated to change). | 52 // gradient. (This varies by infobars and can be animated to change). |
| 65 virtual void GetTopColor(InfoBarDelegate::Type type, | 53 virtual void GetTopColor(InfoBarDelegate::Type type, |
| 66 double* r, double* g, double* b); | 54 double* r, double* g, double* b); |
| 67 virtual void GetBottomColor(InfoBarDelegate::Type type, | 55 virtual void GetBottomColor(InfoBarDelegate::Type type, |
| 68 double* r, double* g, double* b); | 56 double* r, double* g, double* b); |
| 69 | 57 |
| 70 protected: | 58 protected: |
| 71 // Spacing after message (and before buttons). | 59 // Spacing after message (and before buttons). |
| 72 static const int kEndOfLabelSpacing; | 60 static const int kEndOfLabelSpacing; |
| 73 | 61 |
| 74 // InfoBar: | 62 // InfoBar: |
| 63 |
| 64 // Inits any widgets and related objects necessary. |
| 65 // |
| 66 // NOTE: Subclasses who need to init widgets should override this function and |
| 67 // explicitly call their parent's implementation first, then continue with |
| 68 // further work they need to do. Failing to call the parent implementation |
| 69 // first (or at all), or setting up widgets in the constructor instead of |
| 70 // here, will lead to bad side effects like crashing. |
| 71 virtual void PlatformSpecificSetOwner() OVERRIDE; |
| 72 |
| 75 virtual void PlatformSpecificShow(bool animate) OVERRIDE; | 73 virtual void PlatformSpecificShow(bool animate) OVERRIDE; |
| 76 virtual void PlatformSpecificOnCloseSoon() OVERRIDE; | 74 virtual void PlatformSpecificOnCloseSoon() OVERRIDE; |
| 77 virtual void PlatformSpecificOnHeightsRecalculated() OVERRIDE; | 75 virtual void PlatformSpecificOnHeightsRecalculated() OVERRIDE; |
| 78 | 76 |
| 79 // content::NotificationObserver: | 77 // content::NotificationObserver: |
| 80 virtual void Observe(int type, | 78 virtual void Observe(int type, |
| 81 const content::NotificationSource& source, | 79 const content::NotificationSource& source, |
| 82 const content::NotificationDetails& details) OVERRIDE; | 80 const content::NotificationDetails& details) OVERRIDE; |
| 83 | 81 |
| 84 // Styles the close button as if we're doing Chrome-stlye widget rendering. | 82 // Styles the close button as if we're doing Chrome-stlye widget rendering. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 scoped_ptr<ui::GtkSignalRegistrar> signals_; | 146 scoped_ptr<ui::GtkSignalRegistrar> signals_; |
| 149 | 147 |
| 150 // The current menu displayed. Can be null. We own this on the base class so | 148 // The current menu displayed. Can be null. We own this on the base class so |
| 151 // we can cancel the menu while we're closing. | 149 // we can cancel the menu while we're closing. |
| 152 scoped_ptr<MenuGtk> menu_; | 150 scoped_ptr<MenuGtk> menu_; |
| 153 | 151 |
| 154 DISALLOW_COPY_AND_ASSIGN(InfoBarGtk); | 152 DISALLOW_COPY_AND_ASSIGN(InfoBarGtk); |
| 155 }; | 153 }; |
| 156 | 154 |
| 157 #endif // CHROME_BROWSER_UI_GTK_INFOBARS_INFOBAR_GTK_H_ | 155 #endif // CHROME_BROWSER_UI_GTK_INFOBARS_INFOBAR_GTK_H_ |
| OLD | NEW |