Home | History | Annotate | Download | only in network
      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/tray_network_state_observer.h"
      9 #include "ash/system/tray/system_tray_item.h"
     10 #include "base/memory/scoped_ptr.h"
     11 
     12 namespace ash {
     13 namespace internal {
     14 
     15 class TrayNetworkStateObserver;
     16 
     17 namespace tray {
     18 class NetworkDetailedView;
     19 class VpnDefaultView;
     20 class VpnDetailedView;
     21 }
     22 
     23 class TrayVPN : public SystemTrayItem,
     24                 public TrayNetworkStateObserver::Delegate {
     25  public:
     26   explicit TrayVPN(SystemTray* system_tray);
     27   virtual ~TrayVPN();
     28 
     29   // SystemTrayItem
     30   virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE;
     31   virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE;
     32   virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE;
     33   virtual views::View* CreateNotificationView(
     34       user::LoginStatus status) OVERRIDE;
     35   virtual void DestroyTrayView() OVERRIDE;
     36   virtual void DestroyDefaultView() OVERRIDE;
     37   virtual void DestroyDetailedView() OVERRIDE;
     38   virtual void DestroyNotificationView() OVERRIDE;
     39   virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE;
     40   virtual void UpdateAfterShelfAlignmentChange(
     41       ShelfAlignment alignment) OVERRIDE;
     42 
     43   // TrayNetworkStateObserver::Delegate
     44   virtual void NetworkStateChanged(bool list_changed) OVERRIDE;
     45   virtual void NetworkServiceChanged(
     46       const chromeos::NetworkState* network) OVERRIDE;
     47 
     48  private:
     49   tray::VpnDefaultView* default_;
     50   tray::NetworkDetailedView* detailed_;
     51   scoped_ptr<TrayNetworkStateObserver> network_state_observer_;
     52 
     53   DISALLOW_COPY_AND_ASSIGN(TrayVPN);
     54 };
     55 
     56 }  // namespace internal
     57 }  // namespace ash
     58 
     59 #endif  // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_VPN_H
     60