- add sources.
[platform/framework/web/crosswalk.git] / src / ash / system / chromeos / network / tray_network.h
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 NetworkTrayView;
28 }
29
30 class TrayNetwork : public SystemTrayItem,
31                     public NetworkObserver,
32                     public TrayNetworkStateObserver::Delegate {
33  public:
34   explicit TrayNetwork(SystemTray* system_tray);
35   virtual ~TrayNetwork();
36
37   tray::NetworkDetailedView* detailed() { return detailed_; }
38
39   // SystemTrayItem
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;
49
50   // NetworkObserver
51   virtual void RequestToggleWifi() OVERRIDE;
52
53   // TrayNetworkStateObserver::Delegate
54   virtual void NetworkStateChanged(bool list_changed) OVERRIDE;
55   virtual void NetworkServiceChanged(
56       const chromeos::NetworkState* network) OVERRIDE;
57
58  private:
59   tray::NetworkTrayView* tray_;
60   tray::NetworkDefaultView* default_;
61   tray::NetworkDetailedView* detailed_;
62   bool request_wifi_view_;
63   scoped_ptr<TrayNetworkStateObserver> network_state_observer_;
64
65   DISALLOW_COPY_AND_ASSIGN(TrayNetwork);
66 };
67
68 }  // namespace internal
69 }  // namespace ash
70
71 #endif  // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H