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