// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_DROPDOWN_BUTTON_H_ #define CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_DROPDOWN_BUTTON_H_ #pragma once #include "chrome/browser/chromeos/cros/network_library.h" #include "chrome/browser/chromeos/status/network_menu.h" #include "chrome/browser/chromeos/views/dropdown_button.h" #include "ui/base/animation/animation_delegate.h" #include "ui/base/animation/throb_animation.h" namespace chromeos { // The network dropdown button with menu. Used on welcome screen. // This class will handle getting the networks to show connected network // at top level and populating the menu. // See NetworkMenu for more details. class NetworkDropdownButton : public DropDownButton, public NetworkMenu, public NetworkLibrary::NetworkManagerObserver { public: NetworkDropdownButton(bool browser_mode, gfx::NativeWindow parent_window); virtual ~NetworkDropdownButton(); // ui::AnimationDelegate implementation. virtual void AnimationProgressed(const ui::Animation* animation); // NetworkLibrary::NetworkManagerObserver implementation. virtual void OnNetworkManagerChanged(NetworkLibrary* obj); // Refreshes button state. Used when language has been changed. void Refresh(); protected: // NetworkMenu implementation: virtual bool IsBrowserMode() const { return browser_mode_; } virtual gfx::NativeWindow GetNativeWindow() const { return parent_window_; } virtual void OpenButtonOptions() {} virtual bool ShouldOpenButtonOptions() const { return false; } private: bool browser_mode_; // The throb animation that does the wifi connecting animation. ui::ThrobAnimation animation_connecting_; // The duration of the icon throbbing in milliseconds. static const int kThrobDuration; gfx::NativeWindow parent_window_; DISALLOW_COPY_AND_ASSIGN(NetworkDropdownButton); }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_DROPDOWN_BUTTON_H_