diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-03 19:39:24 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-03 19:39:24 +0000 |
commit | 5132483c2e2775f0e6bcc249e1438cf88dac97a2 (patch) | |
tree | efa309ebfc998bec325fcfafa0663ec53982ae58 /chrome/browser/views | |
parent | e8bce8f868f0ffbd8d608461eb938ee4cc4c0020 (diff) | |
download | chromium_src-5132483c2e2775f0e6bcc249e1438cf88dac97a2.zip chromium_src-5132483c2e2775f0e6bcc249e1438cf88dac97a2.tar.gz chromium_src-5132483c2e2775f0e6bcc249e1438cf88dac97a2.tar.bz2 |
Add an API to manipulate the browser action badge.
BUG=23268
Review URL: http://codereview.chromium.org/256032
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27951 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r-- | chrome/browser/views/browser_actions_container.cc | 21 | ||||
-rw-r--r-- | chrome/browser/views/browser_actions_container.h | 8 |
2 files changed, 13 insertions, 16 deletions
diff --git a/chrome/browser/views/browser_actions_container.cc b/chrome/browser/views/browser_actions_container.cc index 73981c29..2fba91b 100644 --- a/chrome/browser/views/browser_actions_container.cc +++ b/chrome/browser/views/browser_actions_container.cc @@ -51,6 +51,8 @@ class BrowserActionImageView : public views::MenuButton, BrowserActionsContainer* panel); ~BrowserActionImageView(); + ExtensionActionState* browser_action_state() { return browser_action_state_; } + // Overridden from views::ButtonListener: virtual void ButtonPressed(views::Button* sender, const views::Event& event); @@ -162,6 +164,7 @@ void BrowserActionImageView::OnStateUpdated() { SetIcon(*image); SetTooltipText(ASCIIToWide(browser_action_state_->title())); panel_->OnBrowserActionVisibilityChanged(); + SchedulePaint(); } void BrowserActionImageView::Observe(NotificationType type, @@ -358,7 +361,7 @@ gfx::Size BrowserActionsContainer::GetPreferredSize() { void BrowserActionsContainer::Layout() { for (size_t i = 0; i < browser_action_views_.size(); ++i) { - views::TextButton* view = browser_action_views_[i]; + BrowserActionImageView* view = browser_action_views_[i]; int x = kHorizontalPadding + i * kIconSize; view->SetBounds(x, kControlVertOffset, kIconSize, height() - (2 * kControlVertOffset)); @@ -400,20 +403,18 @@ void BrowserActionsContainer::BubbleLostFocus(BrowserBubble* bubble) { void BrowserActionsContainer::PaintChildren(gfx::Canvas* canvas) { View::PaintChildren(canvas); - // TODO(aa): Hook this up to the API to feed the badge color and text - // dynamically. - std::string text; for (size_t i = 0; i < browser_action_views_.size(); ++i) { - if (i > 0) { - text += IntToString(i); - PaintBadge(canvas, browser_action_views_[i], - SkColorSetARGB(255, 218, 0, 24), text); - } + BrowserActionImageView* view = browser_action_views_[i]; + const std::string& text = view->browser_action_state()->badge_text(); + SkColor* color = view->browser_action_state()->badge_background_color(); + + if (!text.empty()) + PaintBadge(canvas, browser_action_views_[i], *color, text); } } void BrowserActionsContainer::PaintBadge(gfx::Canvas* canvas, - views::TextButton* view, + BrowserActionImageView* view, const SkColor& badge_color, const std::string& text) { const int kTextSize = 8; diff --git a/chrome/browser/views/browser_actions_container.h b/chrome/browser/views/browser_actions_container.h index b0aebec..dc77d38 100644 --- a/chrome/browser/views/browser_actions_container.h +++ b/chrome/browser/views/browser_actions_container.h @@ -18,10 +18,6 @@ class ExtensionAction; class ExtensionPopup; class Profile; class ToolbarView; -namespace views { -class MenuButton; -class TextButton; -} //////////////////////////////////////////////////////////////////////////////// // @@ -75,12 +71,12 @@ class BrowserActionsContainer : public views::View, virtual void PaintChildren(gfx::Canvas* canvas); // Paints an individual badge. - virtual void PaintBadge(gfx::Canvas* canvas, views::TextButton* button, + virtual void PaintBadge(gfx::Canvas* canvas, BrowserActionImageView* button, const SkColor& badge_color, const std::string& text); // The vector of browser actions (icons/image buttons for each action). - std::vector<views::MenuButton*> browser_action_views_; + std::vector<BrowserActionImageView*> browser_action_views_; NotificationRegistrar registrar_; |