summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-03 19:39:24 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-03 19:39:24 +0000
commit5132483c2e2775f0e6bcc249e1438cf88dac97a2 (patch)
treeefa309ebfc998bec325fcfafa0663ec53982ae58 /chrome/browser/views
parente8bce8f868f0ffbd8d608461eb938ee4cc4c0020 (diff)
downloadchromium_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.cc21
-rw-r--r--chrome/browser/views/browser_actions_container.h8
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_;