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

Unified Diff: chrome/browser/ui/views/payments/profile_list_view_controller.cc

Issue 2709093006: Adding new shipping address editor view to payment flow. (Closed)
Patch Set: Bot failure fix 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/payments/profile_list_view_controller.cc
diff --git a/chrome/browser/ui/views/payments/profile_list_view_controller.cc b/chrome/browser/ui/views/payments/profile_list_view_controller.cc
index 025571e4873dc24bc9858761cfeeb363896468f0..d328f2e79672b50eaa3a8d4f1cc8b40fe65e05d4 100644
--- a/chrome/browser/ui/views/payments/profile_list_view_controller.cc
+++ b/chrome/browser/ui/views/payments/profile_list_view_controller.cc
@@ -5,17 +5,34 @@
#include "chrome/browser/ui/views/payments/profile_list_view_controller.h"
#include "chrome/browser/ui/views/payments/payment_request_dialog_view.h"
+#include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h"
#include "chrome/browser/ui/views/payments/payment_request_row_view.h"
#include "chrome/browser/ui/views/payments/payment_request_views_util.h"
+#include "chrome/grit/generated_resources.h"
#include "components/payments/content/payment_request_spec.h"
#include "components/payments/content/payment_request_state.h"
#include "components/strings/grit/components_strings.h"
#include "ui/base/l10n/l10n_util.h"
+#include "ui/views/controls/button/label_button.h"
+#include "ui/views/controls/button/md_text_button.h"
+#include "ui/views/controls/image_view.h"
+#include "ui/views/layout/box_layout.h"
+#include "ui/views/layout/grid_layout.h"
namespace payments {
namespace {
+constexpr int kFirstTagValue = static_cast<int>(
+ payments::PaymentRequestCommonTags::PAYMENT_REQUEST_COMMON_TAG_MAX);
+
+enum class PaymentMethodViewControllerTags : int {
+ // The tag for the button that triggers the "add address" flow. Starts at
+ // |kFirstTagValue| not to conflict with tags common to all views.
+ ADD_SHIPPING_ADDRESS_BUTTON = kFirstTagValue,
+ ADD_CONTACT_BUTTON,
+};
+
class ProfileItem : public PaymentRequestItemList::Item {
public:
// Constructs an object owned by |parent_list|, representing one element in
@@ -105,6 +122,23 @@ class ShippingProfileViewController : public ProfileListViewController {
return GetShippingAddressSectionString(spec()->options().shipping_type);
}
+ int GetSecondaryButtonTextId() override {
+ return IDS_AUTOFILL_ADD_ADDRESS_CAPTION;
+ }
+
+ int GetSecondaryButtonTag() override {
+ return static_cast<int>(
+ PaymentMethodViewControllerTags::ADD_SHIPPING_ADDRESS_BUTTON);
+ }
+
+ int GetSecondaryButtonViewId() override {
+ return static_cast<int>(DialogViewID::PAYMENT_METHOD_ADD_SHIPPING_BUTTON);
+ }
+
+ void OnSecondaryButtonPressed() override {
+ dialog()->ShowShippingAddressEditor();
+ }
+
private:
DISALLOW_COPY_AND_ASSIGN(ShippingProfileViewController);
};
@@ -144,6 +178,23 @@ class ContactProfileViewController : public ProfileListViewController {
IDS_PAYMENT_REQUEST_CONTACT_INFO_SECTION_NAME);
}
+ int GetSecondaryButtonTextId() override {
+ return IDS_AUTOFILL_ADD_CONTACT_CAPTION;
+ }
+
+ int GetSecondaryButtonTag() override {
+ return static_cast<int>(
+ PaymentMethodViewControllerTags::ADD_CONTACT_BUTTON);
+ }
+
+ int GetSecondaryButtonViewId() override {
+ return static_cast<int>(DialogViewID::PAYMENT_METHOD_ADD_CONTACT_BUTTON);
+ }
+
+ void OnSecondaryButtonPressed() override {
+ // TODO(crbug.com/704263): Add Contact Editor.
+ }
+
private:
DISALLOW_COPY_AND_ASSIGN(ContactProfileViewController);
};
@@ -193,4 +244,28 @@ std::unique_ptr<views::View> ProfileListViewController::CreateView() {
list_.CreateListView());
}
+std::unique_ptr<views::View>
+ProfileListViewController::CreateExtraFooterView() {
+ std::unique_ptr<views::View> extra_view = base::MakeUnique<views::View>();
+
+ extra_view->SetLayoutManager(new views::BoxLayout(
+ views::BoxLayout::kHorizontal, 0, 0, kPaymentRequestButtonSpacing));
+
+ views::LabelButton* button = views::MdTextButton::CreateSecondaryUiButton(
+ this, l10n_util::GetStringUTF16(GetSecondaryButtonTextId()));
+ button->set_tag(GetSecondaryButtonTag());
+ button->set_id(GetSecondaryButtonViewId());
+ extra_view->AddChildView(button);
+
+ return extra_view;
+}
+
+void ProfileListViewController::ButtonPressed(views::Button* sender,
+ const ui::Event& event) {
+ if (sender->tag() == GetSecondaryButtonTag())
+ OnSecondaryButtonPressed();
+ else
+ PaymentRequestSheetController::ButtonPressed(sender, event);
+}
+
} // namespace payments

Powered by Google App Engine
This is Rietveld 408576698