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/home/public/search_controller_factory.h"
12 #include "athena/input/public/accelerator_manager.h"
13 #include "athena/wm/public/window_manager_observer.h"
16 class AppListViewDelegate;
36 class AppModelBuilder;
37 class HomeCardLayoutManager;
40 class ATHENA_EXPORT HomeCardImpl : public HomeCard,
41 public AcceleratorHandler,
42 public HomeCardGestureManager::Delegate,
43 public WindowManagerObserver {
45 HomeCardImpl(scoped_ptr<AppModelBuilder> model_builder,
46 scoped_ptr<SearchControllerFactory> search_factory);
47 ~HomeCardImpl() override;
51 aura::Window* GetHomeCardWindowForTest() const;
55 COMMAND_SHOW_HOME_CARD,
57 void InstallAccelerators();
61 // Overridden from HomeCard:
62 void SetState(HomeCard::State state) override;
63 State GetState() override;
64 void UpdateVirtualKeyboardBounds(const gfx::Rect& bounds) override;
66 // AcceleratorHandler:
67 bool IsCommandEnabled(int command_id) const override;
68 bool OnAcceleratorFired(int command_id,
69 const ui::Accelerator& accelerator) override;
71 // HomeCardGestureManager::Delegate:
72 void OnGestureEnded(HomeCard::State final_state, bool is_fling) override;
73 void OnGestureProgressed(HomeCard::State from_state,
74 HomeCard::State to_state,
75 float progress) override;
77 // WindowManagerObserver:
78 void OnOverviewModeEnter() override;
79 void OnOverviewModeExit() override;
80 void OnSplitViewModeEnter() override;
81 void OnSplitViewModeExit() override;
83 scoped_ptr<AppModelBuilder> model_builder_;
84 scoped_ptr<SearchControllerFactory> search_factory_;
86 HomeCard::State state_;
88 // original_state_ is the state which the home card should go back to after
89 // the virtual keyboard is hidden.
90 HomeCard::State original_state_;
92 views::Widget* home_card_widget_;
93 HomeCardView* home_card_view_;
94 scoped_ptr<app_list::AppListViewDelegate> view_delegate_;
95 HomeCardLayoutManager* layout_manager_;
97 DISALLOW_COPY_AND_ASSIGN(HomeCardImpl);
100 } // namespace athena
102 #endif // ATHENA_HOME_HOME_CARD_IMPL_H_