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_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 
     17 namespace chromeos {
     18 class NetworkState;
     19 }
     20 
     21 namespace ash {
     22 namespace internal {
     23 
     24 namespace tray {
     25 class NetworkDefaultView;
     26 class NetworkDetailedView;
     27 class NetworkMessages;
     28 class NetworkMessageView;
     29 class NetworkNotificationView;
     30 class NetworkTrayView;
     31 }
     32 
     33 class 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