tray_tracing.cc revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
1ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// found in the LICENSE file. 4ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 5ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/chromeos/tray_tracing.h" 6ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ash/shell.h" 8ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/tray/actionable_view.h" 9ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/tray/fixed_sized_image_view.h" 10ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/tray/system_tray.h" 11ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/tray/system_tray_delegate.h" 12ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/tray/system_tray_notifier.h" 13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/tray/tray_constants.h" 14ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "grit/ash_resources.h" 15ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "grit/ash_strings.h" 16ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ui/base/l10n/l10n_util.h" 17ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ui/base/resource/resource_bundle.h" 18ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ui/gfx/image/image.h" 19ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ui/views/controls/image_view.h" 20ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ui/views/controls/label.h" 21ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ui/views/layout/box_layout.h" 22ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 23ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace ash { 24ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochnamespace tray { 25ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass DefaultTracingView : public ActionableView { 27ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch public: 28ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch DefaultTracingView() { 29ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SetLayoutManager(new views::BoxLayout( 30ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch views::BoxLayout::kHorizontal, 311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) kTrayPopupPaddingHorizontal, 0, 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) kTrayPopupPaddingBetweenItems)); 33ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 34ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch image_ = new FixedSizedImageView(0, kTrayPopupItemHeight); 36ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch image_->SetImage( 37ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bundle.GetImageNamed(IDR_AURA_UBER_TRAY_TRACING).ToImageSkia()); 38ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch AddChildView(image_); 39ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 40ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch label_ = new views::Label(); 41ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch label_->SetMultiLine(true); 42ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 43ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch label_->SetText(bundle.GetLocalizedString(IDS_ASH_STATUS_TRAY_TRACING)); 44ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch AddChildView(label_); 45ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 46ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 47ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual ~DefaultTracingView() {} 48ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 49ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch private: 50ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Overridden from ActionableView. 51ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch virtual bool PerformAction(const ui::Event& event) OVERRIDE { 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) Shell::GetInstance()->system_tray_delegate()->ShowChromeSlow(); 53ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return true; 54ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 55ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 56ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch views::ImageView* image_; 57ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch views::Label* label_; 58ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 59ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch DISALLOW_COPY_AND_ASSIGN(DefaultTracingView); 60ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}; 61ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 62ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace tray 63ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 64ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch//////////////////////////////////////////////////////////////////////////////// 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// ash::TrayTracing 66ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 67ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTrayTracing::TrayTracing(SystemTray* system_tray) 68ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch : TrayImageItem(system_tray, IDR_AURA_UBER_TRAY_TRACING), 69ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch default_(NULL) { 70ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch DCHECK(Shell::GetInstance()->delegate()); 71ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch DCHECK(system_tray); 72ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch Shell::GetInstance()->system_tray_notifier()->AddTracingObserver(this); 73ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 74ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 75ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochTrayTracing::~TrayTracing() { 76ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch Shell::GetInstance()->system_tray_notifier()->RemoveTracingObserver(this); 77ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 78ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 79ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid TrayTracing::SetTrayIconVisible(bool visible) { 80ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (tray_view()) 81ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch tray_view()->SetVisible(visible); 82ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 83ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 84ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochbool TrayTracing::GetInitialVisibility() { 85ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return false; 86ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 87ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 88ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochviews::View* TrayTracing::CreateDefaultView(user::LoginStatus status) { 89ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch CHECK(default_ == NULL); 903551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (tray_view() && tray_view()->visible()) 913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) default_ = new tray::DefaultTracingView(); 92ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return default_; 93ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 94ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 95ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochviews::View* TrayTracing::CreateDetailedView(user::LoginStatus status) { 96ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return NULL; 97ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 98ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 99ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid TrayTracing::DestroyDefaultView() { 100ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch default_ = NULL; 101ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 102ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 103ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid TrayTracing::DestroyDetailedView() { 104ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 105ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 106ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid TrayTracing::OnTracingModeChanged(bool value) { 107ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SetTrayIconVisible(value); 108ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 109ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 110ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} // namespace ash 111