Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(516)

Side by Side Diff: chrome/browser/ui/views/payments/shipping_list_view_controller.cc

Issue 2735803003: [WebPayments] Extracting common code from Shipping + Contact Info views. (Closed)
Patch Set: monday rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/payments/shipping_list_view_controller.h ('k') | components/payments/content/payment_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698