diff options
Diffstat (limited to 'chrome/browser/chromeos/setting_level_bubble.cc')
-rw-r--r-- | chrome/browser/chromeos/setting_level_bubble.cc | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/chrome/browser/chromeos/setting_level_bubble.cc b/chrome/browser/chromeos/setting_level_bubble.cc index 1847413..eb918e9 100644 --- a/chrome/browser/chromeos/setting_level_bubble.cc +++ b/chrome/browser/chromeos/setting_level_bubble.cc @@ -55,10 +55,14 @@ static views::Widget* GetToplevelWidget() { return root->GetWidget(); } -SettingLevelBubble::SettingLevelBubble(SkBitmap* icon) +SettingLevelBubble::SettingLevelBubble(SkBitmap* increase_icon, + SkBitmap* decrease_icon, + SkBitmap* zero_icon) : previous_percent_(-1), current_percent_(-1), - icon_(icon), + increase_icon_(increase_icon), + decrease_icon_(decrease_icon), + zero_icon_(zero_icon), bubble_(NULL), view_(NULL), animation_(this) { @@ -74,13 +78,20 @@ void SettingLevelBubble::ShowBubble(int percent) { if (previous_percent_ == -1) previous_percent_ = percent; current_percent_ = percent; + + SkBitmap* icon = increase_icon_; + if (current_percent_ == 0) + icon = zero_icon_; + else if (current_percent_ < previous_percent_) + icon = decrease_icon_; + if (!bubble_) { views::Widget* widget = GetToplevelWidget(); if (widget == NULL) return; DCHECK(view_ == NULL); view_ = new SettingLevelBubbleView; - view_->Init(icon_, previous_percent_); + view_->Init(icon, previous_percent_); // Calculate position of the bubble. gfx::Rect bounds; widget->GetBounds(&bounds, false); @@ -94,6 +105,7 @@ void SettingLevelBubble::ShowBubble(int percent) { } else { DCHECK(view_); timeout_timer_.Stop(); + view_->SetIcon(icon); } if (animation_.is_animating()) animation_.End(); |