diff options
author | yoshiki@chromium.org <yoshiki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-10 19:29:44 +0000 |
---|---|---|
committer | yoshiki@chromium.org <yoshiki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-10 19:29:44 +0000 |
commit | e3679358b28418c596d567be4bece52ae60906ad (patch) | |
tree | fa07e12ff5760de10d847c84b5453d3e9e6df14a /chrome | |
parent | b584fb90f233ce696c9e1f26a306e4e13af78a56 (diff) | |
download | chromium_src-e3679358b28418c596d567be4bece52ae60906ad.zip chromium_src-e3679358b28418c596d567be4bece52ae60906ad.tar.gz chromium_src-e3679358b28418c596d567be4bece52ae60906ad.tar.bz2 |
Show tooltip on lock screen when display name is not unique.
BUG=chromium-os:6833
TEST=manual testing on chromium-os
Review URL: http://codereview.chromium.org/6893137
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84832 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/chromeos/login/screen_lock_view.cc | 20 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/user_manager.cc | 14 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/user_manager.h | 3 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/views_login_display.cc | 10 |
4 files changed, 33 insertions, 14 deletions
diff --git a/chrome/browser/chromeos/login/screen_lock_view.cc b/chrome/browser/chromeos/login/screen_lock_view.cc index ac39b7b..3b9979c 100644 --- a/chrome/browser/chromeos/login/screen_lock_view.cc +++ b/chrome/browser/chromeos/login/screen_lock_view.cc @@ -115,12 +115,26 @@ void ScreenLockView::Init() { user_view_->SetImage(user.image(), user.image()); // User name. - std::wstring text = UTF8ToWide(user.GetDisplayName()); + std::string display_name = user.GetDisplayName(); ResourceBundle& rb = ResourceBundle::GetSharedInstance(); const gfx::Font& font = rb.GetFont(ResourceBundle::MediumBoldFont).DeriveFont( kSelectedUsernameFontDelta); + UsernameView* username = + UsernameView::CreateShapedUsernameView(UTF8ToWide(display_name), false); + username_ = username; + username->SetColor(login::kTextColor); + username->SetFont(font); + + // Add tooltip if screen name is not unique. + if (user.NeedsNameTooltip()) { + const std::wstring tooltip_text = UTF8ToWide(user.GetNameTooltip()); + + user_view_->SetTooltipText(tooltip_text); + username->SetTooltipText(tooltip_text); + } + // Layouts image, textfield and button components. GridLayout* layout = new GridLayout(main_); main_->SetLayoutManager(layout); @@ -146,10 +160,6 @@ void ScreenLockView::Init() { AddChildView(main_); - UsernameView* username = UsernameView::CreateShapedUsernameView(text, false); - username_ = username; - username->SetColor(login::kTextColor); - username->SetFont(font); AddChildView(username); } diff --git a/chrome/browser/chromeos/login/user_manager.cc b/chrome/browser/chromeos/login/user_manager.cc index 30afc50..17a13cc 100644 --- a/chrome/browser/chromeos/login/user_manager.cc +++ b/chrome/browser/chromeos/login/user_manager.cc @@ -212,6 +212,20 @@ std::string UserManager::User::GetDisplayName() const { return email_.substr(0, i); } +bool UserManager::User::NeedsNameTooltip() const { + const std::vector<User>& users = UserManager::Get()->GetUsers(); + const std::string& display_name = GetDisplayName(); + const std::string& user_email = email(); + + for (std::vector<User>::const_iterator it = users.begin(); + it != users.end(); + ++it) { + if (display_name == it->GetDisplayName() && user_email != it->email()) + return true; + } + return false; +} + std::string UserManager::User::GetNameTooltip() const { const std::string& user_email = email(); size_t at_pos = user_email.rfind('@'); diff --git a/chrome/browser/chromeos/login/user_manager.h b/chrome/browser/chromeos/login/user_manager.h index 24d6381..49fb3fe 100644 --- a/chrome/browser/chromeos/login/user_manager.h +++ b/chrome/browser/chromeos/login/user_manager.h @@ -50,6 +50,9 @@ class UserManager : public UserImageLoader::Delegate, // this user from the other one with the same display name. std::string GetNameTooltip() const; + // Returns true if some users have same display name. + bool NeedsNameTooltip() const; + // The image for this user. void set_image(const SkBitmap& image) { image_ = image; } const SkBitmap& image() const { return image_; } diff --git a/chrome/browser/chromeos/login/views_login_display.cc b/chrome/browser/chromeos/login/views_login_display.cc index cd781ef..a3a4c00 100644 --- a/chrome/browser/chromeos/login/views_login_display.cc +++ b/chrome/browser/chromeos/login/views_login_display.cc @@ -42,18 +42,10 @@ const int kCursorOffset = 5; // Otherwise, disables the tooltips. void EnableTooltipsIfNeeded( const std::vector<chromeos::UserController*>& controllers) { - std::map<std::string, int> visible_display_names; - for (size_t i = 0; i + 1 < controllers.size(); ++i) { - const std::string& display_name = - controllers[i]->user().GetDisplayName(); - ++visible_display_names[display_name]; - } for (size_t i = 0; i < controllers.size(); ++i) { - const std::string& display_name = - controllers[i]->user().GetDisplayName(); bool show_tooltip = controllers[i]->is_new_user() || controllers[i]->is_guest() || - visible_display_names[display_name] > 1; + controllers[i]->user().NeedsNameTooltip(); controllers[i]->EnableNameTooltip(show_tooltip); } } |