1bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file. 4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#ifndef CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_DROPDOWN_BUTTON_H_ 6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#define CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_DROPDOWN_BUTTON_H_ 7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#pragma once 8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/chromeos/cros/network_library.h" 10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/chromeos/status/network_menu.h" 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/chromeos/views/dropdown_button.h" 123f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "ui/base/animation/animation_delegate.h" 133f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "ui/base/animation/throb_animation.h" 14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsennamespace chromeos { 16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// The network dropdown button with menu. Used on welcome screen. 18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// This class will handle getting the networks to show connected network 19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// at top level and populating the menu. 20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// See NetworkMenu for more details. 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass NetworkDropdownButton : public DropDownButton, 22bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public NetworkMenu, 23513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch public NetworkLibrary::NetworkManagerObserver { 24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public: 25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen NetworkDropdownButton(bool browser_mode, gfx::NativeWindow parent_window); 26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual ~NetworkDropdownButton(); 27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 283f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen // ui::AnimationDelegate implementation. 293f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual void AnimationProgressed(const ui::Animation* animation); 30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 31513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // NetworkLibrary::NetworkManagerObserver implementation. 32513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void OnNetworkManagerChanged(NetworkLibrary* obj); 33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Refreshes button state. Used when language has been changed. 35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen void Refresh(); 36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen protected: 38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // NetworkMenu implementation: 39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual bool IsBrowserMode() const { return browser_mode_; } 40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen virtual gfx::NativeWindow GetNativeWindow() const { return parent_window_; } 41513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void OpenButtonOptions() {} 42513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual bool ShouldOpenButtonOptions() const { return false; } 43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private: 45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen bool browser_mode_; 46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // The throb animation that does the wifi connecting animation. 483f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ui::ThrobAnimation animation_connecting_; 49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // The duration of the icon throbbing in milliseconds. 51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick static const int kThrobDuration; 52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen gfx::NativeWindow parent_window_; 54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen DISALLOW_COPY_AND_ASSIGN(NetworkDropdownButton); 56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}; 57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen} // namespace chromeos 59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#endif // CHROME_BROWSER_CHROMEOS_STATUS_NETWORK_DROPDOWN_BUTTON_H_ 61