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

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

Issue 2755493005: [Web Payments] Consolidate list code. (Closed)
Patch Set: Fix test compile. 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/payment_request_item_list.cc
diff --git a/chrome/browser/ui/views/payments/payment_request_item_list.cc b/chrome/browser/ui/views/payments/payment_request_item_list.cc
index be276570ad0ccfff6253d9e879d3ba364f7ec898..b85a64b9c00d7526323c2d128488dc154cb08294 100644
--- a/chrome/browser/ui/views/payments/payment_request_item_list.cc
+++ b/chrome/browser/ui/views/payments/payment_request_item_list.cc
@@ -5,10 +5,13 @@
#include "chrome/browser/ui/views/payments/payment_request_item_list.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 "components/payments/content/payment_request_state.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/layout/box_layout.h"
+#include "ui/views/layout/grid_layout.h"
#include "ui/views/vector_icons.h"
#include "ui/views/view.h"
@@ -39,6 +42,12 @@ views::View* PaymentRequestItemList::Item::GetItemView() {
void PaymentRequestItemList::Item::SetSelected(bool selected) {
selected_ = selected;
+
+ // This could be called before CreateItemView, so before |checkmark_| is
+ // instantiated.
+ if (checkmark_)
+ checkmark_->SetVisible(selected_);
+
SelectedStateChanged();
}
@@ -55,6 +64,61 @@ std::unique_ptr<views::ImageView> PaymentRequestItemList::Item::CreateCheckmark(
return checkmark;
}
+std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateExtraView() {
+ return nullptr;
+}
+
+std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateItemView() {
+ std::unique_ptr<views::View> content = CreateContentView();
+
+ std::unique_ptr<PaymentRequestRowView> row =
+ base::MakeUnique<PaymentRequestRowView>(this);
+ views::GridLayout* layout = new views::GridLayout(row.get());
+ row->SetLayoutManager(layout);
+
+ layout->SetInsets(
+ kPaymentRequestRowVerticalInsets, kPaymentRequestRowHorizontalInsets,
+ kPaymentRequestRowVerticalInsets,
+ kPaymentRequestRowHorizontalInsets + kPaymentRequestRowExtraRightInset);
+
+ // Add a column for the item's content view.
+ views::ColumnSet* columns = layout->AddColumnSet(0);
+ columns->AddColumn(views::GridLayout::FILL, views::GridLayout::LEADING, 1,
+ views::GridLayout::USE_PREF, 0, 0);
+
+ columns->AddPaddingColumn(1, 0);
+
+ // Add a column for the checkmark shown next to the selected profile.
+ columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
+ views::GridLayout::USE_PREF, 0, 0);
+
+ // Add a column for the extra_view, which comes after the checkmark.
+ columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
+ views::GridLayout::USE_PREF, 0, 0);
+
+ layout->StartRow(0, 0);
+ content->set_can_process_events_within_subtree(false);
+ layout->AddView(content.release());
+
+ checkmark_ = CreateCheckmark(selected());
+ layout->AddView(checkmark_.get());
+
+ std::unique_ptr<views::View> extra_view = CreateExtraView();
+ if (extra_view)
+ layout->AddView(extra_view.release());
+
+ return std::move(row);
+}
+
+void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender,
+ const ui::Event& event) {
+ if (CanBeSelected()) {
+ list()->SelectItem(this);
+ } else {
+ PerformSelectionFallback();
+ }
+}
+
PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {}
PaymentRequestItemList::~PaymentRequestItemList() {}

Powered by Google App Engine
This is Rietveld 408576698