Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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/payments/profile_list_view_controller.h" | 5 #include "chrome/browser/ui/views/payments/profile_list_view_controller.h" |
| 6 | 6 |
| 7 #include "chrome/browser/ui/views/payments/payment_request_dialog_view.h" | |
| 8 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" | |
| 7 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" | 9 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" |
| 8 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" | 10 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" |
| 11 #include "chrome/grit/generated_resources.h" | |
| 9 #include "components/payments/content/payment_request_spec.h" | 12 #include "components/payments/content/payment_request_spec.h" |
| 10 #include "components/payments/content/payment_request_state.h" | 13 #include "components/payments/content/payment_request_state.h" |
| 11 #include "components/strings/grit/components_strings.h" | 14 #include "components/strings/grit/components_strings.h" |
| 12 #include "ui/base/l10n/l10n_util.h" | 15 #include "ui/base/l10n/l10n_util.h" |
| 16 #include "ui/views/controls/button/label_button.h" | |
| 17 #include "ui/views/controls/button/md_text_button.h" | |
| 18 #include "ui/views/controls/image_view.h" | |
| 19 #include "ui/views/layout/box_layout.h" | |
| 20 #include "ui/views/layout/grid_layout.h" | |
| 13 | 21 |
| 14 namespace payments { | 22 namespace payments { |
| 15 | 23 |
| 16 namespace { | 24 namespace { |
| 17 | 25 |
| 26 constexpr int kFirstTagValue = static_cast<int>( | |
| 27 payments::PaymentRequestCommonTags::PAYMENT_REQUEST_COMMON_TAG_MAX); | |
| 28 | |
| 29 enum class PaymentMethodViewControllerTags : int { | |
| 30 // The tag for the button that triggers the "add address" flow. Starts at | |
| 31 // |kFirstTagValue| not to conflict with tags common to all views. | |
| 32 ADD_SHIPPING_ADDRESS_BUTTON = kFirstTagValue, | |
| 33 }; | |
| 34 | |
| 18 class ProfileItem : public PaymentRequestItemList::Item { | 35 class ProfileItem : public PaymentRequestItemList::Item { |
| 19 public: | 36 public: |
| 20 // Constructs an object owned by |parent_list|, representing one element in | 37 // Constructs an object owned by |parent_list|, representing one element in |
| 21 // the list. |spec| and |state| are the PaymentRequestSpec/State objects that | 38 // the list. |spec| and |state| are the PaymentRequestSpec/State objects that |
| 22 // are represented by the current instance of the dialog. |parent_view| points | 39 // are represented by the current instance of the dialog. |parent_view| points |
| 23 // to the controller which owns |parent_list|. |profile| is the | 40 // to the controller which owns |parent_list|. |profile| is the |
| 24 // AutofillProfile that this specific list item represents. It's a cached | 41 // AutofillProfile that this specific list item represents. It's a cached |
| 25 // profile owned by |state|. | 42 // profile owned by |state|. |
| 26 ProfileItem(autofill::AutofillProfile* profile, | 43 ProfileItem(autofill::AutofillProfile* profile, |
| 27 PaymentRequestSpec* spec, | 44 PaymentRequestSpec* spec, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 82 | 99 |
| 83 std::vector<autofill::AutofillProfile*> GetProfiles() override { | 100 std::vector<autofill::AutofillProfile*> GetProfiles() override { |
| 84 return state()->shipping_profiles(); | 101 return state()->shipping_profiles(); |
| 85 } | 102 } |
| 86 | 103 |
| 87 base::string16 GetHeaderString() override { | 104 base::string16 GetHeaderString() override { |
| 88 return GetShippingAddressSectionString(spec()->options().shipping_type); | 105 return GetShippingAddressSectionString(spec()->options().shipping_type); |
| 89 } | 106 } |
| 90 | 107 |
| 91 private: | 108 private: |
| 109 // PaymentRequestSheetController: | |
| 110 std::unique_ptr<views::View> CreateExtraFooterView() override { | |
|
anthonyvd
2017/03/21 21:18:24
This code could probably be in the base ProfileLis
MAD
2017/03/22 20:15:42
Done.
| |
| 111 std::unique_ptr<views::View> extra_view = base::MakeUnique<views::View>(); | |
| 112 | |
| 113 extra_view->SetLayoutManager(new views::BoxLayout( | |
| 114 views::BoxLayout::kHorizontal, 0, 0, kPaymentRequestButtonSpacing)); | |
| 115 | |
| 116 views::LabelButton* button = views::MdTextButton::CreateSecondaryUiButton( | |
| 117 this, l10n_util::GetStringUTF16(IDS_AUTOFILL_ADD_ADDRESS_CAPTION)); | |
| 118 button->set_tag(static_cast<int>( | |
| 119 PaymentMethodViewControllerTags::ADD_SHIPPING_ADDRESS_BUTTON)); | |
| 120 button->set_id( | |
| 121 static_cast<int>(DialogViewID::PAYMENT_METHOD_ADD_CARD_BUTTON)); | |
| 122 extra_view->AddChildView(button); | |
| 123 | |
| 124 return extra_view; | |
| 125 } | |
| 126 | |
| 127 void ButtonPressed(views::Button* sender, const ui::Event& event) override { | |
| 128 switch (sender->tag()) { | |
| 129 case static_cast<int>( | |
| 130 PaymentMethodViewControllerTags::ADD_SHIPPING_ADDRESS_BUTTON): | |
| 131 dialog()->ShowShippingAddressEditor(); | |
| 132 break; | |
| 133 default: | |
| 134 PaymentRequestSheetController::ButtonPressed(sender, event); | |
| 135 break; | |
| 136 } | |
| 137 } | |
| 138 | |
| 92 DISALLOW_COPY_AND_ASSIGN(ShippingProfileViewController); | 139 DISALLOW_COPY_AND_ASSIGN(ShippingProfileViewController); |
| 93 }; | 140 }; |
| 94 | 141 |
| 95 class ContactProfileViewController : public ProfileListViewController { | 142 class ContactProfileViewController : public ProfileListViewController { |
| 96 public: | 143 public: |
| 97 ContactProfileViewController(PaymentRequestSpec* spec, | 144 ContactProfileViewController(PaymentRequestSpec* spec, |
| 98 PaymentRequestState* state, | 145 PaymentRequestState* state, |
| 99 PaymentRequestDialogView* dialog) | 146 PaymentRequestDialogView* dialog) |
| 100 : ProfileListViewController(spec, state, dialog) {} | 147 : ProfileListViewController(spec, state, dialog) {} |
| 101 ~ContactProfileViewController() override {} | 148 ~ContactProfileViewController() override {} |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 profile, spec(), state(), &list_, this, profile == selected_profile)); | 209 profile, spec(), state(), &list_, this, profile == selected_profile)); |
| 163 } | 210 } |
| 164 | 211 |
| 165 return CreatePaymentView( | 212 return CreatePaymentView( |
| 166 CreateSheetHeaderView( | 213 CreateSheetHeaderView( |
| 167 /* show_back_arrow = */ true, GetHeaderString(), this), | 214 /* show_back_arrow = */ true, GetHeaderString(), this), |
| 168 list_.CreateListView()); | 215 list_.CreateListView()); |
| 169 } | 216 } |
| 170 | 217 |
| 171 } // namespace payments | 218 } // namespace payments |
| OLD | NEW |