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/system/user/user_view.h" | 5 #include "ash/system/user/user_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "ash/multi_profile_uma.h" | 10 #include "ash/multi_profile_uma.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
65 controller->SwitchActiveUser( | 65 controller->SwitchActiveUser( |
66 controller->GetUserSession(user_index)->account_id); | 66 controller->GetUserSession(user_index)->account_id); |
67 } | 67 } |
68 | 68 |
69 bool IsMultiProfileSupportedAndUserActive() { | 69 bool IsMultiProfileSupportedAndUserActive() { |
70 return Shell::Get()->shell_delegate()->IsMultiProfilesEnabled() && | 70 return Shell::Get()->shell_delegate()->IsMultiProfilesEnabled() && |
71 !Shell::Get()->session_controller()->IsUserSessionBlocked(); | 71 !Shell::Get()->session_controller()->IsUserSessionBlocked(); |
72 } | 72 } |
73 | 73 |
74 // Creates the view shown in the user switcher popup ("AddUserMenuOption"). | 74 // Creates the view shown in the user switcher popup ("AddUserMenuOption"). |
75 views::View* CreateAddUserView(AddUserSessionPolicy policy, | 75 views::View* CreateAddUserView(AddUserSessionPolicy policy) { |
76 views::ButtonListener* listener) { | |
77 auto* view = new views::View; | 76 auto* view = new views::View; |
78 const int icon_padding = (kMenuButtonSize - kMenuIconSize) / 2; | 77 const int icon_padding = (kMenuButtonSize - kMenuIconSize) / 2; |
79 auto* layout = | 78 auto* layout = |
80 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, | 79 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, |
81 kTrayPopupLabelHorizontalPadding + icon_padding); | 80 kTrayPopupLabelHorizontalPadding + icon_padding); |
82 layout->set_minimum_cross_axis_size(kTrayPopupItemMinHeight); | 81 layout->set_minimum_cross_axis_size(kTrayPopupItemMinHeight); |
83 view->SetLayoutManager(layout); | 82 view->SetLayoutManager(layout); |
84 view->set_background( | 83 view->set_background(views::Background::CreateThemedSolidBackground( |
85 views::Background::CreateSolidBackground(kBackgroundColor)); | 84 view, ui::NativeTheme::kColorId_BubbleBackground)); |
86 | 85 |
87 int message_id = 0; | 86 int message_id = 0; |
88 switch (policy) { | 87 switch (policy) { |
89 case AddUserSessionPolicy::ALLOWED: { | 88 case AddUserSessionPolicy::ALLOWED: { |
90 message_id = IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT; | 89 message_id = IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT; |
91 | 90 |
92 auto* icon = new views::ImageView(); | 91 auto* icon = new views::ImageView(); |
93 icon->SetImage( | 92 icon->SetImage( |
94 gfx::CreateVectorIcon(kSystemMenuNewUserIcon, kMenuIconColor)); | 93 gfx::CreateVectorIcon(kSystemMenuNewUserIcon, kMenuIconColor)); |
95 view->AddChildView(icon); | 94 view->AddChildView(icon); |
(...skipping 20 matching lines...) Expand all Loading... | |
116 if (policy != AddUserSessionPolicy::ALLOWED) { | 115 if (policy != AddUserSessionPolicy::ALLOWED) { |
117 label_style.set_font_style(TrayPopupItemStyle::FontStyle::CAPTION); | 116 label_style.set_font_style(TrayPopupItemStyle::FontStyle::CAPTION); |
118 label_style.set_color_style(TrayPopupItemStyle::ColorStyle::INACTIVE); | 117 label_style.set_color_style(TrayPopupItemStyle::ColorStyle::INACTIVE); |
119 vertical_padding += kMenuSeparatorVerticalPadding; | 118 vertical_padding += kMenuSeparatorVerticalPadding; |
120 } | 119 } |
121 label_style.SetupLabel(command_label); | 120 label_style.SetupLabel(command_label); |
122 view->AddChildView(command_label); | 121 view->AddChildView(command_label); |
123 view->SetBorder(views::CreateEmptyBorder(vertical_padding, icon_padding, | 122 view->SetBorder(views::CreateEmptyBorder(vertical_padding, icon_padding, |
124 vertical_padding, | 123 vertical_padding, |
125 kTrayPopupLabelHorizontalPadding)); | 124 kTrayPopupLabelHorizontalPadding)); |
126 if (policy == AddUserSessionPolicy::ALLOWED) { | |
msw
2017/04/17 18:04:53
What are these changes? They seem unrelated...
Evan Stade
2017/04/17 19:40:05
I refactored the wrap-the-view-in-a-button bit to
msw
2017/04/17 20:05:40
Okay, I'll leave review here to tdanderson@
tdanderson
2017/04/18 19:14:46
This looks good to me.
| |
127 auto* button = | |
128 new ButtonFromView(view, listener, TrayPopupInkDropStyle::INSET_BOUNDS); | |
129 button->SetAccessibleName( | |
130 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT)); | |
131 return button; | |
132 } | |
133 | 125 |
134 return view; | 126 return view; |
135 } | 127 } |
136 | 128 |
137 class UserViewMouseWatcherHost : public views::MouseWatcherHost { | 129 class UserViewMouseWatcherHost : public views::MouseWatcherHost { |
138 public: | 130 public: |
139 explicit UserViewMouseWatcherHost(const gfx::Rect& screen_area) | 131 explicit UserViewMouseWatcherHost(const gfx::Rect& screen_area) |
140 : screen_area_(screen_area) {} | 132 : screen_area_(screen_area) {} |
141 ~UserViewMouseWatcherHost() override {} | 133 ~UserViewMouseWatcherHost() override {} |
142 | 134 |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
357 | 349 |
358 // Position the widget on top of the user card view (which is still in the | 350 // Position the widget on top of the user card view (which is still in the |
359 // system menu). The top half of the widget will be transparent to allow | 351 // system menu). The top half of the widget will be transparent to allow |
360 // the active user to show through. | 352 // the active user to show through. |
361 gfx::Rect bounds = user_card_view_->GetBoundsInScreen(); | 353 gfx::Rect bounds = user_card_view_->GetBoundsInScreen(); |
362 bounds.set_width(bounds.width() + kSeparatorWidth); | 354 bounds.set_width(bounds.width() + kSeparatorWidth); |
363 int row_height = bounds.height(); | 355 int row_height = bounds.height(); |
364 | 356 |
365 views::View* container = new AddUserWidgetContents( | 357 views::View* container = new AddUserWidgetContents( |
366 base::Bind(&UserView::RemoveAddUserMenuOption, base::Unretained(this))); | 358 base::Bind(&UserView::RemoveAddUserMenuOption, base::Unretained(this))); |
359 views::View* add_user_view = CreateAddUserView(add_user_policy); | |
367 container->SetBorder(views::CreatePaddedBorder( | 360 container->SetBorder(views::CreatePaddedBorder( |
368 views::CreateSolidSidedBorder(0, 0, 0, kSeparatorWidth, kBackgroundColor), | 361 views::CreateSolidSidedBorder(0, 0, 0, kSeparatorWidth, |
362 add_user_view->background()->get_color()), | |
tdanderson
2017/04/18 19:14:46
nit: optional: consider giving add_user_view->back
Evan Stade
2017/04/19 15:59:01
Done.
| |
369 gfx::Insets(row_height, 0, 0, 0))); | 363 gfx::Insets(row_height, 0, 0, 0))); |
370 views::View* add_user_padding = new views::View(); | 364 views::View* add_user_padding = new views::View(); |
371 add_user_padding->SetBorder(views::CreateSolidSidedBorder( | 365 add_user_padding->SetBorder( |
372 kMenuSeparatorVerticalPadding, 0, 0, 0, kBackgroundColor)); | 366 views::CreateSolidSidedBorder(kMenuSeparatorVerticalPadding, 0, 0, 0, |
373 views::View* add_user_view = CreateAddUserView(add_user_policy, this); | 367 add_user_view->background()->get_color())); |
374 add_user_padding->AddChildView(add_user_view); | 368 if (add_user_enabled_) { |
369 auto* button = new ButtonFromView(add_user_view, this, | |
370 TrayPopupInkDropStyle::INSET_BOUNDS); | |
371 button->SetAccessibleName( | |
372 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT)); | |
373 add_user_padding->AddChildView(button); | |
374 } else { | |
375 add_user_padding->AddChildView(add_user_view); | |
376 } | |
375 add_user_padding->SetLayoutManager(new views::FillLayout()); | 377 add_user_padding->SetLayoutManager(new views::FillLayout()); |
376 container->AddChildView(add_user_padding); | 378 container->AddChildView(add_user_padding); |
377 container->SetLayoutManager(new views::FillLayout()); | 379 container->SetLayoutManager(new views::FillLayout()); |
378 add_menu_option_->SetContentsView(container); | 380 add_menu_option_->SetContentsView(container); |
379 | 381 |
380 bounds.set_height(container->GetPreferredSize().height()); | 382 bounds.set_height(container->GetPreferredSize().height()); |
381 add_menu_option_->SetBounds(bounds); | 383 add_menu_option_->SetBounds(bounds); |
382 | 384 |
383 // Show the content. | 385 // Show the content. |
384 add_menu_option_->SetAlwaysOnTop(true); | 386 add_menu_option_->SetAlwaysOnTop(true); |
(...skipping 11 matching lines...) Expand all Loading... | |
396 return; | 398 return; |
397 focus_manager_->RemoveFocusChangeListener(this); | 399 focus_manager_->RemoveFocusChangeListener(this); |
398 focus_manager_ = nullptr; | 400 focus_manager_ = nullptr; |
399 if (user_card_view_->GetFocusManager()) | 401 if (user_card_view_->GetFocusManager()) |
400 user_card_view_->GetFocusManager()->ClearFocus(); | 402 user_card_view_->GetFocusManager()->ClearFocus(); |
401 add_menu_option_.reset(); | 403 add_menu_option_.reset(); |
402 } | 404 } |
403 | 405 |
404 } // namespace tray | 406 } // namespace tray |
405 } // namespace ash | 407 } // namespace ash |
OLD | NEW |