OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/chromeos/login/user_controller.h" | 5 #include "chrome/browser/chromeos/login/user_controller.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "app/l10n_util.h" | 10 #include "app/l10n_util.h" |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
216 image_window_ = CreateImageWindow(index); | 216 image_window_ = CreateImageWindow(index); |
217 CreateBorderWindow(index, total_user_count, controls_height); | 217 CreateBorderWindow(index, total_user_count, controls_height); |
218 label_window_ = CreateLabelWindow(index, WM_IPC_WINDOW_LOGIN_LABEL); | 218 label_window_ = CreateLabelWindow(index, WM_IPC_WINDOW_LOGIN_LABEL); |
219 unselected_label_window_ = | 219 unselected_label_window_ = |
220 CreateLabelWindow(index, WM_IPC_WINDOW_LOGIN_UNSELECTED_LABEL); | 220 CreateLabelWindow(index, WM_IPC_WINDOW_LOGIN_UNSELECTED_LABEL); |
221 } | 221 } |
222 | 222 |
223 void UserController::SetPasswordEnabled(bool enable) { | 223 void UserController::SetPasswordEnabled(bool enable) { |
224 DCHECK(!is_guest_); | 224 DCHECK(!is_guest_); |
225 password_field_->SetEnabled(enable); | 225 password_field_->SetEnabled(enable); |
226 submit_button_->SetEnabled(enable); | 226 // submit_button_->SetEnabled(enable); |
Dmitry Polukhin
2010/06/30 08:57:05
Why is it here?
whywhat
2010/06/30 09:00:14
Forgot to uncomment. Done.
| |
227 enable ? user_view_->StopThrobber() : user_view_->StartThrobber(); | 227 enable ? user_view_->StopThrobber() : user_view_->StartThrobber(); |
228 } | 228 } |
229 | 229 |
230 void UserController::ClearAndEnablePassword() { | 230 void UserController::ClearAndEnablePassword() { |
231 if (is_guest_) { | 231 if (is_guest_) { |
232 new_user_view_->ClearAndEnablePassword(); | 232 new_user_view_->ClearAndEnablePassword(); |
233 } else { | 233 } else { |
234 password_field_->SetText(string16()); | 234 password_field_->SetText(string16()); |
235 SetPasswordEnabled(true); | 235 SetPasswordEnabled(true); |
236 FocusPasswordField(); | 236 FocusPasswordField(); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
337 layout->StartRow(0, 0); | 337 layout->StartRow(0, 0); |
338 layout->AddView(password_field_); | 338 layout->AddView(password_field_); |
339 layout->AddView(submit_button_); | 339 layout->AddView(submit_button_); |
340 } | 340 } |
341 | 341 |
342 WidgetGtk* window = new WidgetGtk(WidgetGtk::TYPE_WINDOW); | 342 WidgetGtk* window = new WidgetGtk(WidgetGtk::TYPE_WINDOW); |
343 window->MakeTransparent(); | 343 window->MakeTransparent(); |
344 window->Init(NULL, gfx::Rect()); | 344 window->Init(NULL, gfx::Rect()); |
345 window->SetContentsView(control_view); | 345 window->SetContentsView(control_view); |
346 window->SetWidgetDelegate(this); | 346 window->SetWidgetDelegate(this); |
347 *height = is_guest_ ? kUserImageSize + kControlsHeight | |
348 : control_view->GetPreferredSize().height(); | |
349 std::vector<int> params; | 347 std::vector<int> params; |
350 params.push_back(index); | 348 params.push_back(index); |
351 WmIpc::instance()->SetWindowType( | 349 WmIpc::instance()->SetWindowType( |
352 window->GetNativeView(), | 350 window->GetNativeView(), |
353 WM_IPC_WINDOW_LOGIN_CONTROLS, | 351 WM_IPC_WINDOW_LOGIN_CONTROLS, |
354 ¶ms); | 352 ¶ms); |
353 *height = is_guest_ ? kUserImageSize + kControlsHeight | |
354 : control_view->GetPreferredSize().height(); | |
355 window->SetBounds(gfx::Rect(0, 0, kUserImageSize, *height)); | 355 window->SetBounds(gfx::Rect(0, 0, kUserImageSize, *height)); |
356 window->Show(); | 356 window->Show(); |
357 return window; | 357 return window; |
358 } | 358 } |
359 | 359 |
360 WidgetGtk* UserController::CreateImageWindow(int index) { | 360 WidgetGtk* UserController::CreateImageWindow(int index) { |
361 user_view_ = new UserView(this, true); | 361 user_view_ = new UserView(this, true); |
362 | 362 |
363 if (!is_guest_) { | 363 if (!is_guest_) { |
364 user_view_->SetImage(user_.image()); | 364 user_view_->SetImage(user_.image()); |
(...skipping 12 matching lines...) Expand all Loading... | |
377 window->GetNativeView(), | 377 window->GetNativeView(), |
378 WM_IPC_WINDOW_LOGIN_IMAGE, | 378 WM_IPC_WINDOW_LOGIN_IMAGE, |
379 ¶ms); | 379 ¶ms); |
380 window->Show(); | 380 window->Show(); |
381 return window; | 381 return window; |
382 } | 382 } |
383 | 383 |
384 void UserController::CreateBorderWindow(int index, | 384 void UserController::CreateBorderWindow(int index, |
385 int total_user_count, | 385 int total_user_count, |
386 int controls_height) { | 386 int controls_height) { |
387 // Guest login controls window is much higher than exsisting user's controls | |
388 // window so window manager will place the control instead of image window. | |
389 int width = kUserImageSize + kBorderSize * 2; | |
390 int height = kBorderSize * 2 + controls_height; | |
391 if (!is_guest_) | |
392 height += kBorderSize + kUserImageSize; | |
387 border_window_ = new WidgetGtk(WidgetGtk::TYPE_WINDOW); | 393 border_window_ = new WidgetGtk(WidgetGtk::TYPE_WINDOW); |
388 border_window_->Init(NULL, gfx::Rect()); | 394 border_window_->Init(NULL, gfx::Rect(0, 0, width, height)); |
389 border_window_->GetRootView()->set_background( | 395 border_window_->GetRootView()->set_background( |
390 views::Background::CreateSolidBackground(kBackgroundColor)); | 396 views::Background::CreateSolidBackground(kBackgroundColor)); |
391 UpdateUserCount(index, total_user_count); | 397 UpdateUserCount(index, total_user_count); |
392 | 398 |
393 // Guest login controls window is much higher than exsisting user's controls | |
394 // window so window manager will place the control instead of image window. | |
395 int height = kBorderSize * 2 + controls_height; | |
396 height += is_guest_ ? 0 : kBorderSize + kUserImageSize; | |
397 border_window_->SetBounds(gfx::Rect(0, 0, kUserImageSize + kBorderSize * 2, | |
398 height)); | |
399 border_window_->Show(); | 399 border_window_->Show(); |
400 } | 400 } |
401 | 401 |
402 void UserController::UpdateUserCount(int index, int total_user_count) { | 402 void UserController::UpdateUserCount(int index, int total_user_count) { |
403 user_index_ = index; | 403 user_index_ = index; |
404 std::vector<int> params; | 404 std::vector<int> params; |
405 params.push_back(index); | 405 params.push_back(index); |
406 params.push_back(total_user_count); | 406 params.push_back(total_user_count); |
407 params.push_back(kUnselectedSize); | 407 params.push_back(kUnselectedSize); |
408 params.push_back(kPadding); | 408 params.push_back(kPadding); |
409 WmIpc::instance()->SetWindowType( | 409 WmIpc::instance()->SetWindowType( |
410 border_window_->GetNativeView(), | 410 border_window_->GetNativeView(), |
411 WM_IPC_WINDOW_LOGIN_BORDER, | 411 WM_IPC_WINDOW_LOGIN_BORDER, |
412 ¶ms); | 412 ¶ms); |
413 } | 413 } |
414 | 414 |
415 WidgetGtk* UserController::CreateLabelWindow(int index, | 415 WidgetGtk* UserController::CreateLabelWindow(int index, |
416 WmIpcWindowType type) { | 416 WmIpcWindowType type) { |
417 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 417 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
418 const gfx::Font& font = (type == WM_IPC_WINDOW_LOGIN_LABEL) ? | 418 const gfx::Font& font = (type == WM_IPC_WINDOW_LOGIN_LABEL) ? |
419 rb.GetFont(ResourceBundle::LargeFont).DeriveFont(0, gfx::Font::BOLD) : | 419 rb.GetFont(ResourceBundle::LargeFont).DeriveFont(0, gfx::Font::BOLD) : |
420 rb.GetFont(ResourceBundle::BaseFont).DeriveFont(0, gfx::Font::BOLD); | 420 rb.GetFont(ResourceBundle::BaseFont).DeriveFont(0, gfx::Font::BOLD); |
421 int width = (type == WM_IPC_WINDOW_LOGIN_LABEL) ? | |
422 kUserImageSize : kUnselectedSize; | |
423 WidgetGtk* window = new ClickNotifyingWidget(WidgetGtk::TYPE_WINDOW, this); | |
424 window->MakeTransparent(); | |
425 window->Init(NULL, gfx::Rect()); | |
426 std::wstring text = is_guest_ ? l10n_util::GetString(IDS_GUEST) : | 421 std::wstring text = is_guest_ ? l10n_util::GetString(IDS_GUEST) : |
427 UTF8ToWide(user_.GetDisplayName()); | 422 UTF8ToWide(user_.GetDisplayName()); |
428 views::Label* label = new views::Label(text); | 423 views::Label* label = new views::Label(text); |
429 label->SetColor(kTextColor); | 424 label->SetColor(kTextColor); |
430 label->SetFont(font); | 425 label->SetFont(font); |
431 if (type == WM_IPC_WINDOW_LOGIN_LABEL) | 426 if (type == WM_IPC_WINDOW_LOGIN_LABEL) |
432 label_view_ = label; | 427 label_view_ = label; |
433 else | 428 else |
434 unselected_label_view_ = label; | 429 unselected_label_view_ = label; |
435 | 430 |
431 int width = (type == WM_IPC_WINDOW_LOGIN_LABEL) ? | |
432 kUserImageSize : kUnselectedSize; | |
433 int height = label->GetPreferredSize().height(); | |
434 WidgetGtk* window = new ClickNotifyingWidget(WidgetGtk::TYPE_WINDOW, this); | |
435 window->MakeTransparent(); | |
436 window->Init(NULL, gfx::Rect(0, 0, width, height)); | |
436 window->SetContentsView(label); | 437 window->SetContentsView(label); |
437 | 438 |
438 int height = label->GetPreferredSize().height(); | |
439 std::vector<int> params; | 439 std::vector<int> params; |
440 params.push_back(index); | 440 params.push_back(index); |
441 WmIpc::instance()->SetWindowType(window->GetNativeView(), type, ¶ms); | 441 WmIpc::instance()->SetWindowType(window->GetNativeView(), type, ¶ms); |
442 window->SetBounds(gfx::Rect(0, 0, width, height)); | |
443 window->Show(); | 442 window->Show(); |
444 return window; | 443 return window; |
445 } | 444 } |
446 | 445 |
447 gfx::Rect UserController::GetScreenBounds() const { | 446 gfx::Rect UserController::GetScreenBounds() const { |
448 if (is_guest_) { | 447 if (is_guest_) { |
449 return new_user_view_->GetPasswordBounds(); | 448 return new_user_view_->GetPasswordBounds(); |
450 } else { | 449 } else { |
451 gfx::Rect screen_bounds(password_field_->bounds()); | 450 gfx::Rect screen_bounds(password_field_->bounds()); |
452 gfx::Point origin(screen_bounds.origin()); | 451 gfx::Point origin(screen_bounds.origin()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
484 | 483 |
485 void UserController::SelectUser(int index) { | 484 void UserController::SelectUser(int index) { |
486 delegate_->SelectUser(index); | 485 delegate_->SelectUser(index); |
487 } | 486 } |
488 | 487 |
489 void UserController::FocusPasswordField() { | 488 void UserController::FocusPasswordField() { |
490 password_field_->RequestFocus(); | 489 password_field_->RequestFocus(); |
491 } | 490 } |
492 | 491 |
493 } // namespace chromeos | 492 } // namespace chromeos |
OLD | NEW |