diff options
-rw-r--r-- | ash/desktop_background/desktop_background_controller.h | 5 | ||||
-rw-r--r-- | ash/shell.cc | 7 | ||||
-rw-r--r-- | ash/wm/workspace_controller.cc | 11 | ||||
-rw-r--r-- | ash/wm/workspace_controller.h | 1 | ||||
-rw-r--r-- | chrome/browser/chromeos/background/desktop_background_observer.cc | 9 |
5 files changed, 30 insertions, 3 deletions
diff --git a/ash/desktop_background/desktop_background_controller.h b/ash/desktop_background/desktop_background_controller.h index f43cbbd..a368443 100644 --- a/ash/desktop_background/desktop_background_controller.h +++ b/ash/desktop_background/desktop_background_controller.h @@ -18,8 +18,11 @@ class UserWallpaperDelegate { public: virtual ~UserWallpaperDelegate() {} - // Gets the index of user selected wallpaper + // Gets the index of user selected wallpaper. virtual const int GetUserWallpaperIndex() = 0; + + // Open the set wallpaper page in the browser. + virtual void OpenSetWallpaperPage() = 0; }; // A class to listen for login and desktop background change events and set the diff --git a/ash/shell.cc b/ash/shell.cc index e033a5a..e397157 100644 --- a/ash/shell.cc +++ b/ash/shell.cc @@ -232,16 +232,19 @@ void CreateSpecialContainers(aura::RootWindow* root_window) { // This dummy class is used for shell unit tests. We dont have chrome delegate // in these tests. -class DummyUserWallpaperDelegate: public UserWallpaperDelegate { +class DummyUserWallpaperDelegate : public UserWallpaperDelegate { public: DummyUserWallpaperDelegate() {} virtual ~DummyUserWallpaperDelegate() {} - const int GetUserWallpaperIndex() { + virtual const int GetUserWallpaperIndex() OVERRIDE { return 0; } + virtual void OpenSetWallpaperPage() OVERRIDE { + } + private: DISALLOW_COPY_AND_ASSIGN(DummyUserWallpaperDelegate); }; diff --git a/ash/wm/workspace_controller.cc b/ash/wm/workspace_controller.cc index 38c1f25..9e96d61 100644 --- a/ash/wm/workspace_controller.cc +++ b/ash/wm/workspace_controller.cc @@ -4,15 +4,19 @@ #include "ash/wm/workspace_controller.h" +#include "ash/desktop_background/desktop_background_controller.h" +#include "ash/shell.h" #include "ash/wm/window_util.h" #include "ash/wm/workspace/workspace_event_filter.h" #include "ash/wm/workspace/workspace_layout_manager.h" #include "ash/wm/workspace/workspace_manager.h" #include "base/utf_string_conversions.h" +#include "grit/ash_strings.h" #include "ui/aura/client/activation_client.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/root_window.h" #include "ui/aura/window.h" +#include "ui/base/l10n/l10n_util.h" #include "ui/views/controls/menu/menu_model_adapter.h" #include "ui/views/controls/menu/menu_runner.h" @@ -60,6 +64,8 @@ void WorkspaceController::ShowMenu(views::Widget* widget, // the strings are localized. menu_model.AddCheckItem(MENU_SNAP_TO_GRID, ASCIIToUTF16("Snap to grid")); + menu_model.AddItem(MENU_CHANGE_WALLPAPER, + l10n_util::GetStringUTF16(IDS_AURA_SET_DESKTOP_WALLPAPER)); views::MenuModelAdapter menu_model_adapter(&menu_model); menu_runner_.reset(new views::MenuRunner(menu_model_adapter.CreateMenu())); if (menu_runner_->RunMenuAt( @@ -113,6 +119,11 @@ void WorkspaceController::ExecuteCommand(int command_id) { } break; } + case MENU_CHANGE_WALLPAPER: { + Shell::GetInstance()->user_wallpaper_delegate()-> + OpenSetWallpaperPage(); + break; + } } } diff --git a/ash/wm/workspace_controller.h b/ash/wm/workspace_controller.h index 417d127..9e547f9 100644 --- a/ash/wm/workspace_controller.h +++ b/ash/wm/workspace_controller.h @@ -75,6 +75,7 @@ class ASH_EXPORT WorkspaceController : enum MenuItem { MENU_SNAP_TO_GRID, + MENU_CHANGE_WALLPAPER, }; aura::Window* viewport_; diff --git a/chrome/browser/chromeos/background/desktop_background_observer.cc b/chrome/browser/chromeos/background/desktop_background_observer.cc index 6a7e520..bb03721 100644 --- a/chrome/browser/chromeos/background/desktop_background_observer.cc +++ b/chrome/browser/chromeos/background/desktop_background_observer.cc @@ -9,6 +9,9 @@ #include "ash/desktop_background/desktop_background_resources.h" #include "base/logging.h" #include "chrome/browser/chromeos/login/user_manager.h" +#include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_list.h" #include "chrome/common/chrome_notification_types.h" #include "content/public/browser/notification_service.h" @@ -38,6 +41,12 @@ class UserWallpaperDelegate: public ash::UserWallpaperDelegate { return index; } + virtual void OpenSetWallpaperPage() OVERRIDE { + Browser* browser = Browser::GetOrCreateTabbedBrowser( + ProfileManager::GetDefaultProfileOrOffTheRecord()); + browser->ShowOptionsTab("setWallpaper"); + } + private: DISALLOW_COPY_AND_ASSIGN(UserWallpaperDelegate); }; |