| 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); |
| 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; |
| 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 |