| 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/common/shell_window_ids.h" | 10 #include "ash/common/shell_window_ids.h" |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 | 175 |
| 176 // Add the command text. | 176 // Add the command text. |
| 177 views::Label* command_label = new views::Label( | 177 views::Label* command_label = new views::Label( |
| 178 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT)); | 178 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT)); |
| 179 command_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 179 command_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| 180 add_user_->AddChildView(command_label); | 180 add_user_->AddChildView(command_label); |
| 181 } | 181 } |
| 182 | 182 |
| 183 } // namespace | 183 } // namespace |
| 184 | 184 |
| 185 UserView::UserView(SystemTrayItem* owner, | 185 UserView::UserView(SystemTrayItem* owner, LoginStatus login, UserIndex index) |
| 186 user::LoginStatus login, | |
| 187 UserIndex index) | |
| 188 : user_index_(index), | 186 : user_index_(index), |
| 189 user_card_view_(NULL), | 187 user_card_view_(NULL), |
| 190 owner_(owner), | 188 owner_(owner), |
| 191 is_user_card_button_(false), | 189 is_user_card_button_(false), |
| 192 logout_button_(NULL), | 190 logout_button_(NULL), |
| 193 add_user_enabled_(true), | 191 add_user_enabled_(true), |
| 194 focus_manager_(NULL) { | 192 focus_manager_(NULL) { |
| 195 CHECK_NE(user::LOGGED_IN_NONE, login); | 193 CHECK_NE(LoginStatus::NOT_LOGGED_IN, login); |
| 196 if (!index) { | 194 if (!index) { |
| 197 // Only the logged in user will have a background. All other users will have | 195 // Only the logged in user will have a background. All other users will have |
| 198 // to allow the TrayPopupContainer highlighting the menu line. | 196 // to allow the TrayPopupContainer highlighting the menu line. |
| 199 set_background(views::Background::CreateSolidBackground( | 197 set_background(views::Background::CreateSolidBackground( |
| 200 login == user::LOGGED_IN_PUBLIC ? kPublicAccountBackgroundColor | 198 login == LoginStatus::PUBLIC ? kPublicAccountBackgroundColor |
| 201 : kBackgroundColor)); | 199 : kBackgroundColor)); |
| 202 } | 200 } |
| 203 SetLayoutManager(new views::BoxLayout( | 201 SetLayoutManager(new views::BoxLayout( |
| 204 views::BoxLayout::kHorizontal, 0, 0, kTrayPopupPaddingBetweenItems)); | 202 views::BoxLayout::kHorizontal, 0, 0, kTrayPopupPaddingBetweenItems)); |
| 205 // The logout button must be added before the user card so that the user card | 203 // The logout button must be added before the user card so that the user card |
| 206 // can correctly calculate the remaining available width. | 204 // can correctly calculate the remaining available width. |
| 207 // Note that only the current multiprofile user gets a button. | 205 // Note that only the current multiprofile user gets a button. |
| 208 if (!user_index_) | 206 if (!user_index_) |
| 209 AddLogoutButton(login); | 207 AddLogoutButton(login); |
| 210 AddUserCard(login); | 208 AddUserCard(login); |
| 211 } | 209 } |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 | 324 |
| 327 void UserView::OnWillChangeFocus(View* focused_before, View* focused_now) { | 325 void UserView::OnWillChangeFocus(View* focused_before, View* focused_now) { |
| 328 if (focused_now) | 326 if (focused_now) |
| 329 RemoveAddUserMenuOption(); | 327 RemoveAddUserMenuOption(); |
| 330 } | 328 } |
| 331 | 329 |
| 332 void UserView::OnDidChangeFocus(View* focused_before, View* focused_now) { | 330 void UserView::OnDidChangeFocus(View* focused_before, View* focused_now) { |
| 333 // Nothing to do here. | 331 // Nothing to do here. |
| 334 } | 332 } |
| 335 | 333 |
| 336 void UserView::AddLogoutButton(user::LoginStatus login) { | 334 void UserView::AddLogoutButton(LoginStatus login) { |
| 337 const base::string16 title = | 335 const base::string16 title = |
| 338 user::GetLocalizedSignOutStringForStatus(login, true); | 336 user::GetLocalizedSignOutStringForStatus(login, true); |
| 339 auto* logout_button = new TrayPopupLabelButton(this, title); | 337 auto* logout_button = new TrayPopupLabelButton(this, title); |
| 340 logout_button->SetAccessibleName(title); | 338 logout_button->SetAccessibleName(title); |
| 341 logout_button_ = logout_button; | 339 logout_button_ = logout_button; |
| 342 // In public account mode, the logout button border has a custom color. | 340 // In public account mode, the logout button border has a custom color. |
| 343 if (login == user::LOGGED_IN_PUBLIC) { | 341 if (login == LoginStatus::PUBLIC) { |
| 344 std::unique_ptr<TrayPopupLabelButtonBorder> border( | 342 std::unique_ptr<TrayPopupLabelButtonBorder> border( |
| 345 new TrayPopupLabelButtonBorder()); | 343 new TrayPopupLabelButtonBorder()); |
| 346 border->SetPainter(false, | 344 border->SetPainter(false, |
| 347 views::Button::STATE_NORMAL, | 345 views::Button::STATE_NORMAL, |
| 348 views::Painter::CreateImageGridPainter( | 346 views::Painter::CreateImageGridPainter( |
| 349 kPublicAccountLogoutButtonBorderImagesNormal)); | 347 kPublicAccountLogoutButtonBorderImagesNormal)); |
| 350 border->SetPainter(false, | 348 border->SetPainter(false, |
| 351 views::Button::STATE_HOVERED, | 349 views::Button::STATE_HOVERED, |
| 352 views::Painter::CreateImageGridPainter( | 350 views::Painter::CreateImageGridPainter( |
| 353 kPublicAccountLogoutButtonBorderImagesHovered)); | 351 kPublicAccountLogoutButtonBorderImagesHovered)); |
| 354 border->SetPainter(false, | 352 border->SetPainter(false, |
| 355 views::Button::STATE_PRESSED, | 353 views::Button::STATE_PRESSED, |
| 356 views::Painter::CreateImageGridPainter( | 354 views::Painter::CreateImageGridPainter( |
| 357 kPublicAccountLogoutButtonBorderImagesHovered)); | 355 kPublicAccountLogoutButtonBorderImagesHovered)); |
| 358 logout_button_->SetBorder(std::move(border)); | 356 logout_button_->SetBorder(std::move(border)); |
| 359 } | 357 } |
| 360 AddChildView(logout_button_); | 358 AddChildView(logout_button_); |
| 361 } | 359 } |
| 362 | 360 |
| 363 void UserView::AddUserCard(user::LoginStatus login) { | 361 void UserView::AddUserCard(LoginStatus login) { |
| 364 // Add padding around the panel. | 362 // Add padding around the panel. |
| 365 SetBorder(views::Border::CreateEmptyBorder(kTrayPopupUserCardVerticalPadding, | 363 SetBorder(views::Border::CreateEmptyBorder(kTrayPopupUserCardVerticalPadding, |
| 366 kTrayPopupPaddingHorizontal, | 364 kTrayPopupPaddingHorizontal, |
| 367 kTrayPopupUserCardVerticalPadding, | 365 kTrayPopupUserCardVerticalPadding, |
| 368 kTrayPopupPaddingHorizontal)); | 366 kTrayPopupPaddingHorizontal)); |
| 369 | 367 |
| 370 views::TrayBubbleView* bubble_view = | 368 views::TrayBubbleView* bubble_view = |
| 371 owner_->system_tray()->GetSystemBubble()->bubble_view(); | 369 owner_->system_tray()->GetSystemBubble()->bubble_view(); |
| 372 int max_card_width = | 370 int max_card_width = |
| 373 bubble_view->GetMaximumSize().width() - | 371 bubble_view->GetMaximumSize().width() - |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 insets = gfx::Insets(1, 1, 1, 3); | 405 insets = gfx::Insets(1, 1, 1, 3); |
| 408 } | 406 } |
| 409 auto* button = | 407 auto* button = |
| 410 new ButtonFromView(contents_view, this, !user_index_, insets); | 408 new ButtonFromView(contents_view, this, !user_index_, insets); |
| 411 user_card_view_ = button; | 409 user_card_view_ = button; |
| 412 is_user_card_button_ = true; | 410 is_user_card_button_ = true; |
| 413 } | 411 } |
| 414 AddChildViewAt(user_card_view_, 0); | 412 AddChildViewAt(user_card_view_, 0); |
| 415 // Card for supervised user can consume more space than currently | 413 // Card for supervised user can consume more space than currently |
| 416 // available. In that case we should increase system bubble's width. | 414 // available. In that case we should increase system bubble's width. |
| 417 if (login == user::LOGGED_IN_PUBLIC) | 415 if (login == LoginStatus::PUBLIC) |
| 418 bubble_view->SetWidth(GetPreferredSize().width()); | 416 bubble_view->SetWidth(GetPreferredSize().width()); |
| 419 } | 417 } |
| 420 | 418 |
| 421 void UserView::ToggleAddUserMenuOption() { | 419 void UserView::ToggleAddUserMenuOption() { |
| 422 if (add_menu_option_.get()) { | 420 if (add_menu_option_.get()) { |
| 423 RemoveAddUserMenuOption(); | 421 RemoveAddUserMenuOption(); |
| 424 return; | 422 return; |
| 425 } | 423 } |
| 426 | 424 |
| 427 // Note: We do not need to install a global event handler to delete this | 425 // Note: We do not need to install a global event handler to delete this |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 focus_manager_ = NULL; | 523 focus_manager_ = NULL; |
| 526 if (user_card_view_->GetFocusManager()) | 524 if (user_card_view_->GetFocusManager()) |
| 527 user_card_view_->GetFocusManager()->ClearFocus(); | 525 user_card_view_->GetFocusManager()->ClearFocus(); |
| 528 popup_message_.reset(); | 526 popup_message_.reset(); |
| 529 mouse_watcher_.reset(); | 527 mouse_watcher_.reset(); |
| 530 add_menu_option_.reset(); | 528 add_menu_option_.reset(); |
| 531 } | 529 } |
| 532 | 530 |
| 533 } // namespace tray | 531 } // namespace tray |
| 534 } // namespace ash | 532 } // namespace ash |
| OLD | NEW |