Index: chrome/browser/views/toolbar_star_toggle.cc |
=================================================================== |
--- chrome/browser/views/toolbar_star_toggle.cc (revision 38044) |
+++ chrome/browser/views/toolbar_star_toggle.cc (working copy) |
@@ -4,12 +4,18 @@ |
#include "chrome/browser/views/toolbar_star_toggle.h" |
+#include "app/l10n_util.h" |
#include "app/resource_bundle.h" |
+#include "chrome/app/chrome_dll_resource.h" |
#include "chrome/browser/bookmarks/bookmark_model.h" |
#include "chrome/browser/browser.h" |
+#include "chrome/browser/browser_theme_provider.h" |
+#include "chrome/browser/bubble_positioner.h" |
+#include "chrome/browser/profile.h" |
#include "chrome/browser/views/browser_dialogs.h" |
-#include "chrome/browser/views/toolbar_view.h" |
+#include "chrome/browser/view_ids.h" |
#include "googleurl/src/gurl.h" |
+#include "grit/generated_resources.h" |
#include "grit/theme_resources.h" |
using base::TimeTicks; |
@@ -27,15 +33,42 @@ |
// with the bubble because it has other native windows. |
static const int64 kDisallowClickMS = 40; |
-ToolbarStarToggle::ToolbarStarToggle(views::ButtonListener* listener, |
- ToolbarView* host) |
- : ToggleImageButton(listener), |
- host_(host), |
+ToolbarStarToggle::ToolbarStarToggle(views::ButtonListener* button_listener) |
+ : ToggleImageButton(button_listener), |
+ profile_(NULL), |
+ host_view_(NULL), |
+ bubble_positioner_(NULL), |
ignore_click_(false) { |
} |
+void ToolbarStarToggle::Init() { |
+ ThemeProvider* tp = profile_->GetThemeProvider(); |
+ |
+ set_tag(IDC_BOOKMARK_PAGE); |
+ SetTooltipText(l10n_util::GetString(IDS_TOOLTIP_STAR)); |
+ SetToggledTooltipText(l10n_util::GetString(IDS_TOOLTIP_STARRED)); |
+ SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_STAR)); |
+ SetID(VIEW_ID_STAR_BUTTON); |
+ |
+ // Load images. |
+ SkColor color = tp->GetColor(BrowserThemeProvider::COLOR_BUTTON_BACKGROUND); |
+ SkBitmap* background = tp->GetBitmapNamed(IDR_THEME_BUTTON_BACKGROUND); |
+ |
+ SetImage(views::CustomButton::BS_NORMAL, tp->GetBitmapNamed(IDR_STAR)); |
+ SetImage(views::CustomButton::BS_HOT, tp->GetBitmapNamed(IDR_STAR_H)); |
+ SetImage(views::CustomButton::BS_PUSHED, tp->GetBitmapNamed(IDR_STAR_P)); |
+ SetImage(views::CustomButton::BS_DISABLED, tp->GetBitmapNamed(IDR_STAR_D)); |
+ SetToggledImage(views::CustomButton::BS_NORMAL, |
+ tp->GetBitmapNamed(IDR_STARRED)); |
+ SetToggledImage(views::CustomButton::BS_HOT, |
+ tp->GetBitmapNamed(IDR_STARRED_H)); |
+ SetToggledImage(views::CustomButton::BS_PUSHED, |
+ tp->GetBitmapNamed(IDR_STARRED_P)); |
+ SetBackground(color, background, tp->GetBitmapNamed(IDR_STAR_MASK)); |
+} |
+ |
void ToolbarStarToggle::ShowStarBubble(const GURL& url, bool newly_bookmarked) { |
- gfx::Rect bounds(host_->GetLocationStackBounds()); |
+ gfx::Rect bounds(bubble_positioner_->GetLocationStackBounds()); |
gfx::Point star_location; |
views::View::ConvertPointToScreen(this, &star_location); |
// The visual center of the star is not centered within the bounds. The star |
@@ -49,12 +82,12 @@ |
// order to place the star's central pixel on the right side of the bounds' |
// center-line, so that the arrow's center will line up. |
// |
- // TODO: If the InfoBubble used mirroring transformations maybe this could |
- // become symmetric (-1 : 1). |
+ // TODO(pkasting): If the InfoBubble used mirroring transformations maybe this |
+ // could become symmetric (-1 : 1). |
bounds.set_x(star_location.x() + (UILayoutIsRightToLeft() ? -2 : 1)); |
bounds.set_width(width()); |
- browser::ShowBookmarkBubbleView(host_->GetWindow(), bounds, this, |
- host_->profile(), url, newly_bookmarked); |
+ browser::ShowBookmarkBubbleView(host_view_->GetWindow(), bounds, this, |
+ profile_, url, newly_bookmarked); |
} |
bool ToolbarStarToggle::OnMousePressed(const views::MouseEvent& e) { |