Chromium Code Reviews| Index: chrome/browser/chromeos/brightness_bubble.cc |
| diff --git a/chrome/browser/chromeos/brightness_bubble.cc b/chrome/browser/chromeos/brightness_bubble.cc |
| index 7c149aacde2b3e23cb1fcf20960756688df41a0c..80dfe94dd8670be3caacfcbb3078075bf16c3302 100644 |
| --- a/chrome/browser/chromeos/brightness_bubble.cc |
| +++ b/chrome/browser/chromeos/brightness_bubble.cc |
| @@ -7,22 +7,66 @@ |
| #include "base/memory/singleton.h" |
| #include "grit/theme_resources.h" |
| #include "ui/base/resource/resource_bundle.h" |
| +#include "views/widget/widget.h" |
| namespace chromeos { |
| -BrightnessBubble::BrightnessBubble() |
| - : SettingLevelBubble( |
| - ResourceBundle::GetSharedInstance().GetBitmapNamed( |
| - IDR_BRIGHTNESS_BUBBLE_ICON), |
| - ResourceBundle::GetSharedInstance().GetBitmapNamed( |
| - IDR_BRIGHTNESS_BUBBLE_ICON), |
| - ResourceBundle::GetSharedInstance().GetBitmapNamed( |
| - IDR_BRIGHTNESS_BUBBLE_ICON)) { |
| -} |
| - |
| // static |
| BrightnessBubble* BrightnessBubble::GetInstance() { |
| return Singleton<BrightnessBubble>::get(); |
| } |
| +void BrightnessBubble::OnWidgetClosing(views::Widget* widget) { |
| + // Bubble faded out. |
| + if (widget_ == widget) |
| + widget_closed_ = true; |
|
Daniel Erat
2011/10/24 15:52:10
i don't understand why you need a widget_closed_ m
alicet1
2011/10/24 17:41:36
actually, yes!
|
| +} |
| + |
| +void BrightnessBubble::ShowBubble(double percent, bool enabled) { |
| + MaybeCreateWidget(percent, enabled); |
| + SettingLevelBubble::ShowBubble(widget_, percent, enabled); |
| +} |
| + |
| +void BrightnessBubble::UpdateWithoutShowingBubble(double percent, |
| + bool enabled) { |
| + MaybeCreateWidget(percent, enabled); |
| + static_cast<SettingLevelBubble*>(widget_->widget_delegate()) |
| + ->UpdateWithoutShowingBubble(percent, enabled); |
| +} |
| + |
| +void BrightnessBubble::HideBubble() { |
| + if (widget_ && !widget_closed_) { |
| + widget_->RemoveObserver(this); |
| + widget_->Close(); |
| + } |
| +} |
| + |
| +BrightnessBubble::BrightnessBubble() |
| + : widget_(NULL), |
| + widget_closed_(false) {} |
| + |
| +BrightnessBubble::~BrightnessBubble() { |
| + if (widget_ && !widget_closed_) { |
| + widget_->RemoveObserver(this); |
| + widget_closed_ = true; |
| + widget_ = NULL; |
| + } |
| +} |
| + |
| +void BrightnessBubble::MaybeCreateWidget(double percent, bool enabled) { |
| + if (!widget_ || widget_closed_) { |
| + widget_ = SettingLevelBubble::CreateBubble( |
| + ResourceBundle::GetSharedInstance().GetBitmapNamed( |
| + IDR_BRIGHTNESS_BUBBLE_ICON), |
| + ResourceBundle::GetSharedInstance().GetBitmapNamed( |
| + IDR_BRIGHTNESS_BUBBLE_ICON), |
| + ResourceBundle::GetSharedInstance().GetBitmapNamed( |
| + IDR_BRIGHTNESS_BUBBLE_ICON), |
| + percent, |
| + enabled); |
| + widget_->AddObserver(this); |
| + widget_closed_ = false; |
| + } |
| +} |
| + |
| } // namespace chromeos |