1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/system/chromeos/label_tray_view.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/system/tray/hover_highlight_view.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/system/tray/tray_constants.h" 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/system/tray/view_click_listener.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/gfx/font.h" 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "ui/views/border.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/views/controls/label.h" 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/views/layout/fill_layout.h" 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace ash { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)LabelTrayView::LabelTrayView(ViewClickListener* click_listener, 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int icon_resource_id) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : click_listener_(click_listener), 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) icon_resource_id_(icon_resource_id) { 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetLayoutManager(new views::FillLayout()); 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetVisible(false); 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)LabelTrayView::~LabelTrayView() { 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void LabelTrayView::SetMessage(const base::string16& message) { 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (message_ == message) 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) message_ = message; 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RemoveAllChildViews(true); 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!message_.empty()) { 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddChildView(CreateChildView(message_)); 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetVisible(true); 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else { 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SetVisible(false); 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)views::View* LabelTrayView::CreateChildView( 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::string16& message) const { 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) HoverHighlightView* child = new HoverHighlightView(click_listener_); 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (icon_resource_id_) { 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const gfx::ImageSkia* icon = rb.GetImageSkiaNamed(icon_resource_id_); 497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) child->AddIconAndLabel(*icon, message, gfx::Font::NORMAL); 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) child->SetBorder(views::Border::CreateEmptyBorder( 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 0, kTrayPopupPaddingHorizontal, 0, kTrayPopupPaddingHorizontal)); 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch child->text_label()->SetMultiLine(true); 537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) child->text_label()->SizeToFit(kTrayNotificationContentsWidth); 547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } else { 55a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch child->AddLabel(message, gfx::ALIGN_LEFT, gfx::Font::NORMAL); 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch child->text_label()->SetMultiLine(true); 577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) child->text_label()->SizeToFit(kTrayNotificationContentsWidth + 587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) kNotificationIconWidth); 597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) child->text_label()->SetAllowCharacterBreak(true); 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) child->SetExpandable(true); 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) child->SetVisible(true); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return child; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace ash 67