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 ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_H_ 6 #define ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_H_ 7 8 #include <string> 9 10 #include "athena/athena_export.h" 11 #include "ui/gfx/display.h" 12 13 namespace aura { 14 class Window; 15 } 16 17 namespace athena { 18 class ScreenManagerDelegate; 19 20 // Mananges basic UI components on the screen such as background, and provide 21 // API for other UI components, such as window manager, home card, to 22 // create and manage their windows on the screen. 23 class ATHENA_EXPORT ScreenManager { 24 public: 25 struct ContainerParams { 26 ContainerParams(const std::string& name, int z_order_priority); 27 std::string name; 28 29 // True if the container can activate its child window. 30 bool can_activate_children; 31 32 // True if the container will grab all of input events. 33 bool grab_inputs; 34 35 // Defines the z_order priority of the container. 36 int z_order_priority; 37 }; 38 39 // Creates, returns and deletes the singleton object of the ScreenManager 40 // implementation. 41 static ScreenManager* Create(aura::Window* root); 42 static ScreenManager* Get(); 43 static void Shutdown(); 44 45 virtual ~ScreenManager() {} 46 47 // Creates the container window that is used when creating a normal 48 // widget without specific parent. 49 virtual aura::Window* CreateDefaultContainer( 50 const ContainerParams& params) = 0; 51 52 // Creates the container window on the screen. 53 virtual aura::Window* CreateContainer(const ContainerParams& params) = 0; 54 55 // Return the context object to be used for widget creation. 56 virtual aura::Window* GetContext() = 0; 57 58 // Set screen rotation. 59 // TODO(flackr): Extract and use ash DisplayManager to set rotation 60 // instead: http://crbug.com/401044. 61 virtual void SetRotation(gfx::Display::Rotation rotation) = 0; 62 virtual void SetRotationLocked(bool rotation_locked) = 0; 63 }; 64 65 } // namespace athena 66 67 #endif // ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_H_ 68