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 a13d8ad032e7f8a25cbc3af07cf9733bdc456e8c..dcf9c1d609a71b4731830e5f606754202a6aefda 100644 |
--- a/ui/app_list/views/start_page_view.cc |
+++ b/ui/app_list/views/start_page_view.cc |
@@ -10,9 +10,11 @@ |
#include "ui/app_list/app_list_model.h" |
#include "ui/app_list/app_list_view_delegate.h" |
#include "ui/app_list/search_result.h" |
+#include "ui/app_list/views/all_apps_tile_item_view.h" |
#include "ui/app_list/views/app_list_main_view.h" |
#include "ui/app_list/views/search_box_view.h" |
#include "ui/app_list/views/search_result_list_view.h" |
+#include "ui/app_list/views/search_result_tile_item_view.h" |
#include "ui/app_list/views/tile_item_view.h" |
#include "ui/gfx/canvas.h" |
#include "ui/views/background.h" |
@@ -39,7 +41,8 @@ const int kWebViewHeight = 105; |
const int kDummySearchBoxWidth = 480; |
// Tile container constants. |
-const size_t kNumStartPageTiles = 5; |
+const size_t kNumStartPageTiles = 4; |
+const size_t kNumSearchResultTiles = 5; |
const int kTileSpacing = 10; |
// A placeholder search box which is sized to fit within the start page view. |
@@ -131,11 +134,19 @@ void StartPageView::InitTilesContainer() { |
tiles_layout_manager->set_main_axis_alignment( |
views::BoxLayout::MAIN_AXIS_ALIGNMENT_CENTER); |
tiles_container_->SetLayoutManager(tiles_layout_manager); |
- for (size_t i = 0; i < kNumStartPageTiles; ++i) { |
- TileItemView* tile_item = new TileItemView(); |
+ |
+ // Add SearchResultTileItemViews to the container. |
+ for (size_t i = 0; i < std::max(kNumStartPageTiles, kNumSearchResultTiles); |
+ ++i) { |
+ SearchResultTileItemView* tile_item = new SearchResultTileItemView(); |
tiles_container_->AddChildView(tile_item); |
- tile_views_.push_back(tile_item); |
+ search_result_tile_views_.push_back(tile_item); |
} |
+ |
+ // Also add a special "all apps" button to the end of the container. |
+ all_apps_button_ = |
+ new AllAppsTileItemView(app_list_main_view_->contents_view()); |
+ tiles_container_->AddChildView(all_apps_button_); |
} |
void StartPageView::SetModel(AppListModel* model) { |
@@ -188,6 +199,10 @@ void StartPageView::UpdateForTesting() { |
Update(); |
} |
+TileItemView* StartPageView::all_apps_button() const { |
+ return all_apps_button_; |
+} |
+ |
bool StartPageView::OnKeyPressed(const ui::KeyEvent& event) { |
if (show_state_ == SHOW_SEARCH_RESULTS) |
return results_view_->OnKeyPressed(event); |
@@ -209,16 +224,23 @@ void StartPageView::Layout() { |
} |
void StartPageView::Update() { |
+ size_t max_tiles = show_state_ == SHOW_START_PAGE ? kNumStartPageTiles |
+ : kNumSearchResultTiles; |
std::vector<SearchResult*> display_results = |
- AppListModel::FilterSearchResultsByDisplayType(search_results_model_, |
- SearchResult::DISPLAY_TILE, |
- kNumStartPageTiles); |
- for (size_t i = 0; i < kNumStartPageTiles; ++i) { |
+ AppListModel::FilterSearchResultsByDisplayType( |
+ search_results_model_, SearchResult::DISPLAY_TILE, max_tiles); |
+ |
+ // Update the tile item results. |
+ for (size_t i = 0; i < search_result_tile_views_.size(); ++i) { |
SearchResult* item = NULL; |
if (i < display_results.size()) |
item = display_results[i]; |
- tile_views_[i]->SetSearchResult(item); |
+ search_result_tile_views_[i]->SetSearchResult(item); |
} |
+ |
+ // Show or hide the all apps button (depending on the current show state). |
+ all_apps_button_->SetVisible(show_state_ == SHOW_START_PAGE); |
+ |
tiles_container_->Layout(); |
Layout(); |
update_factory_.InvalidateWeakPtrs(); |