diff options
Diffstat (limited to 'chromium/ash/system/chromeos/network/network_icon_animation.h')
-rw-r--r-- | chromium/ash/system/chromeos/network/network_icon_animation.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/chromium/ash/system/chromeos/network/network_icon_animation.h b/chromium/ash/system/chromeos/network/network_icon_animation.h new file mode 100644 index 00000000000..a34b80ed969 --- /dev/null +++ b/chromium/ash/system/chromeos/network/network_icon_animation.h @@ -0,0 +1,48 @@ +// Copyright (c) 2013 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 ASH_SYSTEM_CHROMEOS_NETWORK_NETWORK_ICON_ANIMATION_H_ +#define ASH_SYSTEM_CHROMEOS_NETWORK_NETWORK_ICON_ANIMATION_H_ + +#include <set> +#include <string> + +#include "ash/ash_export.h" +#include "base/observer_list.h" +#include "ui/gfx/animation/animation_delegate.h" +#include "ui/gfx/animation/throb_animation.h" + +namespace ash { +namespace network_icon { + +class AnimationObserver; + +// Single instance class to handle icon animations and keep them in sync. +class ASH_EXPORT NetworkIconAnimation : public gfx::AnimationDelegate { + public: + NetworkIconAnimation(); + virtual ~NetworkIconAnimation(); + + // Returns the current animation value, [0-1]. + double GetAnimation(); + + // The animation stops when all observers have been removed. + // Be sure to remove observers when no associated icons are animating. + void AddObserver(AnimationObserver* observer); + void RemoveObserver(AnimationObserver* observer); + + // gfx::AnimationDelegate implementation. + virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE; + + static NetworkIconAnimation* GetInstance(); + + private: + gfx::ThrobAnimation animation_; + ObserverList<AnimationObserver> observers_; +}; + +} // namespace network_icon +} // namespace ash + +#endif // ASH_SYSTEM_CHROMEOS_NETWORK_NETWORK_ICON_ANIMATION_H_ |