tray_vpn.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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_VPN_H 6#define ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_VPN_H 7 8#include "ash/system/chromeos/network/network_observer.h" 9#include "ash/system/chromeos/network/tray_network_state_observer.h" 10#include "ash/system/tray/system_tray_item.h" 11#include "base/memory/scoped_ptr.h" 12 13namespace ash { 14namespace internal { 15 16class TrayNetworkStateObserver; 17 18namespace tray { 19class NetworkDetailedView; 20class VpnDefaultView; 21class VpnDetailedView; 22} 23 24class TrayVPN : public SystemTrayItem, 25 public NetworkObserver, 26 public TrayNetworkStateObserver::Delegate { 27 public: 28 explicit TrayVPN(SystemTray* system_tray); 29 virtual ~TrayVPN(); 30 31 // SystemTrayItem 32 virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE; 33 virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 34 virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 35 virtual views::View* CreateNotificationView( 36 user::LoginStatus status) OVERRIDE; 37 virtual void DestroyTrayView() OVERRIDE; 38 virtual void DestroyDefaultView() OVERRIDE; 39 virtual void DestroyDetailedView() OVERRIDE; 40 virtual void DestroyNotificationView() OVERRIDE; 41 virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE; 42 virtual void UpdateAfterShelfAlignmentChange( 43 ShelfAlignment alignment) OVERRIDE; 44 45 // NetworkObserver 46 virtual void OnNetworkRefresh(const NetworkIconInfo& info) OVERRIDE; 47 virtual void SetNetworkMessage(NetworkTrayDelegate* delegate, 48 MessageType message_type, 49 NetworkType network_type, 50 const string16& title, 51 const string16& message, 52 const std::vector<string16>& links) OVERRIDE; 53 virtual void ClearNetworkMessage(MessageType message_type) OVERRIDE; 54 virtual void OnWillToggleWifi() OVERRIDE; 55 56 // TrayNetworkStateObserver::Delegate 57 virtual void NetworkStateChanged(bool list_changed) OVERRIDE; 58 virtual void NetworkServiceChanged( 59 const chromeos::NetworkState* network) OVERRIDE; 60 61 private: 62 tray::VpnDefaultView* default_; 63 tray::NetworkDetailedView* detailed_; 64 scoped_ptr<TrayNetworkStateObserver> network_state_observer_; 65 66 DISALLOW_COPY_AND_ASSIGN(TrayVPN); 67}; 68 69} // namespace internal 70} // namespace ash 71 72#endif // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_VPN_H 73