summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoryoshiki@chromium.org <yoshiki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-10 19:29:44 +0000
committeryoshiki@chromium.org <yoshiki@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-10 19:29:44 +0000
commite3679358b28418c596d567be4bece52ae60906ad (patch)
treefa07e12ff5760de10d847c84b5453d3e9e6df14a /chrome
parentb584fb90f233ce696c9e1f26a306e4e13af78a56 (diff)
downloadchromium_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.cc20
-rw-r--r--chrome/browser/chromeos/login/user_manager.cc14
-rw-r--r--chrome/browser/chromeos/login/user_manager.h3
-rw-r--r--chrome/browser/chromeos/login/views_login_display.cc10
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);
}
}