| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/app_list/views/app_list_main_view.h" | 5 #include "ui/app_list/views/app_list_main_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 #include "ui/views/layout/fill_layout.h" | 32 #include "ui/views/layout/fill_layout.h" |
| 33 #include "ui/views/widget/widget.h" | 33 #include "ui/views/widget/widget.h" |
| 34 | 34 |
| 35 namespace app_list { | 35 namespace app_list { |
| 36 | 36 |
| 37 namespace { | 37 namespace { |
| 38 | 38 |
| 39 // The maximum allowed time to wait for icon loading in milliseconds. | 39 // The maximum allowed time to wait for icon loading in milliseconds. |
| 40 const int kMaxIconLoadingWaitTimeInMs = 50; | 40 const int kMaxIconLoadingWaitTimeInMs = 50; |
| 41 | 41 |
| 42 // A view that holds another view and takes its preferred size. This is used for | |
| 43 // wrapping the search box view so it still gets laid out while hidden. This is | |
| 44 // a separate class so it can notify the main view on search box visibility | |
| 45 // change. | |
| 46 class SearchBoxContainerView : public views::View { | |
| 47 public: | |
| 48 SearchBoxContainerView(AppListMainView* host, SearchBoxView* search_box) | |
| 49 : host_(host), search_box_(search_box) { | |
| 50 SetLayoutManager(new views::FillLayout()); | |
| 51 AddChildView(search_box); | |
| 52 } | |
| 53 virtual ~SearchBoxContainerView() {} | |
| 54 | |
| 55 private: | |
| 56 // Overridden from views::View: | |
| 57 virtual void ChildVisibilityChanged(views::View* child) OVERRIDE { | |
| 58 DCHECK_EQ(search_box_, child); | |
| 59 host_->NotifySearchBoxVisibilityChanged(); | |
| 60 } | |
| 61 | |
| 62 AppListMainView* host_; | |
| 63 SearchBoxView* search_box_; | |
| 64 | |
| 65 DISALLOW_COPY_AND_ASSIGN(SearchBoxContainerView); | |
| 66 }; | |
| 67 | |
| 68 } // namespace | 42 } // namespace |
| 69 | 43 |
| 70 //////////////////////////////////////////////////////////////////////////////// | 44 //////////////////////////////////////////////////////////////////////////////// |
| 71 // AppListMainView::IconLoader | 45 // AppListMainView::IconLoader |
| 72 | 46 |
| 73 class AppListMainView::IconLoader : public AppListItemObserver { | 47 class AppListMainView::IconLoader : public AppListItemObserver { |
| 74 public: | 48 public: |
| 75 IconLoader(AppListMainView* owner, | 49 IconLoader(AppListMainView* owner, |
| 76 AppListItem* item, | 50 AppListItem* item, |
| 77 float scale) | 51 float scale) |
| (...skipping 25 matching lines...) Expand all Loading... |
| 103 //////////////////////////////////////////////////////////////////////////////// | 77 //////////////////////////////////////////////////////////////////////////////// |
| 104 // AppListMainView: | 78 // AppListMainView: |
| 105 | 79 |
| 106 AppListMainView::AppListMainView(AppListViewDelegate* delegate) | 80 AppListMainView::AppListMainView(AppListViewDelegate* delegate) |
| 107 : delegate_(delegate), | 81 : delegate_(delegate), |
| 108 model_(delegate->GetModel()), | 82 model_(delegate->GetModel()), |
| 109 search_box_view_(NULL), | 83 search_box_view_(NULL), |
| 110 contents_view_(NULL), | 84 contents_view_(NULL), |
| 111 contents_switcher_view_(NULL), | 85 contents_switcher_view_(NULL), |
| 112 weak_ptr_factory_(this) { | 86 weak_ptr_factory_(this) { |
| 113 SetLayoutManager( | 87 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0)); |
| 114 new views::BoxLayout(views::BoxLayout::kVertical, | |
| 115 0, | |
| 116 0, | |
| 117 switches::IsExperimentalAppListEnabled() ? 0 : 1)); | |
| 118 | |
| 119 search_box_view_ = new SearchBoxView(this, delegate); | |
| 120 views::View* container = new SearchBoxContainerView(this, search_box_view_); | |
| 121 if (switches::IsExperimentalAppListEnabled()) { | |
| 122 container->SetBorder( | |
| 123 views::Border::CreateEmptyBorder(kExperimentalWindowPadding, | |
| 124 kExperimentalWindowPadding, | |
| 125 0, | |
| 126 kExperimentalWindowPadding)); | |
| 127 } | |
| 128 AddChildView(container); | |
| 129 } | 88 } |
| 130 | 89 |
| 131 AppListMainView::~AppListMainView() { | 90 AppListMainView::~AppListMainView() { |
| 132 pending_icon_loaders_.clear(); | 91 pending_icon_loaders_.clear(); |
| 133 } | 92 } |
| 134 | 93 |
| 135 void AppListMainView::Init(gfx::NativeView parent, int initial_apps_page) { | 94 void AppListMainView::Init(gfx::NativeView parent, |
| 95 int initial_apps_page, |
| 96 SearchBoxView* search_box_view) { |
| 97 search_box_view_ = search_box_view; |
| 136 AddContentsViews(); | 98 AddContentsViews(); |
| 137 | 99 |
| 138 // Switch the apps grid view to the specified page. | 100 // Switch the apps grid view to the specified page. |
| 139 app_list::PaginationModel* pagination_model = GetAppsPaginationModel(); | 101 app_list::PaginationModel* pagination_model = GetAppsPaginationModel(); |
| 140 if (pagination_model->is_valid_page(initial_apps_page)) | 102 if (pagination_model->is_valid_page(initial_apps_page)) |
| 141 pagination_model->SelectPage(initial_apps_page, false); | 103 pagination_model->SelectPage(initial_apps_page, false); |
| 142 | 104 |
| 143 // Starts icon loading early. | 105 // Starts icon loading early. |
| 144 PreloadIcons(parent); | 106 PreloadIcons(parent); |
| 145 } | 107 } |
| 146 | 108 |
| 147 void AppListMainView::AddContentsViews() { | 109 void AppListMainView::AddContentsViews() { |
| 110 DCHECK(search_box_view_); |
| 111 |
| 148 contents_view_ = new ContentsView(this); | 112 contents_view_ = new ContentsView(this); |
| 149 if (app_list::switches::IsExperimentalAppListEnabled()) { | 113 if (app_list::switches::IsExperimentalAppListEnabled()) { |
| 150 contents_switcher_view_ = new ContentsSwitcherView(contents_view_); | 114 contents_switcher_view_ = new ContentsSwitcherView(contents_view_); |
| 151 contents_view_->SetContentsSwitcherView(contents_switcher_view_); | 115 contents_view_->SetContentsSwitcherView(contents_switcher_view_); |
| 152 } | 116 } |
| 153 contents_view_->InitNamedPages(model_, delegate_); | 117 contents_view_->InitNamedPages(model_, delegate_); |
| 154 AddChildView(contents_view_); | 118 AddChildView(contents_view_); |
| 155 if (contents_switcher_view_) | 119 if (contents_switcher_view_) |
| 156 AddChildView(contents_switcher_view_); | 120 AddChildView(contents_switcher_view_); |
| 157 | 121 |
| 158 search_box_view_->set_contents_view(contents_view_); | 122 search_box_view_->set_contents_view(contents_view_); |
| 123 UpdateSearchBoxVisibility(); |
| 159 | 124 |
| 160 contents_view_->SetPaintToLayer(true); | 125 contents_view_->SetPaintToLayer(true); |
| 161 contents_view_->SetFillsBoundsOpaquely(false); | 126 contents_view_->SetFillsBoundsOpaquely(false); |
| 162 contents_view_->layer()->SetMasksToBounds(true); | 127 contents_view_->layer()->SetMasksToBounds(true); |
| 163 | 128 |
| 164 delegate_->StartSearch(); | 129 delegate_->StartSearch(); |
| 165 } | 130 } |
| 166 | 131 |
| 167 void AppListMainView::ShowAppListWhenReady() { | 132 void AppListMainView::ShowAppListWhenReady() { |
| 168 if (pending_icon_loaders_.empty()) { | 133 if (pending_icon_loaders_.empty()) { |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 // Resubmit the query via a posted task so that all observers for the | 305 // Resubmit the query via a posted task so that all observers for the |
| 341 // uninstall notification are notified. | 306 // uninstall notification are notified. |
| 342 base::MessageLoop::current()->PostTask( | 307 base::MessageLoop::current()->PostTask( |
| 343 FROM_HERE, | 308 FROM_HERE, |
| 344 base::Bind(&AppListMainView::QueryChanged, | 309 base::Bind(&AppListMainView::QueryChanged, |
| 345 weak_ptr_factory_.GetWeakPtr(), | 310 weak_ptr_factory_.GetWeakPtr(), |
| 346 search_box_view_)); | 311 search_box_view_)); |
| 347 } | 312 } |
| 348 | 313 |
| 349 } // namespace app_list | 314 } // namespace app_list |
| OLD | NEW |