| 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/common/system/user/tray_user.h" | 5 #include "ash/common/system/user/tray_user.h" |
| 6 | 6 |
| 7 #include "ash/common/material_design/material_design_controller.h" | 7 #include "ash/common/material_design/material_design_controller.h" |
| 8 #include "ash/common/session/session_state_delegate.h" | 8 #include "ash/common/session/session_state_delegate.h" |
| 9 #include "ash/common/shelf/wm_shelf_util.h" | 9 #include "ash/common/shelf/wm_shelf_util.h" |
| 10 #include "ash/common/system/tray/system_tray.h" | 10 #include "ash/common/system/tray/system_tray.h" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 } | 71 } |
| 72 | 72 |
| 73 void TrayUser::UpdateAfterLoginStatusChangeForTest(LoginStatus status) { | 73 void TrayUser::UpdateAfterLoginStatusChangeForTest(LoginStatus status) { |
| 74 UpdateAfterLoginStatusChange(status); | 74 UpdateAfterLoginStatusChange(status); |
| 75 } | 75 } |
| 76 | 76 |
| 77 views::View* TrayUser::CreateTrayView(LoginStatus status) { | 77 views::View* TrayUser::CreateTrayView(LoginStatus status) { |
| 78 CHECK(layout_view_ == nullptr); | 78 CHECK(layout_view_ == nullptr); |
| 79 | 79 |
| 80 layout_view_ = new views::View; | 80 layout_view_ = new views::View; |
| 81 layout_view_->SetLayoutManager(new views::BoxLayout( | |
| 82 views::BoxLayout::kHorizontal, 0, 0, kUserLabelToIconPadding)); | |
| 83 UpdateAfterLoginStatusChange(status); | 81 UpdateAfterLoginStatusChange(status); |
| 84 return layout_view_; | 82 return layout_view_; |
| 85 } | 83 } |
| 86 | 84 |
| 87 views::View* TrayUser::CreateDefaultView(LoginStatus status) { | 85 views::View* TrayUser::CreateDefaultView(LoginStatus status) { |
| 88 if (status == LoginStatus::NOT_LOGGED_IN) | 86 if (status == LoginStatus::NOT_LOGGED_IN) |
| 89 return nullptr; | 87 return nullptr; |
| 90 const SessionStateDelegate* session_state_delegate = | 88 const SessionStateDelegate* session_state_delegate = |
| 91 WmShell::Get()->GetSessionStateDelegate(); | 89 WmShell::Get()->GetSessionStateDelegate(); |
| 92 | 90 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 need_label = true; | 142 need_label = true; |
| 145 break; | 143 break; |
| 146 case LoginStatus::KIOSK_APP: | 144 case LoginStatus::KIOSK_APP: |
| 147 case LoginStatus::ARC_KIOSK_APP: | 145 case LoginStatus::ARC_KIOSK_APP: |
| 148 case LoginStatus::NOT_LOGGED_IN: | 146 case LoginStatus::NOT_LOGGED_IN: |
| 149 break; | 147 break; |
| 150 } | 148 } |
| 151 | 149 |
| 152 if ((need_avatar != (avatar_ != nullptr)) || | 150 if ((need_avatar != (avatar_ != nullptr)) || |
| 153 (need_label != (label_ != nullptr))) { | 151 (need_label != (label_ != nullptr))) { |
| 154 layout_view_->RemoveAllChildViews(true); | 152 delete label_; |
| 153 delete avatar_; |
| 154 |
| 155 if (need_label) { | 155 if (need_label) { |
| 156 label_ = new views::Label; | 156 label_ = new views::Label; |
| 157 SetupLabelForTray(label_); | 157 SetupLabelForTray(label_); |
| 158 layout_view_->AddChildView(label_); | 158 layout_view_->AddChildView(label_); |
| 159 } else { | 159 } else { |
| 160 label_ = nullptr; | 160 label_ = nullptr; |
| 161 } | 161 } |
| 162 if (need_avatar) { | 162 if (need_avatar) { |
| 163 avatar_ = new tray::RoundedImageView(kTrayRoundedBorderRadius, true); | 163 avatar_ = new tray::RoundedImageView(kTrayRoundedBorderRadius, true); |
| 164 layout_view_->AddChildView(avatar_); | 164 layout_view_->AddChildView(avatar_); |
| 165 } else { | 165 } else { |
| 166 avatar_ = nullptr; | 166 avatar_ = nullptr; |
| 167 } | 167 } |
| 168 } | 168 } |
| 169 | 169 |
| 170 if (delegate->IsUserSupervised()) { | 170 if (delegate->IsUserSupervised()) { |
| 171 label_->SetText( | 171 label_->SetText( |
| 172 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SUPERVISED_LABEL)); | 172 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SUPERVISED_LABEL)); |
| 173 } else if (status == LoginStatus::GUEST) { | 173 } else if (status == LoginStatus::GUEST) { |
| 174 label_->SetText(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_GUEST_LABEL)); | 174 label_->SetText(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_GUEST_LABEL)); |
| 175 } | 175 } |
| 176 | 176 |
| 177 if (avatar_) { | |
| 178 avatar_->SetCornerRadii(0, kTrayRoundedBorderRadius, | |
| 179 kTrayRoundedBorderRadius, 0); | |
| 180 const int distance_to_avatar = | |
| 181 MaterialDesignController::IsShelfMaterial() | |
| 182 ? GetTrayConstant(TRAY_IMAGE_ITEM_PADDING) | |
| 183 : 0; | |
| 184 const bool is_horizontal = | |
| 185 IsHorizontalAlignment(system_tray()->shelf_alignment()); | |
| 186 avatar_->SetBorder(views::Border::CreateEmptyBorder( | |
| 187 is_horizontal ? 0 : distance_to_avatar, | |
| 188 is_horizontal ? distance_to_avatar : 0, 0, 0)); | |
| 189 } | |
| 190 UpdateAvatarImage(status); | 177 UpdateAvatarImage(status); |
| 191 | 178 |
| 192 // Update layout after setting label_ and avatar_ with new login status. | 179 // Update layout after setting label_ and avatar_ with new login status. |
| 193 UpdateLayoutOfItem(); | 180 UpdateLayoutOfItem(); |
| 194 } | 181 } |
| 195 | 182 |
| 196 void TrayUser::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) { | 183 void TrayUser::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) { |
| 197 // Inactive users won't have a layout. | 184 // Inactive users won't have a layout. |
| 198 if (!layout_view_) | 185 if (!layout_view_) |
| 199 return; | 186 return; |
| 200 const int distance_to_avatar = MaterialDesignController::IsShelfMaterial() | |
| 201 ? GetTrayConstant(TRAY_IMAGE_ITEM_PADDING) | |
| 202 : 0; | |
| 203 if (IsHorizontalAlignment(alignment)) { | 187 if (IsHorizontalAlignment(alignment)) { |
| 204 if (avatar_) { | 188 if (avatar_) { |
| 205 avatar_->SetBorder( | |
| 206 views::Border::CreateEmptyBorder(0, distance_to_avatar, 0, 0)); | |
| 207 avatar_->SetCornerRadii(0, kTrayRoundedBorderRadius, | 189 avatar_->SetCornerRadii(0, kTrayRoundedBorderRadius, |
| 208 kTrayRoundedBorderRadius, 0); | 190 kTrayRoundedBorderRadius, 0); |
| 209 } | 191 } |
| 210 if (label_) { | 192 if (label_) { |
| 211 // If label_ hasn't figured out its size yet, do that first. | 193 // If label_ hasn't figured out its size yet, do that first. |
| 212 if (label_->GetContentsBounds().height() == 0) | 194 if (label_->GetContentsBounds().height() == 0) |
| 213 label_->SizeToPreferredSize(); | 195 label_->SizeToPreferredSize(); |
| 214 int height = label_->GetContentsBounds().height(); | 196 int height = label_->GetContentsBounds().height(); |
| 215 int vertical_pad = (kTrayItemSize - height) / 2; | 197 int vertical_pad = (kTrayItemSize - height) / 2; |
| 216 int remainder = height % 2; | 198 int remainder = height % 2; |
| 217 label_->SetBorder(views::Border::CreateEmptyBorder( | 199 label_->SetBorder(views::Border::CreateEmptyBorder( |
| 218 vertical_pad + remainder, | 200 vertical_pad + remainder, |
| 219 kTrayLabelItemHorizontalPaddingBottomAlignment, vertical_pad, | 201 kTrayLabelItemHorizontalPaddingBottomAlignment, vertical_pad, |
| 220 kTrayLabelItemHorizontalPaddingBottomAlignment)); | 202 kTrayLabelItemHorizontalPaddingBottomAlignment)); |
| 221 } | 203 } |
| 222 layout_view_->SetLayoutManager(new views::BoxLayout( | 204 layout_view_->SetLayoutManager(new views::BoxLayout( |
| 223 views::BoxLayout::kHorizontal, 0, 0, kUserLabelToIconPadding)); | 205 views::BoxLayout::kHorizontal, 0, 0, kUserLabelToIconPadding)); |
| 224 } else { | 206 } else { |
| 225 if (avatar_) { | 207 if (avatar_) { |
| 226 avatar_->SetBorder( | |
| 227 views::Border::CreateEmptyBorder(distance_to_avatar, 0, 0, 0)); | |
| 228 avatar_->SetCornerRadii(0, 0, kTrayRoundedBorderRadius, | 208 avatar_->SetCornerRadii(0, 0, kTrayRoundedBorderRadius, |
| 229 kTrayRoundedBorderRadius); | 209 kTrayRoundedBorderRadius); |
| 230 } | 210 } |
| 231 if (label_) { | 211 if (label_) { |
| 232 label_->SetBorder(views::Border::CreateEmptyBorder( | 212 label_->SetBorder(views::Border::CreateEmptyBorder( |
| 233 kTrayLabelItemVerticalPaddingVerticalAlignment, | 213 kTrayLabelItemVerticalPaddingVerticalAlignment, |
| 234 kTrayLabelItemHorizontalPaddingBottomAlignment, | 214 kTrayLabelItemHorizontalPaddingBottomAlignment, |
| 235 kTrayLabelItemVerticalPaddingVerticalAlignment, | 215 kTrayLabelItemVerticalPaddingVerticalAlignment, |
| 236 kTrayLabelItemHorizontalPaddingBottomAlignment)); | 216 kTrayLabelItemHorizontalPaddingBottomAlignment)); |
| 237 } | 217 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 // Unit tests might come here with no images for some users. | 256 // Unit tests might come here with no images for some users. |
| 277 if (avatar_->size().IsEmpty()) | 257 if (avatar_->size().IsEmpty()) |
| 278 avatar_->SetSize(gfx::Size(kTrayItemSize, kTrayItemSize)); | 258 avatar_->SetSize(gfx::Size(kTrayItemSize, kTrayItemSize)); |
| 279 } | 259 } |
| 280 | 260 |
| 281 void TrayUser::UpdateLayoutOfItem() { | 261 void TrayUser::UpdateLayoutOfItem() { |
| 282 UpdateAfterShelfAlignmentChange(system_tray()->shelf_alignment()); | 262 UpdateAfterShelfAlignmentChange(system_tray()->shelf_alignment()); |
| 283 } | 263 } |
| 284 | 264 |
| 285 } // namespace ash | 265 } // namespace ash |
| OLD | NEW |