Chromium Code Reviews| 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 #include "ui/app_list/views/contents_view.h" | 5 #include "ui/app_list/views/contents_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 345 bool success = | 345 bool success = |
| 346 state_to_view_.insert(std::make_pair(state, page_index)).second; | 346 state_to_view_.insert(std::make_pair(state, page_index)).second; |
| 347 success = success && | 347 success = success && |
| 348 view_to_state_.insert(std::make_pair(page_index, state)).second; | 348 view_to_state_.insert(std::make_pair(page_index, state)).second; |
| 349 | 349 |
| 350 // There shouldn't be duplicates in either map. | 350 // There shouldn't be duplicates in either map. |
| 351 DCHECK(success); | 351 DCHECK(success); |
| 352 return page_index; | 352 return page_index; |
| 353 } | 353 } |
| 354 | 354 |
| 355 gfx::Rect ContentsView::GetOnscreenPageBounds(int page_index) const { | |
| 356 AppListModel::State state = GetStateForPageIndex(page_index); | |
| 357 return (state == AppListModel::STATE_CUSTOM_LAUNCHER_PAGE || | |
|
Matt Giuca
2015/02/09 05:32:17
To match the style of GetOffscreenPageBounds, stor
calamity
2015/02/09 06:12:27
Done.
| |
| 358 state == AppListModel::STATE_START) | |
| 359 ? GetContentsBounds() | |
| 360 : GetDefaultContentsBounds(); | |
| 361 } | |
| 362 | |
| 363 gfx::Rect ContentsView::GetOffscreenPageBounds(int page_index) const { | |
| 364 AppListModel::State state = GetStateForPageIndex(page_index); | |
| 365 gfx::Rect bounds(GetOnscreenPageBounds(page_index)); | |
| 366 // The start page and search page origins are above; all other pages' origins | |
| 367 // are below. | |
| 368 bool origin_above = state == AppListModel::STATE_START || | |
| 369 state == AppListModel::STATE_SEARCH_RESULTS; | |
| 370 bounds.set_y(origin_above ? -bounds.height() | |
| 371 : GetContentsBounds().height() + bounds.y()); | |
| 372 return bounds; | |
| 373 } | |
| 374 | |
| 355 gfx::Rect ContentsView::GetDefaultSearchBoxBounds() const { | 375 gfx::Rect ContentsView::GetDefaultSearchBoxBounds() const { |
| 356 gfx::Rect search_box_bounds(0, 0, GetDefaultContentsSize().width(), | 376 gfx::Rect search_box_bounds(0, 0, GetDefaultContentsSize().width(), |
| 357 GetSearchBoxView()->GetPreferredSize().height()); | 377 GetSearchBoxView()->GetPreferredSize().height()); |
| 358 if (switches::IsExperimentalAppListEnabled()) { | 378 if (switches::IsExperimentalAppListEnabled()) { |
| 359 search_box_bounds.set_y(kExperimentalSearchBoxPadding); | 379 search_box_bounds.set_y(kExperimentalSearchBoxPadding); |
| 360 search_box_bounds.Inset(kExperimentalSearchBoxPadding, 0); | 380 search_box_bounds.Inset(kExperimentalSearchBoxPadding, 0); |
| 361 } | 381 } |
| 362 return search_box_bounds; | 382 return search_box_bounds; |
| 363 } | 383 } |
| 364 | 384 |
| 365 gfx::Rect ContentsView::GetSearchBoxBoundsForState( | 385 gfx::Rect ContentsView::GetSearchBoxBoundsForState( |
| 366 AppListModel::State state) const { | 386 AppListModel::State state) const { |
| 367 // On the start page, the search box is in a different location. | 387 // On the start page, the search box is in a different location. |
| 368 if (state == AppListModel::STATE_START) { | 388 if (state == AppListModel::STATE_START) { |
| 369 DCHECK(start_page_view_); | 389 DCHECK(start_page_view_); |
| 370 // Convert to ContentsView space, assuming that the StartPageView is in the | 390 // Convert to ContentsView space, assuming that the StartPageView is in the |
| 371 // ContentsView's default bounds. | 391 // ContentsView's default bounds. |
| 372 return start_page_view_->GetSearchBoxBounds() + | 392 return start_page_view_->GetSearchBoxBounds() + |
| 373 GetDefaultContentsBounds().OffsetFromOrigin(); | 393 GetOnscreenPageBounds(GetPageIndexForState(state)) |
| 394 .OffsetFromOrigin(); | |
| 374 } | 395 } |
| 375 | 396 |
| 376 return GetDefaultSearchBoxBounds(); | 397 return GetDefaultSearchBoxBounds(); |
| 377 } | 398 } |
| 378 | 399 |
| 379 gfx::Rect ContentsView::GetSearchBoxBoundsForPageIndex(int index) const { | 400 gfx::Rect ContentsView::GetSearchBoxBoundsForPageIndex(int index) const { |
| 380 return GetSearchBoxBoundsForState(GetStateForPageIndex(index)); | 401 return GetSearchBoxBoundsForState(GetStateForPageIndex(index)); |
| 381 } | 402 } |
| 382 | 403 |
| 383 gfx::Rect ContentsView::GetDefaultContentsBounds() const { | 404 gfx::Rect ContentsView::GetDefaultContentsBounds() const { |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 452 GetSearchBoxView()->GetViewBoundsForSearchBoxContentsBounds( | 473 GetSearchBoxView()->GetViewBoundsForSearchBoxContentsBounds( |
| 453 search_box_bounds))); | 474 search_box_bounds))); |
| 454 } | 475 } |
| 455 | 476 |
| 456 // Immediately finish all current animations. | 477 // Immediately finish all current animations. |
| 457 pagination_model_.FinishAnimation(); | 478 pagination_model_.FinishAnimation(); |
| 458 | 479 |
| 459 // Move the current view onto the screen, and all other views off screen to | 480 // Move the current view onto the screen, and all other views off screen to |
| 460 // the left. (Since we are not animating, we don't need to be careful about | 481 // the left. (Since we are not animating, we don't need to be careful about |
| 461 // which side we place the off-screen views onto.) | 482 // which side we place the off-screen views onto.) |
| 462 gfx::Rect rect(GetDefaultContentsBounds()); | 483 gfx::Rect rect = GetOnscreenPageBounds(GetActivePageIndex()); |
| 463 // Custom pages are aligned to the top of the window, not under the search | 484 double progress = |
| 464 // box. | 485 IsStateActive(AppListModel::STATE_CUSTOM_LAUNCHER_PAGE) ? 1 : 0; |
| 465 double progress = 0; | |
| 466 if (IsStateActive(AppListModel::STATE_CUSTOM_LAUNCHER_PAGE)) { | |
| 467 rect = GetContentsBounds(); | |
| 468 progress = 1; | |
| 469 } | |
| 470 | 486 |
| 471 // Notify the custom launcher page that the active page has changed. | 487 // Notify the custom launcher page that the active page has changed. |
| 472 app_list_main_view_->view_delegate()->CustomLauncherPageAnimationChanged( | 488 app_list_main_view_->view_delegate()->CustomLauncherPageAnimationChanged( |
| 473 progress); | 489 progress); |
| 474 | 490 |
| 475 if (rect.IsEmpty()) | 491 if (rect.IsEmpty()) |
| 476 return; | 492 return; |
| 477 | 493 |
| 478 gfx::Rect offscreen_target(rect); | 494 gfx::Rect offscreen_target(rect); |
| 479 offscreen_target.set_x(-rect.width()); | 495 offscreen_target.set_x(-rect.width()); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 514 } | 530 } |
| 515 | 531 |
| 516 void ContentsView::TransitionStarted() { | 532 void ContentsView::TransitionStarted() { |
| 517 } | 533 } |
| 518 | 534 |
| 519 void ContentsView::TransitionChanged() { | 535 void ContentsView::TransitionChanged() { |
| 520 UpdatePageBounds(); | 536 UpdatePageBounds(); |
| 521 } | 537 } |
| 522 | 538 |
| 523 } // namespace app_list | 539 } // namespace app_list |
| OLD | NEW |