OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/app_list/views/app_list_view.h" | 5 #include "ui/app_list/views/app_list_view.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
9 #include "ui/app_list/app_list_constants.h" | 9 #include "ui/app_list/app_list_constants.h" |
10 #include "ui/app_list/app_list_model.h" | 10 #include "ui/app_list/app_list_model.h" |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 | 122 |
123 // On non-aura the bubble has two widgets, and it's possible for the border | 123 // On non-aura the bubble has two widgets, and it's possible for the border |
124 // to be shown independently in odd situations. Explicitly hide the bubble | 124 // to be shown independently in odd situations. Explicitly hide the bubble |
125 // widget to ensure that any WM_WINDOWPOSCHANGED messages triggered by the | 125 // widget to ensure that any WM_WINDOWPOSCHANGED messages triggered by the |
126 // window manager do not have the SWP_SHOWWINDOW flag set which would cause | 126 // window manager do not have the SWP_SHOWWINDOW flag set which would cause |
127 // the border to be shown. See http://crbug.com/231687 . | 127 // the border to be shown. See http://crbug.com/231687 . |
128 GetWidget()->Hide(); | 128 GetWidget()->Hide(); |
129 #endif | 129 #endif |
130 } | 130 } |
131 | 131 |
| 132 void AppListView::SetModel(app_list::AppListModel* model) { |
| 133 if (GetSigninDelegate()) |
| 134 GetSigninDelegate()->RemoveObserver(this); |
| 135 // Sets the model on the view so the view is hooked up to listen to the model. |
| 136 // This cleans up the observers of the old model. |
| 137 app_list_main_view_->SetModel(model); |
| 138 // Build the model which will notify the view, updating it. This also resets |
| 139 // the signin delegate which will fail if any observers are listening to the |
| 140 // old delegate. |
| 141 if (delegate_) |
| 142 delegate_->SetModel(model); |
| 143 // Reset the model here, freeing it. This is done after all cleanup involving |
| 144 // references to this model is complete. |
| 145 model_.reset(model); |
| 146 // Sets the signin view's delegate from the AppListViewDelegate. |
| 147 signin_view_->SetDelegate(GetSigninDelegate()); |
| 148 if (GetSigninDelegate()) |
| 149 GetSigninDelegate()->AddObserver(this); |
| 150 // Show the signin view if the new profile is not signed in. |
| 151 OnSigninStatusChanged(); |
| 152 } |
| 153 |
132 void AppListView::SetBubbleArrow(views::BubbleBorder::Arrow arrow) { | 154 void AppListView::SetBubbleArrow(views::BubbleBorder::Arrow arrow) { |
133 GetBubbleFrameView()->bubble_border()->set_arrow(arrow); | 155 GetBubbleFrameView()->bubble_border()->set_arrow(arrow); |
134 SizeToContents(); // Recalcuates with new border. | 156 SizeToContents(); // Recalcuates with new border. |
135 GetBubbleFrameView()->SchedulePaint(); | 157 GetBubbleFrameView()->SchedulePaint(); |
136 } | 158 } |
137 | 159 |
138 void AppListView::SetAnchorPoint(const gfx::Point& anchor_point) { | 160 void AppListView::SetAnchorPoint(const gfx::Point& anchor_point) { |
139 set_anchor_rect(gfx::Rect(anchor_point, gfx::Size())); | 161 set_anchor_rect(gfx::Rect(anchor_point, gfx::Size())); |
140 SizeToContents(); // Repositions view relative to the anchor. | 162 SizeToContents(); // Repositions view relative to the anchor. |
141 } | 163 } |
(...skipping 29 matching lines...) Expand all Loading... |
171 | 193 |
172 void AppListView::Prerender() { | 194 void AppListView::Prerender() { |
173 app_list_main_view_->Prerender(); | 195 app_list_main_view_->Prerender(); |
174 } | 196 } |
175 | 197 |
176 void AppListView::OnSigninStatusChanged() { | 198 void AppListView::OnSigninStatusChanged() { |
177 const bool needs_signin = | 199 const bool needs_signin = |
178 GetSigninDelegate() && GetSigninDelegate()->NeedSignin(); | 200 GetSigninDelegate() && GetSigninDelegate()->NeedSignin(); |
179 | 201 |
180 signin_view_->SetVisible(needs_signin); | 202 signin_view_->SetVisible(needs_signin); |
| 203 delegate_->RebuildAvatarMenuItems(model_.get()); |
181 app_list_main_view_->SetVisible(!needs_signin); | 204 app_list_main_view_->SetVisible(!needs_signin); |
182 app_list_main_view_->search_box_view()->InvalidateMenu(); | 205 app_list_main_view_->search_box_view()->InvalidateMenu(); |
183 } | 206 } |
184 | 207 |
185 views::View* AppListView::GetInitiallyFocusedView() { | 208 views::View* AppListView::GetInitiallyFocusedView() { |
186 return app_list_main_view_->search_box_view()->search_box(); | 209 return app_list_main_view_->search_box_view()->search_box(); |
187 } | 210 } |
188 | 211 |
189 gfx::ImageSkia AppListView::GetWindowIcon() { | 212 gfx::ImageSkia AppListView::GetWindowIcon() { |
190 if (delegate_) | 213 if (delegate_) |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 | 280 |
258 void AppListView::OnSigninSuccess() { | 281 void AppListView::OnSigninSuccess() { |
259 OnSigninStatusChanged(); | 282 OnSigninStatusChanged(); |
260 } | 283 } |
261 | 284 |
262 SigninDelegate* AppListView::GetSigninDelegate() { | 285 SigninDelegate* AppListView::GetSigninDelegate() { |
263 return delegate_ ? delegate_->GetSigninDelegate() : NULL; | 286 return delegate_ ? delegate_->GetSigninDelegate() : NULL; |
264 } | 287 } |
265 | 288 |
266 } // namespace app_list | 289 } // namespace app_list |
OLD | NEW |