Index: ash/system/tray/tray_views.cc |
diff --git a/ash/system/tray/tray_views.cc b/ash/system/tray/tray_views.cc |
index 573f58dbbcba91b3215b703ee734c58aa7078c36..7627e2c5e8a1f3c80116f9df35c797f998dd3b99 100644 |
--- a/ash/system/tray/tray_views.cc |
+++ b/ash/system/tray/tray_views.cc |
@@ -27,6 +27,18 @@ namespace { |
const int kIconPaddingLeft = 5; |
const int kPaddingAroundButtons = 5; |
+const int kBarImagesActive[] = { |
+ IDR_AURA_UBER_TRAY_BAR_BUTTON_ACTIVE_LEFT, |
+ IDR_AURA_UBER_TRAY_BAR_BUTTON_ACTIVE_CENTER, |
+ IDR_AURA_UBER_TRAY_BAR_BUTTON_ACTIVE_RIGHT, |
+}; |
+ |
+const int kBarImagesDisabled[] = { |
+ IDR_AURA_UBER_TRAY_BAR_BUTTON_DISABLED_LEFT, |
+ IDR_AURA_UBER_TRAY_BAR_BUTTON_DISABLED_CENTER, |
+ IDR_AURA_UBER_TRAY_BAR_BUTTON_DISABLED_RIGHT, |
+}; |
+ |
views::View* CreatePopupHeaderButtonsContainer() { |
views::View* view = new views::View; |
view->SetLayoutManager(new |
@@ -430,6 +442,83 @@ void TrayPopupHeaderButton::StateChanged() { |
} |
//////////////////////////////////////////////////////////////////////////////// |
+// TrayBarButtonWithTitle |
+ |
+class TrayBarButtonWithTitle::TrayBarButton |
+ : public views::View { |
+ public: |
+ TrayBarButton(const int bar_active_images[], const int bar_disabled_images[]) |
+ : views::View(), |
+ bar_active_images_(bar_active_images), |
+ bar_disabled_images_(bar_disabled_images), |
+ painter_(new views::HorizontalPainter(bar_active_images_)){ |
+ } |
+ virtual ~TrayBarButton() {} |
+ |
+ // Overriden from views::View |
+ virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { |
+ painter_->Paint(canvas, size()); |
+ } |
+ |
+ void Update(bool control_on) { |
+ painter_.reset(new views::HorizontalPainter( |
+ control_on ? bar_active_images_ : bar_disabled_images_)); |
+ SchedulePaint(); |
+ } |
+ |
+ private: |
+ const int* bar_active_images_; |
+ const int* bar_disabled_images_; |
+ scoped_ptr<views::HorizontalPainter> painter_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TrayBarButton); |
+}; |
+ |
+TrayBarButtonWithTitle::TrayBarButtonWithTitle(views::ButtonListener* listener, |
+ int title_id, |
+ int width) |
+ : views::CustomButton(listener), |
+ image_(new TrayBarButton(kBarImagesActive, kBarImagesDisabled)), |
+ title_(new views::Label), |
+ width_(width) { |
+ AddChildView(image_); |
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
+ string16 text = rb.GetLocalizedString(title_id); |
+ title_->SetText(text); |
+ AddChildView(title_); |
+ |
+ image_height_ = ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
+ kBarImagesActive[0]).ToImageSkia()->height(); |
+} |
+ |
+TrayBarButtonWithTitle::~TrayBarButtonWithTitle() {} |
+ |
+gfx::Size TrayBarButtonWithTitle::GetPreferredSize() { |
+ return gfx::Size(width_, kTrayPopupItemHeight); |
+} |
+ |
+void TrayBarButtonWithTitle::Layout() { |
+ gfx::Size title_size = title_->GetPreferredSize(); |
+ gfx::Rect rect(GetContentsBounds()); |
+ int bar_image_y = rect.height() / 2 - image_height_ / 2; |
+ gfx::Rect bar_image_rect(rect.x(), |
+ bar_image_y, |
+ rect.width(), |
+ image_height_); |
+ image_->SetBoundsRect(bar_image_rect); |
+ // The image_ has some empty space below the bar image, move the title |
+ // a little bit up to look closer to the bar. |
+ title_->SetBounds(rect.x(), |
+ bar_image_y + image_height_ - 3, |
+ rect.width(), |
sadrul
2012/07/23 21:02:30
Instead of doing this, could there be a box-layout
jennyz
2012/07/23 21:22:03
It seems more flexible to control the layout by pr
|
+ title_size.height()); |
+} |
+ |
+void TrayBarButtonWithTitle::UpdateButton(bool control_on) { |
+ image_->Update(control_on); |
+} |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
// SpecialPopupRow |
SpecialPopupRow::SpecialPopupRow() |