display_configurator_animation.h revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
1// Copyright 2014 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_DISPLAY_DISPLAY_CONFIGURATOR_ANIMATION_H_ 6#define ASH_DISPLAY_DISPLAY_CONFIGURATOR_ANIMATION_H_ 7 8#include <map> 9 10#include "ash/ash_export.h" 11#include "base/callback.h" 12#include "base/timer/timer.h" 13#include "ui/display/chromeos/display_configurator.h" 14 15namespace aura { 16class RootWindow; 17class Window; 18} // namespace aura 19 20namespace ui { 21class Layer; 22} // namespace ui 23 24namespace ash { 25 26// DisplayConfiguratorAnimation provides the visual effects for 27// ui::DisplayConfigurator, such like fade-out/in during changing 28// the display mode. 29class ASH_EXPORT DisplayConfiguratorAnimation 30 : public ui::DisplayConfigurator::Observer { 31 public: 32 DisplayConfiguratorAnimation(); 33 virtual ~DisplayConfiguratorAnimation(); 34 35 // Starts the fade-out animation for the all root windows. It will 36 // call |callback| once all of the animations have finished. 37 void StartFadeOutAnimation(base::Closure callback); 38 39 // Starts the animation to clear the fade-out animation effect 40 // for the all root windows. 41 void StartFadeInAnimation(); 42 43 protected: 44 // ui::DisplayConfigurator::Observer overrides: 45 virtual void OnDisplayModeChanged( 46 const ui::DisplayConfigurator::DisplayStateList& outputs) OVERRIDE; 47 virtual void OnDisplayModeChangeFailed( 48 ui::MultipleDisplayState failed_new_state) OVERRIDE; 49 50 private: 51 // Clears all hiding layers. Note that in case that this method is called 52 // during an animation, the method call will cancel all of the animations 53 // and *not* call the registered callback. 54 void ClearHidingLayers(); 55 56 std::map<aura::Window*, ui::Layer*> hiding_layers_; 57 scoped_ptr<base::OneShotTimer<DisplayConfiguratorAnimation> > timer_; 58 59 DISALLOW_COPY_AND_ASSIGN(DisplayConfiguratorAnimation); 60}; 61 62} // namespace ash 63 64#endif // ASH_DISPLAY_DISPLAY_CONFIGURATION_CONTROLLER_H_ 65