OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/ui/views/payments/shipping_list_view_controller.h" | |
6 | |
7 #include <memory> | |
8 #include <utility> | |
9 | |
10 #include "chrome/browser/ui/views/payments/payment_request_dialog_view.h" | |
11 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" | |
12 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" | |
13 #include "components/payments/content/payment_request.h" | |
14 #include "components/strings/grit/components_strings.h" | |
15 #include "ui/base/l10n/l10n_util.h" | |
16 #include "ui/views/controls/image_view.h" | |
17 #include "ui/views/layout/box_layout.h" | |
18 #include "ui/views/layout/grid_layout.h" | |
19 | |
20 namespace payments { | |
21 | |
22 class ShippingListItem : public payments::PaymentRequestItemList::Item, | |
23 public views::ButtonListener { | |
24 public: | |
25 ShippingListItem(autofill::AutofillProfile* profile, | |
26 PaymentRequest* request, | |
27 PaymentRequestItemList* list, | |
28 bool selected) | |
29 : payments::PaymentRequestItemList::Item(request, list, selected), | |
30 profile_(profile) {} | |
31 ~ShippingListItem() override {} | |
32 | |
33 private: | |
34 // payments::PaymentRequestItemList::Item: | |
35 std::unique_ptr<views::View> CreateItemView() override { | |
36 DCHECK(profile_); | |
37 | |
38 // TODO(tmartino): Pass an actual locale in place of empty string. | |
39 std::unique_ptr<views::View> content = GetShippingAddressLabel( | |
40 AddressStyleType::DETAILED, std::string(), *profile_); | |
41 | |
42 std::unique_ptr<PaymentRequestRowView> row = | |
43 base::MakeUnique<PaymentRequestRowView>(this); | |
44 views::GridLayout* layout = new views::GridLayout(row.get()); | |
45 row->SetLayoutManager(layout); | |
46 | |
47 layout->SetInsets( | |
48 kPaymentRequestRowVerticalInsets, kPaymentRequestRowHorizontalInsets, | |
49 kPaymentRequestRowVerticalInsets, | |
50 kPaymentRequestRowHorizontalInsets + kPaymentRequestRowExtraRightInset); | |
51 | |
52 // Add a column listing the address. | |
53 views::ColumnSet* columns = layout->AddColumnSet(0); | |
54 columns->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, | |
55 views::GridLayout::USE_PREF, 0, 0); | |
56 | |
57 columns->AddPaddingColumn(1, 0); | |
58 | |
59 // Add a column for the checkmark shown next to the selected address. | |
60 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, | |
61 0, views::GridLayout::USE_PREF, 0, 0); | |
62 | |
63 layout->StartRow(0, 0); | |
64 content->set_can_process_events_within_subtree(false); | |
65 layout->AddView(content.release()); | |
66 | |
67 checkmark_ = CreateCheckmark(selected()); | |
68 layout->AddView(checkmark_.get()); | |
69 | |
70 return std::move(row); | |
71 } | |
72 | |
73 void SelectedStateChanged() override {} | |
74 | |
75 // views::ButtonListener: | |
76 void ButtonPressed(views::Button* sender, const ui::Event& event) override {} | |
77 | |
78 autofill::AutofillProfile* profile_; | |
79 std::unique_ptr<views::ImageView> checkmark_; | |
80 }; | |
81 | |
82 ShippingListViewController::ShippingListViewController( | |
83 PaymentRequest* request, | |
84 PaymentRequestDialogView* dialog) | |
85 : PaymentRequestSheetController(request, dialog) { | |
86 auto* selected_profile = request->selected_shipping_profile(); | |
87 | |
88 for (auto* profile : request->shipping_profiles()) { | |
89 list_.AddItem(base::MakeUnique<ShippingListItem>( | |
90 profile, request, &list_, profile == selected_profile)); | |
91 } | |
92 } | |
93 | |
94 ShippingListViewController::~ShippingListViewController() {} | |
95 | |
96 std::unique_ptr<views::View> ShippingListViewController::CreateView() { | |
97 return CreatePaymentView( | |
98 CreateSheetHeaderView( | |
99 /* show_back_arrow = */ true, | |
100 l10n_util::GetStringUTF16(IDS_PAYMENT_REQUEST_SHIPPING_SECTION_NAME), | |
101 this), | |
102 list_.CreateListView()); | |
103 } | |
104 | |
105 } // namespace payments | |
OLD | NEW |