Skip to content

Commit

Permalink
Move app list search tiles into SearchResultTileItemListView.
Browse files Browse the repository at this point in the history
This CL factors a SearchResultTileItemListView out of
SearchResultPageView which is responsible for displaying
tile item search results in a list.

BUG=416756

Review URL: https://codereview.chromium.org/720663002

Cr-Commit-Position: refs/heads/master@{#304009}
  • Loading branch information
nik3daz authored and Commit bot committed Nov 13, 2014
1 parent db52bdf commit 74ff360
Show file tree
Hide file tree
Showing 8 changed files with 106 additions and 58 deletions.
6 changes: 4 additions & 2 deletions ui/app_list/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -148,14 +148,16 @@ component("app_list") {
"views/search_result_list_view_delegate.h",
"views/search_result_page_view.cc",
"views/search_result_page_view.h",
"views/search_result_tile_item_list_view.cc",
"views/search_result_tile_item_list_view.h",
"views/search_result_tile_item_view.cc",
"views/search_result_tile_item_view.h",
"views/search_result_view.cc",
"views/search_result_view.h",
"views/speech_view.cc",
"views/speech_view.h",
"views/start_page_view.cc",
"views/start_page_view.h",
"views/search_result_tile_item_view.cc",
"views/search_result_tile_item_view.h",
"views/tile_item_view.cc",
"views/tile_item_view.h",
"views/top_icon_animation_view.cc",
Expand Down
2 changes: 2 additions & 0 deletions ui/app_list/app_list.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@
'views/search_result_page_view.cc',
'views/search_result_page_view.h',
'views/search_result_list_view_delegate.h',
'views/search_result_tile_item_list_view.cc',
'views/search_result_tile_item_list_view.h',
'views/search_result_tile_item_view.cc',
'views/search_result_tile_item_view.h',
'views/search_result_view.cc',
Expand Down
4 changes: 3 additions & 1 deletion ui/app_list/views/search_result_container_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ void SearchResultContainerView::SetResults(
if (results_)
results_->AddObserver(this);

Update();
DoUpdate();
}

void SearchResultContainerView::ScheduleUpdate() {
Expand Down Expand Up @@ -60,6 +60,8 @@ void SearchResultContainerView::ListItemsChanged(size_t start, size_t count) {

void SearchResultContainerView::DoUpdate() {
Update();
Layout();
PreferredSizeChanged();
update_factory_.InvalidateWeakPtrs();
}

Expand Down
1 change: 0 additions & 1 deletion ui/app_list/views/search_result_list_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,6 @@ void SearchResultListView::Update() {
if (selected_index_ > last_visible_index_)
SetSelectedIndex(last_visible_index_);

Layout();
UpdateAutoLaunchState();
}

Expand Down
49 changes: 9 additions & 40 deletions ui/app_list/views/search_result_page_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,80 +4,49 @@

#include "ui/app_list/views/search_result_page_view.h"

#include "ui/app_list/app_list_constants.h"
#include "ui/app_list/app_list_view_delegate.h"
#include "ui/app_list/search_result.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/search_result_tile_item_list_view.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/widget/widget.h"

namespace app_list {

namespace {

const int kGroupSpacing = 20;

// Tile container constants.
const size_t kNumSearchResultTiles = 5;
const int kTileSpacing = 10;

} // namespace

SearchResultPageView::SearchResultPageView(AppListMainView* app_list_main_view,
AppListViewDelegate* view_delegate)
: results_view_(
new SearchResultListView(app_list_main_view, view_delegate)),
tiles_container_(new views::View) {
SetLayoutManager(
new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, kGroupSpacing));
tiles_view_(new SearchResultTileItemListView()) {
SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical,
kExperimentalWindowPadding, 0,
kGroupSpacing));

// The view containing the search results.
AddChildView(results_view_);

// The view containing the start page tiles.
InitTilesContainer();
AddChildView(tiles_container_);
AddChildView(tiles_view_);

AppListModel::SearchResults* model = view_delegate->GetModel()->results();
SetResults(model);
results_view_->SetResults(model);
tiles_view_->SetResults(model);
}

SearchResultPageView::~SearchResultPageView() {
}

void SearchResultPageView::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);

for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
SearchResultTileItemView* tile_item = new SearchResultTileItemView();
tiles_container_->AddChildView(tile_item);
tile_views_.push_back(tile_item);
}
}

bool SearchResultPageView::OnKeyPressed(const ui::KeyEvent& event) {
return results_view_->OnKeyPressed(event);
}

void SearchResultPageView::Update() {
results_view_->SetSelectedIndex(0);

std::vector<SearchResult*> display_results =
AppListModel::FilterSearchResultsByDisplayType(
results(), SearchResult::DISPLAY_TILE, kNumSearchResultTiles);
for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
SearchResult* item =
i < display_results.size() ? display_results[i] : nullptr;
tile_views_[i]->SetSearchResult(item);
}
tiles_container_->Layout();
void SearchResultPageView::ChildPreferredSizeChanged(views::View* child) {
Layout();
}

Expand Down
19 changes: 5 additions & 14 deletions ui/app_list/views/search_result_page_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,38 +10,29 @@
#include "ui/app_list/app_list_export.h"
#include "ui/app_list/app_list_model.h"
#include "ui/app_list/views/search_result_container_view.h"

namespace views {
class View;
}
#include "ui/views/view.h"

namespace app_list {

class AppListMainView;
class AppListViewDelegate;
class SearchResultListView;
class SearchResultTileItemView;
class SearchResultTileItemListView;

// The start page for the experimental app list.
class APP_LIST_EXPORT SearchResultPageView : public SearchResultContainerView {
class APP_LIST_EXPORT SearchResultPageView : public views::View {
public:
SearchResultPageView(AppListMainView* app_list_main_view,
AppListViewDelegate* view_delegate);
~SearchResultPageView() override;

// Overridden from views::View:
bool OnKeyPressed(const ui::KeyEvent& event) override;

// Overridden from SearchResultContainerView:
void Update() override;
void ChildPreferredSizeChanged(views::View* child) override;

private:
void InitTilesContainer();

SearchResultListView* results_view_; // Owned by views hierarchy.
views::View* tiles_container_; // Owned by views hierarchy.

std::vector<SearchResultTileItemView*> tile_views_;
SearchResultTileItemListView* tiles_view_; // Owned by views hierarchy.

DISALLOW_COPY_AND_ASSIGN(SearchResultPageView);
};
Expand Down
48 changes: 48 additions & 0 deletions ui/app_list/views/search_result_tile_item_list_view.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/app_list/views/search_result_tile_item_list_view.h"

#include "ui/app_list/app_list_constants.h"
#include "ui/app_list/app_list_view_delegate.h"
#include "ui/app_list/search_result.h"
#include "ui/app_list/views/search_result_tile_item_view.h"
#include "ui/views/background.h"
#include "ui/views/layout/box_layout.h"

namespace {

// Layout constants.
const size_t kNumSearchResultTiles = 5;
const int kTileSpacing = 10;

} // namespace

namespace app_list {

SearchResultTileItemListView::SearchResultTileItemListView() {
SetLayoutManager(
new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, kTileSpacing));
for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
SearchResultTileItemView* tile_item = new SearchResultTileItemView();
tile_views_.push_back(tile_item);
AddChildView(tile_item);
}
}

SearchResultTileItemListView::~SearchResultTileItemListView() {
}

void SearchResultTileItemListView::Update() {
std::vector<SearchResult*> display_results =
AppListModel::FilterSearchResultsByDisplayType(
results(), SearchResult::DISPLAY_TILE, kNumSearchResultTiles);
for (size_t i = 0; i < kNumSearchResultTiles; ++i) {
SearchResult* item =
i < display_results.size() ? display_results[i] : nullptr;
tile_views_[i]->SetSearchResult(item);
}
}

} // namespace app_list
35 changes: 35 additions & 0 deletions ui/app_list/views/search_result_tile_item_list_view.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_APP_LIST_VIEWS_SEARCH_RESULT_TILE_ITEM_LIST_VIEW_H_
#define UI_APP_LIST_VIEWS_SEARCH_RESULT_TILE_ITEM_LIST_VIEW_H_

#include <vector>

#include "base/macros.h"
#include "ui/app_list/views/search_result_container_view.h"

namespace app_list {

class SearchResultTileItemView;

// Displays a list of SearchResultTileItemView.
class APP_LIST_EXPORT SearchResultTileItemListView
: public SearchResultContainerView {
public:
SearchResultTileItemListView();
~SearchResultTileItemListView() override;

// Overridden from SearchResultContainerView:
void Update() override;

private:
std::vector<SearchResultTileItemView*> tile_views_;

DISALLOW_COPY_AND_ASSIGN(SearchResultTileItemListView);
};

} // namespace app_list

#endif // UI_APP_LIST_VIEWS_SEARCH_RESULT_TILE_ITEM_LIST_VIEW_H_

0 comments on commit 74ff360

Please sign in to comment.