• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 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 CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_DROPDOWN_BUTTON_H_
6 #define CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_DROPDOWN_BUTTON_H_
7 #pragma once
8 
9 #include "chrome/browser/chromeos/cros/network_library.h"
10 #include "chrome/browser/chromeos/status/network_menu.h"
11 #include "chrome/browser/chromeos/views/dropdown_button.h"
12 #include "ui/base/animation/animation_delegate.h"
13 #include "ui/base/animation/throb_animation.h"
14 
15 namespace chromeos {
16 
17 // The network dropdown button with menu. Used on welcome screen.
18 // This class will handle getting the networks to show connected network
19 // at top level and populating the menu.
20 // See NetworkMenu for more details.
21 class NetworkDropdownButton : public DropDownButton,
22                               public NetworkMenu,
23                               public NetworkLibrary::NetworkManagerObserver {
24  public:
25   NetworkDropdownButton(bool browser_mode, gfx::NativeWindow parent_window);
26   virtual ~NetworkDropdownButton();
27 
28   // ui::AnimationDelegate implementation.
29   virtual void AnimationProgressed(const ui::Animation* animation);
30 
31   // NetworkLibrary::NetworkManagerObserver implementation.
32   virtual void OnNetworkManagerChanged(NetworkLibrary* obj);
33 
34   // Refreshes button state. Used when language has been changed.
35   void Refresh();
36 
37  protected:
38   // NetworkMenu implementation:
IsBrowserMode()39   virtual bool IsBrowserMode() const { return browser_mode_; }
GetNativeWindow()40   virtual gfx::NativeWindow GetNativeWindow() const { return parent_window_; }
OpenButtonOptions()41   virtual void OpenButtonOptions() {}
ShouldOpenButtonOptions()42   virtual bool ShouldOpenButtonOptions() const { return false; }
43 
44  private:
45   bool browser_mode_;
46 
47   // The throb animation that does the wifi connecting animation.
48   ui::ThrobAnimation animation_connecting_;
49 
50   // The duration of the icon throbbing in milliseconds.
51   static const int kThrobDuration;
52 
53   gfx::NativeWindow parent_window_;
54 
55   DISALLOW_COPY_AND_ASSIGN(NetworkDropdownButton);
56 };
57 
58 }  // namespace chromeos
59 
60 #endif  // CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_DROPDOWN_BUTTON_H_
61