| Index: ui/app_list/views/start_page_view.cc
|
| diff --git a/ui/app_list/views/start_page_view.cc b/ui/app_list/views/start_page_view.cc
|
| index 4609345cecf96127645236631cca5e3b85bea217..dd5a920c92d3c0ab22499b809e5ea9e4d0d41f18 100644
|
| --- a/ui/app_list/views/start_page_view.cc
|
| +++ b/ui/app_list/views/start_page_view.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "ui/app_list/views/start_page_view.h"
|
|
|
| +#include <algorithm>
|
| #include <string>
|
|
|
| #include "base/i18n/rtl.h"
|
| @@ -30,6 +31,7 @@
|
| #include "ui/views/controls/label.h"
|
| #include "ui/views/controls/textfield/textfield.h"
|
| #include "ui/views/layout/box_layout.h"
|
| +#include "ui/views/layout/grid_layout.h"
|
| #include "ui/views/widget/widget.h"
|
|
|
| namespace app_list {
|
| @@ -37,19 +39,20 @@ namespace app_list {
|
| namespace {
|
|
|
| // Layout constants.
|
| -const int kInstantContainerSpacing = 24;
|
| -const int kSearchBoxAndTilesSpacing = 35;
|
| -const int kStartPageSearchBoxWidth = 480;
|
| +constexpr int kInstantContainerSpacing = 24;
|
| +constexpr int kSearchBoxAndTilesSpacing = 35;
|
| +constexpr int kStartPageSearchBoxWidth = 480;
|
|
|
| // WebView constants.
|
| -const int kWebViewWidth = 700;
|
| -const int kWebViewHeight = 244;
|
| +constexpr int kWebViewWidth = 700;
|
| +constexpr int kWebViewHeight = 224;
|
|
|
| // Tile container constants.
|
| -const size_t kNumStartPageTiles = 4;
|
| -const int kTileSpacing = 7;
|
| +constexpr int kTileSpacing = 7;
|
| +constexpr int kNumStartPageTilesCols = 5;
|
| +constexpr int kTilesHorizontalMarginLeft = 145;
|
|
|
| -const int kLauncherPageBackgroundWidth = 400;
|
| +constexpr int kLauncherPageBackgroundWidth = 400;
|
|
|
| // An invisible placeholder view which fills the space for the search box view
|
| // in a box layout. The search box view itself is a child of the AppListView
|
| @@ -131,7 +134,10 @@ class StartPageView::StartPageTilesContainer
|
| int GetYSize() override;
|
|
|
| private:
|
| + void CreateAppsGrid(int apps_num);
|
| +
|
| ContentsView* contents_view_;
|
| + AppListViewDelegate* view_delegate_;
|
|
|
| std::vector<SearchResultTileItemView*> search_result_tile_views_;
|
| AllAppsTileItemView* all_apps_button_;
|
| @@ -143,28 +149,14 @@ StartPageView::StartPageTilesContainer::StartPageTilesContainer(
|
| ContentsView* contents_view,
|
| AllAppsTileItemView* all_apps_button,
|
| AppListViewDelegate* view_delegate)
|
| - : contents_view_(contents_view), all_apps_button_(all_apps_button) {
|
| - views::BoxLayout* tiles_layout_manager =
|
| - new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, kTileSpacing);
|
| - tiles_layout_manager->set_main_axis_alignment(
|
| - views::BoxLayout::MAIN_AXIS_ALIGNMENT_CENTER);
|
| - SetLayoutManager(tiles_layout_manager);
|
| + : contents_view_(contents_view),
|
| + view_delegate_(view_delegate),
|
| + all_apps_button_(all_apps_button) {
|
| set_background(
|
| views::Background::CreateSolidBackground(kLabelBackgroundColor));
|
| -
|
| - // Add SearchResultTileItemViews to the container.
|
| - for (size_t i = 0; i < kNumStartPageTiles; ++i) {
|
| - SearchResultTileItemView* tile_item =
|
| - new SearchResultTileItemView(this, view_delegate);
|
| - AddChildView(tile_item);
|
| - tile_item->SetParentBackgroundColor(kLabelBackgroundColor);
|
| - tile_item->SetHoverStyle(TileItemView::HOVER_STYLE_ANIMATE_SHADOW);
|
| - search_result_tile_views_.push_back(tile_item);
|
| - }
|
| -
|
| - // Also add a special "all apps" button to the end of the container.
|
| + all_apps_button_->SetHoverStyle(TileItemView::HOVER_STYLE_ANIMATE_SHADOW);
|
| all_apps_button_->SetParentBackgroundColor(kLabelBackgroundColor);
|
| - AddChildView(all_apps_button_);
|
| + CreateAppsGrid(kNumStartPageTiles);
|
| }
|
|
|
| StartPageView::StartPageTilesContainer::~StartPageTilesContainer() {
|
| @@ -192,10 +184,18 @@ int StartPageView::StartPageTilesContainer::Update() {
|
| std::vector<SearchResult*> display_results =
|
| AppListModel::FilterSearchResultsByDisplayType(
|
| results(), SearchResult::DISPLAY_RECOMMENDATION, kNumStartPageTiles);
|
| + if (display_results.size() != search_result_tile_views_.size()) {
|
| + // We should recreate the grid layout in this case.
|
| + for (size_t i = 0; i < search_result_tile_views_.size(); ++i)
|
| + delete search_result_tile_views_[i];
|
| + search_result_tile_views_.clear();
|
| + RemoveChildView(all_apps_button_);
|
| + CreateAppsGrid(std::min(kNumStartPageTiles, display_results.size()));
|
| + }
|
|
|
| // Update the tile item results.
|
| for (size_t i = 0; i < search_result_tile_views_.size(); ++i) {
|
| - SearchResult* item = NULL;
|
| + SearchResult* item = nullptr;
|
| if (i < display_results.size())
|
| item = display_results[i];
|
| search_result_tile_views_[i]->SetSearchResult(item);
|
| @@ -234,6 +234,41 @@ int StartPageView::StartPageTilesContainer::GetYSize() {
|
| return 0;
|
| }
|
|
|
| +void StartPageView::StartPageTilesContainer::CreateAppsGrid(int apps_num) {
|
| + DCHECK(search_result_tile_views_.empty());
|
| + views::GridLayout* tiles_layout_manager = new views::GridLayout(this);
|
| + SetLayoutManager(tiles_layout_manager);
|
| +
|
| + views::ColumnSet* column_set = tiles_layout_manager->AddColumnSet(0);
|
| + column_set->AddPaddingColumn(0, kTilesHorizontalMarginLeft);
|
| + for (int col = 0; col < kNumStartPageTilesCols; ++col) {
|
| + column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 0,
|
| + views::GridLayout::USE_PREF, 0, 0);
|
| + column_set->AddPaddingColumn(0, kTileSpacing);
|
| + }
|
| +
|
| + // Add SearchResultTileItemViews to the container.
|
| + int i = 0;
|
| + for (; i < apps_num; ++i) {
|
| + SearchResultTileItemView* tile_item =
|
| + new SearchResultTileItemView(this, view_delegate_);
|
| + if (i % kNumStartPageTilesCols == 0)
|
| + tiles_layout_manager->StartRow(0, 0);
|
| + tiles_layout_manager->AddView(tile_item);
|
| + AddChildView(tile_item);
|
| + tile_item->SetParentBackgroundColor(kLabelBackgroundColor);
|
| + tile_item->SetHoverStyle(TileItemView::HOVER_STYLE_ANIMATE_SHADOW);
|
| + search_result_tile_views_.push_back(tile_item);
|
| + }
|
| +
|
| + // Also add a special "all apps" button to the end of the container.
|
| + all_apps_button_->UpdateIcon();
|
| + if (i % kNumStartPageTilesCols == 0)
|
| + tiles_layout_manager->StartRow(0, 0);
|
| + tiles_layout_manager->AddView(all_apps_button_);
|
| + AddChildView(all_apps_button_);
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // StartPageView implementation:
|
| StartPageView::StartPageView(AppListMainView* app_list_main_view,
|
|
|