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.
5 #ifndef ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H
6 #define ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H
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"
25 class NetworkDefaultView;
26 class NetworkDetailedView;
27 class NetworkTrayView;
30 class TrayNetwork : public SystemTrayItem,
31 public NetworkObserver,
32 public TrayNetworkStateObserver::Delegate {
34 explicit TrayNetwork(SystemTray* system_tray);
35 virtual ~TrayNetwork();
37 tray::NetworkDetailedView* detailed() { return detailed_; }
40 virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE;
41 virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE;
42 virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE;
43 virtual void DestroyTrayView() OVERRIDE;
44 virtual void DestroyDefaultView() OVERRIDE;
45 virtual void DestroyDetailedView() OVERRIDE;
46 virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE;
47 virtual void UpdateAfterShelfAlignmentChange(
48 ShelfAlignment alignment) OVERRIDE;
51 virtual void RequestToggleWifi() OVERRIDE;
53 // TrayNetworkStateObserver::Delegate
54 virtual void NetworkStateChanged(bool list_changed) OVERRIDE;
55 virtual void NetworkServiceChanged(
56 const chromeos::NetworkState* network) OVERRIDE;
59 tray::NetworkTrayView* tray_;
60 tray::NetworkDefaultView* default_;
61 tray::NetworkDetailedView* detailed_;
62 bool request_wifi_view_;
63 scoped_ptr<TrayNetworkStateObserver> network_state_observer_;
65 DISALLOW_COPY_AND_ASSIGN(TrayNetwork);
68 } // namespace internal
71 #endif // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H