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/home_card_impl.h" | 5 #include "athena/home/home_card_impl.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "athena/env/public/athena_env.h" | 10 #include "athena/env/public/athena_env.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 #include "ui/gfx/animation/tween.h" | 25 #include "ui/gfx/animation/tween.h" |
26 #include "ui/views/layout/fill_layout.h" | 26 #include "ui/views/layout/fill_layout.h" |
27 #include "ui/views/widget/widget.h" | 27 #include "ui/views/widget/widget.h" |
28 #include "ui/views/widget/widget_delegate.h" | 28 #include "ui/views/widget/widget_delegate.h" |
29 #include "ui/wm/core/shadow_types.h" | 29 #include "ui/wm/core/shadow_types.h" |
30 #include "ui/wm/core/visibility_controller.h" | 30 #include "ui/wm/core/visibility_controller.h" |
31 | 31 |
32 namespace athena { | 32 namespace athena { |
33 namespace { | 33 namespace { |
34 | 34 |
35 HomeCard* instance = NULL; | 35 HomeCard* instance = nullptr; |
36 | 36 |
37 gfx::Rect GetBoundsForState(const gfx::Rect& screen_bounds, | 37 gfx::Rect GetBoundsForState(const gfx::Rect& screen_bounds, |
38 HomeCard::State state) { | 38 HomeCard::State state) { |
39 switch (state) { | 39 switch (state) { |
40 case HomeCard::HIDDEN: | 40 case HomeCard::HIDDEN: |
41 break; | 41 break; |
42 | 42 |
43 case HomeCard::VISIBLE_CENTERED: | 43 case HomeCard::VISIBLE_CENTERED: |
44 return screen_bounds; | 44 return screen_bounds; |
45 | 45 |
(...skipping 14 matching lines...) Expand all Loading... |
60 NOTREACHED(); | 60 NOTREACHED(); |
61 return gfx::Rect(); | 61 return gfx::Rect(); |
62 } | 62 } |
63 | 63 |
64 } // namespace | 64 } // namespace |
65 | 65 |
66 // Makes sure the homecard is center-aligned horizontally and bottom-aligned | 66 // Makes sure the homecard is center-aligned horizontally and bottom-aligned |
67 // vertically. | 67 // vertically. |
68 class HomeCardLayoutManager : public aura::LayoutManager { | 68 class HomeCardLayoutManager : public aura::LayoutManager { |
69 public: | 69 public: |
70 HomeCardLayoutManager() | 70 HomeCardLayoutManager() : home_card_(nullptr), minimized_layer_(nullptr) {} |
71 : home_card_(NULL), | |
72 minimized_layer_(NULL) {} | |
73 | 71 |
74 virtual ~HomeCardLayoutManager() {} | 72 virtual ~HomeCardLayoutManager() {} |
75 | 73 |
76 void Layout(bool animate, gfx::Tween::Type tween_type) { | 74 void Layout(bool animate, gfx::Tween::Type tween_type) { |
77 // |home_card| could be detached from the root window (e.g. when it is being | 75 // |home_card| could be detached from the root window (e.g. when it is being |
78 // destroyed). | 76 // destroyed). |
79 if (!home_card_ || !home_card_->IsVisible() || !home_card_->GetRootWindow()) | 77 if (!home_card_ || !home_card_->IsVisible() || !home_card_->GetRootWindow()) |
80 return; | 78 return; |
81 | 79 |
82 scoped_ptr<ui::ScopedLayerAnimationSettings> settings; | 80 scoped_ptr<ui::ScopedLayerAnimationSettings> settings; |
(...skipping 26 matching lines...) Expand all Loading... |
109 UpdateMinimizedHomeBounds(); | 107 UpdateMinimizedHomeBounds(); |
110 } | 108 } |
111 virtual void OnWindowAddedToLayout(aura::Window* child) override { | 109 virtual void OnWindowAddedToLayout(aura::Window* child) override { |
112 if (!home_card_) { | 110 if (!home_card_) { |
113 home_card_ = child; | 111 home_card_ = child; |
114 Layout(false, gfx::Tween::LINEAR); | 112 Layout(false, gfx::Tween::LINEAR); |
115 } | 113 } |
116 } | 114 } |
117 virtual void OnWillRemoveWindowFromLayout(aura::Window* child) override { | 115 virtual void OnWillRemoveWindowFromLayout(aura::Window* child) override { |
118 if (home_card_ == child) | 116 if (home_card_ == child) |
119 home_card_ = NULL; | 117 home_card_ = nullptr; |
120 } | 118 } |
121 virtual void OnWindowRemovedFromLayout(aura::Window* child) override { | 119 virtual void OnWindowRemovedFromLayout(aura::Window* child) override { |
122 } | 120 } |
123 virtual void OnChildWindowVisibilityChanged(aura::Window* child, | 121 virtual void OnChildWindowVisibilityChanged(aura::Window* child, |
124 bool visible) override { | 122 bool visible) override { |
125 if (home_card_ == child) | 123 if (home_card_ == child) |
126 Layout(false, gfx::Tween::LINEAR); | 124 Layout(false, gfx::Tween::LINEAR); |
127 } | 125 } |
128 virtual void SetChildBounds(aura::Window* child, | 126 virtual void SetChildBounds(aura::Window* child, |
129 const gfx::Rect& requested_bounds) override { | 127 const gfx::Rect& requested_bounds) override { |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 | 227 |
230 DISALLOW_COPY_AND_ASSIGN(HomeCardView); | 228 DISALLOW_COPY_AND_ASSIGN(HomeCardView); |
231 }; | 229 }; |
232 | 230 |
233 HomeCardImpl::HomeCardImpl(scoped_ptr<AppModelBuilder> model_builder, | 231 HomeCardImpl::HomeCardImpl(scoped_ptr<AppModelBuilder> model_builder, |
234 scoped_ptr<SearchControllerFactory> search_factory) | 232 scoped_ptr<SearchControllerFactory> search_factory) |
235 : model_builder_(model_builder.Pass()), | 233 : model_builder_(model_builder.Pass()), |
236 search_factory_(search_factory.Pass()), | 234 search_factory_(search_factory.Pass()), |
237 state_(HIDDEN), | 235 state_(HIDDEN), |
238 original_state_(VISIBLE_MINIMIZED), | 236 original_state_(VISIBLE_MINIMIZED), |
239 home_card_widget_(NULL), | 237 home_card_widget_(nullptr), |
240 home_card_view_(NULL), | 238 home_card_view_(nullptr), |
241 layout_manager_(NULL) { | 239 layout_manager_(nullptr) { |
242 DCHECK(!instance); | 240 DCHECK(!instance); |
243 instance = this; | 241 instance = this; |
244 WindowManager::Get()->AddObserver(this); | 242 WindowManager::Get()->AddObserver(this); |
245 } | 243 } |
246 | 244 |
247 HomeCardImpl::~HomeCardImpl() { | 245 HomeCardImpl::~HomeCardImpl() { |
248 DCHECK(instance); | 246 DCHECK(instance); |
249 WindowManager::Get()->RemoveObserver(this); | 247 WindowManager::Get()->RemoveObserver(this); |
250 home_card_widget_->CloseNow(); | 248 home_card_widget_->CloseNow(); |
251 | 249 |
252 // Reset the view delegate first as it access search provider during | 250 // Reset the view delegate first as it access search provider during |
253 // shutdown. | 251 // shutdown. |
254 view_delegate_.reset(); | 252 view_delegate_.reset(); |
255 instance = NULL; | 253 instance = nullptr; |
256 } | 254 } |
257 | 255 |
258 void HomeCardImpl::Init() { | 256 void HomeCardImpl::Init() { |
259 InstallAccelerators(); | 257 InstallAccelerators(); |
260 ScreenManager::ContainerParams params("HomeCardContainer", CP_HOME_CARD); | 258 ScreenManager::ContainerParams params("HomeCardContainer", CP_HOME_CARD); |
261 params.can_activate_children = true; | 259 params.can_activate_children = true; |
262 aura::Window* container = ScreenManager::Get()->CreateContainer(params); | 260 aura::Window* container = ScreenManager::Get()->CreateContainer(params); |
263 layout_manager_ = new HomeCardLayoutManager(); | 261 layout_manager_ = new HomeCardLayoutManager(); |
264 | 262 |
265 container->SetLayoutManager(layout_manager_); | 263 container->SetLayoutManager(layout_manager_); |
(...skipping 17 matching lines...) Expand all Loading... |
283 layout_manager_->SetMinimizedLayer(minimized_home_->layer()); | 281 layout_manager_->SetMinimizedLayer(minimized_home_->layer()); |
284 | 282 |
285 SetState(VISIBLE_MINIMIZED); | 283 SetState(VISIBLE_MINIMIZED); |
286 home_card_view_->Layout(); | 284 home_card_view_->Layout(); |
287 | 285 |
288 AthenaEnv::Get()->SetDisplayWorkAreaInsets( | 286 AthenaEnv::Get()->SetDisplayWorkAreaInsets( |
289 gfx::Insets(0, 0, kHomeCardMinimizedHeight, 0)); | 287 gfx::Insets(0, 0, kHomeCardMinimizedHeight, 0)); |
290 } | 288 } |
291 | 289 |
292 aura::Window* HomeCardImpl::GetHomeCardWindowForTest() const { | 290 aura::Window* HomeCardImpl::GetHomeCardWindowForTest() const { |
293 return home_card_widget_ ? home_card_widget_->GetNativeWindow() : NULL; | 291 return home_card_widget_ ? home_card_widget_->GetNativeWindow() : nullptr; |
294 } | 292 } |
295 | 293 |
296 void HomeCardImpl::InstallAccelerators() { | 294 void HomeCardImpl::InstallAccelerators() { |
297 const AcceleratorData accelerator_data[] = { | 295 const AcceleratorData accelerator_data[] = { |
298 {TRIGGER_ON_PRESS, ui::VKEY_L, ui::EF_CONTROL_DOWN, | 296 {TRIGGER_ON_PRESS, ui::VKEY_L, ui::EF_CONTROL_DOWN, |
299 COMMAND_SHOW_HOME_CARD, AF_NONE}, | 297 COMMAND_SHOW_HOME_CARD, AF_NONE}, |
300 }; | 298 }; |
301 AcceleratorManager::Get()->RegisterAccelerators( | 299 AcceleratorManager::Get()->RegisterAccelerators( |
302 accelerator_data, arraysize(accelerator_data), this); | 300 accelerator_data, arraysize(accelerator_data), this); |
303 } | 301 } |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 scoped_ptr<SearchControllerFactory> search_factory) { | 430 scoped_ptr<SearchControllerFactory> search_factory) { |
433 (new HomeCardImpl(model_builder.Pass(), search_factory.Pass()))->Init(); | 431 (new HomeCardImpl(model_builder.Pass(), search_factory.Pass()))->Init(); |
434 DCHECK(instance); | 432 DCHECK(instance); |
435 return instance; | 433 return instance; |
436 } | 434 } |
437 | 435 |
438 // static | 436 // static |
439 void HomeCard::Shutdown() { | 437 void HomeCard::Shutdown() { |
440 DCHECK(instance); | 438 DCHECK(instance); |
441 delete instance; | 439 delete instance; |
442 instance = NULL; | 440 instance = nullptr; |
443 } | 441 } |
444 | 442 |
445 // static | 443 // static |
446 HomeCard* HomeCard::Get() { | 444 HomeCard* HomeCard::Get() { |
447 DCHECK(instance); | 445 DCHECK(instance); |
448 return instance; | 446 return instance; |
449 } | 447 } |
450 | 448 |
451 } // namespace athena | 449 } // namespace athena |
OLD | NEW |