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:
ui/app_list/views
@@ -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.
|
||||
|
||||
|
Reference in New Issue
Block a user