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

Unified Diff: ui/app_list/views/start_page_view.cc

Issue 896063002: App list start page is no longer a SearchResultContainerView. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@doodle_static
Patch Set: address comments Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/app_list/views/start_page_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 01ea2d608ce84fb1433bf51dca21b478eb9109ae..ab8be81a2d976b5f27b6fc08532c24f024fb9c3a 100644
--- a/ui/app_list/views/start_page_view.cc
+++ b/ui/app_list/views/start_page_view.cc
@@ -14,7 +14,7 @@
#include "ui/app_list/views/app_list_main_view.h"
#include "ui/app_list/views/contents_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_container_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"
@@ -63,6 +63,106 @@ class SearchBoxSpacerView : public views::View {
} // namespace
+// A container that holds the start page recommendation tiles and the all apps
+// tile.
+class StartPageView::StartPageTilesContainer
+ : public SearchResultContainerView {
+ public:
+ explicit StartPageTilesContainer(AllAppsTileItemView* all_apps_button);
+ ~StartPageTilesContainer() override;
+
+ TileItemView* GetTileItemView(size_t index);
+
+ const std::vector<SearchResultTileItemView*>& tile_views() const {
+ return search_result_tile_views_;
+ }
+
+ AllAppsTileItemView* all_apps_button() { return all_apps_button_; }
+
+ // Overridden from SearchResultContainerView:
+ int Update() override;
+ void UpdateSelectedIndex(int old_selected, int new_selected) override;
+ void OnContainerSelected(bool from_bottom) override;
+
+ private:
+ std::vector<SearchResultTileItemView*> search_result_tile_views_;
+ AllAppsTileItemView* all_apps_button_;
+
+ DISALLOW_COPY_AND_ASSIGN(StartPageTilesContainer);
+};
+
+StartPageView::StartPageTilesContainer::StartPageTilesContainer(
+ AllAppsTileItemView* all_apps_button)
+ : 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);
+ set_background(
+ views::Background::CreateSolidBackground(kLabelBackgroundColor));
+
+ // Add SearchResultTileItemViews to the container.
+ for (size_t i = 0; i < kNumStartPageTiles; ++i) {
+ SearchResultTileItemView* tile_item = new SearchResultTileItemView();
+ AddChildView(tile_item);
+ tile_item->SetParentBackgroundColor(kLabelBackgroundColor);
+ 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();
+ all_apps_button_->SetParentBackgroundColor(kLabelBackgroundColor);
+ AddChildView(all_apps_button_);
+}
+
+StartPageView::StartPageTilesContainer::~StartPageTilesContainer() {
+}
+
+TileItemView* StartPageView::StartPageTilesContainer::GetTileItemView(
+ size_t index) {
+ DCHECK_GT(kNumStartPageTiles + 1, index);
+ if (index == kNumStartPageTiles)
+ return all_apps_button_;
+
+ return search_result_tile_views_[index];
+}
+
+int StartPageView::StartPageTilesContainer::Update() {
+ std::vector<SearchResult*> display_results =
+ AppListModel::FilterSearchResultsByDisplayType(
+ results(), SearchResult::DISPLAY_RECOMMENDATION, kNumStartPageTiles);
+
+ // Update the tile item results.
+ for (size_t i = 0; i < search_result_tile_views_.size(); ++i) {
+ SearchResult* item = nullptr;
+ if (i < display_results.size())
+ item = display_results[i];
+ search_result_tile_views_[i]->SetSearchResult(item);
+ }
+
+ Layout();
+ parent()->Layout();
+ // Add 1 to the results size to account for the all apps button.
+ return display_results.size() + 1;
+}
+
+void StartPageView::StartPageTilesContainer::UpdateSelectedIndex(
+ int old_selected,
+ int new_selected) {
+ if (old_selected >= 0)
+ GetTileItemView(old_selected)->SetSelected(false);
+
+ if (new_selected >= 0)
+ GetTileItemView(new_selected)->SetSelected(true);
+}
+
+void StartPageView::StartPageTilesContainer::OnContainerSelected(
+ bool from_bottom) {
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// StartPageView implementation:
StartPageView::StartPageView(AppListMainView* app_list_main_view,
AppListViewDelegate* view_delegate)
: app_list_main_view_(app_list_main_view),
@@ -70,16 +170,17 @@ StartPageView::StartPageView(AppListMainView* app_list_main_view,
search_box_spacer_view_(new SearchBoxSpacerView(
app_list_main_view->search_box_view()->GetPreferredSize())),
instant_container_(new views::View),
- tiles_container_(new views::View) {
+ tiles_container_(new StartPageTilesContainer(new AllAppsTileItemView(
+ app_list_main_view_->contents_view(),
+ view_delegate_->GetModel()->top_level_item_list()))) {
// The view containing the start page WebContents and SearchBoxSpacerView.
InitInstantContainer();
AddChildView(instant_container_);
// The view containing the start page tiles.
- InitTilesContainer();
AddChildView(tiles_container_);
- SetResults(view_delegate_->GetModel()->results());
+ tiles_container_->SetResults(view_delegate_->GetModel()->results());
Reset();
}
@@ -107,48 +208,27 @@ void StartPageView::InitInstantContainer() {
instant_container_->AddChildView(search_box_spacer_view_);
}
-void StartPageView::InitTilesContainer() {
- 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);
- tiles_container_->SetLayoutManager(tiles_layout_manager);
- tiles_container_->set_background(
- views::Background::CreateSolidBackground(kLabelBackgroundColor));
-
- // Add SearchResultTileItemViews to the container.
- for (size_t i = 0; i < kNumStartPageTiles; ++i) {
- SearchResultTileItemView* tile_item = new SearchResultTileItemView();
- tiles_container_->AddChildView(tile_item);
- tile_item->SetParentBackgroundColor(kLabelBackgroundColor);
- 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(),
- view_delegate_->GetModel()->top_level_item_list());
- all_apps_button_->UpdateIcon();
- all_apps_button_->SetParentBackgroundColor(kLabelBackgroundColor);
- tiles_container_->AddChildView(all_apps_button_);
-}
-
void StartPageView::Reset() {
- Update();
+ tiles_container_->Update();
}
void StartPageView::UpdateForTesting() {
- Update();
+ tiles_container_->Update();
+}
+
+const std::vector<SearchResultTileItemView*>& StartPageView::tile_views()
+ const {
+ return tiles_container_->tile_views();
}
TileItemView* StartPageView::all_apps_button() const {
- return all_apps_button_;
+ return tiles_container_->all_apps_button();
}
void StartPageView::OnShow() {
DCHECK(app_list_main_view_->contents_view()->ShouldShowCustomPageClickzone());
UpdateCustomPageClickzoneVisibility();
- ClearSelectedIndex();
+ tiles_container_->ClearSelectedIndex();
}
void StartPageView::OnHide() {
@@ -169,8 +249,9 @@ void StartPageView::Layout() {
}
bool StartPageView::OnKeyPressed(const ui::KeyEvent& event) {
- if (selected_index() >= 0 &&
- tiles_container_->child_at(selected_index())->OnKeyPressed(event))
+ int selected_index = tiles_container_->selected_index();
+ if (selected_index >= 0 &&
+ tiles_container_->child_at(selected_index)->OnKeyPressed(event))
return true;
int dir = 0;
@@ -183,7 +264,7 @@ bool StartPageView::OnKeyPressed(const ui::KeyEvent& event) {
break;
case ui::VKEY_DOWN:
// Down selects the first tile if nothing is selected.
- if (!IsValidSelectionIndex(selected_index()))
+ if (!tiles_container_->IsValidSelectionIndex(selected_index))
dir = 1;
break;
case ui::VKEY_TAB:
@@ -196,23 +277,21 @@ bool StartPageView::OnKeyPressed(const ui::KeyEvent& event) {
if (dir == 0)
return false;
- if (!IsValidSelectionIndex(selected_index())) {
- SetSelectedIndex(dir == -1 ? num_results() - 1 : 0);
+ if (!tiles_container_->IsValidSelectionIndex(selected_index)) {
+ tiles_container_->SetSelectedIndex(
+ dir == -1 ? tiles_container_->num_results() - 1 : 0);
return true;
}
- int selection_index = selected_index() + dir;
- if (IsValidSelectionIndex(selection_index)) {
- SetSelectedIndex(selection_index);
+ int selection_index = selected_index + dir;
+ if (tiles_container_->IsValidSelectionIndex(selection_index)) {
+ tiles_container_->SetSelectedIndex(selection_index);
return true;
}
return false;
}
-void StartPageView::OnContainerSelected(bool from_bottom) {
-}
-
gfx::Rect StartPageView::GetSearchBoxBounds() const {
return search_box_spacer_view_->bounds();
}
@@ -233,39 +312,8 @@ void StartPageView::UpdateCustomPageClickzoneVisibility() {
custom_page_clickzone->Hide();
}
-int StartPageView::Update() {
- std::vector<SearchResult*> display_results =
- AppListModel::FilterSearchResultsByDisplayType(
- results(), SearchResult::DISPLAY_RECOMMENDATION, kNumStartPageTiles);
-
- // 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];
- search_result_tile_views_[i]->SetSearchResult(item);
- }
-
- tiles_container_->Layout();
- Layout();
- // Add 1 to the results size to account for the all apps button.
- return display_results.size() + 1;
-}
-
-void StartPageView::UpdateSelectedIndex(int old_selected, int new_selected) {
- if (old_selected >= 0)
- GetTileItemView(old_selected)->SetSelected(false);
-
- if (new_selected >= 0)
- GetTileItemView(new_selected)->SetSelected(true);
-}
-
TileItemView* StartPageView::GetTileItemView(size_t index) {
- DCHECK_GT(kNumStartPageTiles + 1, index);
- if (index == kNumStartPageTiles)
- return all_apps_button_;
-
- return search_result_tile_views_[index];
+ return tiles_container_->GetTileItemView(index);
}
} // namespace app_list
« no previous file with comments | « ui/app_list/views/start_page_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698