1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H 6#define ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H 7 8#include <set> 9 10#include "ash/system/chromeos/network/network_icon.h" 11#include "ash/system/chromeos/network/network_observer.h" 12#include "ash/system/chromeos/network/tray_network_state_observer.h" 13#include "ash/system/tray/system_tray_item.h" 14#include "base/memory/scoped_ptr.h" 15#include "base/time/time.h" 16 17namespace chromeos { 18class NetworkState; 19} 20 21namespace ash { 22namespace internal { 23 24namespace tray { 25class NetworkDefaultView; 26class NetworkDetailedView; 27class NetworkMessages; 28class NetworkMessageView; 29class NetworkNotificationView; 30class NetworkTrayView; 31} 32 33class TrayNetwork : public SystemTrayItem, 34 public NetworkObserver, 35 public TrayNetworkStateObserver::Delegate { 36 public: 37 explicit TrayNetwork(SystemTray* system_tray); 38 virtual ~TrayNetwork(); 39 40 tray::NetworkDetailedView* detailed() { return detailed_; } 41 42 // SystemTrayItem 43 virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE; 44 virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 45 virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 46 virtual views::View* CreateNotificationView( 47 user::LoginStatus status) OVERRIDE; 48 virtual void DestroyTrayView() OVERRIDE; 49 virtual void DestroyDefaultView() OVERRIDE; 50 virtual void DestroyDetailedView() OVERRIDE; 51 virtual void DestroyNotificationView() OVERRIDE; 52 virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE; 53 virtual void UpdateAfterShelfAlignmentChange( 54 ShelfAlignment alignment) OVERRIDE; 55 56 // NetworkObserver 57 virtual void SetNetworkMessage( 58 NetworkTrayDelegate* delegate, 59 MessageType message_type, 60 NetworkType network_type, 61 const base::string16& title, 62 const base::string16& message, 63 const std::vector<base::string16>& links) OVERRIDE; 64 virtual void ClearNetworkMessage(MessageType message_type) OVERRIDE; 65 virtual void RequestToggleWifi() OVERRIDE; 66 67 // TrayNetworkStateObserver::Delegate 68 virtual void NetworkStateChanged(bool list_changed) OVERRIDE; 69 virtual void NetworkServiceChanged( 70 const chromeos::NetworkState* network) OVERRIDE; 71 72 private: 73 friend class tray::NetworkMessageView; 74 friend class tray::NetworkNotificationView; 75 76 void LinkClicked(MessageType message_type, int link_id); 77 78 const tray::NetworkMessages* messages() const { return messages_.get(); } 79 80 tray::NetworkTrayView* tray_; 81 tray::NetworkDefaultView* default_; 82 tray::NetworkDetailedView* detailed_; 83 tray::NetworkNotificationView* notification_; 84 scoped_ptr<tray::NetworkMessages> messages_; 85 bool request_wifi_view_; 86 scoped_ptr<TrayNetworkStateObserver> network_state_observer_; 87 88 DISALLOW_COPY_AND_ASSIGN(TrayNetwork); 89}; 90 91} // namespace internal 92} // namespace ash 93 94#endif // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H 95