| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ | 5 #ifndef ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ |
| 6 #define ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ | 6 #define ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ |
| 7 | 7 |
| 8 #include "ash/ash_export.h" | 8 #include "ash/ash_export.h" |
| 9 #include "ash/display/display_controller.h" | 9 #include "ash/display/display_controller.h" |
| 10 #include "ash/shell_observer.h" |
| 10 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 11 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
| 12 #include "base/gtest_prod_util.h" | 13 #include "base/gtest_prod_util.h" |
| 13 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
| 15 #include "base/observer_list.h" | 16 #include "base/observer_list.h" |
| 16 #include "base/timer/timer.h" | 17 #include "base/timer/timer.h" |
| 17 #include "ui/compositor/layer.h" | 18 #include "ui/compositor/layer.h" |
| 18 #include "ui/gfx/image/image_skia.h" | 19 #include "ui/gfx/image/image_skia.h" |
| 19 | 20 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 // The width and heigh of wallpaper thumbnails. | 63 // The width and heigh of wallpaper thumbnails. |
| 63 ASH_EXPORT extern const int kWallpaperThumbnailWidth; | 64 ASH_EXPORT extern const int kWallpaperThumbnailWidth; |
| 64 ASH_EXPORT extern const int kWallpaperThumbnailHeight; | 65 ASH_EXPORT extern const int kWallpaperThumbnailHeight; |
| 65 | 66 |
| 66 class DesktopBackgroundControllerObserver; | 67 class DesktopBackgroundControllerObserver; |
| 67 class WallpaperResizer; | 68 class WallpaperResizer; |
| 68 | 69 |
| 69 // Loads selected desktop wallpaper from file system asynchronously and updates | 70 // Loads selected desktop wallpaper from file system asynchronously and updates |
| 70 // background layer if loaded successfully. | 71 // background layer if loaded successfully. |
| 71 class ASH_EXPORT DesktopBackgroundController | 72 class ASH_EXPORT DesktopBackgroundController |
| 72 : public DisplayController::Observer { | 73 : public DisplayController::Observer, |
| 74 public ShellObserver { |
| 73 public: | 75 public: |
| 74 enum BackgroundMode { | 76 enum BackgroundMode { |
| 75 BACKGROUND_NONE, | 77 BACKGROUND_NONE, |
| 76 BACKGROUND_IMAGE, | 78 BACKGROUND_IMAGE, |
| 77 }; | 79 }; |
| 78 | 80 |
| 79 DesktopBackgroundController(); | 81 DesktopBackgroundController(); |
| 80 virtual ~DesktopBackgroundController(); | 82 virtual ~DesktopBackgroundController(); |
| 81 | 83 |
| 82 BackgroundMode desktop_background_mode() const { | 84 BackgroundMode desktop_background_mode() const { |
| 83 return desktop_background_mode_; | 85 return desktop_background_mode_; |
| 84 } | 86 } |
| 85 | 87 |
| 86 void set_command_line_for_testing(base::CommandLine* command_line) { | 88 void set_command_line_for_testing(base::CommandLine* command_line) { |
| 87 command_line_for_testing_ = command_line; | 89 command_line_for_testing_ = command_line; |
| 88 } | 90 } |
| 89 | 91 |
| 90 // Add/Remove observers. | 92 // Add/Remove observers. |
| 91 void AddObserver(DesktopBackgroundControllerObserver* observer); | 93 void AddObserver(DesktopBackgroundControllerObserver* observer); |
| 92 void RemoveObserver(DesktopBackgroundControllerObserver* observer); | 94 void RemoveObserver(DesktopBackgroundControllerObserver* observer); |
| 93 | 95 |
| 94 // Provides current image on the background, or empty gfx::ImageSkia if there | 96 // Provides current image on the background, or empty gfx::ImageSkia if there |
| 95 // is no image, e.g. background is none. | 97 // is no image, e.g. background is none. |
| 96 gfx::ImageSkia GetWallpaper() const; | 98 gfx::ImageSkia GetWallpaper() const; |
| 97 | 99 |
| 98 WallpaperLayout GetWallpaperLayout() const; | 100 WallpaperLayout GetWallpaperLayout() const; |
| 99 | 101 |
| 100 // Initialize root window's background. | |
| 101 void OnRootWindowAdded(aura::Window* root_window); | |
| 102 | |
| 103 // Loads builtin wallpaper asynchronously and sets to current wallpaper | 102 // Loads builtin wallpaper asynchronously and sets to current wallpaper |
| 104 // after loaded. Returns true if the controller started loading the | 103 // after loaded. Returns true if the controller started loading the |
| 105 // wallpaper and false otherwise (i.e. the appropriate wallpaper was | 104 // wallpaper and false otherwise (i.e. the appropriate wallpaper was |
| 106 // already loading or loaded). | 105 // already loading or loaded). |
| 107 bool SetDefaultWallpaper(bool is_guest); | 106 bool SetDefaultWallpaper(bool is_guest); |
| 108 | 107 |
| 109 // Sets the user selected custom wallpaper. Called when user selected a file | 108 // Sets the user selected custom wallpaper. Called when user selected a file |
| 110 // from file system or changed the layout of wallpaper. | 109 // from file system or changed the layout of wallpaper. |
| 111 void SetCustomWallpaper(const gfx::ImageSkia& image, WallpaperLayout layout); | 110 void SetCustomWallpaper(const gfx::ImageSkia& image, WallpaperLayout layout); |
| 112 | 111 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 125 WallpaperResolution GetAppropriateResolution(); | 124 WallpaperResolution GetAppropriateResolution(); |
| 126 | 125 |
| 127 // Move all desktop widgets to locked container. | 126 // Move all desktop widgets to locked container. |
| 128 // Returns true if the desktop moved. | 127 // Returns true if the desktop moved. |
| 129 bool MoveDesktopToLockedContainer(); | 128 bool MoveDesktopToLockedContainer(); |
| 130 | 129 |
| 131 // Move all desktop widgets to unlocked container. | 130 // Move all desktop widgets to unlocked container. |
| 132 // Returns true if the desktop moved. | 131 // Returns true if the desktop moved. |
| 133 bool MoveDesktopToUnlockedContainer(); | 132 bool MoveDesktopToUnlockedContainer(); |
| 134 | 133 |
| 135 // Overrides DisplayController::Observer: | 134 // DisplayController::Observer: |
| 136 virtual void OnDisplayConfigurationChanged() OVERRIDE; | 135 virtual void OnDisplayConfigurationChanged() OVERRIDE; |
| 137 | 136 |
| 137 // ShellObserver: |
| 138 virtual void OnRootWindowAdded(aura::Window* root_window) OVERRIDE; |
| 139 |
| 138 private: | 140 private: |
| 139 friend class DesktopBackgroundControllerTest; | 141 friend class DesktopBackgroundControllerTest; |
| 140 FRIEND_TEST_ALL_PREFIXES(DesktopBackgroundControllerTest, GetMaxDisplaySize); | 142 FRIEND_TEST_ALL_PREFIXES(DesktopBackgroundControllerTest, GetMaxDisplaySize); |
| 141 | 143 |
| 142 // An operation to asynchronously loads wallpaper. | 144 // An operation to asynchronously loads wallpaper. |
| 143 class WallpaperLoader; | 145 class WallpaperLoader; |
| 144 | 146 |
| 145 // Returns true if the specified default wallpaper is already being | 147 // Returns true if the specified default wallpaper is already being |
| 146 // loaded by |wallpaper_loader_| or stored in |current_wallpaper_|. | 148 // loaded by |wallpaper_loader_| or stored in |current_wallpaper_|. |
| 147 bool DefaultWallpaperIsAlreadyLoadingOrLoaded( | 149 bool DefaultWallpaperIsAlreadyLoadingOrLoaded( |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 base::OneShotTimer<DesktopBackgroundController> timer_; | 223 base::OneShotTimer<DesktopBackgroundController> timer_; |
| 222 | 224 |
| 223 int wallpaper_reload_delay_; | 225 int wallpaper_reload_delay_; |
| 224 | 226 |
| 225 DISALLOW_COPY_AND_ASSIGN(DesktopBackgroundController); | 227 DISALLOW_COPY_AND_ASSIGN(DesktopBackgroundController); |
| 226 }; | 228 }; |
| 227 | 229 |
| 228 } // namespace ash | 230 } // namespace ash |
| 229 | 231 |
| 230 #endif // ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ | 232 #endif // ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ |
| OLD | NEW |