• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 namespace aura {
13 class Window;
14 }
15 
16 namespace gfx {
17 class ImageSkia;
18 }
19 
20 namespace athena {
21 
22 // Mananges basic UI components on the screen such as background, and provide
23 // API for other UI components, such as window manager, home card, to
24 // create and manage their windows on the screen.
25 class ATHENA_EXPORT ScreenManager {
26  public:
27   // Creates, returns and deletes the singleton object of the ScreenManager
28   // implementation.
29   static ScreenManager* Create(aura::Window* root);
30   static ScreenManager* Get();
31   static void Shutdown();
32 
~ScreenManager()33   virtual ~ScreenManager() {}
34 
35   // Creates the container window that is used when creating a normal
36   // widget without specific parent.
37   virtual aura::Window* CreateDefaultContainer(const std::string& name) = 0;
38 
39   // Creates the container window on the screen.
40   virtual aura::Window* CreateContainer(const std::string& name) = 0;
41 
42   // Return the context object to be used for widget creation.
43   virtual aura::Window* GetContext() = 0;
44 
45   // Sets the background image.
46   virtual void SetBackgroundImage(const gfx::ImageSkia& image) = 0;
47 };
48 
49 }  // namespace athena
50 
51 #endif  // ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_H_
52