| 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 "ash/system/user/tray_user.h" | 5 #include "ash/system/user/tray_user.h" |
| 6 | 6 |
| 7 #include "ash/ash_switches.h" | 7 #include "ash/ash_switches.h" |
| 8 #include "ash/common/shelf/wm_shelf_util.h" | 8 #include "ash/common/shelf/wm_shelf_util.h" |
| 9 #include "ash/session/session_state_delegate.h" | 9 #include "ash/session/session_state_delegate.h" |
| 10 #include "ash/shelf/shelf_layout_manager.h" | 10 #include "ash/shelf/shelf_layout_manager.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 } else { | 65 } else { |
| 66 return layout_view_->size(); | 66 return layout_view_->size(); |
| 67 } | 67 } |
| 68 } | 68 } |
| 69 | 69 |
| 70 gfx::Rect TrayUser::GetUserPanelBoundsInScreenForTest() const { | 70 gfx::Rect TrayUser::GetUserPanelBoundsInScreenForTest() const { |
| 71 DCHECK(user_); | 71 DCHECK(user_); |
| 72 return user_->GetBoundsInScreenOfUserButtonForTest(); | 72 return user_->GetBoundsInScreenOfUserButtonForTest(); |
| 73 } | 73 } |
| 74 | 74 |
| 75 void TrayUser::UpdateAfterLoginStatusChangeForTest(user::LoginStatus status) { | 75 void TrayUser::UpdateAfterLoginStatusChangeForTest(LoginStatus status) { |
| 76 UpdateAfterLoginStatusChange(status); | 76 UpdateAfterLoginStatusChange(status); |
| 77 } | 77 } |
| 78 | 78 |
| 79 views::View* TrayUser::CreateTrayView(user::LoginStatus status) { | 79 views::View* TrayUser::CreateTrayView(LoginStatus status) { |
| 80 CHECK(layout_view_ == nullptr); | 80 CHECK(layout_view_ == nullptr); |
| 81 | 81 |
| 82 layout_view_ = new views::View; | 82 layout_view_ = new views::View; |
| 83 layout_view_->SetLayoutManager( | 83 layout_view_->SetLayoutManager( |
| 84 new views::BoxLayout(views::BoxLayout::kHorizontal, | 84 new views::BoxLayout(views::BoxLayout::kHorizontal, |
| 85 0, 0, kUserLabelToIconPadding)); | 85 0, 0, kUserLabelToIconPadding)); |
| 86 UpdateAfterLoginStatusChange(status); | 86 UpdateAfterLoginStatusChange(status); |
| 87 return layout_view_; | 87 return layout_view_; |
| 88 } | 88 } |
| 89 | 89 |
| 90 views::View* TrayUser::CreateDefaultView(user::LoginStatus status) { | 90 views::View* TrayUser::CreateDefaultView(LoginStatus status) { |
| 91 if (status == user::LOGGED_IN_NONE) | 91 if (status == LoginStatus::NOT_LOGGED_IN) |
| 92 return nullptr; | 92 return nullptr; |
| 93 const SessionStateDelegate* session_state_delegate = | 93 const SessionStateDelegate* session_state_delegate = |
| 94 Shell::GetInstance()->session_state_delegate(); | 94 Shell::GetInstance()->session_state_delegate(); |
| 95 | 95 |
| 96 // If the screen is locked or a system modal dialog box is shown, show only | 96 // If the screen is locked or a system modal dialog box is shown, show only |
| 97 // the currently active user. | 97 // the currently active user. |
| 98 if (user_index_ && (session_state_delegate->IsUserSessionBlocked() || | 98 if (user_index_ && (session_state_delegate->IsUserSessionBlocked() || |
| 99 Shell::GetInstance()->IsSystemModalWindowOpen())) | 99 Shell::GetInstance()->IsSystemModalWindowOpen())) |
| 100 return nullptr; | 100 return nullptr; |
| 101 | 101 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 114 void TrayUser::DestroyTrayView() { | 114 void TrayUser::DestroyTrayView() { |
| 115 layout_view_ = nullptr; | 115 layout_view_ = nullptr; |
| 116 avatar_ = nullptr; | 116 avatar_ = nullptr; |
| 117 label_ = nullptr; | 117 label_ = nullptr; |
| 118 } | 118 } |
| 119 | 119 |
| 120 void TrayUser::DestroyDefaultView() { | 120 void TrayUser::DestroyDefaultView() { |
| 121 user_ = nullptr; | 121 user_ = nullptr; |
| 122 } | 122 } |
| 123 | 123 |
| 124 void TrayUser::UpdateAfterLoginStatusChange(user::LoginStatus status) { | 124 void TrayUser::UpdateAfterLoginStatusChange(LoginStatus status) { |
| 125 // Only the active user is represented in the tray. | 125 // Only the active user is represented in the tray. |
| 126 if (!layout_view_) | 126 if (!layout_view_) |
| 127 return; | 127 return; |
| 128 if (user_index_ > 0) | 128 if (user_index_ > 0) |
| 129 return; | 129 return; |
| 130 bool need_label = false; | 130 bool need_label = false; |
| 131 bool need_avatar = false; | 131 bool need_avatar = false; |
| 132 SystemTrayDelegate* delegate = Shell::GetInstance()->system_tray_delegate(); | 132 SystemTrayDelegate* delegate = Shell::GetInstance()->system_tray_delegate(); |
| 133 if (delegate->IsUserSupervised()) | 133 if (delegate->IsUserSupervised()) |
| 134 need_label = true; | 134 need_label = true; |
| 135 switch (status) { | 135 switch (status) { |
| 136 case user::LOGGED_IN_LOCKED: | 136 case LoginStatus::LOCKED: |
| 137 case user::LOGGED_IN_USER: | 137 case LoginStatus::USER: |
| 138 case user::LOGGED_IN_OWNER: | 138 case LoginStatus::OWNER: |
| 139 case user::LOGGED_IN_PUBLIC: | 139 case LoginStatus::PUBLIC: |
| 140 need_avatar = true; | 140 need_avatar = true; |
| 141 break; | 141 break; |
| 142 case user::LOGGED_IN_SUPERVISED: | 142 case LoginStatus::SUPERVISED: |
| 143 need_avatar = true; | 143 need_avatar = true; |
| 144 need_label = true; | 144 need_label = true; |
| 145 break; | 145 break; |
| 146 case user::LOGGED_IN_GUEST: | 146 case LoginStatus::GUEST: |
| 147 need_label = true; | 147 need_label = true; |
| 148 break; | 148 break; |
| 149 case user::LOGGED_IN_KIOSK_APP: | 149 case LoginStatus::KIOSK_APP: |
| 150 case user::LOGGED_IN_NONE: | 150 case LoginStatus::NOT_LOGGED_IN: |
| 151 break; | 151 break; |
| 152 } | 152 } |
| 153 | 153 |
| 154 if ((need_avatar != (avatar_ != nullptr)) || | 154 if ((need_avatar != (avatar_ != nullptr)) || |
| 155 (need_label != (label_ != nullptr))) { | 155 (need_label != (label_ != nullptr))) { |
| 156 layout_view_->RemoveAllChildViews(true); | 156 layout_view_->RemoveAllChildViews(true); |
| 157 if (need_label) { | 157 if (need_label) { |
| 158 label_ = new views::Label; | 158 label_ = new views::Label; |
| 159 SetupLabelForTray(label_); | 159 SetupLabelForTray(label_); |
| 160 layout_view_->AddChildView(label_); | 160 layout_view_->AddChildView(label_); |
| 161 } else { | 161 } else { |
| 162 label_ = nullptr; | 162 label_ = nullptr; |
| 163 } | 163 } |
| 164 if (need_avatar) { | 164 if (need_avatar) { |
| 165 avatar_ = new tray::RoundedImageView(kTrayAvatarCornerRadius, true); | 165 avatar_ = new tray::RoundedImageView(kTrayAvatarCornerRadius, true); |
| 166 layout_view_->AddChildView(avatar_); | 166 layout_view_->AddChildView(avatar_); |
| 167 } else { | 167 } else { |
| 168 avatar_ = nullptr; | 168 avatar_ = nullptr; |
| 169 } | 169 } |
| 170 } | 170 } |
| 171 | 171 |
| 172 if (delegate->IsUserSupervised()) { | 172 if (delegate->IsUserSupervised()) { |
| 173 label_->SetText( | 173 label_->SetText( |
| 174 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SUPERVISED_LABEL)); | 174 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SUPERVISED_LABEL)); |
| 175 } else if (status == user::LOGGED_IN_GUEST) { | 175 } else if (status == LoginStatus::GUEST) { |
| 176 label_->SetText(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_GUEST_LABEL)); | 176 label_->SetText(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_GUEST_LABEL)); |
| 177 } | 177 } |
| 178 | 178 |
| 179 if (avatar_) { | 179 if (avatar_) { |
| 180 avatar_->SetCornerRadii( | 180 avatar_->SetCornerRadii( |
| 181 0, kTrayAvatarCornerRadius, kTrayAvatarCornerRadius, 0); | 181 0, kTrayAvatarCornerRadius, kTrayAvatarCornerRadius, 0); |
| 182 avatar_->SetBorder(views::Border::NullBorder()); | 182 avatar_->SetBorder(views::Border::NullBorder()); |
| 183 } | 183 } |
| 184 UpdateAvatarImage(status); | 184 UpdateAvatarImage(status); |
| 185 | 185 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 return; | 245 return; |
| 246 | 246 |
| 247 // Enforce a layout change that newly added items become visible. | 247 // Enforce a layout change that newly added items become visible. |
| 248 UpdateLayoutOfItem(); | 248 UpdateLayoutOfItem(); |
| 249 | 249 |
| 250 // Update the user item. | 250 // Update the user item. |
| 251 UpdateAvatarImage( | 251 UpdateAvatarImage( |
| 252 Shell::GetInstance()->system_tray_delegate()->GetUserLoginStatus()); | 252 Shell::GetInstance()->system_tray_delegate()->GetUserLoginStatus()); |
| 253 } | 253 } |
| 254 | 254 |
| 255 void TrayUser::UpdateAvatarImage(user::LoginStatus status) { | 255 void TrayUser::UpdateAvatarImage(LoginStatus status) { |
| 256 SessionStateDelegate* session_state_delegate = | 256 SessionStateDelegate* session_state_delegate = |
| 257 Shell::GetInstance()->session_state_delegate(); | 257 Shell::GetInstance()->session_state_delegate(); |
| 258 if (!avatar_ || | 258 if (!avatar_ || |
| 259 user_index_ >= session_state_delegate->NumberOfLoggedInUsers()) | 259 user_index_ >= session_state_delegate->NumberOfLoggedInUsers()) |
| 260 return; | 260 return; |
| 261 | 261 |
| 262 const user_manager::UserInfo* user_info = | 262 const user_manager::UserInfo* user_info = |
| 263 session_state_delegate->GetUserInfo(user_index_); | 263 session_state_delegate->GetUserInfo(user_index_); |
| 264 CHECK(user_info); | 264 CHECK(user_info); |
| 265 avatar_->SetImage(user_info->GetImage(), | 265 avatar_->SetImage(user_info->GetImage(), |
| 266 gfx::Size(kTrayAvatarSize, kTrayAvatarSize)); | 266 gfx::Size(kTrayAvatarSize, kTrayAvatarSize)); |
| 267 | 267 |
| 268 // Unit tests might come here with no images for some users. | 268 // Unit tests might come here with no images for some users. |
| 269 if (avatar_->size().IsEmpty()) | 269 if (avatar_->size().IsEmpty()) |
| 270 avatar_->SetSize(gfx::Size(kTrayAvatarSize, kTrayAvatarSize)); | 270 avatar_->SetSize(gfx::Size(kTrayAvatarSize, kTrayAvatarSize)); |
| 271 } | 271 } |
| 272 | 272 |
| 273 void TrayUser::UpdateLayoutOfItem() { | 273 void TrayUser::UpdateLayoutOfItem() { |
| 274 UpdateAfterShelfAlignmentChange(system_tray()->shelf_alignment()); | 274 UpdateAfterShelfAlignmentChange(system_tray()->shelf_alignment()); |
| 275 } | 275 } |
| 276 | 276 |
| 277 } // namespace ash | 277 } // namespace ash |
| OLD | NEW |