| Index: athena/home/home_card_view.cc
|
| diff --git a/athena/home/home_card_view.cc b/athena/home/home_card_view.cc
|
| deleted file mode 100644
|
| index 133ad5c16b77796184f5fe1ef6bb2dcd879a74cb..0000000000000000000000000000000000000000
|
| --- a/athena/home/home_card_view.cc
|
| +++ /dev/null
|
| @@ -1,263 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "athena/home/home_card_view.h"
|
| -
|
| -#include "athena/home/home_card_constants.h"
|
| -#include "athena/util/athena_constants.h"
|
| -#include "athena/wm/public/window_manager.h"
|
| -#include "ui/app_list/app_list_view_delegate.h"
|
| -#include "ui/app_list/views/app_list_main_view.h"
|
| -#include "ui/app_list/views/contents_view.h"
|
| -#include "ui/app_list/views/search_box_view.h"
|
| -#include "ui/aura/window.h"
|
| -#include "ui/compositor/closure_animation_observer.h"
|
| -#include "ui/compositor/scoped_layer_animation_settings.h"
|
| -#include "ui/views/background.h"
|
| -#include "ui/views/focus/focus_manager.h"
|
| -#include "ui/views/widget/widget.h"
|
| -
|
| -namespace athena {
|
| -
|
| -namespace {
|
| -
|
| -const float kMinimizedHomeOpacity = 0.65f;
|
| -const int kIndicatorOffset = 24;
|
| -const int kAppListOffset = -128;
|
| -}
|
| -
|
| -HomeCardView::HomeCardView(app_list::AppListViewDelegate* view_delegate,
|
| - HomeCardGestureManager::Delegate* gesture_delegate)
|
| - : background_(new views::View),
|
| - main_view_(new app_list::AppListMainView(view_delegate)),
|
| - search_box_view_(new app_list::SearchBoxView(main_view_, view_delegate)),
|
| - minimized_background_(new views::View()),
|
| - drag_indicator_(new views::View()),
|
| - gesture_delegate_(gesture_delegate),
|
| - weak_factory_(this) {
|
| - background_->set_background(
|
| - views::Background::CreateVerticalGradientBackground(SK_ColorLTGRAY,
|
| - SK_ColorWHITE));
|
| - background_->SetPaintToLayer(true);
|
| - background_->SetFillsBoundsOpaquely(false);
|
| - AddChildView(background_);
|
| -
|
| - main_view_->SetPaintToLayer(true);
|
| - main_view_->SetFillsBoundsOpaquely(false);
|
| - main_view_->layer()->SetMasksToBounds(true);
|
| - AddChildView(main_view_);
|
| -
|
| - search_box_view_->SetPaintToLayer(true);
|
| - search_box_view_->SetFillsBoundsOpaquely(false);
|
| - search_box_view_->layer()->SetMasksToBounds(true);
|
| - AddChildView(search_box_view_);
|
| -
|
| - minimized_background_->set_background(
|
| - views::Background::CreateSolidBackground(
|
| - SkColorSetA(SK_ColorBLACK, 256 * kMinimizedHomeOpacity)));
|
| - minimized_background_->SetPaintToLayer(true);
|
| - minimized_background_->SetFillsBoundsOpaquely(false);
|
| - minimized_background_->layer()->set_name("MinimizedBackground");
|
| - AddChildView(minimized_background_);
|
| -
|
| - drag_indicator_->set_background(
|
| - views::Background::CreateSolidBackground(SK_ColorWHITE));
|
| - drag_indicator_->SetPaintToLayer(true);
|
| - AddChildView(drag_indicator_);
|
| -}
|
| -
|
| -HomeCardView::~HomeCardView() {
|
| -}
|
| -
|
| -void HomeCardView::Init() {
|
| - main_view_->Init(GetWidget()->GetNativeView(),
|
| - -1, /* inital apps page: -1 means default */
|
| - search_box_view_);
|
| -}
|
| -
|
| -void HomeCardView::SetStateProgress(HomeCard::State from_state,
|
| - HomeCard::State to_state,
|
| - float progress) {
|
| - // TODO(mukai): not clear the focus, but simply close the virtual keyboard.
|
| - GetFocusManager()->ClearFocus();
|
| -
|
| - gfx::Rect from_main_bounds = GetMainViewBounds(from_state);
|
| - gfx::Rect to_main_bounds = GetMainViewBounds(to_state);
|
| - if (from_main_bounds != to_main_bounds) {
|
| - DCHECK_EQ(from_main_bounds.size().ToString(),
|
| - to_main_bounds.size().ToString());
|
| - gfx::Rect main_bounds = gfx::Tween::RectValueBetween(
|
| - progress, from_main_bounds, to_main_bounds);
|
| - main_view_->SetBoundsRect(main_bounds);
|
| - main_bounds.set_height(
|
| - search_box_view_->GetHeightForWidth(main_bounds.width()));
|
| - search_box_view_->SetBoundsRect(main_bounds);
|
| - }
|
| -
|
| - float background_opacity = 1.0f;
|
| - if (from_state == HomeCard::VISIBLE_MINIMIZED ||
|
| - to_state == HomeCard::VISIBLE_MINIMIZED) {
|
| - background_opacity = (from_state == HomeCard::VISIBLE_MINIMIZED)
|
| - ? progress
|
| - : (1.0f - progress);
|
| - }
|
| - background_->layer()->SetOpacity(background_opacity);
|
| - minimized_background_->layer()->SetOpacity(1.0f - background_opacity);
|
| - UpdateMinimizedBackgroundVisibility();
|
| -
|
| - int background_height = kHomeCardHeight;
|
| - if (from_state == HomeCard::VISIBLE_CENTERED ||
|
| - to_state == HomeCard::VISIBLE_CENTERED) {
|
| - gfx::Rect window_bounds = GetWidget()->GetWindowBoundsInScreen();
|
| - background_height = window_bounds.height() - window_bounds.y();
|
| - }
|
| - gfx::Transform background_transform;
|
| - background_transform.Scale(SK_MScalar1, SkIntToMScalar(background_height) /
|
| - SkIntToMScalar(height()));
|
| - background_->layer()->SetTransform(background_transform);
|
| -
|
| - gfx::Rect from_bounds = GetDragIndicatorBounds(from_state);
|
| - gfx::Rect to_bounds = GetDragIndicatorBounds(to_state);
|
| - if (from_bounds != to_bounds) {
|
| - DCHECK_EQ(from_bounds.size().ToString(), to_bounds.size().ToString());
|
| - drag_indicator_->SetBoundsRect(
|
| - gfx::Tween::RectValueBetween(progress, from_bounds, to_bounds));
|
| - }
|
| -}
|
| -
|
| -void HomeCardView::SetStateWithAnimation(
|
| - HomeCard::State state,
|
| - gfx::Tween::Type tween_type,
|
| - const base::Closure& on_animation_ended) {
|
| - float minimized_opacity =
|
| - (state == HomeCard::VISIBLE_MINIMIZED) ? 1.0f : 0.0f;
|
| - // |minimized_background_| needs to be visible before scheduling animation.
|
| - if (state == HomeCard::VISIBLE_MINIMIZED)
|
| - minimized_background_->SetVisible(true);
|
| -
|
| - if (minimized_opacity != minimized_background_->layer()->GetTargetOpacity()) {
|
| - ui::ScopedLayerAnimationSettings settings(
|
| - minimized_background_->layer()->GetAnimator());
|
| - settings.SetTweenType(gfx::Tween::EASE_IN);
|
| - settings.AddObserver(new ui::ClosureAnimationObserver(
|
| - base::Bind(&HomeCardView::UpdateMinimizedBackgroundVisibility,
|
| - weak_factory_.GetWeakPtr())));
|
| - minimized_background_->layer()->SetOpacity(minimized_opacity);
|
| - }
|
| -
|
| - gfx::Transform background_transform;
|
| - if (state != HomeCard::VISIBLE_CENTERED) {
|
| - background_transform.Scale(SK_MScalar1, SkIntToMScalar(kHomeCardHeight) /
|
| - SkIntToMScalar(height()));
|
| - }
|
| - float background_opacity = 1.0f - minimized_opacity;
|
| - if (background_->layer()->GetTargetTransform() != background_transform ||
|
| - background_->layer()->GetTargetOpacity() != background_opacity) {
|
| - ui::ScopedLayerAnimationSettings settings(
|
| - background_->layer()->GetAnimator());
|
| - settings.SetTweenType(tween_type);
|
| - background_->layer()->SetTransform(background_transform);
|
| - background_->layer()->SetOpacity(background_opacity);
|
| - }
|
| -
|
| - {
|
| - ui::ScopedLayerAnimationSettings settings(
|
| - drag_indicator_->layer()->GetAnimator());
|
| - settings.SetTweenType(tween_type);
|
| - drag_indicator_->SetBoundsRect(GetDragIndicatorBounds(state));
|
| - }
|
| -
|
| - {
|
| - ui::ScopedLayerAnimationSettings settings(
|
| - main_view_->layer()->GetAnimator());
|
| - settings.SetTweenType(tween_type);
|
| - settings.AddObserver(new ui::ClosureAnimationObserver(on_animation_ended));
|
| - gfx::Rect main_bounds = GetMainViewBounds(state);
|
| - main_view_->SetBoundsRect(main_bounds);
|
| - main_bounds.set_height(
|
| - search_box_view_->GetHeightForWidth(main_bounds.width()));
|
| - search_box_view_->SetBoundsRect(main_bounds);
|
| - }
|
| -
|
| - if (state == HomeCard::VISIBLE_BOTTOM) {
|
| - app_list::ContentsView* contents_view = main_view_->contents_view();
|
| - contents_view->SetActivePage(contents_view->GetPageIndexForState(
|
| - app_list::AppListModel::STATE_START));
|
| - }
|
| -}
|
| -
|
| -void HomeCardView::ClearGesture() {
|
| - gesture_manager_.reset();
|
| -}
|
| -
|
| -void HomeCardView::OnGestureEvent(ui::GestureEvent* event) {
|
| - if (!gesture_manager_ && event->type() == ui::ET_GESTURE_SCROLL_BEGIN) {
|
| - gesture_manager_.reset(new HomeCardGestureManager(
|
| - gesture_delegate_,
|
| - GetWidget()->GetNativeWindow()->GetRootWindow()->bounds()));
|
| - }
|
| -
|
| - if (gesture_manager_)
|
| - gesture_manager_->ProcessGestureEvent(event);
|
| -}
|
| -
|
| -bool HomeCardView::OnMousePressed(const ui::MouseEvent& event) {
|
| - if (HomeCard::Get()->GetState() == HomeCard::VISIBLE_MINIMIZED &&
|
| - event.IsLeftMouseButton() && event.GetClickCount() == 1) {
|
| - athena::WindowManager::Get()->EnterOverview();
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -void HomeCardView::Layout() {
|
| - const gfx::Rect contents_bounds = GetContentsBounds();
|
| - background_->SetBoundsRect(contents_bounds);
|
| - minimized_background_->SetBoundsRect(contents_bounds);
|
| - const gfx::Rect drag_indicator_bounds =
|
| - GetDragIndicatorBounds(HomeCard::Get()->GetState());
|
| - drag_indicator_->SetBoundsRect(drag_indicator_bounds);
|
| -
|
| - gfx::Rect main_bounds(GetMainViewBounds(HomeCard::Get()->GetState()));
|
| - main_view_->SetBoundsRect(main_bounds);
|
| -
|
| - main_bounds.set_height(
|
| - search_box_view_->GetHeightForWidth(main_bounds.width()));
|
| - search_box_view_->SetBoundsRect(main_bounds);
|
| -}
|
| -
|
| -gfx::Rect HomeCardView::GetDragIndicatorBounds(HomeCard::State state) {
|
| - gfx::Rect drag_indicator_bounds(
|
| - GetContentsBounds().CenterPoint().x() - kHomeCardDragIndicatorWidth / 2,
|
| - kHomeCardDragIndicatorMarginHeight, kHomeCardDragIndicatorWidth,
|
| - kHomeCardDragIndicatorHeight);
|
| - if (state == HomeCard::VISIBLE_CENTERED)
|
| - drag_indicator_bounds.Offset(0, kSystemUIHeight);
|
| - return drag_indicator_bounds;
|
| -}
|
| -
|
| -gfx::Rect HomeCardView::GetMainViewBounds(HomeCard::State state) {
|
| - const gfx::Rect contents_bounds = GetContentsBounds();
|
| - const int main_width = main_view_->GetPreferredSize().width();
|
| - gfx::Rect main_bounds(
|
| - contents_bounds.CenterPoint().x() - main_width / 2,
|
| - GetDragIndicatorBounds(state).bottom() + kIndicatorOffset, main_width,
|
| - contents_bounds.height());
|
| - // This is a bit hacky but slightly shifting up the main_view to fit
|
| - // the search box and app icons in the home card.
|
| - if (state != HomeCard::VISIBLE_CENTERED)
|
| - main_bounds.set_y(kAppListOffset);
|
| - return main_bounds;
|
| -}
|
| -
|
| -void HomeCardView::UpdateMinimizedBackgroundVisibility() {
|
| - minimized_background_->SetVisible(
|
| - minimized_background_->layer()->GetTargetOpacity() != 0.0f);
|
| -}
|
| -
|
| -views::View* HomeCardView::GetContentsView() {
|
| - return this;
|
| -}
|
| -
|
| -} // namespace athena
|
|
|