Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: athena/home/home_card_impl.cc

Issue 501183002: Cleanup: remove HomeCardLayoutManager::Delegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/public/home_card.h" 5 #include "athena/home/public/home_card.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <limits> 8 #include <limits>
9 9
10 #include "athena/common/container_priorities.h" 10 #include "athena/common/container_priorities.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 } 65 }
66 66
67 NOTREACHED(); 67 NOTREACHED();
68 return gfx::Rect(); 68 return gfx::Rect();
69 } 69 }
70 70
71 // Makes sure the homecard is center-aligned horizontally and bottom-aligned 71 // Makes sure the homecard is center-aligned horizontally and bottom-aligned
72 // vertically. 72 // vertically.
73 class HomeCardLayoutManager : public aura::LayoutManager { 73 class HomeCardLayoutManager : public aura::LayoutManager {
74 public: 74 public:
75 class Delegate { 75 explicit HomeCardLayoutManager()
76 public: 76 : home_card_(NULL) {}
77 virtual ~Delegate() {}
78
79 virtual HomeCard::State GetState() = 0;
80 virtual aura::Window* GetNativeWindow() = 0;
81 };
82
83 explicit HomeCardLayoutManager(Delegate* delegate)
84 : delegate_(delegate) {}
85 77
86 virtual ~HomeCardLayoutManager() {} 78 virtual ~HomeCardLayoutManager() {}
87 79
88 void Layout() { 80 void Layout() {
89 aura::Window* home_card = delegate_->GetNativeWindow();
90 // |home_card| could be detached from the root window (e.g. when it is being 81 // |home_card| could be detached from the root window (e.g. when it is being
91 // destroyed). 82 // destroyed).
92 if (!home_card || !home_card->GetRootWindow()) 83 if (!home_card_ || !home_card_->IsVisible() || !home_card_->GetRootWindow())
93 return; 84 return;
94 85
95 { 86 {
96 ui::ScopedLayerAnimationSettings settings( 87 ui::ScopedLayerAnimationSettings settings(
97 home_card->layer()->GetAnimator()); 88 home_card_->layer()->GetAnimator());
98 settings.SetTweenType(gfx::Tween::EASE_IN_OUT); 89 settings.SetTweenType(gfx::Tween::EASE_IN_OUT);
99 SetChildBoundsDirect(home_card, GetBoundsForState( 90 SetChildBoundsDirect(home_card_, GetBoundsForState(
100 home_card->GetRootWindow()->bounds(), delegate_->GetState())); 91 home_card_->GetRootWindow()->bounds(), HomeCard::Get()->GetState()));
101 } 92 }
102 } 93 }
103 94
104 private: 95 private:
105 // aura::LayoutManager: 96 // aura::LayoutManager:
106 virtual void OnWindowResized() OVERRIDE { Layout(); } 97 virtual void OnWindowResized() OVERRIDE { Layout(); }
107 virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE { Layout(); } 98 virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE {
108 virtual void OnWillRemoveWindowFromLayout(aura::Window* child) OVERRIDE {} 99 if (!home_card_) {
100 home_card_ = child;
101 Layout();
102 }
103 }
104 virtual void OnWillRemoveWindowFromLayout(aura::Window* child) OVERRIDE {
105 if (home_card_ == child)
106 home_card_ = NULL;
107 }
109 virtual void OnWindowRemovedFromLayout(aura::Window* child) OVERRIDE { 108 virtual void OnWindowRemovedFromLayout(aura::Window* child) OVERRIDE {
110 Layout(); 109 Layout();
111 } 110 }
112 virtual void OnChildWindowVisibilityChanged(aura::Window* child, 111 virtual void OnChildWindowVisibilityChanged(aura::Window* child,
113 bool visible) OVERRIDE { 112 bool visible) OVERRIDE {
114 Layout(); 113 Layout();
115 } 114 }
116 virtual void SetChildBounds(aura::Window* child, 115 virtual void SetChildBounds(aura::Window* child,
117 const gfx::Rect& requested_bounds) OVERRIDE { 116 const gfx::Rect& requested_bounds) OVERRIDE {
118 SetChildBoundsDirect(child, requested_bounds); 117 SetChildBoundsDirect(child, requested_bounds);
119 } 118 }
120 119
121 Delegate* delegate_; 120 aura::Window* home_card_;
122 121
123 DISALLOW_COPY_AND_ASSIGN(HomeCardLayoutManager); 122 DISALLOW_COPY_AND_ASSIGN(HomeCardLayoutManager);
124 }; 123 };
125 124
126 class HomeCardGestureManager { 125 class HomeCardGestureManager {
127 public: 126 public:
128 class Delegate { 127 class Delegate {
129 public: 128 public:
130 // Called when the gesture has ended. The state of the home card will 129 // Called when the gesture has ended. The state of the home card will
131 // end up with |final_state|. 130 // end up with |final_state|.
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 views::View* minimized_view_; 392 views::View* minimized_view_;
394 scoped_ptr<HomeCardGestureManager> gesture_manager_; 393 scoped_ptr<HomeCardGestureManager> gesture_manager_;
395 HomeCardGestureManager::Delegate* gesture_delegate_; 394 HomeCardGestureManager::Delegate* gesture_delegate_;
396 base::WeakPtrFactory<HomeCardView> weak_factory_; 395 base::WeakPtrFactory<HomeCardView> weak_factory_;
397 396
398 DISALLOW_COPY_AND_ASSIGN(HomeCardView); 397 DISALLOW_COPY_AND_ASSIGN(HomeCardView);
399 }; 398 };
400 399
401 class HomeCardImpl : public HomeCard, 400 class HomeCardImpl : public HomeCard,
402 public AcceleratorHandler, 401 public AcceleratorHandler,
403 public HomeCardLayoutManager::Delegate,
404 public HomeCardGestureManager::Delegate, 402 public HomeCardGestureManager::Delegate,
405 public WindowManagerObserver, 403 public WindowManagerObserver,
406 public aura::client::ActivationChangeObserver { 404 public aura::client::ActivationChangeObserver {
407 public: 405 public:
408 explicit HomeCardImpl(AppModelBuilder* model_builder); 406 explicit HomeCardImpl(AppModelBuilder* model_builder);
409 virtual ~HomeCardImpl(); 407 virtual ~HomeCardImpl();
410 408
411 void Init(); 409 void Init();
412 410
413 private: 411 private:
414 enum Command { 412 enum Command {
415 COMMAND_SHOW_HOME_CARD, 413 COMMAND_SHOW_HOME_CARD,
416 }; 414 };
417 void InstallAccelerators(); 415 void InstallAccelerators();
418 416
419 // Overridden from HomeCard: 417 // Overridden from HomeCard:
420 virtual void SetState(State state) OVERRIDE; 418 virtual void SetState(State state) OVERRIDE;
421 virtual State GetState() OVERRIDE; 419 virtual State GetState() OVERRIDE;
422 virtual void RegisterSearchProvider( 420 virtual void RegisterSearchProvider(
423 app_list::SearchProvider* search_provider) OVERRIDE; 421 app_list::SearchProvider* search_provider) OVERRIDE;
424 virtual void UpdateVirtualKeyboardBounds( 422 virtual void UpdateVirtualKeyboardBounds(
425 const gfx::Rect& bounds) OVERRIDE; 423 const gfx::Rect& bounds) OVERRIDE;
426 424
427 // AcceleratorHandler: 425 // AcceleratorHandler:
428 virtual bool IsCommandEnabled(int command_id) const OVERRIDE { return true; } 426 virtual bool IsCommandEnabled(int command_id) const OVERRIDE { return true; }
429 virtual bool OnAcceleratorFired(int command_id, 427 virtual bool OnAcceleratorFired(int command_id,
430 const ui::Accelerator& accelerator) OVERRIDE; 428 const ui::Accelerator& accelerator) OVERRIDE;
431 429
432 // HomeCardLayoutManager::Delegate:
433 virtual aura::Window* GetNativeWindow() OVERRIDE;
434
435 // HomeCardGestureManager::Delegate: 430 // HomeCardGestureManager::Delegate:
436 virtual void OnGestureEnded(State final_state) OVERRIDE; 431 virtual void OnGestureEnded(State final_state) OVERRIDE;
437 virtual void OnGestureProgressed( 432 virtual void OnGestureProgressed(
438 State from_state, State to_state, float progress) OVERRIDE; 433 State from_state, State to_state, float progress) OVERRIDE;
439 434
440 // WindowManagerObserver: 435 // WindowManagerObserver:
441 virtual void OnOverviewModeEnter() OVERRIDE; 436 virtual void OnOverviewModeEnter() OVERRIDE;
442 virtual void OnOverviewModeExit() OVERRIDE; 437 virtual void OnOverviewModeExit() OVERRIDE;
443 438
444 // aura::client::ActivationChangeObserver: 439 // aura::client::ActivationChangeObserver:
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 view_delegate_.reset(); 486 view_delegate_.reset();
492 search_provider_.reset(); 487 search_provider_.reset();
493 instance = NULL; 488 instance = NULL;
494 } 489 }
495 490
496 void HomeCardImpl::Init() { 491 void HomeCardImpl::Init() {
497 InstallAccelerators(); 492 InstallAccelerators();
498 ScreenManager::ContainerParams params("HomeCardContainer", CP_HOME_CARD); 493 ScreenManager::ContainerParams params("HomeCardContainer", CP_HOME_CARD);
499 params.can_activate_children = true; 494 params.can_activate_children = true;
500 aura::Window* container = ScreenManager::Get()->CreateContainer(params); 495 aura::Window* container = ScreenManager::Get()->CreateContainer(params);
501 layout_manager_ = new HomeCardLayoutManager(this); 496 layout_manager_ = new HomeCardLayoutManager();
502 497
503 container->SetLayoutManager(layout_manager_); 498 container->SetLayoutManager(layout_manager_);
504 wm::SetChildWindowVisibilityChangesAnimated(container); 499 wm::SetChildWindowVisibilityChangesAnimated(container);
505 500
506 view_delegate_.reset(new AppListViewDelegate(model_builder_.get())); 501 view_delegate_.reset(new AppListViewDelegate(model_builder_.get()));
507 if (search_provider_) 502 if (search_provider_)
508 view_delegate_->RegisterSearchProvider(search_provider_.get()); 503 view_delegate_->RegisterSearchProvider(search_provider_.get());
509 504
510 home_card_view_ = new HomeCardView(view_delegate_.get(), container, this); 505 home_card_view_ = new HomeCardView(view_delegate_.get(), container, this);
511 home_card_widget_ = new views::Widget(); 506 home_card_widget_ = new views::Widget();
512 views::Widget::InitParams widget_params( 507 views::Widget::InitParams widget_params(
513 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); 508 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
514 widget_params.parent = container; 509 widget_params.parent = container;
515 widget_params.delegate = home_card_view_; 510 widget_params.delegate = home_card_view_;
516 widget_params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; 511 widget_params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
517 home_card_widget_->Init(widget_params); 512 home_card_widget_->Init(widget_params);
518 513
519 SetState(VISIBLE_MINIMIZED); 514 SetState(VISIBLE_MINIMIZED);
520 home_card_view_->Layout(); 515 home_card_view_->Layout();
521 516
522 activation_client_ = 517 activation_client_ =
523 aura::client::GetActivationClient(container->GetRootWindow()); 518 aura::client::GetActivationClient(container->GetRootWindow());
524 if (activation_client_) 519 if (activation_client_)
525 activation_client_->AddObserver(this); 520 activation_client_->AddObserver(this);
526 521
527 int work_area_bottom_inset = 522 int work_area_bottom_inset =
528 GetBoundsForState(GetNativeWindow()->bounds(), 523 GetBoundsForState(home_card_widget_->GetNativeWindow()->bounds(),
529 HomeCard::VISIBLE_MINIMIZED).height(); 524 HomeCard::VISIBLE_MINIMIZED).height();
530 AthenaEnv::Get()->SetDisplayWorkAreaInsets( 525 AthenaEnv::Get()->SetDisplayWorkAreaInsets(
531 gfx::Insets(0, 0, work_area_bottom_inset, 0)); 526 gfx::Insets(0, 0, work_area_bottom_inset, 0));
532 } 527 }
533 528
534 void HomeCardImpl::InstallAccelerators() { 529 void HomeCardImpl::InstallAccelerators() {
535 const AcceleratorData accelerator_data[] = { 530 const AcceleratorData accelerator_data[] = {
536 {TRIGGER_ON_PRESS, ui::VKEY_L, ui::EF_CONTROL_DOWN, 531 {TRIGGER_ON_PRESS, ui::VKEY_L, ui::EF_CONTROL_DOWN,
537 COMMAND_SHOW_HOME_CARD, AF_NONE}, 532 COMMAND_SHOW_HOME_CARD, AF_NONE},
538 }; 533 };
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 const ui::Accelerator& accelerator) { 584 const ui::Accelerator& accelerator) {
590 DCHECK_EQ(COMMAND_SHOW_HOME_CARD, command_id); 585 DCHECK_EQ(COMMAND_SHOW_HOME_CARD, command_id);
591 586
592 if (state_ == VISIBLE_CENTERED && original_state_ != VISIBLE_BOTTOM) 587 if (state_ == VISIBLE_CENTERED && original_state_ != VISIBLE_BOTTOM)
593 SetState(VISIBLE_MINIMIZED); 588 SetState(VISIBLE_MINIMIZED);
594 else if (state_ == VISIBLE_MINIMIZED) 589 else if (state_ == VISIBLE_MINIMIZED)
595 SetState(VISIBLE_CENTERED); 590 SetState(VISIBLE_CENTERED);
596 return true; 591 return true;
597 } 592 }
598 593
599 aura::Window* HomeCardImpl::GetNativeWindow() {
600 if (state_ == HIDDEN)
601 return NULL;
602
603 return home_card_widget_ ? home_card_widget_->GetNativeWindow() : NULL;
604 }
605
606 void HomeCardImpl::OnGestureEnded(State final_state) { 594 void HomeCardImpl::OnGestureEnded(State final_state) {
607 home_card_view_->ClearGesture(); 595 home_card_view_->ClearGesture();
608 if (state_ != final_state && 596 if (state_ != final_state &&
609 (state_ == VISIBLE_MINIMIZED || final_state == VISIBLE_MINIMIZED)) { 597 (state_ == VISIBLE_MINIMIZED || final_state == VISIBLE_MINIMIZED)) {
610 WindowManager::GetInstance()->ToggleOverview(); 598 WindowManager::GetInstance()->ToggleOverview();
611 } else { 599 } else {
612 HomeCard::State old_state = state_; 600 HomeCard::State old_state = state_;
613 state_ = final_state; 601 state_ = final_state;
614 home_card_view_->SetStateWithAnimation(old_state, final_state); 602 home_card_view_->SetStateWithAnimation(old_state, final_state);
615 layout_manager_->Layout(); 603 layout_manager_->Layout();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 instance = NULL; 651 instance = NULL;
664 } 652 }
665 653
666 // static 654 // static
667 HomeCard* HomeCard::Get() { 655 HomeCard* HomeCard::Get() {
668 DCHECK(instance); 656 DCHECK(instance);
669 return instance; 657 return instance;
670 } 658 }
671 659
672 } // namespace athena 660 } // namespace athena
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698