Home | History | Annotate | Download | only in public
      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