Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / athena / home / home_card_impl.h
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.
4
5 #ifndef ATHENA_HOME_HOME_CARD_IMPL_H_
6 #define ATHENA_HOME_HOME_CARD_IMPL_H_
7
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"
14
15 namespace app_list {
16 class AppListViewDelegate;
17 }
18
19 namespace aura {
20 class Window;
21 }
22
23 namespace gfx {
24 class Rect;
25 }
26
27 namespace ui {
28 class LayerOwner;
29 }
30
31 namespace views {
32 class Widget;
33 }
34
35 namespace athena {
36 class AppModelBuilder;
37 class HomeCardLayoutManager;
38 class HomeCardView;
39
40 class ATHENA_EXPORT HomeCardImpl : public HomeCard,
41                                    public AcceleratorHandler,
42                                    public HomeCardGestureManager::Delegate,
43                                    public WindowManagerObserver {
44  public:
45   HomeCardImpl(scoped_ptr<AppModelBuilder> model_builder,
46                scoped_ptr<SearchControllerFactory> search_factory);
47   ~HomeCardImpl() override;
48
49   void Init();
50
51   aura::Window* GetHomeCardWindowForTest() const;
52
53  private:
54   enum Command {
55     COMMAND_SHOW_HOME_CARD,
56   };
57   void InstallAccelerators();
58
59   void ResetQuery();
60
61   // Overridden from HomeCard:
62   void SetState(HomeCard::State state) override;
63   State GetState() override;
64   void UpdateVirtualKeyboardBounds(const gfx::Rect& bounds) override;
65
66   // AcceleratorHandler:
67   bool IsCommandEnabled(int command_id) const override;
68   bool OnAcceleratorFired(int command_id,
69                           const ui::Accelerator& accelerator) override;
70
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;
76
77   // WindowManagerObserver:
78   void OnOverviewModeEnter() override;
79   void OnOverviewModeExit() override;
80   void OnSplitViewModeEnter() override;
81   void OnSplitViewModeExit() override;
82
83   scoped_ptr<AppModelBuilder> model_builder_;
84   scoped_ptr<SearchControllerFactory> search_factory_;
85
86   HomeCard::State state_;
87
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_;
91
92   views::Widget* home_card_widget_;
93   HomeCardView* home_card_view_;
94   scoped_ptr<app_list::AppListViewDelegate> view_delegate_;
95   HomeCardLayoutManager* layout_manager_;
96
97   DISALLOW_COPY_AND_ASSIGN(HomeCardImpl);
98 };
99
100 }  // namespace athena
101
102 #endif  // ATHENA_HOME_HOME_CARD_IMPL_H_