| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/views/autofill/autofill_dialog_views.h" | 5 #include "chrome/browser/ui/views/autofill/autofill_dialog_views.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "chrome/browser/autofill/wallet/wallet_service_url.h" | 10 #include "chrome/browser/autofill/wallet/wallet_service_url.h" |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 did_submit_(false), | 250 did_submit_(false), |
| 251 window_(NULL), | 251 window_(NULL), |
| 252 contents_(NULL), | 252 contents_(NULL), |
| 253 notification_label_(NULL), | 253 notification_label_(NULL), |
| 254 use_billing_for_shipping_(NULL), | 254 use_billing_for_shipping_(NULL), |
| 255 sign_in_link_(NULL), | 255 sign_in_link_(NULL), |
| 256 sign_in_container_(NULL), | 256 sign_in_container_(NULL), |
| 257 cancel_sign_in_(NULL), | 257 cancel_sign_in_(NULL), |
| 258 sign_in_webview_(NULL), | 258 sign_in_webview_(NULL), |
| 259 main_container_(NULL), | 259 main_container_(NULL), |
| 260 button_strip_extra_view_(NULL), |
| 261 save_in_chrome_checkbox_(NULL), |
| 260 focus_manager_(NULL) { | 262 focus_manager_(NULL) { |
| 261 DCHECK(controller); | 263 DCHECK(controller); |
| 262 detail_groups_.insert(std::make_pair(SECTION_EMAIL, | 264 detail_groups_.insert(std::make_pair(SECTION_EMAIL, |
| 263 DetailsGroup(SECTION_EMAIL))); | 265 DetailsGroup(SECTION_EMAIL))); |
| 264 detail_groups_.insert(std::make_pair(SECTION_CC, | 266 detail_groups_.insert(std::make_pair(SECTION_CC, |
| 265 DetailsGroup(SECTION_CC))); | 267 DetailsGroup(SECTION_CC))); |
| 266 detail_groups_.insert(std::make_pair(SECTION_BILLING, | 268 detail_groups_.insert(std::make_pair(SECTION_BILLING, |
| 267 DetailsGroup(SECTION_BILLING))); | 269 DetailsGroup(SECTION_BILLING))); |
| 268 detail_groups_.insert(std::make_pair(SECTION_SHIPPING, | 270 detail_groups_.insert(std::make_pair(SECTION_SHIPPING, |
| 269 DetailsGroup(SECTION_SHIPPING))); | 271 DetailsGroup(SECTION_SHIPPING))); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 for (TextfieldMap::iterator it = group->textfields.begin(); | 310 for (TextfieldMap::iterator it = group->textfields.begin(); |
| 309 it != group->textfields.end(); ++it) { | 311 it != group->textfields.end(); ++it) { |
| 310 output->insert(std::make_pair(it->first, it->second->textfield()->text())); | 312 output->insert(std::make_pair(it->first, it->second->textfield()->text())); |
| 311 } | 313 } |
| 312 } | 314 } |
| 313 | 315 |
| 314 bool AutofillDialogViews::UseBillingForShipping() { | 316 bool AutofillDialogViews::UseBillingForShipping() { |
| 315 return use_billing_for_shipping_->checked(); | 317 return use_billing_for_shipping_->checked(); |
| 316 } | 318 } |
| 317 | 319 |
| 320 bool AutofillDialogViews::SaveDetailsLocally() { |
| 321 return save_in_chrome_checkbox_->checked(); |
| 322 } |
| 323 |
| 318 const content::NavigationController& AutofillDialogViews::ShowSignIn() { | 324 const content::NavigationController& AutofillDialogViews::ShowSignIn() { |
| 319 // TODO(abodenha) Also hide Submit and Cancel buttons. | 325 // TODO(abodenha) Also hide Submit and Cancel buttons. |
| 320 // See http://crbug.com/165193 | 326 // See http://crbug.com/165193 |
| 321 // TODO(abodenha) We should be able to use the WebContents of the WebView | 327 // TODO(abodenha) We should be able to use the WebContents of the WebView |
| 322 // to navigate instead of LoadInitialURL. Figure out why it doesn't work. | 328 // to navigate instead of LoadInitialURL. Figure out why it doesn't work. |
| 323 | 329 |
| 324 sign_in_webview_->LoadInitialURL(wallet::GetSignInUrl()); | 330 sign_in_webview_->LoadInitialURL(wallet::GetSignInUrl()); |
| 325 // TODO(abodenha) Resize the dialog to avoid the need for a scroll bar on | 331 // TODO(abodenha) Resize the dialog to avoid the need for a scroll bar on |
| 326 // sign in. See http://crbug.com/169286 | 332 // sign in. See http://crbug.com/169286 |
| 327 sign_in_webview_->SetPreferredSize(contents_->GetPreferredSize()); | 333 sign_in_webview_->SetPreferredSize(contents_->GetPreferredSize()); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 string16 AutofillDialogViews::GetDialogButtonLabel(ui::DialogButton button) | 371 string16 AutofillDialogViews::GetDialogButtonLabel(ui::DialogButton button) |
| 366 const { | 372 const { |
| 367 return button == ui::DIALOG_BUTTON_OK ? | 373 return button == ui::DIALOG_BUTTON_OK ? |
| 368 controller_->ConfirmButtonText() : controller_->CancelButtonText(); | 374 controller_->ConfirmButtonText() : controller_->CancelButtonText(); |
| 369 } | 375 } |
| 370 | 376 |
| 371 bool AutofillDialogViews::IsDialogButtonEnabled(ui::DialogButton button) const { | 377 bool AutofillDialogViews::IsDialogButtonEnabled(ui::DialogButton button) const { |
| 372 return true; | 378 return true; |
| 373 } | 379 } |
| 374 | 380 |
| 381 views::View* AutofillDialogViews::GetExtraView() { |
| 382 return button_strip_extra_view_; |
| 383 } |
| 384 |
| 375 bool AutofillDialogViews::Cancel() { | 385 bool AutofillDialogViews::Cancel() { |
| 376 return true; | 386 return true; |
| 377 } | 387 } |
| 378 | 388 |
| 379 bool AutofillDialogViews::Accept() { | 389 bool AutofillDialogViews::Accept() { |
| 380 if (!ValidateForm()) | 390 if (!ValidateForm()) |
| 381 return false; | 391 return false; |
| 382 | 392 |
| 383 did_submit_ = true; | 393 did_submit_ = true; |
| 384 return true; | 394 return true; |
| 385 } | 395 } |
| 386 | 396 |
| 387 void AutofillDialogViews::ButtonPressed(views::Button* sender, | 397 void AutofillDialogViews::ButtonPressed(views::Button* sender, |
| 388 const ui::Event& event) { | 398 const ui::Event& event) { |
| 389 if (sender == use_billing_for_shipping_) { | 399 if (sender == use_billing_for_shipping_) { |
| 390 UpdateDetailsGroupState(*GroupForSection(SECTION_SHIPPING)); | 400 UpdateDetailsGroupState(*GroupForSection(SECTION_SHIPPING)); |
| 391 } else if (sender == cancel_sign_in_) { | 401 } else if (sender == cancel_sign_in_) { |
| 392 controller_->EndSignInFlow(); | 402 controller_->EndSignInFlow(); |
| 393 } else { | 403 } else { |
| 394 // TODO(estade): Should the menu be shown on mouse down? | 404 // TODO(estade): Should the menu be shown on mouse down? |
| 395 DetailsGroup* group = NULL; | 405 DetailsGroup* group = NULL; |
| 396 for (DetailGroupMap::iterator iter = detail_groups_.begin(); | 406 for (DetailGroupMap::iterator iter = detail_groups_.begin(); |
| 397 iter != detail_groups_.end(); ++iter) { | 407 iter != detail_groups_.end(); ++iter) { |
| 398 if (sender == iter->second.suggested_button) { | 408 if (sender == iter->second.suggested_button) { |
| 399 group = &iter->second; | 409 group = &iter->second; |
| 400 break; | 410 break; |
| 401 } | 411 } |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 for (DetailGroupMap::iterator iter = detail_groups_.begin(); | 470 for (DetailGroupMap::iterator iter = detail_groups_.begin(); |
| 461 iter != detail_groups_.end(); ++iter) { | 471 iter != detail_groups_.end(); ++iter) { |
| 462 if (iter->second.suggested_info->Contains(source)) { | 472 if (iter->second.suggested_info->Contains(source)) { |
| 463 controller_->EditClickedForSection(iter->first); | 473 controller_->EditClickedForSection(iter->first); |
| 464 return; | 474 return; |
| 465 } | 475 } |
| 466 } | 476 } |
| 467 } | 477 } |
| 468 | 478 |
| 469 void AutofillDialogViews::InitChildViews() { | 479 void AutofillDialogViews::InitChildViews() { |
| 480 button_strip_extra_view_ = new views::View(); |
| 481 button_strip_extra_view_->SetLayoutManager( |
| 482 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); |
| 483 |
| 484 // TODO(estade): i18n. |
| 485 save_in_chrome_checkbox_ = |
| 486 new views::Checkbox(controller_->SaveLocallyText()); |
| 487 button_strip_extra_view_->AddChildView(save_in_chrome_checkbox_); |
| 488 // TODO(estade): add other views, like the Autocheckout progress bar. |
| 489 |
| 470 contents_ = new views::View(); | 490 contents_ = new views::View(); |
| 471 contents_->SetLayoutManager( | 491 contents_->SetLayoutManager( |
| 472 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); | 492 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); |
| 473 contents_->AddChildView(CreateMainContainer()); | 493 contents_->AddChildView(CreateMainContainer()); |
| 474 contents_->AddChildView(CreateSignInContainer()); | 494 contents_->AddChildView(CreateSignInContainer()); |
| 475 } | 495 } |
| 476 | 496 |
| 477 views::View* AutofillDialogViews::CreateSignInContainer() { | 497 views::View* AutofillDialogViews::CreateSignInContainer() { |
| 478 sign_in_container_ = new views::View(); | 498 sign_in_container_ = new views::View(); |
| 479 sign_in_container_->SetLayoutManager( | 499 sign_in_container_->SetLayoutManager( |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 if (show_checkbox && !use_billing_for_shipping_->visible()) | 727 if (show_checkbox && !use_billing_for_shipping_->visible()) |
| 708 use_billing_for_shipping_->SetChecked(false); | 728 use_billing_for_shipping_->SetChecked(false); |
| 709 | 729 |
| 710 use_billing_for_shipping_->SetVisible(show_checkbox); | 730 use_billing_for_shipping_->SetVisible(show_checkbox); |
| 711 group.manual_input->SetVisible( | 731 group.manual_input->SetVisible( |
| 712 show_checkbox && !use_billing_for_shipping_->checked()); | 732 show_checkbox && !use_billing_for_shipping_->checked()); |
| 713 } else { | 733 } else { |
| 714 group.manual_input->SetVisible(!show_suggestions); | 734 group.manual_input->SetVisible(!show_suggestions); |
| 715 } | 735 } |
| 716 | 736 |
| 737 // Show or hide the "Save in chrome" checkbox. If nothing is in editing mode, |
| 738 // hide. |
| 739 save_in_chrome_checkbox_->SetVisible(AtLeastOneSectionIsEditing()); |
| 740 |
| 717 if (group.container) | 741 if (group.container) |
| 718 group.container->SetForwardMouseEvents(show_suggestions); | 742 group.container->SetForwardMouseEvents(show_suggestions); |
| 719 | 743 |
| 720 if (GetWidget()) | 744 if (GetWidget()) |
| 721 GetWidget()->SetSize(GetWidget()->non_client_view()->GetPreferredSize()); | 745 GetWidget()->SetSize(GetWidget()->non_client_view()->GetPreferredSize()); |
| 722 } | 746 } |
| 723 | 747 |
| 748 bool AutofillDialogViews::AtLeastOneSectionIsEditing() { |
| 749 for (DetailGroupMap::iterator iter = detail_groups_.begin(); |
| 750 iter != detail_groups_.end(); ++iter) { |
| 751 if (iter->second.manual_input && iter->second.manual_input->visible()) |
| 752 return true; |
| 753 } |
| 754 |
| 755 return false; |
| 756 } |
| 757 |
| 724 bool AutofillDialogViews::ValidateForm() { | 758 bool AutofillDialogViews::ValidateForm() { |
| 725 bool all_valid = true; | 759 bool all_valid = true; |
| 726 for (DetailGroupMap::iterator iter = detail_groups_.begin(); | 760 for (DetailGroupMap::iterator iter = detail_groups_.begin(); |
| 727 iter != detail_groups_.end(); ++iter) { | 761 iter != detail_groups_.end(); ++iter) { |
| 728 DetailsGroup* group = &iter->second; | 762 DetailsGroup* group = &iter->second; |
| 729 if (group->manual_input->visible()) { | 763 if (group->manual_input->visible()) { |
| 730 for (TextfieldMap::iterator iter = group->textfields.begin(); | 764 for (TextfieldMap::iterator iter = group->textfields.begin(); |
| 731 iter != group->textfields.end(); ++iter) { | 765 iter != group->textfields.end(); ++iter) { |
| 732 if (!controller_->InputIsValid(iter->first, | 766 if (!controller_->InputIsValid(iter->first, |
| 733 iter->second->textfield()->text())) { | 767 iter->second->textfield()->text())) { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 AutofillDialogViews::DetailsGroup::DetailsGroup(DialogSection section) | 820 AutofillDialogViews::DetailsGroup::DetailsGroup(DialogSection section) |
| 787 : section(section), | 821 : section(section), |
| 788 container(NULL), | 822 container(NULL), |
| 789 manual_input(NULL), | 823 manual_input(NULL), |
| 790 suggested_info(NULL), | 824 suggested_info(NULL), |
| 791 suggested_button(NULL) {} | 825 suggested_button(NULL) {} |
| 792 | 826 |
| 793 AutofillDialogViews::DetailsGroup::~DetailsGroup() {} | 827 AutofillDialogViews::DetailsGroup::~DetailsGroup() {} |
| 794 | 828 |
| 795 } // namespace autofill | 829 } // namespace autofill |
| OLD | NEW |