Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: ui/app_list/views/apps_grid_view.cc

Issue 2938563002: Vertically centered app list page switcher (Closed)
Patch Set: Clean up code Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/app_list/BUILD.gn ('k') | ui/app_list/views/page_switcher.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/apps_grid_view.h" 5 #include "ui/app_list/views/apps_grid_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
11 #include "base/guid.h" 11 #include "base/guid.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "build/build_config.h" 13 #include "build/build_config.h"
14 #include "ui/app_list/app_list_constants.h" 14 #include "ui/app_list/app_list_constants.h"
15 #include "ui/app_list/app_list_features.h"
15 #include "ui/app_list/app_list_folder_item.h" 16 #include "ui/app_list/app_list_folder_item.h"
16 #include "ui/app_list/app_list_item.h" 17 #include "ui/app_list/app_list_item.h"
17 #include "ui/app_list/app_list_switches.h" 18 #include "ui/app_list/app_list_switches.h"
18 #include "ui/app_list/pagination_controller.h" 19 #include "ui/app_list/pagination_controller.h"
19 #include "ui/app_list/views/app_list_drag_and_drop_host.h" 20 #include "ui/app_list/views/app_list_drag_and_drop_host.h"
20 #include "ui/app_list/views/app_list_folder_view.h" 21 #include "ui/app_list/views/app_list_folder_view.h"
21 #include "ui/app_list/views/app_list_item_view.h" 22 #include "ui/app_list/views/app_list_item_view.h"
22 #include "ui/app_list/views/apps_grid_view_delegate.h" 23 #include "ui/app_list/views/apps_grid_view_delegate.h"
23 #include "ui/app_list/views/page_switcher.h" 24 #include "ui/app_list/views/page_switcher_horizontal.h"
25 #include "ui/app_list/views/page_switcher_vertical.h"
24 #include "ui/app_list/views/pulsing_block_view.h" 26 #include "ui/app_list/views/pulsing_block_view.h"
25 #include "ui/app_list/views/top_icon_animation_view.h" 27 #include "ui/app_list/views/top_icon_animation_view.h"
26 #include "ui/aura/window.h" 28 #include "ui/aura/window.h"
27 #include "ui/aura/window_event_dispatcher.h" 29 #include "ui/aura/window_event_dispatcher.h"
28 #include "ui/compositor/scoped_layer_animation_settings.h" 30 #include "ui/compositor/scoped_layer_animation_settings.h"
29 #include "ui/events/event.h" 31 #include "ui/events/event.h"
30 #include "ui/gfx/animation/animation.h" 32 #include "ui/gfx/animation/animation.h"
31 #include "ui/gfx/geometry/vector2d.h" 33 #include "ui/gfx/geometry/vector2d.h"
32 #include "ui/gfx/geometry/vector2d_conversions.h" 34 #include "ui/gfx/geometry/vector2d_conversions.h"
33 #include "ui/views/border.h" 35 #include "ui/views/border.h"
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 SetPaintToLayer(); 224 SetPaintToLayer();
223 // Clip any icons that are outside the grid view's bounds. These icons would 225 // Clip any icons that are outside the grid view's bounds. These icons would
224 // otherwise be visible to the user when the grid view is off screen. 226 // otherwise be visible to the user when the grid view is off screen.
225 layer()->SetMasksToBounds(true); 227 layer()->SetMasksToBounds(true);
226 layer()->SetFillsBoundsOpaquely(false); 228 layer()->SetFillsBoundsOpaquely(false);
227 229
228 pagination_model_.SetTransitionDurations(kPageTransitionDurationInMs, 230 pagination_model_.SetTransitionDurations(kPageTransitionDurationInMs,
229 kOverscrollPageTransitionDurationMs); 231 kOverscrollPageTransitionDurationMs);
230 232
231 pagination_model_.AddObserver(this); 233 pagination_model_.AddObserver(this);
232 pagination_controller_.reset(new PaginationController( 234
233 &pagination_model_, PaginationController::SCROLL_AXIS_HORIZONTAL)); 235 if (features::IsFullscreenAppListEnabled()) {
newcomer 2017/06/15 15:07:02 Call this once and cache it please.
234 page_switcher_view_ = new PageSwitcher(&pagination_model_); 236 page_switcher_view_ = new PageSwitcherVertical(&pagination_model_);
237 pagination_controller_.reset(new PaginationController(
238 &pagination_model_, PaginationController::SCROLL_AXIS_VERTICAL));
239 } else {
240 page_switcher_view_ = new PageSwitcherHorizontal(&pagination_model_);
241 pagination_controller_.reset(new PaginationController(
242 &pagination_model_, PaginationController::SCROLL_AXIS_HORIZONTAL));
243 }
235 AddChildView(page_switcher_view_); 244 AddChildView(page_switcher_view_);
236 } 245 }
237 246
238 AppsGridView::~AppsGridView() { 247 AppsGridView::~AppsGridView() {
239 // Coming here |drag_view_| should already be canceled since otherwise the 248 // Coming here |drag_view_| should already be canceled since otherwise the
240 // drag would disappear after the app list got animated away and closed, 249 // drag would disappear after the app list got animated away and closed,
241 // which would look odd. 250 // which would look odd.
242 DCHECK(!drag_view_); 251 DCHECK(!drag_view_);
243 if (drag_view_) 252 if (drag_view_)
244 EndDrag(true); 253 EndDrag(true);
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 ApplicationDragAndDropHost* drag_and_drop_host) { 632 ApplicationDragAndDropHost* drag_and_drop_host) {
624 drag_and_drop_host_ = drag_and_drop_host; 633 drag_and_drop_host_ = drag_and_drop_host;
625 } 634 }
626 635
627 bool AppsGridView::IsAnimatingView(AppListItemView* view) { 636 bool AppsGridView::IsAnimatingView(AppListItemView* view) {
628 return bounds_animator_.IsAnimating(view); 637 return bounds_animator_.IsAnimating(view);
629 } 638 }
630 639
631 gfx::Size AppsGridView::CalculatePreferredSize() const { 640 gfx::Size AppsGridView::CalculatePreferredSize() const {
632 const gfx::Insets insets(GetInsets()); 641 const gfx::Insets insets(GetInsets());
633 // If we are in a folder, ignore the page switcher for height calculations.
634 int page_switcher_height =
635 folder_delegate_ ? 0 : page_switcher_view_->GetPreferredSize().height();
636 gfx::Size size = GetTileGridSize(); 642 gfx::Size size = GetTileGridSize();
637 size.Enlarge(insets.width(), insets.height() + page_switcher_height); 643 if (features::IsFullscreenAppListEnabled()) {
newcomer 2017/06/15 15:07:02 Same as above.
644 // If we are in a folder, ignore the page switcher for width calculations.
645 int page_switcher_width =
646 folder_delegate_ ? 0 : page_switcher_view_->GetPreferredSize().width();
647 size.Enlarge(insets.width() + page_switcher_width, insets.height());
648 } else {
649 // If we are in a folder, ignore the page switcher for height calculations.
650 int page_switcher_height =
651 folder_delegate_ ? 0 : page_switcher_view_->GetPreferredSize().height();
652 size.Enlarge(insets.width(), insets.height() + page_switcher_height);
653 }
638 return size; 654 return size;
639 } 655 }
640 656
641 bool AppsGridView::GetDropFormats( 657 bool AppsGridView::GetDropFormats(
642 int* formats, 658 int* formats,
643 std::set<ui::Clipboard::FormatType>* format_types) { 659 std::set<ui::Clipboard::FormatType>* format_types) {
644 // TODO(koz): Only accept a specific drag type for app shortcuts. 660 // TODO(koz): Only accept a specific drag type for app shortcuts.
645 *formats = OSExchangeData::FILE_NAME; 661 *formats = OSExchangeData::FILE_NAME;
646 return true; 662 return true;
647 } 663 }
(...skipping 11 matching lines...) Expand all
659 bounds_animator_.Cancel(); 675 bounds_animator_.Cancel();
660 676
661 CalculateIdealBounds(); 677 CalculateIdealBounds();
662 for (int i = 0; i < view_model_.view_size(); ++i) { 678 for (int i = 0; i < view_model_.view_size(); ++i) {
663 AppListItemView* view = GetItemViewAt(i); 679 AppListItemView* view = GetItemViewAt(i);
664 if (view != drag_view_) 680 if (view != drag_view_)
665 view->SetBoundsRect(view_model_.ideal_bounds(i)); 681 view->SetBoundsRect(view_model_.ideal_bounds(i));
666 } 682 }
667 views::ViewModelUtils::SetViewBoundsToIdealBounds(pulsing_blocks_model_); 683 views::ViewModelUtils::SetViewBoundsToIdealBounds(pulsing_blocks_model_);
668 684
669 const int page_switcher_height =
670 page_switcher_view_->GetPreferredSize().height();
671 gfx::Rect rect(GetContentsBounds()); 685 gfx::Rect rect(GetContentsBounds());
672 rect.set_y(rect.bottom() - page_switcher_height); 686 if (features::IsFullscreenAppListEnabled()) {
newcomer 2017/06/15 15:07:02 Same as above.
673 rect.set_height(page_switcher_height); 687 const int page_switcher_width =
688 page_switcher_view_->GetPreferredSize().width();
689 rect.set_x(rect.right() - page_switcher_width);
690 rect.set_width(page_switcher_width);
691 } else {
692 const int page_switcher_height =
693 page_switcher_view_->GetPreferredSize().height();
694 rect.set_y(rect.bottom() - page_switcher_height);
695 rect.set_height(page_switcher_height);
696 }
674 page_switcher_view_->SetBoundsRect(rect); 697 page_switcher_view_->SetBoundsRect(rect);
675 } 698 }
676 699
677 bool AppsGridView::OnKeyPressed(const ui::KeyEvent& event) { 700 bool AppsGridView::OnKeyPressed(const ui::KeyEvent& event) {
678 bool handled = false; 701 bool handled = false;
679 if (selected_view_) 702 if (selected_view_)
680 handled = static_cast<views::View*>(selected_view_)->OnKeyPressed(event); 703 handled = static_cast<views::View*>(selected_view_)->OnKeyPressed(event);
681 704
682 if (!handled) { 705 if (!handled) {
683 const int forward_dir = base::i18n::IsRTL() ? -1 : 1; 706 const int forward_dir = base::i18n::IsRTL() ? -1 : 1;
(...skipping 1226 matching lines...) Expand 10 before | Expand all | Expand 10 after
1910 1933
1911 void AppsGridView::SetAsFolderDroppingTarget(const Index& target_index, 1934 void AppsGridView::SetAsFolderDroppingTarget(const Index& target_index,
1912 bool is_target_folder) { 1935 bool is_target_folder) {
1913 AppListItemView* target_view = 1936 AppListItemView* target_view =
1914 GetViewDisplayedAtSlotOnCurrentPage(target_index.slot); 1937 GetViewDisplayedAtSlotOnCurrentPage(target_index.slot);
1915 if (target_view) 1938 if (target_view)
1916 target_view->SetAsAttemptedFolderTarget(is_target_folder); 1939 target_view->SetAsAttemptedFolderTarget(is_target_folder);
1917 } 1940 }
1918 1941
1919 } // namespace app_list 1942 } // namespace app_list
OLDNEW
« no previous file with comments | « ui/app_list/BUILD.gn ('k') | ui/app_list/views/page_switcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698