OLD | NEW |
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 "athena/home/app_list_view_delegate.h" | 7 #include "athena/home/app_list_view_delegate.h" |
8 #include "athena/home/public/app_model_builder.h" | 8 #include "athena/home/public/app_model_builder.h" |
9 #include "athena/input/public/accelerator_manager.h" | 9 #include "athena/input/public/accelerator_manager.h" |
10 #include "athena/screen/public/screen_manager.h" | 10 #include "athena/screen/public/screen_manager.h" |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 | 86 |
87 void Init(); | 87 void Init(); |
88 | 88 |
89 private: | 89 private: |
90 enum Command { | 90 enum Command { |
91 COMMAND_SHOW_HOME_CARD, | 91 COMMAND_SHOW_HOME_CARD, |
92 }; | 92 }; |
93 void InstallAccelerators(); | 93 void InstallAccelerators(); |
94 | 94 |
95 // Overridden from HomeCard: | 95 // Overridden from HomeCard: |
| 96 virtual void SetState(State state) OVERRIDE; |
96 virtual void RegisterSearchProvider( | 97 virtual void RegisterSearchProvider( |
97 app_list::SearchProvider* search_provider) OVERRIDE; | 98 app_list::SearchProvider* search_provider) OVERRIDE; |
98 virtual void UpdateVirtualKeyboardBounds( | 99 virtual void UpdateVirtualKeyboardBounds( |
99 const gfx::Rect& bounds) OVERRIDE; | 100 const gfx::Rect& bounds) OVERRIDE; |
100 | 101 |
101 // AcceleratorHandler: | 102 // AcceleratorHandler: |
102 virtual bool IsCommandEnabled(int command_id) const OVERRIDE { return true; } | 103 virtual bool IsCommandEnabled(int command_id) const OVERRIDE { return true; } |
103 virtual bool OnAcceleratorFired(int command_id, | 104 virtual bool OnAcceleratorFired(int command_id, |
104 const ui::Accelerator& accelerator) OVERRIDE { | 105 const ui::Accelerator& accelerator) OVERRIDE { |
105 DCHECK_EQ(COMMAND_SHOW_HOME_CARD, command_id); | 106 DCHECK_EQ(COMMAND_SHOW_HOME_CARD, command_id); |
106 if (home_card_widget_->IsVisible()) | 107 if (state_ == HIDDEN) |
107 home_card_widget_->Hide(); | 108 SetState(VISIBLE_CENTERED); |
108 else | 109 else |
109 home_card_widget_->Show(); | 110 SetState(HIDDEN); |
110 return true; | 111 return true; |
111 } | 112 } |
112 | 113 |
113 scoped_ptr<AppModelBuilder> model_builder_; | 114 scoped_ptr<AppModelBuilder> model_builder_; |
114 | 115 |
| 116 HomeCard::State state_; |
| 117 |
115 views::Widget* home_card_widget_; | 118 views::Widget* home_card_widget_; |
116 AppListViewDelegate* view_delegate_; | 119 AppListViewDelegate* view_delegate_; |
117 HomeCardLayoutManager* layout_manager_; | 120 HomeCardLayoutManager* layout_manager_; |
118 | 121 |
119 // Right now HomeCard allows only one search provider. | 122 // Right now HomeCard allows only one search provider. |
120 // TODO(mukai): port app-list's SearchController and Mixer. | 123 // TODO(mukai): port app-list's SearchController and Mixer. |
121 scoped_ptr<app_list::SearchProvider> search_provider_; | 124 scoped_ptr<app_list::SearchProvider> search_provider_; |
122 | 125 |
123 DISALLOW_COPY_AND_ASSIGN(HomeCardImpl); | 126 DISALLOW_COPY_AND_ASSIGN(HomeCardImpl); |
124 }; | 127 }; |
125 | 128 |
126 HomeCardImpl::HomeCardImpl(AppModelBuilder* model_builder) | 129 HomeCardImpl::HomeCardImpl(AppModelBuilder* model_builder) |
127 : model_builder_(model_builder), | 130 : model_builder_(model_builder), |
| 131 state_(HIDDEN), |
128 home_card_widget_(NULL), | 132 home_card_widget_(NULL), |
129 layout_manager_(NULL) { | 133 layout_manager_(NULL) { |
130 DCHECK(!instance); | 134 DCHECK(!instance); |
131 instance = this; | 135 instance = this; |
132 } | 136 } |
133 | 137 |
134 HomeCardImpl::~HomeCardImpl() { | 138 HomeCardImpl::~HomeCardImpl() { |
135 DCHECK(instance); | 139 DCHECK(instance); |
136 home_card_widget_->CloseNow(); | 140 home_card_widget_->CloseNow(); |
137 view_delegate_ = NULL; | 141 view_delegate_ = NULL; |
138 instance = NULL; | 142 instance = NULL; |
139 } | 143 } |
140 | 144 |
| 145 void HomeCardImpl::SetState(HomeCard::State state) { |
| 146 if (state == HIDDEN) |
| 147 home_card_widget_->Hide(); |
| 148 else |
| 149 home_card_widget_->Show(); |
| 150 state_ = state; |
| 151 } |
| 152 |
141 void HomeCardImpl::RegisterSearchProvider( | 153 void HomeCardImpl::RegisterSearchProvider( |
142 app_list::SearchProvider* search_provider) { | 154 app_list::SearchProvider* search_provider) { |
143 DCHECK(!search_provider_); | 155 DCHECK(!search_provider_); |
144 search_provider_.reset(search_provider); | 156 search_provider_.reset(search_provider); |
145 view_delegate_->RegisterSearchProvider(search_provider_.get()); | 157 view_delegate_->RegisterSearchProvider(search_provider_.get()); |
146 } | 158 } |
147 | 159 |
148 void HomeCardImpl::UpdateVirtualKeyboardBounds( | 160 void HomeCardImpl::UpdateVirtualKeyboardBounds( |
149 const gfx::Rect& bounds) { | 161 const gfx::Rect& bounds) { |
150 layout_manager_->UpdateVirtualKeyboardBounds(bounds); | 162 layout_manager_->UpdateVirtualKeyboardBounds(bounds); |
(...skipping 12 matching lines...) Expand all Loading... |
163 if (search_provider_) | 175 if (search_provider_) |
164 view_delegate_->RegisterSearchProvider(search_provider_.get()); | 176 view_delegate_->RegisterSearchProvider(search_provider_.get()); |
165 app_list::AppListView* view = new app_list::AppListView(view_delegate_); | 177 app_list::AppListView* view = new app_list::AppListView(view_delegate_); |
166 view->InitAsBubbleAtFixedLocation( | 178 view->InitAsBubbleAtFixedLocation( |
167 container, | 179 container, |
168 0 /* initial_apps_page */, | 180 0 /* initial_apps_page */, |
169 gfx::Point(), | 181 gfx::Point(), |
170 views::BubbleBorder::FLOAT, | 182 views::BubbleBorder::FLOAT, |
171 true /* border_accepts_events */); | 183 true /* border_accepts_events */); |
172 home_card_widget_ = view->GetWidget(); | 184 home_card_widget_ = view->GetWidget(); |
| 185 // TODO: the initial value might not be visible. |
| 186 state_ = VISIBLE_CENTERED; |
173 view->ShowWhenReady(); | 187 view->ShowWhenReady(); |
174 } | 188 } |
175 | 189 |
176 void HomeCardImpl::InstallAccelerators() { | 190 void HomeCardImpl::InstallAccelerators() { |
177 const AcceleratorData accelerator_data[] = { | 191 const AcceleratorData accelerator_data[] = { |
178 {TRIGGER_ON_PRESS, ui::VKEY_L, ui::EF_CONTROL_DOWN, | 192 {TRIGGER_ON_PRESS, ui::VKEY_L, ui::EF_CONTROL_DOWN, |
179 COMMAND_SHOW_HOME_CARD, AF_NONE}, | 193 COMMAND_SHOW_HOME_CARD, AF_NONE}, |
180 }; | 194 }; |
181 AcceleratorManager::Get()->RegisterAccelerators( | 195 AcceleratorManager::Get()->RegisterAccelerators( |
182 accelerator_data, arraysize(accelerator_data), this); | 196 accelerator_data, arraysize(accelerator_data), this); |
(...skipping 15 matching lines...) Expand all Loading... |
198 instance = NULL; | 212 instance = NULL; |
199 } | 213 } |
200 | 214 |
201 // static | 215 // static |
202 HomeCard* HomeCard::Get() { | 216 HomeCard* HomeCard::Get() { |
203 DCHECK(instance); | 217 DCHECK(instance); |
204 return instance; | 218 return instance; |
205 } | 219 } |
206 | 220 |
207 } // namespace athena | 221 } // namespace athena |
OLD | NEW |