diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-13 03:21:35 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-13 03:21:35 +0000 |
commit | 0af58047ddfc16ea8e5a0f3921b4f45db77de991 (patch) | |
tree | 9dd47825cd74c830b94671c434f0af8e912826ca /ash/launcher/launcher.cc | |
parent | 56d8944437d7e1f0d3c1fa65819bca95a7a00bb2 (diff) | |
download | chromium_src-0af58047ddfc16ea8e5a0f3921b4f45db77de991.zip chromium_src-0af58047ddfc16ea8e5a0f3921b4f45db77de991.tar.gz chromium_src-0af58047ddfc16ea8e5a0f3921b4f45db77de991.tar.bz2 |
Make Shell::launcher_model() / GetLauncherDelegate private
Move SwitchToWindow impl to Launcher
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/11558031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172803 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/launcher/launcher.cc')
-rw-r--r-- | ash/launcher/launcher.cc | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/ash/launcher/launcher.cc b/ash/launcher/launcher.cc index d9b1a3f..8668879 100644 --- a/ash/launcher/launcher.cc +++ b/ash/launcher/launcher.cc @@ -199,14 +199,16 @@ void Launcher::DelegateView::UpdateBackground(int alpha) { // Launcher -------------------------------------------------------------------- -Launcher::Launcher(aura::Window* window_container, +Launcher::Launcher(LauncherModel* launcher_model, + LauncherDelegate* launcher_delegate, + aura::Window* window_container, internal::ShelfLayoutManager* shelf_layout_manager) : widget_(NULL), window_container_(window_container), delegate_view_(new DelegateView(this)), launcher_view_(NULL), alignment_(SHELF_ALIGNMENT_BOTTOM), - delegate_(Shell::GetInstance()->GetLauncherDelegate()), + delegate_(launcher_delegate), background_animator_(delegate_view_, 0, kLauncherBackgroundAlpha) { widget_.reset(new views::Widget); views::Widget::InitParams params( @@ -217,7 +219,7 @@ Launcher::Launcher(aura::Window* window_container, window_container_->GetRootWindow(), ash::internal::kShellWindowId_LauncherContainer); launcher_view_ = new internal::LauncherView( - Shell::GetInstance()->launcher_model(), delegate_, shelf_layout_manager); + launcher_model, delegate_, shelf_layout_manager); launcher_view_->Init(); delegate_view_->AddChildView(launcher_view_); params.delegate = delegate_view_; @@ -331,13 +333,13 @@ gfx::Rect Launcher::GetScreenBoundsOfItemIconForWindow(aura::Window* window) { void Launcher::ActivateLauncherItem(int index) { const ash::LauncherItems& items = - Shell::GetInstance()->launcher_model()->items(); + launcher_view_->model()->items(); delegate_->ItemClicked(items[index], ui::EF_NONE); } void Launcher::CycleWindowLinear(CycleDirection direction) { int item_index = GetNextActivatedItemIndex( - *(Shell::GetInstance()->launcher_model()), direction); + *(launcher_view_->model()), direction); if (item_index >= 0) ActivateLauncherItem(item_index); } @@ -376,6 +378,34 @@ void Launcher::SetWidgetBounds(const gfx::Rect bounds) { dimmer_->SetBounds(bounds); } +void Launcher::SwitchToWindow(int window_index) { + LauncherModel* launcher_model = launcher_view_->model(); + const LauncherItems& items = launcher_model->items(); + int item_count = launcher_model->item_count(); + int indexes_left = window_index >= 0 ? window_index : item_count; + int found_index = -1; + + // Iterating until we have hit the index we are interested in which + // is true once indexes_left becomes negative. + for (int i = 0; i < item_count && indexes_left >= 0; i++) { + if (items[i].type != TYPE_APP_LIST && + items[i].type != TYPE_BROWSER_SHORTCUT) { + found_index = i; + indexes_left--; + } + } + + // There are two ways how found_index can be valid: a.) the nth item was + // found (which is true when indexes_left is -1) or b.) the last item was + // requested (which is true when index was passed in as a negative number). + if (found_index >= 0 && (indexes_left == -1 || window_index < 0) && + (items[found_index].status == ash::STATUS_RUNNING || + items[found_index].status == ash::STATUS_CLOSED)) { + // Then set this one as active. + ActivateLauncherItem(found_index); + } +} + internal::LauncherView* Launcher::GetLauncherViewForTest() { return launcher_view_; } |