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/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
325 icon_->SetImage(image.AsImageSkia()); | 325 icon_->SetImage(image.AsImageSkia()); |
326 } | 326 } |
327 | 327 |
328 void AutofillDialogViews::SuggestionView::ShowTextfield( | 328 void AutofillDialogViews::SuggestionView::ShowTextfield( |
329 const string16& placeholder_text) { | 329 const string16& placeholder_text) { |
330 decorated_->textfield()->set_placeholder_text(placeholder_text); | 330 decorated_->textfield()->set_placeholder_text(placeholder_text); |
331 decorated_->SetVisible(true); | 331 decorated_->SetVisible(true); |
332 } | 332 } |
333 | 333 |
334 // AutofilDialogViews::AutocheckoutProgressBar --------------------------------- | 334 // AutofilDialogViews::AutocheckoutProgressBar --------------------------------- |
335 | |
335 AutofillDialogViews::AutocheckoutProgressBar::AutocheckoutProgressBar() {} | 336 AutofillDialogViews::AutocheckoutProgressBar::AutocheckoutProgressBar() {} |
336 | 337 |
337 gfx::Size AutofillDialogViews::AutocheckoutProgressBar::GetPreferredSize() { | 338 gfx::Size AutofillDialogViews::AutocheckoutProgressBar::GetPreferredSize() { |
338 return gfx::Size(kAutocheckoutProgressBarWidth, | 339 return gfx::Size(kAutocheckoutProgressBarWidth, |
339 kAutocheckoutProgressBarHeight); | 340 kAutocheckoutProgressBarHeight); |
340 } | 341 } |
341 | 342 |
342 // AutofillDialogView ---------------------------------------------------------- | 343 // AutofillDialogView ---------------------------------------------------------- |
343 | 344 |
344 // static | 345 // static |
(...skipping 13 matching lines...) Expand all Loading... | |
358 use_billing_for_shipping_(NULL), | 359 use_billing_for_shipping_(NULL), |
359 sign_in_link_(NULL), | 360 sign_in_link_(NULL), |
360 sign_in_container_(NULL), | 361 sign_in_container_(NULL), |
361 cancel_sign_in_(NULL), | 362 cancel_sign_in_(NULL), |
362 sign_in_webview_(NULL), | 363 sign_in_webview_(NULL), |
363 main_container_(NULL), | 364 main_container_(NULL), |
364 button_strip_extra_view_(NULL), | 365 button_strip_extra_view_(NULL), |
365 save_in_chrome_checkbox_(NULL), | 366 save_in_chrome_checkbox_(NULL), |
366 autocheckout_progress_bar_view_(NULL), | 367 autocheckout_progress_bar_view_(NULL), |
367 autocheckout_progress_bar_(NULL), | 368 autocheckout_progress_bar_(NULL), |
369 footnote_view_(NULL), | |
370 terms_of_service_link_(NULL), | |
371 privacy_policy_link_(NULL), | |
368 focus_manager_(NULL) { | 372 focus_manager_(NULL) { |
369 DCHECK(controller); | 373 DCHECK(controller); |
370 detail_groups_.insert(std::make_pair(SECTION_EMAIL, | 374 detail_groups_.insert(std::make_pair(SECTION_EMAIL, |
371 DetailsGroup(SECTION_EMAIL))); | 375 DetailsGroup(SECTION_EMAIL))); |
372 detail_groups_.insert(std::make_pair(SECTION_CC, | 376 detail_groups_.insert(std::make_pair(SECTION_CC, |
373 DetailsGroup(SECTION_CC))); | 377 DetailsGroup(SECTION_CC))); |
374 detail_groups_.insert(std::make_pair(SECTION_BILLING, | 378 detail_groups_.insert(std::make_pair(SECTION_BILLING, |
375 DetailsGroup(SECTION_BILLING))); | 379 DetailsGroup(SECTION_BILLING))); |
376 detail_groups_.insert(std::make_pair(SECTION_SHIPPING, | 380 detail_groups_.insert(std::make_pair(SECTION_SHIPPING, |
377 DetailsGroup(SECTION_SHIPPING))); | 381 DetailsGroup(SECTION_SHIPPING))); |
378 } | 382 } |
379 | 383 |
380 AutofillDialogViews::~AutofillDialogViews() { | 384 AutofillDialogViews::~AutofillDialogViews() { |
381 DCHECK(!window_); | 385 DCHECK(!window_); |
382 } | 386 } |
383 | 387 |
384 void AutofillDialogViews::Show() { | 388 void AutofillDialogViews::Show() { |
385 InitChildViews(); | 389 InitChildViews(); |
386 UpdateAccountChooser(); | 390 UpdateAccountChooser(); |
387 UpdateNotificationArea(); | 391 UpdateNotificationArea(); |
392 UpdateFootnote(); | |
388 | 393 |
389 // Ownership of |contents_| is handed off by this call. The | 394 // Ownership of |contents_| is handed off by this call. The |
390 // WebContentsModalDialog will take care of deleting itself after calling | 395 // WebContentsModalDialog will take care of deleting itself after calling |
391 // DeleteDelegate(). | 396 // DeleteDelegate(). |
392 window_ = ConstrainedWindowViews::Create(controller_->web_contents(), this); | 397 window_ = ConstrainedWindowViews::Create(controller_->web_contents(), this); |
393 focus_manager_ = window_->GetFocusManager(); | 398 focus_manager_ = window_->GetFocusManager(); |
394 focus_manager_->AddFocusChangeListener(this); | 399 focus_manager_->AddFocusChangeListener(this); |
395 } | 400 } |
396 | 401 |
397 void AutofillDialogViews::Hide() { | 402 void AutofillDialogViews::Hide() { |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
472 | 477 |
473 void AutofillDialogViews::HideSignIn() { | 478 void AutofillDialogViews::HideSignIn() { |
474 sign_in_container_->SetVisible(false); | 479 sign_in_container_->SetVisible(false); |
475 main_container_->SetVisible(true); | 480 main_container_->SetVisible(true); |
476 } | 481 } |
477 | 482 |
478 void AutofillDialogViews::UpdateProgressBar(double value) { | 483 void AutofillDialogViews::UpdateProgressBar(double value) { |
479 autocheckout_progress_bar_->SetValue(value); | 484 autocheckout_progress_bar_->SetValue(value); |
480 } | 485 } |
481 | 486 |
487 void AutofillDialogViews::UpdateFootnote() { | |
488 footnote_view_->SetVisible(controller_->IsFootnoteShowing()); | |
489 footnote_view_->SetSize( | |
Evan Stade
2013/02/08 15:38:53
You shouldn't have to explicitly set the size.
Dan Beam
2013/02/08 20:53:06
I did when I wanted to make this wrap, otherwise i
| |
490 gfx::Size(contents_->width(), footnote_view_->height())); | |
491 | |
492 if (GetWidget()) | |
493 GetWidget()->SetSize(GetWidget()->non_client_view()->GetPreferredSize()); | |
494 | |
495 contents_->Layout(); | |
496 } | |
497 | |
482 string16 AutofillDialogViews::GetWindowTitle() const { | 498 string16 AutofillDialogViews::GetWindowTitle() const { |
483 return controller_->DialogTitle(); | 499 return controller_->DialogTitle(); |
484 } | 500 } |
485 | 501 |
486 void AutofillDialogViews::WindowClosing() { | 502 void AutofillDialogViews::WindowClosing() { |
487 focus_manager_->RemoveFocusChangeListener(this); | 503 focus_manager_->RemoveFocusChangeListener(this); |
488 } | 504 } |
489 | 505 |
490 void AutofillDialogViews::DeleteDelegate() { | 506 void AutofillDialogViews::DeleteDelegate() { |
491 window_ = NULL; | 507 window_ = NULL; |
(...skipping 21 matching lines...) Expand all Loading... | |
513 | 529 |
514 bool AutofillDialogViews::IsDialogButtonEnabled(ui::DialogButton button) const { | 530 bool AutofillDialogViews::IsDialogButtonEnabled(ui::DialogButton button) const { |
515 return true; | 531 return true; |
516 } | 532 } |
517 | 533 |
518 views::View* AutofillDialogViews::GetExtraView() { | 534 views::View* AutofillDialogViews::GetExtraView() { |
519 return button_strip_extra_view_; | 535 return button_strip_extra_view_; |
520 } | 536 } |
521 | 537 |
522 views::View* AutofillDialogViews::GetFootnoteView() { | 538 views::View* AutofillDialogViews::GetFootnoteView() { |
523 // TODO(estade): add a view to contain the terms of service. | 539 return footnote_view_; |
524 return NULL; | |
525 } | 540 } |
526 | 541 |
527 bool AutofillDialogViews::Cancel() { | 542 bool AutofillDialogViews::Cancel() { |
528 return true; | 543 return true; |
529 } | 544 } |
530 | 545 |
531 bool AutofillDialogViews::Accept() { | 546 bool AutofillDialogViews::Accept() { |
532 if (!ValidateForm()) | 547 if (!ValidateForm()) |
533 return false; | 548 return false; |
534 | 549 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
595 views::View* focused_before, | 610 views::View* focused_before, |
596 views::View* focused_now) { | 611 views::View* focused_now) { |
597 controller_->FocusMoved(); | 612 controller_->FocusMoved(); |
598 } | 613 } |
599 | 614 |
600 void AutofillDialogViews::OnDidChangeFocus( | 615 void AutofillDialogViews::OnDidChangeFocus( |
601 views::View* focused_before, | 616 views::View* focused_before, |
602 views::View* focused_now) {} | 617 views::View* focused_now) {} |
603 | 618 |
604 void AutofillDialogViews::LinkClicked(views::Link* source, int event_flags) { | 619 void AutofillDialogViews::LinkClicked(views::Link* source, int event_flags) { |
605 // Sign in link. | |
606 if (source == sign_in_link_) { | 620 if (source == sign_in_link_) { |
607 controller_->StartSignInFlow(); | 621 controller_->StartSignInFlow(); |
608 return; | 622 } else if (source == terms_of_service_link_) { |
609 } | 623 controller_->ShowTermsOfService(); |
610 | 624 } else if (source == privacy_policy_link_) { |
611 // Edit links. | 625 controller_->ShowPrivacyPolicy(); |
612 for (DetailGroupMap::iterator iter = detail_groups_.begin(); | 626 } else { |
613 iter != detail_groups_.end(); ++iter) { | 627 // Edit links. |
614 if (iter->second.suggested_info->Contains(source)) { | 628 for (DetailGroupMap::iterator iter = detail_groups_.begin(); |
615 controller_->EditClickedForSection(iter->first); | 629 iter != detail_groups_.end(); ++iter) { |
616 return; | 630 if (iter->second.suggested_info->Contains(source)) { |
631 controller_->EditClickedForSection(iter->first); | |
632 return; | |
633 } | |
617 } | 634 } |
618 } | 635 } |
619 } | 636 } |
620 | 637 |
621 void AutofillDialogViews::InitChildViews() { | 638 void AutofillDialogViews::InitChildViews() { |
622 button_strip_extra_view_ = new views::View(); | 639 button_strip_extra_view_ = new views::View(); |
623 button_strip_extra_view_->SetLayoutManager( | 640 button_strip_extra_view_->SetLayoutManager( |
624 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); | 641 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); |
625 | 642 |
626 save_in_chrome_checkbox_ = | 643 save_in_chrome_checkbox_ = |
(...skipping 13 matching lines...) Expand all Loading... | |
640 autocheckout_progress_bar_ = new AutocheckoutProgressBar(); | 657 autocheckout_progress_bar_ = new AutocheckoutProgressBar(); |
641 autocheckout_progress_bar_view_->AddChildView(autocheckout_progress_bar_); | 658 autocheckout_progress_bar_view_->AddChildView(autocheckout_progress_bar_); |
642 | 659 |
643 button_strip_extra_view_->AddChildView(autocheckout_progress_bar_view_); | 660 button_strip_extra_view_->AddChildView(autocheckout_progress_bar_view_); |
644 | 661 |
645 contents_ = new views::View(); | 662 contents_ = new views::View(); |
646 contents_->SetLayoutManager( | 663 contents_->SetLayoutManager( |
647 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); | 664 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); |
648 contents_->AddChildView(CreateMainContainer()); | 665 contents_->AddChildView(CreateMainContainer()); |
649 contents_->AddChildView(CreateSignInContainer()); | 666 contents_->AddChildView(CreateSignInContainer()); |
667 | |
668 footnote_view_ = new views::View(); | |
Evan Stade
2013/02/08 15:38:53
Can you pull this new code into a separate functio
Dan Beam
2013/02/08 20:53:06
Done.
| |
669 footnote_view_->set_border(views::Border::CreateEmptyBorder( | |
670 views::kUnrelatedControlVerticalSpacing, 0, 0, 0)); | |
671 | |
672 views::BoxLayout* box_layout = | |
673 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0); | |
674 box_layout->set_spread_blank_space(true); | |
675 footnote_view_->SetLayoutManager(box_layout); | |
676 | |
677 // TODO(dbeam): pull out hardcoded colors / theme? | |
678 views::View* footnote_padding = new views::View(); | |
679 footnote_padding->set_background(views::Background::CreateSolidBackground( | |
680 SkColorSetRGB(0xf3, 0xf3, 0xf4))); | |
681 footnote_padding->set_border(views::Border::CreateSolidSidedBorder( | |
682 1, 0, 0, 0, SkColorSetRGB(0xea, 0xea, 0xeb))); | |
683 | |
684 footnote_view_->AddChildView(footnote_padding); | |
685 | |
686 views::GridLayout* padding_layout = new views::GridLayout(footnote_padding); | |
687 footnote_padding->SetLayoutManager(padding_layout); | |
688 | |
689 const std::pair<std::vector<string16>, string16>& footnote_parts = | |
690 controller_->FootnoteTextParts(); | |
691 | |
692 const int links_column_set = 1; | |
693 views::ColumnSet* column_set = padding_layout->AddColumnSet(links_column_set); | |
694 | |
695 for (size_t i = 0; i < footnote_parts.first.size(); ++i) { | |
696 column_set->AddColumn(views::GridLayout::LEADING, | |
697 views::GridLayout::FILL, | |
698 1, | |
699 views::GridLayout::USE_PREF, | |
700 0, | |
701 0); | |
702 } | |
703 | |
704 column_set->AddColumn(views::GridLayout::FILL, | |
705 views::GridLayout::FILL, | |
706 1, | |
707 views::GridLayout::USE_PREF, | |
708 0, | |
709 0); | |
710 | |
711 // Padding between border and slew of labels/links. | |
712 padding_layout->StartRowWithPadding( | |
713 0, links_column_set, 0, views::kUnrelatedControlVerticalSpacing); | |
714 | |
715 // "" | |
716 padding_layout->AddView(new views::Label(footnote_parts.first[0])); | |
717 | |
718 // "Google Wallet Terms of Service" (link). | |
719 terms_of_service_link_ = new views::Link(footnote_parts.first[1]); | |
720 terms_of_service_link_->set_listener(this); | |
721 padding_layout->AddView(terms_of_service_link_); | |
722 | |
723 // " and ". | |
724 padding_layout->AddView(new views::Label(footnote_parts.first[2])); | |
725 | |
726 // "Privacy Policy" (link). | |
727 privacy_policy_link_ = new views::Link(footnote_parts.first[3]); | |
728 privacy_policy_link_->set_listener(this); | |
729 padding_layout->AddView(privacy_policy_link_); | |
730 | |
731 // " have been updated.". | |
732 padding_layout->AddView(new views::Label(footnote_parts.first[4])); | |
733 | |
734 // TODO(dbeam): make this padding column work. | |
Evan Stade
2013/02/08 15:38:53
Please fix this instead of leaving a todo
Dan Beam
2013/02/08 20:53:06
Done. (that sucked)
| |
735 padding_layout->SkipColumns(1); | |
736 | |
737 const int full_width = 2; | |
Evan Stade
2013/02/08 15:38:53
full_width_column_set
Dan Beam
2013/02/08 20:53:06
Done.
| |
738 padding_layout->AddColumnSet(full_width)->AddColumn( | |
739 views::GridLayout::FILL, | |
740 views::GridLayout::FILL, | |
741 1, | |
742 views::GridLayout::USE_PREF, | |
743 0, | |
744 0); | |
745 | |
746 // "By clicking submit you verify that you accept these changes.". | |
747 views::Label* accept_these_changes = new views::Label(footnote_parts.second); | |
748 accept_these_changes->SetHorizontalAlignment(gfx::ALIGN_LEFT); | |
749 | |
750 padding_layout->StartRowWithPadding( | |
751 0, full_width, 0, views::kRelatedControlVerticalSpacing); | |
752 padding_layout->AddView(accept_these_changes); | |
753 | |
754 padding_layout->StartRowWithPadding( | |
755 0, full_width, 0, views::kUnrelatedControlVerticalSpacing); | |
650 } | 756 } |
651 | 757 |
652 views::View* AutofillDialogViews::CreateSignInContainer() { | 758 views::View* AutofillDialogViews::CreateSignInContainer() { |
653 sign_in_container_ = new views::View(); | 759 sign_in_container_ = new views::View(); |
654 sign_in_container_->SetLayoutManager( | 760 sign_in_container_->SetLayoutManager( |
655 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0)); | 761 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0)); |
656 sign_in_container_->SetVisible(false); | 762 sign_in_container_->SetVisible(false); |
657 sign_in_webview_ = new views::WebView(controller_->profile()); | 763 sign_in_webview_ = new views::WebView(controller_->profile()); |
658 cancel_sign_in_ = new views::TextButton(this, | 764 cancel_sign_in_ = new views::TextButton(this, |
659 controller_->CancelSignInText()); | 765 controller_->CancelSignInText()); |
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
978 AutofillDialogViews::DetailsGroup::DetailsGroup(DialogSection section) | 1084 AutofillDialogViews::DetailsGroup::DetailsGroup(DialogSection section) |
979 : section(section), | 1085 : section(section), |
980 container(NULL), | 1086 container(NULL), |
981 manual_input(NULL), | 1087 manual_input(NULL), |
982 suggested_info(NULL), | 1088 suggested_info(NULL), |
983 suggested_button(NULL) {} | 1089 suggested_button(NULL) {} |
984 | 1090 |
985 AutofillDialogViews::DetailsGroup::~DetailsGroup() {} | 1091 AutofillDialogViews::DetailsGroup::~DetailsGroup() {} |
986 | 1092 |
987 } // namespace autofill | 1093 } // namespace autofill |
OLD | NEW |