| Index: athena/home/home_card_impl.cc
|
| diff --git a/athena/home/home_card_impl.cc b/athena/home/home_card_impl.cc
|
| index 59317fe056bb7a944ce92976778d0790f0417960..5edf5de4ff1fd7603c83474b232f6fe00fa962d0 100644
|
| --- a/athena/home/home_card_impl.cc
|
| +++ b/athena/home/home_card_impl.cc
|
| @@ -5,18 +5,13 @@
|
| #include "athena/home/public/home_card.h"
|
|
|
| #include "athena/home/app_list_view_delegate.h"
|
| -#include "athena/home/minimized_home.h"
|
| #include "athena/home/public/app_model_builder.h"
|
| #include "athena/input/public/accelerator_manager.h"
|
| #include "athena/screen/public/screen_manager.h"
|
| -#include "athena/wm/public/window_manager.h"
|
| -#include "athena/wm/public/window_manager_observer.h"
|
| -#include "base/bind.h"
|
| #include "ui/app_list/search_provider.h"
|
| #include "ui/app_list/views/app_list_view.h"
|
| #include "ui/aura/layout_manager.h"
|
| #include "ui/aura/window.h"
|
| -#include "ui/views/layout/box_layout.h"
|
| #include "ui/wm/core/visibility_controller.h"
|
| #include "ui/wm/core/window_animations.h"
|
|
|
| @@ -25,27 +20,10 @@
|
|
|
| HomeCard* instance = NULL;
|
|
|
| -// Makes sure the homecard is center-aligned horizontally and bottom-aligned
|
| -// vertically.
|
| class HomeCardLayoutManager : public aura::LayoutManager {
|
| public:
|
| - class Delegate {
|
| - public:
|
| - virtual ~Delegate() {}
|
| -
|
| - virtual int GetHomeCardHeight() const = 0;
|
| -
|
| - virtual int GetHorizontalMargin() const = 0;
|
| -
|
| - // TODO(mukai): Remove this when bubble is no longer used for
|
| - // VISIBLE_CENTERED or VISIBLE_BOTTOM states.
|
| - virtual bool HasShadow() const = 0;
|
| -
|
| - virtual aura::Window* GetNativeWindow() = 0;
|
| - };
|
| -
|
| - explicit HomeCardLayoutManager(Delegate* delegate)
|
| - : delegate_(delegate) {}
|
| + explicit HomeCardLayoutManager(aura::Window* container)
|
| + : container_(container) {}
|
| virtual ~HomeCardLayoutManager() {}
|
|
|
| void UpdateVirtualKeyboardBounds(const gfx::Rect& bounds) {
|
| @@ -71,40 +49,37 @@
|
| }
|
|
|
| void Layout() {
|
| - int height = delegate_->GetHomeCardHeight();
|
| - int horiz_margin = delegate_->GetHorizontalMargin();
|
| - aura::Window* home_card = delegate_->GetNativeWindow();
|
| - if (!home_card)
|
| + const int kHomeCardHeight = 150;
|
| + const int kHomeCardHorizontalMargin = 50;
|
| + // Currently the home card is provided as a bubble and the bounds has to be
|
| + // increased to cancel the shadow.
|
| + // TODO(mukai): stops using the bubble and remove this.
|
| + const int kHomeCardShadowWidth = 30;
|
| + if (container_->children().size() < 1)
|
| + return;
|
| + aura::Window* home_card = container_->children()[0];
|
| + if (!home_card->IsVisible())
|
| return;
|
|
|
| gfx::Rect screen_bounds = home_card->GetRootWindow()->bounds();
|
| if (!virtual_keyboard_bounds_.IsEmpty())
|
| screen_bounds.set_height(virtual_keyboard_bounds_.y());
|
| gfx::Rect card_bounds = screen_bounds;
|
| - card_bounds.Inset(horiz_margin, screen_bounds.height() - height,
|
| - horiz_margin, 0);
|
| -
|
| - if (delegate_->HasShadow()) {
|
| - // Currently the home card is provided as a bubble and the bounds has to
|
| - // be increased to cancel the shadow.
|
| - // TODO(mukai): stops using the bubble and remove this.
|
| - const int kHomeCardShadowWidth = 30;
|
| - card_bounds.Inset(-kHomeCardShadowWidth, -kHomeCardShadowWidth);
|
| - }
|
| + card_bounds.Inset(kHomeCardHorizontalMargin,
|
| + screen_bounds.height() - kHomeCardHeight,
|
| + kHomeCardHorizontalMargin,
|
| + 0);
|
| + card_bounds.Inset(-kHomeCardShadowWidth, -kHomeCardShadowWidth);
|
| SetChildBoundsDirect(home_card, card_bounds);
|
| }
|
|
|
| - Delegate* delegate_;
|
| + aura::Window* container_;
|
| gfx::Rect virtual_keyboard_bounds_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(HomeCardLayoutManager);
|
| };
|
|
|
| -class HomeCardImpl : public HomeCard,
|
| - public AcceleratorHandler,
|
| - public HomeCardLayoutManager::Delegate,
|
| - public MinimizedHomeDragDelegate,
|
| - public WindowManagerObserver {
|
| +class HomeCardImpl : public HomeCard, public AcceleratorHandler {
|
| public:
|
| explicit HomeCardImpl(AppModelBuilder* model_builder);
|
| virtual ~HomeCardImpl();
|
| @@ -136,59 +111,11 @@
|
| return true;
|
| }
|
|
|
| - // HomeCardLayoutManager::Delegate:
|
| - virtual int GetHomeCardHeight() const OVERRIDE {
|
| - const int kHomeCardHeight = 150;
|
| - const int kHomeCardMinimizedHeight = 8;
|
| - CHECK_NE(HIDDEN, state_);
|
| - return state_ == VISIBLE_MINIMIZED ? kHomeCardMinimizedHeight :
|
| - kHomeCardHeight;
|
| - }
|
| -
|
| - virtual int GetHorizontalMargin() const OVERRIDE {
|
| - CHECK_NE(HIDDEN, state_);
|
| - const int kHomeCardHorizontalMargin = 50;
|
| - return state_ == VISIBLE_MINIMIZED ? 0 : kHomeCardHorizontalMargin;
|
| - }
|
| -
|
| - virtual bool HasShadow() const OVERRIDE {
|
| - CHECK_NE(HIDDEN, state_);
|
| - return state_ != VISIBLE_MINIMIZED;
|
| - }
|
| -
|
| - virtual aura::Window* GetNativeWindow() OVERRIDE {
|
| - switch (state_) {
|
| - case HIDDEN:
|
| - return NULL;
|
| - case VISIBLE_MINIMIZED:
|
| - return minimized_widget_ ? minimized_widget_->GetNativeWindow() : NULL;
|
| - case VISIBLE_CENTERED:
|
| - case VISIBLE_BOTTOM:
|
| - return home_card_widget_ ? home_card_widget_->GetNativeWindow() : NULL;
|
| - }
|
| - return NULL;
|
| - }
|
| -
|
| - // MinimizedHomeDragDelegate:
|
| - virtual void OnDragUpCompleted() OVERRIDE {
|
| - WindowManager::GetInstance()->ToggleOverview();
|
| - }
|
| -
|
| - // WindowManagerObserver:
|
| - virtual void OnOverviewModeEnter() OVERRIDE {
|
| - SetState(VISIBLE_BOTTOM);
|
| - }
|
| -
|
| - virtual void OnOverviewModeExit() OVERRIDE {
|
| - SetState(VISIBLE_MINIMIZED);
|
| - }
|
| -
|
| scoped_ptr<AppModelBuilder> model_builder_;
|
|
|
| HomeCard::State state_;
|
|
|
| views::Widget* home_card_widget_;
|
| - views::Widget* minimized_widget_;
|
| AppListViewDelegate* view_delegate_;
|
| HomeCardLayoutManager* layout_manager_;
|
|
|
| @@ -201,43 +128,26 @@
|
|
|
| HomeCardImpl::HomeCardImpl(AppModelBuilder* model_builder)
|
| : model_builder_(model_builder),
|
| - state_(VISIBLE_MINIMIZED),
|
| + state_(HIDDEN),
|
| home_card_widget_(NULL),
|
| - minimized_widget_(NULL),
|
| layout_manager_(NULL) {
|
| DCHECK(!instance);
|
| instance = this;
|
| - WindowManager::GetInstance()->AddObserver(this);
|
| }
|
|
|
| HomeCardImpl::~HomeCardImpl() {
|
| DCHECK(instance);
|
| - WindowManager::GetInstance()->RemoveObserver(this);
|
| home_card_widget_->CloseNow();
|
| - minimized_widget_->CloseNow();
|
| view_delegate_ = NULL;
|
| instance = NULL;
|
| }
|
|
|
| void HomeCardImpl::SetState(HomeCard::State state) {
|
| - // Update |state_| before changing the visibility of the widgets, so that
|
| - // LayoutManager callbacks get the correct state.
|
| + if (state == HIDDEN)
|
| + home_card_widget_->Hide();
|
| + else
|
| + home_card_widget_->Show();
|
| state_ = state;
|
| - switch (state_) {
|
| - case VISIBLE_MINIMIZED:
|
| - home_card_widget_->Hide();
|
| - minimized_widget_->Show();
|
| - break;
|
| - case HIDDEN:
|
| - home_card_widget_->Hide();
|
| - minimized_widget_->Hide();
|
| - break;
|
| - case VISIBLE_BOTTOM:
|
| - case VISIBLE_CENTERED:
|
| - home_card_widget_->Show();
|
| - minimized_widget_->Hide();
|
| - break;
|
| - }
|
| }
|
|
|
| void HomeCardImpl::RegisterSearchProvider(
|
| @@ -249,12 +159,6 @@
|
|
|
| void HomeCardImpl::UpdateVirtualKeyboardBounds(
|
| const gfx::Rect& bounds) {
|
| - if (state_ == VISIBLE_MINIMIZED) {
|
| - if (bounds.IsEmpty())
|
| - minimized_widget_->Show();
|
| - else
|
| - minimized_widget_->Hide();
|
| - }
|
| layout_manager_->UpdateVirtualKeyboardBounds(bounds);
|
| }
|
|
|
| @@ -263,7 +167,7 @@
|
|
|
| aura::Window* container =
|
| ScreenManager::Get()->CreateContainer("HomeCardContainer");
|
| - layout_manager_ = new HomeCardLayoutManager(this);
|
| + layout_manager_ = new HomeCardLayoutManager(container);
|
| container->SetLayoutManager(layout_manager_);
|
| wm::SetChildWindowVisibilityChangesAnimated(container);
|
|
|
| @@ -278,10 +182,9 @@
|
| views::BubbleBorder::FLOAT,
|
| true /* border_accepts_events */);
|
| home_card_widget_ = view->GetWidget();
|
| -
|
| - // Start off in the minimized state.
|
| - minimized_widget_ = CreateMinimizedHome(container, this);
|
| - SetState(VISIBLE_MINIMIZED);
|
| + // TODO: the initial value might not be visible.
|
| + state_ = VISIBLE_CENTERED;
|
| + view->ShowWhenReady();
|
| }
|
|
|
| void HomeCardImpl::InstallAccelerators() {
|
|
|