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 "ash/common/system/user/user_card_view.h" | 5 #include "ash/common/system/user/user_card_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <memory> | 8 #include <memory> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "ash/common/ash_view_ids.h" | 11 #include "ash/common/ash_view_ids.h" |
12 #include "ash/common/login_status.h" | 12 #include "ash/common/login_status.h" |
13 #include "ash/common/media_controller.h" | 13 #include "ash/common/media_controller.h" |
14 #include "ash/common/session/session_state_delegate.h" | 14 #include "ash/common/session/session_controller.h" |
15 #include "ash/common/system/tray/system_tray_controller.h" | 15 #include "ash/common/system/tray/system_tray_controller.h" |
16 #include "ash/common/system/tray/system_tray_delegate.h" | 16 #include "ash/common/system/tray/system_tray_delegate.h" |
17 #include "ash/common/system/tray/tray_constants.h" | 17 #include "ash/common/system/tray/tray_constants.h" |
18 #include "ash/common/system/tray/tray_popup_item_style.h" | 18 #include "ash/common/system/tray/tray_popup_item_style.h" |
19 #include "ash/common/system/user/rounded_image_view.h" | 19 #include "ash/common/system/user/rounded_image_view.h" |
20 #include "ash/common/wm_shell.h" | 20 #include "ash/common/wm_shell.h" |
21 #include "ash/resources/vector_icons/vector_icons.h" | 21 #include "ash/resources/vector_icons/vector_icons.h" |
22 #include "ash/strings/grit/ash_strings.h" | 22 #include "ash/strings/grit/ash_strings.h" |
23 #include "base/i18n/rtl.h" | 23 #include "base/i18n/rtl.h" |
24 #include "base/memory/ptr_util.h" | 24 #include "base/memory/ptr_util.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 // and end of the user's display name in the public account user card's text. | 56 // and end of the user's display name in the public account user card's text. |
57 const base::char16 kDisplayNameMark[] = {0x2060, 0}; | 57 const base::char16 kDisplayNameMark[] = {0x2060, 0}; |
58 | 58 |
59 views::View* CreateUserAvatarView(LoginStatus login_status, int user_index) { | 59 views::View* CreateUserAvatarView(LoginStatus login_status, int user_index) { |
60 RoundedImageView* image_view = new RoundedImageView(kTrayItemSize / 2); | 60 RoundedImageView* image_view = new RoundedImageView(kTrayItemSize / 2); |
61 if (login_status == LoginStatus::GUEST) { | 61 if (login_status == LoginStatus::GUEST) { |
62 gfx::ImageSkia icon = | 62 gfx::ImageSkia icon = |
63 gfx::CreateVectorIcon(kSystemMenuGuestIcon, kMenuIconColor); | 63 gfx::CreateVectorIcon(kSystemMenuGuestIcon, kMenuIconColor); |
64 image_view->SetImage(icon, icon.size()); | 64 image_view->SetImage(icon, icon.size()); |
65 } else { | 65 } else { |
66 SessionStateDelegate* delegate = WmShell::Get()->GetSessionStateDelegate(); | 66 SessionController* controller = WmShell::Get()->session_controller(); |
67 image_view->SetImage(delegate->GetUserInfo(user_index)->GetImage(), | 67 // TODO(xiyuan); HiDpi avatar support. http://crbug.com/702689 |
| 68 image_view->SetImage(gfx::ImageSkia::CreateFrom1xBitmap( |
| 69 controller->GetUserSession(user_index)->avatar), |
68 gfx::Size(kTrayItemSize, kTrayItemSize)); | 70 gfx::Size(kTrayItemSize, kTrayItemSize)); |
69 } | 71 } |
70 | 72 |
71 image_view->SetBorder(views::CreateEmptyBorder(gfx::Insets( | 73 image_view->SetBorder(views::CreateEmptyBorder(gfx::Insets( |
72 (kTrayPopupItemMinStartWidth - image_view->GetPreferredSize().width()) / | 74 (kTrayPopupItemMinStartWidth - image_view->GetPreferredSize().width()) / |
73 2))); | 75 2))); |
74 return image_view; | 76 return image_view; |
75 } | 77 } |
76 | 78 |
77 // The user details shown in public account mode. This is essentially a label | 79 // The user details shown in public account mode. This is essentially a label |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 const int inner_padding = | 113 const int inner_padding = |
112 kTrayPopupPaddingHorizontal - kTrayPopupPaddingBetweenItems; | 114 kTrayPopupPaddingHorizontal - kTrayPopupPaddingBetweenItems; |
113 const bool rtl = base::i18n::IsRTL(); | 115 const bool rtl = base::i18n::IsRTL(); |
114 SetBorder(views::CreateEmptyBorder( | 116 SetBorder(views::CreateEmptyBorder( |
115 kUserDetailsVerticalPadding, rtl ? 0 : inner_padding, | 117 kUserDetailsVerticalPadding, rtl ? 0 : inner_padding, |
116 kUserDetailsVerticalPadding, rtl ? inner_padding : 0)); | 118 kUserDetailsVerticalPadding, rtl ? inner_padding : 0)); |
117 | 119 |
118 // Retrieve the user's display name and wrap it with markers. | 120 // Retrieve the user's display name and wrap it with markers. |
119 // Note that since this is a public account it always has to be the primary | 121 // Note that since this is a public account it always has to be the primary |
120 // user. | 122 // user. |
121 base::string16 display_name = WmShell::Get() | 123 base::string16 display_name = base::UTF8ToUTF16( |
122 ->GetSessionStateDelegate() | 124 WmShell::Get()->session_controller()->GetUserSession(0)->display_name); |
123 ->GetUserInfo(0) | |
124 ->GetDisplayName(); | |
125 base::RemoveChars(display_name, kDisplayNameMark, &display_name); | 125 base::RemoveChars(display_name, kDisplayNameMark, &display_name); |
126 display_name = kDisplayNameMark[0] + display_name + kDisplayNameMark[0]; | 126 display_name = kDisplayNameMark[0] + display_name + kDisplayNameMark[0]; |
127 // Retrieve the domain managing the device and wrap it with markers. | 127 // Retrieve the domain managing the device and wrap it with markers. |
128 base::string16 domain = base::UTF8ToUTF16( | 128 base::string16 domain = base::UTF8ToUTF16( |
129 WmShell::Get()->system_tray_delegate()->GetEnterpriseDomain()); | 129 WmShell::Get()->system_tray_delegate()->GetEnterpriseDomain()); |
130 base::RemoveChars(domain, kDisplayNameMark, &domain); | 130 base::RemoveChars(domain, kDisplayNameMark, &domain); |
131 base::i18n::WrapStringWithLTRFormatting(&domain); | 131 base::i18n::WrapStringWithLTRFormatting(&domain); |
132 // Retrieve the label text, inserting the display name and domain. | 132 // Retrieve the label text, inserting the display name and domain. |
133 text_ = l10n_util::GetStringFUTF16(IDS_ASH_STATUS_TRAY_PUBLIC_LABEL, | 133 text_ = l10n_util::GetStringFUTF16(IDS_ASH_STATUS_TRAY_PUBLIC_LABEL, |
134 display_name, domain); | 134 display_name, domain); |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 views::View* avatar = CreateUserAvatarView(LoginStatus::PUBLIC, 0); | 388 views::View* avatar = CreateUserAvatarView(LoginStatus::PUBLIC, 0); |
389 AddChildView(avatar); | 389 AddChildView(avatar); |
390 int details_max_width = max_width - avatar->GetPreferredSize().width() - | 390 int details_max_width = max_width - avatar->GetPreferredSize().width() - |
391 kTrayPopupPaddingBetweenItems; | 391 kTrayPopupPaddingBetweenItems; |
392 AddChildView(new PublicAccountUserDetails(details_max_width)); | 392 AddChildView(new PublicAccountUserDetails(details_max_width)); |
393 } | 393 } |
394 | 394 |
395 void UserCardView::AddUserContent(views::BoxLayout* layout, | 395 void UserCardView::AddUserContent(views::BoxLayout* layout, |
396 LoginStatus login_status) { | 396 LoginStatus login_status) { |
397 AddChildView(CreateUserAvatarView(login_status, user_index_)); | 397 AddChildView(CreateUserAvatarView(login_status, user_index_)); |
398 SessionStateDelegate* delegate = WmShell::Get()->GetSessionStateDelegate(); | 398 SessionController* controller = WmShell::Get()->session_controller(); |
399 base::string16 user_name_string = | 399 base::string16 user_name_string = |
400 login_status == LoginStatus::GUEST | 400 login_status == LoginStatus::GUEST |
401 ? l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_GUEST_LABEL) | 401 ? l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_GUEST_LABEL) |
402 : delegate->GetUserInfo(user_index_)->GetDisplayName(); | 402 : base::UTF8ToUTF16( |
| 403 controller->GetUserSession(user_index_)->display_name); |
403 user_name_ = new views::Label(user_name_string); | 404 user_name_ = new views::Label(user_name_string); |
404 user_name_->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 405 user_name_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
405 TrayPopupItemStyle user_name_style( | 406 TrayPopupItemStyle user_name_style( |
406 TrayPopupItemStyle::FontStyle::DEFAULT_VIEW_LABEL); | 407 TrayPopupItemStyle::FontStyle::DEFAULT_VIEW_LABEL); |
407 user_name_style.SetupLabel(user_name_); | 408 user_name_style.SetupLabel(user_name_); |
408 | 409 |
409 TrayPopupItemStyle user_email_style(TrayPopupItemStyle::FontStyle::CAPTION); | 410 TrayPopupItemStyle user_email_style(TrayPopupItemStyle::FontStyle::CAPTION); |
410 // Only the active user's email label is lightened (for the inactive user, the | 411 // Only the active user's email label is lightened (for the inactive user, the |
411 // label starts as black and the entire row is 54% opacity). | 412 // label starts as black and the entire row is 54% opacity). |
412 if (is_active_user()) | 413 if (is_active_user()) |
413 user_email_style.set_color_style(TrayPopupItemStyle::ColorStyle::INACTIVE); | 414 user_email_style.set_color_style(TrayPopupItemStyle::ColorStyle::INACTIVE); |
414 auto* user_email = new views::Label(); | 415 auto* user_email = new views::Label(); |
415 base::string16 user_email_string; | 416 base::string16 user_email_string; |
416 if (login_status != LoginStatus::GUEST) { | 417 if (login_status != LoginStatus::GUEST) { |
417 user_email_string = | 418 user_email_string = |
418 WmShell::Get()->system_tray_delegate()->IsUserSupervised() | 419 WmShell::Get()->system_tray_delegate()->IsUserSupervised() |
419 ? l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SUPERVISED_LABEL) | 420 ? l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SUPERVISED_LABEL) |
420 : base::UTF8ToUTF16( | 421 : base::UTF8ToUTF16( |
421 delegate->GetUserInfo(user_index_)->GetDisplayEmail()); | 422 controller->GetUserSession(user_index_)->display_email); |
422 } | 423 } |
423 user_email->SetText(user_email_string); | 424 user_email->SetText(user_email_string); |
424 user_email->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 425 user_email->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
425 user_email_style.SetupLabel(user_email); | 426 user_email_style.SetupLabel(user_email); |
426 user_email->SetVisible(!user_email_string.empty()); | 427 user_email->SetVisible(!user_email_string.empty()); |
427 user_email->set_collapse_when_hidden(true); | 428 user_email->set_collapse_when_hidden(true); |
428 | 429 |
429 views::View* stack_of_labels = new views::View; | 430 views::View* stack_of_labels = new views::View; |
430 AddChildView(stack_of_labels); | 431 AddChildView(stack_of_labels); |
431 layout->SetFlexForView(stack_of_labels, 1); | 432 layout->SetFlexForView(stack_of_labels, 1); |
(...skipping 29 matching lines...) Expand all Loading... |
461 | 462 |
462 media_capture_icon_->set_id(VIEW_ID_USER_VIEW_MEDIA_INDICATOR); | 463 media_capture_icon_->set_id(VIEW_ID_USER_VIEW_MEDIA_INDICATOR); |
463 AddChildView(media_capture_icon_); | 464 AddChildView(media_capture_icon_); |
464 | 465 |
465 WmShell::Get()->media_controller()->RequestCaptureState(); | 466 WmShell::Get()->media_controller()->RequestCaptureState(); |
466 } | 467 } |
467 } | 468 } |
468 | 469 |
469 } // namespace tray | 470 } // namespace tray |
470 } // namespace ash | 471 } // namespace ash |
OLD | NEW |