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
3 // found in the LICENSE file.
5 #ifndef ATHENA_HOME_HOME_CARD_IMPL_H_
6 #define ATHENA_HOME_HOME_CARD_IMPL_H_
8 #include "athena/athena_export.h"
9 #include "athena/home/home_card_gesture_manager.h"
10 #include "athena/home/public/home_card.h"
11 #include "athena/input/public/accelerator_manager.h"
12 #include "athena/wm/public/window_manager_observer.h"
13 #include "ui/wm/public/activation_change_observer.h"
23 class ActivationClient;
40 class AppModelBuilder;
41 class AppListViewDelegate;
42 class HomeCardLayoutManager;
45 class ATHENA_EXPORT HomeCardImpl
47 public AcceleratorHandler,
48 public HomeCardGestureManager::Delegate,
49 public WindowManagerObserver,
50 public aura::client::ActivationChangeObserver {
52 explicit HomeCardImpl(AppModelBuilder* model_builder);
53 virtual ~HomeCardImpl();
57 aura::Window* GetHomeCardWindowForTest() const;
61 COMMAND_SHOW_HOME_CARD,
63 void InstallAccelerators();
65 // Overridden from HomeCard:
66 virtual void SetState(HomeCard::State state) OVERRIDE;
67 virtual State GetState() OVERRIDE;
68 virtual void RegisterSearchProvider(
69 app_list::SearchProvider* search_provider) OVERRIDE;
70 virtual void UpdateVirtualKeyboardBounds(
71 const gfx::Rect& bounds) OVERRIDE;
73 // AcceleratorHandler:
74 virtual bool IsCommandEnabled(int command_id) const OVERRIDE;
75 virtual bool OnAcceleratorFired(int command_id,
76 const ui::Accelerator& accelerator) OVERRIDE;
78 // HomeCardGestureManager::Delegate:
79 virtual void OnGestureEnded(HomeCard::State final_state,
80 bool is_fling) OVERRIDE;
81 virtual void OnGestureProgressed(
82 HomeCard::State from_state,
83 HomeCard::State to_state,
84 float progress) OVERRIDE;
86 // WindowManagerObserver:
87 virtual void OnOverviewModeEnter() OVERRIDE;
88 virtual void OnOverviewModeExit() OVERRIDE;
89 virtual void OnSplitViewModeEnter() OVERRIDE;
90 virtual void OnSplitViewModeExit() OVERRIDE;
92 // aura::client::ActivationChangeObserver:
93 virtual void OnWindowActivated(aura::Window* gained_active,
94 aura::Window* lost_active) OVERRIDE;
96 scoped_ptr<AppModelBuilder> model_builder_;
98 HomeCard::State state_;
100 // original_state_ is the state which the home card should go back to after
101 // the virtual keyboard is hidden.
102 HomeCard::State original_state_;
104 views::Widget* home_card_widget_;
105 HomeCardView* home_card_view_;
106 scoped_ptr<AppListViewDelegate> view_delegate_;
107 HomeCardLayoutManager* layout_manager_;
108 aura::client::ActivationClient* activation_client_; // Not owned
109 scoped_ptr<ui::LayerOwner> minimized_home_;
111 // Right now HomeCard allows only one search provider.
112 // TODO(mukai): port app-list's SearchController and Mixer.
113 scoped_ptr<app_list::SearchProvider> search_provider_;
115 DISALLOW_COPY_AND_ASSIGN(HomeCardImpl);
118 } // namespace athena
120 #endif // ATHENA_HOME_HOME_CARD_IMPL_H_