0

Refactor app list ContentsView to use pointer members to find views.

Removed access functions GetAppsContainerView and friends (which look up
a specific index in view_model_ and static_cast it); just directly use
the private fields of ContentsView that hold pointers of the correct
type to these special views.

Added such a pointer for the SearchResultListView.

BUG=377381

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275109 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
mgiuca@chromium.org
2014-06-05 14:49:02 +00:00
parent fcee489553
commit d480d0e497
2 changed files with 20 additions and 33 deletions

@@ -37,19 +37,6 @@ const int kMinHorizVelocityToSwitchPage = 800;
const double kFinishTransitionThreshold = 0.33;
AppsContainerView* GetAppsContainerView(views::ViewModel* model) {
return static_cast<AppsContainerView*>(model->view_at(kIndexAppsContainer));
}
SearchResultListView* GetSearchResultListView(views::ViewModel* model) {
return static_cast<SearchResultListView*>(
model->view_at(kIndexSearchResults));
}
StartPageView* GetStartPageView(views::ViewModel* model) {
return static_cast<StartPageView*>(model->view_at(kIndexStartPage));
}
} // namespace
ContentsView::ContentsView(AppListMainView* app_list_main_view,
@@ -66,10 +53,10 @@ ContentsView::ContentsView(AppListMainView* app_list_main_view,
AddChildView(apps_container_view_);
view_model_->Add(apps_container_view_, kIndexAppsContainer);
SearchResultListView* search_results_view = new SearchResultListView(
app_list_main_view, view_delegate);
AddChildView(search_results_view);
view_model_->Add(search_results_view, kIndexSearchResults);
search_results_view_ =
new SearchResultListView(app_list_main_view, view_delegate);
AddChildView(search_results_view_);
view_model_->Add(search_results_view_, kIndexSearchResults);
if (app_list::switches::IsExperimentalAppListEnabled()) {
start_page_view_ = new StartPageView(app_list_main_view, view_delegate);
@@ -77,7 +64,7 @@ ContentsView::ContentsView(AppListMainView* app_list_main_view,
view_model_->Add(start_page_view_, kIndexStartPage);
}
GetSearchResultListView(view_model_.get())->SetResults(model->results());
search_results_view_->SetResults(model->results());
}
ContentsView::~ContentsView() {
@@ -108,18 +95,16 @@ void ContentsView::SetShowState(ShowState show_state) {
}
void ContentsView::ShowStateChanged() {
SearchResultListView* results_view =
GetSearchResultListView(view_model_.get());
// TODO(xiyuan): Highlight default match instead of the first.
if (show_state_ == SHOW_SEARCH_RESULTS && results_view->visible())
results_view->SetSelectedIndex(0);
results_view->UpdateAutoLaunchState();
if (show_state_ == SHOW_SEARCH_RESULTS && search_results_view_->visible())
search_results_view_->SetSelectedIndex(0);
search_results_view_->UpdateAutoLaunchState();
// Notify parent AppListMainView of show state change.
app_list_main_view_->OnContentsViewShowStateChanged();
if (show_state_ == SHOW_START_PAGE)
GetStartPageView(view_model_.get())->Reset();
start_page_view_->Reset();
AnimateToIdealBounds();
}
@@ -207,10 +192,9 @@ void ContentsView::Prerender() {
}
gfx::Size ContentsView::GetPreferredSize() const {
const gfx::Size container_size = GetAppsContainerView(view_model_.get())->
apps_grid_view()->GetPreferredSize();
const gfx::Size results_size =
GetSearchResultListView(view_model_.get())->GetPreferredSize();
const gfx::Size container_size =
apps_container_view_->apps_grid_view()->GetPreferredSize();
const gfx::Size results_size = search_results_view_->GetPreferredSize();
int width = std::max(container_size.width(), results_size.width());
int height = std::max(container_size.height(), results_size.height());
@@ -225,11 +209,11 @@ void ContentsView::Layout() {
bool ContentsView::OnKeyPressed(const ui::KeyEvent& event) {
switch (show_state_) {
case SHOW_APPS:
return GetAppsContainerView(view_model_.get())->OnKeyPressed(event);
return apps_container_view_->OnKeyPressed(event);
case SHOW_SEARCH_RESULTS:
return GetSearchResultListView(view_model_.get())->OnKeyPressed(event);
return search_results_view_->OnKeyPressed(event);
case SHOW_START_PAGE:
return GetStartPageView(view_model_.get())->OnKeyPressed(event);
return start_page_view_->OnKeyPressed(event);
default:
NOTREACHED() << "Unknown show state " << show_state_;
}

@@ -30,6 +30,7 @@ class AppListModel;
class AppListViewDelegate;
class AppsContainerView;
class PaginationModel;
class SearchResultListView;
class StartPageView;
// A view to manage sub views under the search box (apps grid view + page
@@ -92,8 +93,10 @@ class APP_LIST_EXPORT ContentsView : public views::View {
ShowState show_state_;
AppsContainerView* apps_container_view_; // Owned by the views hierarchy.
StartPageView* start_page_view_; // Owned by the views hierarchy.
// Special sub views of the ContentsView. All owned by the views hierarchy.
AppsContainerView* apps_container_view_;
SearchResultListView* search_results_view_;
StartPageView* start_page_view_;
AppListMainView* app_list_main_view_; // Parent view, owns this.