1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/app_list/views/apps_container_view.h"
7 #include "ui/app_list/app_list_constants.h"
8 #include "ui/app_list/app_list_folder_item.h"
9 #include "ui/app_list/pagination_model.h"
10 #include "ui/app_list/views/app_list_folder_view.h"
11 #include "ui/app_list/views/app_list_main_view.h"
12 #include "ui/app_list/views/apps_grid_view.h"
16 AppsContainerView::AppsContainerView(AppListMainView* app_list_main_view,
17 PaginationModel* pagination_model,
19 content::WebContents* start_page_contents)
21 show_state_(SHOW_APPS) {
22 apps_grid_view_ = new AppsGridView(
23 app_list_main_view, pagination_model, start_page_contents);
24 apps_grid_view_->SetLayout(kPreferredIconDimension,
27 AddChildView(apps_grid_view_);
29 app_list_folder_view_ = new AppListFolderView(
34 AddChildView(app_list_folder_view_);
36 apps_grid_view_->SetModel(model_);
37 apps_grid_view_->SetItemList(model_->item_list());
40 AppsContainerView::~AppsContainerView() {
43 void AppsContainerView::ShowActiveFolder(AppListFolderItem* folder_item) {
44 app_list_folder_view_->SetAppListFolderItem(folder_item);
45 SetShowState(SHOW_ACTIVE_FOLDER);
48 void AppsContainerView::ShowApps() {
49 SetShowState(SHOW_APPS);
52 gfx::Size AppsContainerView::GetPreferredSize() {
53 const gfx::Size grid_size = apps_grid_view_->GetPreferredSize();
54 const gfx::Size folder_view_size = app_list_folder_view_->GetPreferredSize();
56 int width = std::max(grid_size.width(), folder_view_size.width());
57 int height = std::max(grid_size.height(), folder_view_size.height());
58 return gfx::Size(width, height);
61 void AppsContainerView::Layout() {
62 gfx::Rect rect(GetContentsBounds());
68 app_list_folder_view_->SetVisible(false);
69 apps_grid_view_->SetBoundsRect(rect);
70 apps_grid_view_->SetVisible(true);
72 case SHOW_ACTIVE_FOLDER:
73 apps_grid_view_->SetVisible(false);
74 app_list_folder_view_->SetBoundsRect(rect);
75 app_list_folder_view_->SetVisible(true);
82 void AppsContainerView::SetShowState(ShowState show_state) {
83 if (show_state_ == show_state)
86 show_state_ = show_state;
90 } // namespace app_list