summaryrefslogtreecommitdiffstats
path: root/ash/launcher/launcher.cc
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-13 03:21:35 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-13 03:21:35 +0000
commit0af58047ddfc16ea8e5a0f3921b4f45db77de991 (patch)
tree9dd47825cd74c830b94671c434f0af8e912826ca /ash/launcher/launcher.cc
parent56d8944437d7e1f0d3c1fa65819bca95a7a00bb2 (diff)
downloadchromium_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.cc40
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_;
}