OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "athena/home/athena_start_page_view.h" | 5 #include "athena/home/athena_start_page_view.h" |
6 | 6 |
7 #include "athena/home/home_card_constants.h" | 7 #include "athena/home/home_card_constants.h" |
8 #include "athena/system/public/system_ui.h" | 8 #include "athena/system/public/system_ui.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 }; | 156 }; |
157 | 157 |
158 } // namespace | 158 } // namespace |
159 | 159 |
160 namespace athena { | 160 namespace athena { |
161 | 161 |
162 // static | 162 // static |
163 const char AthenaStartPageView::kViewClassName[] = "AthenaStartPageView"; | 163 const char AthenaStartPageView::kViewClassName[] = "AthenaStartPageView"; |
164 | 164 |
165 AthenaStartPageView::LayoutData::LayoutData() | 165 AthenaStartPageView::LayoutData::LayoutData() |
166 : system_info_opacity(1.0f), | 166 : system_info_opacity(1.0f), logo_opacity(1.0f) { |
167 logo_opacity(1.0f), | |
168 background_opacity(1.0f) { | |
169 } | 167 } |
170 | 168 |
171 AthenaStartPageView::AthenaStartPageView( | 169 AthenaStartPageView::AthenaStartPageView( |
172 app_list::AppListViewDelegate* view_delegate) | 170 app_list::AppListViewDelegate* view_delegate) |
173 : delegate_(view_delegate), | 171 : delegate_(view_delegate), |
174 layout_state_(0.0f), | 172 layout_state_(0.0f), |
175 weak_factory_(this) { | 173 weak_factory_(this) { |
176 background_ = new views::View(); | |
177 // Vertical gradient background for the time being. | |
178 // TODO(mukai): replace by the actual one. | |
179 background_->set_background( | |
180 views::Background::CreateVerticalGradientBackground(SK_ColorLTGRAY, | |
181 SK_ColorWHITE)); | |
182 background_->SetPaintToLayer(true); | |
183 background_->SetFillsBoundsOpaquely(false); | |
184 AddChildView(background_); | |
185 | |
186 system_info_view_ = | 174 system_info_view_ = |
187 SystemUI::Get()->CreateSystemInfoView(SystemUI::COLOR_SCHEME_DARK); | 175 SystemUI::Get()->CreateSystemInfoView(SystemUI::COLOR_SCHEME_DARK); |
188 system_info_view_->SetPaintToLayer(true); | 176 system_info_view_->SetPaintToLayer(true); |
189 system_info_view_->SetFillsBoundsOpaquely(false); | 177 system_info_view_->SetFillsBoundsOpaquely(false); |
190 AddChildView(system_info_view_); | 178 AddChildView(system_info_view_); |
191 | 179 |
192 logo_ = view_delegate->CreateStartPageWebView( | 180 logo_ = view_delegate->CreateStartPageWebView( |
193 gfx::Size(kWebViewWidth, kWebViewHeight)); | 181 gfx::Size(kWebViewWidth, kWebViewHeight)); |
194 logo_->SetPaintToLayer(true); | 182 logo_->SetPaintToLayer(true); |
195 logo_->SetFillsBoundsOpaquely(false); | 183 logo_->SetFillsBoundsOpaquely(false); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 | 284 |
297 int search_box_max_width = | 285 int search_box_max_width = |
298 state.controls.x() - state.icons.right() - kIconMargin * 2; | 286 state.controls.x() - state.icons.right() - kIconMargin * 2; |
299 state.search_box.set_width(std::min(search_box_max_width, kSearchBoxWidth)); | 287 state.search_box.set_width(std::min(search_box_max_width, kSearchBoxWidth)); |
300 state.search_box.set_height(search_box_container_->height()); | 288 state.search_box.set_height(search_box_container_->height()); |
301 state.search_box.set_x((width - state.search_box.width()) / 2); | 289 state.search_box.set_x((width - state.search_box.width()) / 2); |
302 state.search_box.set_y((kHomeCardHeight - state.search_box.height()) / 2); | 290 state.search_box.set_y((kHomeCardHeight - state.search_box.height()) / 2); |
303 | 291 |
304 state.system_info_opacity = 0.0f; | 292 state.system_info_opacity = 0.0f; |
305 state.logo_opacity = 0.0f; | 293 state.logo_opacity = 0.0f; |
306 state.background_opacity = 0.9f; | |
307 return state; | 294 return state; |
308 } | 295 } |
309 | 296 |
310 AthenaStartPageView::LayoutData AthenaStartPageView::CreateCenteredBounds( | 297 AthenaStartPageView::LayoutData AthenaStartPageView::CreateCenteredBounds( |
311 int width) { | 298 int width) { |
312 LayoutData state; | 299 LayoutData state; |
313 | 300 |
314 state.search_box.set_size(search_box_container_->GetPreferredSize()); | 301 state.search_box.set_size(search_box_container_->GetPreferredSize()); |
315 state.search_box.set_x((width - state.search_box.width()) / 2); | 302 state.search_box.set_x((width - state.search_box.width()) / 2); |
316 state.search_box.set_y(logo_->bounds().bottom() + kInstantContainerSpacing); | 303 state.search_box.set_y(logo_->bounds().bottom() + kInstantContainerSpacing); |
317 | 304 |
318 state.icons.set_size(app_icon_container_->size()); | 305 state.icons.set_size(app_icon_container_->size()); |
319 state.icons.set_x(width / 2 - state.icons.width() - kIconMargin / 2); | 306 state.icons.set_x(width / 2 - state.icons.width() - kIconMargin / 2); |
320 state.icons.set_y(state.search_box.bottom() + kInstantContainerSpacing); | 307 state.icons.set_y(state.search_box.bottom() + kInstantContainerSpacing); |
321 | 308 |
322 state.controls.set_size(control_icon_container_->size()); | 309 state.controls.set_size(control_icon_container_->size()); |
323 state.controls.set_x(width / 2 + kIconMargin / 2 + kIconMargin % 2); | 310 state.controls.set_x(width / 2 + kIconMargin / 2 + kIconMargin % 2); |
324 state.controls.set_y(state.icons.y()); | 311 state.controls.set_y(state.icons.y()); |
325 | 312 |
326 state.system_info_opacity = 1.0f; | 313 state.system_info_opacity = 1.0f; |
327 state.logo_opacity = 1.0f; | 314 state.logo_opacity = 1.0f; |
328 state.background_opacity = 1.0f; | |
329 return state; | 315 return state; |
330 } | 316 } |
331 | 317 |
332 void AthenaStartPageView::UpdateAppIcons() { | 318 void AthenaStartPageView::UpdateAppIcons() { |
333 app_list::AppListItemList* top_level = | 319 app_list::AppListItemList* top_level = |
334 delegate_->GetModel()->top_level_item_list(); | 320 delegate_->GetModel()->top_level_item_list(); |
335 size_t max_items = std::min(top_level->item_count(), kMaxIconNum); | 321 size_t max_items = std::min(top_level->item_count(), kMaxIconNum); |
336 for (size_t i = 0; i < max_items; ++i) { | 322 for (size_t i = 0; i < max_items; ++i) { |
337 if (i < static_cast<size_t>(app_icon_container_->child_count())) { | 323 if (i < static_cast<size_t>(app_icon_container_->child_count())) { |
338 AppIconButton* button = | 324 AppIconButton* button = |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 gfx::Tween::CalculateValue(gfx::Tween::EASE_IN_2, layout_state_), | 425 gfx::Tween::CalculateValue(gfx::Tween::EASE_IN_2, layout_state_), |
440 bottom_bounds.logo_opacity, centered_bounds.logo_opacity)); | 426 bottom_bounds.logo_opacity, centered_bounds.logo_opacity)); |
441 logo_->SetVisible(logo_->layer()->GetTargetOpacity() != 0.0f); | 427 logo_->SetVisible(logo_->layer()->GetTargetOpacity() != 0.0f); |
442 | 428 |
443 app_icon_container_->SetBoundsRect(gfx::Tween::RectValueBetween( | 429 app_icon_container_->SetBoundsRect(gfx::Tween::RectValueBetween( |
444 layout_state_, bottom_bounds.icons, centered_bounds.icons)); | 430 layout_state_, bottom_bounds.icons, centered_bounds.icons)); |
445 control_icon_container_->SetBoundsRect(gfx::Tween::RectValueBetween( | 431 control_icon_container_->SetBoundsRect(gfx::Tween::RectValueBetween( |
446 layout_state_, bottom_bounds.controls, centered_bounds.controls)); | 432 layout_state_, bottom_bounds.controls, centered_bounds.controls)); |
447 search_box_container_->SetBoundsRect(gfx::Tween::RectValueBetween( | 433 search_box_container_->SetBoundsRect(gfx::Tween::RectValueBetween( |
448 layout_state_, bottom_bounds.search_box, centered_bounds.search_box)); | 434 layout_state_, bottom_bounds.search_box, centered_bounds.search_box)); |
449 | |
450 background_->SetBoundsRect(bounds()); | |
451 background_->layer()->SetOpacity(gfx::Tween::FloatValueBetween( | |
452 layout_state_, | |
453 bottom_bounds.background_opacity, | |
454 centered_bounds.background_opacity)); | |
455 } | 435 } |
456 | 436 |
457 bool AthenaStartPageView::OnKeyPressed(const ui::KeyEvent& key_event) { | 437 bool AthenaStartPageView::OnKeyPressed(const ui::KeyEvent& key_event) { |
458 return search_results_view_->visible() && | 438 return search_results_view_->visible() && |
459 search_results_view_->OnKeyPressed(key_event); | 439 search_results_view_->OnKeyPressed(key_event); |
460 } | 440 } |
461 | 441 |
462 void AthenaStartPageView::QueryChanged(app_list::SearchBoxView* sender) { | 442 void AthenaStartPageView::QueryChanged(app_list::SearchBoxView* sender) { |
463 delegate_->StartSearch(); | 443 delegate_->StartSearch(); |
464 | 444 |
(...skipping 22 matching lines...) Expand all Loading... |
487 app_list::AppListItem* item) { | 467 app_list::AppListItem* item) { |
488 UpdateAppIcons(); | 468 UpdateAppIcons(); |
489 } | 469 } |
490 | 470 |
491 // static | 471 // static |
492 size_t AthenaStartPageView::GetMaxIconNumForTest() { | 472 size_t AthenaStartPageView::GetMaxIconNumForTest() { |
493 return kMaxIconNum; | 473 return kMaxIconNum; |
494 } | 474 } |
495 | 475 |
496 } // namespace athena | 476 } // namespace athena |
OLD | NEW |