diff options
author | stevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-30 23:12:02 +0000 |
---|---|---|
committer | stevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-30 23:12:02 +0000 |
commit | 6d6546e0497dae4572bcbf1edbc3950b87046256 (patch) | |
tree | 0203858fa083a153efb520c1c43d1ee365ec5db8 /ash/shell.cc | |
parent | 43c15cbdfa1af7e5de8ebfcd423b0f84b96795b8 (diff) | |
download | chromium_src-6d6546e0497dae4572bcbf1edbc3950b87046256.zip chromium_src-6d6546e0497dae4572bcbf1edbc3950b87046256.tar.gz chromium_src-6d6546e0497dae4572bcbf1edbc3950b87046256.tar.bz2 |
Prepare to support Ash notification tray:
* Separate status area widget from system tray
* Support adding multiple trays to status area widget
* Move the background animation into a common base class
BUG=124914
TEST=Status area should look and behave the same as before.
TBR=ben for ash/ OWNER
Review URL: https://chromiumcodereview.appspot.com/10447040
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139671 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/shell.cc')
-rw-r--r-- | ash/shell.cc | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/ash/shell.cc b/ash/shell.cc index 0b137f18..ebf4a19 100644 --- a/ash/shell.cc +++ b/ash/shell.cc @@ -27,6 +27,7 @@ #include "ash/shell_window_ids.h" #include "ash/system/bluetooth/bluetooth_observer.h" #include "ash/system/network/network_observer.h" +#include "ash/system/status_area_widget.h" #include "ash/system/tray/system_tray.h" #include "ash/system/tray/system_tray_delegate.h" #include "ash/tooltips/tooltip_controller.h" @@ -423,7 +424,7 @@ class DummySystemTrayDelegate : public SystemTrayDelegate { virtual void ToggleWifi() OVERRIDE { wifi_enabled_ = !wifi_enabled_; ash::NetworkObserver* observer = - ash::Shell::GetInstance()->tray()->network_observer(); + ash::Shell::GetInstance()->system_tray()->network_observer(); if (observer) { ash::NetworkIconInfo info; observer->OnNetworkRefresh(info); @@ -433,7 +434,7 @@ class DummySystemTrayDelegate : public SystemTrayDelegate { virtual void ToggleMobile() OVERRIDE { cellular_enabled_ = !cellular_enabled_; ash::NetworkObserver* observer = - ash::Shell::GetInstance()->tray()->network_observer(); + ash::Shell::GetInstance()->system_tray()->network_observer(); if (observer) { ash::NetworkIconInfo info; observer->OnNetworkRefresh(info); @@ -443,7 +444,7 @@ class DummySystemTrayDelegate : public SystemTrayDelegate { virtual void ToggleBluetooth() OVERRIDE { bluetooth_enabled_ = !bluetooth_enabled_; ash::BluetoothObserver* observer = - ash::Shell::GetInstance()->tray()->bluetooth_observer(); + ash::Shell::GetInstance()->system_tray()->bluetooth_observer(); if (observer) observer->OnBluetoothRefresh(); } @@ -549,7 +550,9 @@ Shell::Shell(ShellDelegate* delegate) delegate_(delegate), shelf_(NULL), panel_layout_manager_(NULL), - root_window_layout_(NULL) { + root_window_layout_(NULL), + status_area_widget_(NULL), + browser_context_(NULL) { gfx::Screen::SetInstance(screen_); ui_controls::InstallUIControlsAura(CreateUIControlsAura(root_window_.get())); } @@ -581,7 +584,7 @@ Shell::~Shell() { workspace_controller_.reset(); // The system tray needs to be reset before all the windows are destroyed. - tray_.reset(); + system_tray_.reset(); tray_delegate_.reset(); // Desroy secondary monitor's widgets before all the windows are destroyed. @@ -726,13 +729,22 @@ void Shell::Init() { event_client_.reset(new internal::EventClientImpl(root_window)); - tray_.reset(new SystemTray()); - if (delegate_.get()) - tray_delegate_.reset(delegate_->CreateSystemTrayDelegate(tray_.get())); + status_area_widget_ = new internal::StatusAreaWidget; + + system_tray_.reset(new SystemTray()); + status_area_widget_->AddTray(system_tray_.get()); + system_tray_->Initialize(); + + if (delegate_.get()) { + tray_delegate_.reset(delegate_->CreateSystemTrayDelegate( + system_tray_.get())); + } if (!tray_delegate_.get()) tray_delegate_.reset(new DummySystemTrayDelegate()); - tray_->CreateItems(); - tray_->CreateWidget(); + + system_tray_->CreateItems(); // Called after delegate is created. + + status_area_widget_->Show(); // This controller needs to be set before SetupManagedWindowMode. desktop_background_controller_.reset(new DesktopBackgroundController); @@ -749,7 +761,7 @@ void Shell::Init() { } focus_cycler_.reset(new internal::FocusCycler()); - focus_cycler_->AddWidget(tray_->widget()); + focus_cycler_->AddWidget(status_area_widget_); if (!delegate_.get() || delegate_->IsUserLoggedIn()) CreateLauncher(); @@ -951,10 +963,10 @@ void Shell::InitRootWindowForSecondaryMonitor(aura::RootWindow* root) { void Shell::InitLayoutManagers() { DCHECK(root_window_layout_); - DCHECK(tray_->widget()); + DCHECK(status_area_widget_); internal::ShelfLayoutManager* shelf_layout_manager = - new internal::ShelfLayoutManager(tray_->widget()); + new internal::ShelfLayoutManager(status_area_widget_); GetContainer(internal::kShellWindowId_LauncherContainer)-> SetLayoutManager(shelf_layout_manager); shelf_ = shelf_layout_manager; |