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/payment_request_item_list.h" | 5 #include "chrome/browser/ui/views/payments/payment_request_item_list.h" |
| 6 | 6 |
| 7 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" | 7 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" |
| 8 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" | |
| 8 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" | 9 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" |
| 10 #include "components/payments/content/payment_request_state.h" | |
| 9 #include "ui/gfx/paint_vector_icon.h" | 11 #include "ui/gfx/paint_vector_icon.h" |
| 10 #include "ui/views/controls/image_view.h" | 12 #include "ui/views/controls/image_view.h" |
| 11 #include "ui/views/layout/box_layout.h" | 13 #include "ui/views/layout/box_layout.h" |
| 14 #include "ui/views/layout/grid_layout.h" | |
| 12 #include "ui/views/vector_icons.h" | 15 #include "ui/views/vector_icons.h" |
| 13 #include "ui/views/view.h" | 16 #include "ui/views/view.h" |
| 14 | 17 |
| 15 namespace payments { | 18 namespace payments { |
| 16 | 19 |
| 17 namespace { | 20 namespace { |
| 18 | 21 |
| 19 const SkColor kCheckmarkColor = 0xFF609265; | 22 const SkColor kCheckmarkColor = 0xFF609265; |
| 20 | 23 |
| 21 } // namespace | 24 } // namespace |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 32 if (!item_view_) { | 35 if (!item_view_) { |
| 33 item_view_ = CreateItemView(); | 36 item_view_ = CreateItemView(); |
| 34 item_view_->set_owned_by_client(); | 37 item_view_->set_owned_by_client(); |
| 35 } | 38 } |
| 36 | 39 |
| 37 return item_view_.get(); | 40 return item_view_.get(); |
| 38 } | 41 } |
| 39 | 42 |
| 40 void PaymentRequestItemList::Item::SetSelected(bool selected) { | 43 void PaymentRequestItemList::Item::SetSelected(bool selected) { |
| 41 selected_ = selected; | 44 selected_ = selected; |
| 45 | |
| 46 // This could be called before CreateItemView, so before |checkmark_| is | |
| 47 // instantiated. | |
| 48 if (checkmark_) | |
| 49 checkmark_->SetVisible(selected_); | |
| 50 | |
| 42 SelectedStateChanged(); | 51 SelectedStateChanged(); |
| 43 } | 52 } |
| 44 | 53 |
| 45 std::unique_ptr<views::ImageView> PaymentRequestItemList::Item::CreateCheckmark( | 54 std::unique_ptr<views::ImageView> PaymentRequestItemList::Item::CreateCheckmark( |
| 46 bool selected) { | 55 bool selected) { |
| 47 std::unique_ptr<views::ImageView> checkmark = | 56 std::unique_ptr<views::ImageView> checkmark = |
| 48 base::MakeUnique<views::ImageView>(); | 57 base::MakeUnique<views::ImageView>(); |
| 49 checkmark->set_id(static_cast<int>(DialogViewID::CHECKMARK_VIEW)); | 58 checkmark->set_id(static_cast<int>(DialogViewID::CHECKMARK_VIEW)); |
| 50 checkmark->set_can_process_events_within_subtree(false); | 59 checkmark->set_can_process_events_within_subtree(false); |
| 51 checkmark->set_owned_by_client(); | 60 checkmark->set_owned_by_client(); |
| 52 checkmark->SetImage( | 61 checkmark->SetImage( |
| 53 gfx::CreateVectorIcon(views::kMenuCheckIcon, kCheckmarkColor)); | 62 gfx::CreateVectorIcon(views::kMenuCheckIcon, kCheckmarkColor)); |
| 54 checkmark->SetVisible(selected); | 63 checkmark->SetVisible(selected); |
| 55 return checkmark; | 64 return checkmark; |
| 56 } | 65 } |
| 57 | 66 |
| 67 std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateExtraView() { | |
| 68 return nullptr; | |
| 69 } | |
| 70 | |
| 71 std::unique_ptr<views::View> PaymentRequestItemList::Item::CreateItemView() { | |
| 72 std::unique_ptr<views::View> content = CreateContentView(); | |
| 73 | |
| 74 std::unique_ptr<PaymentRequestRowView> row = | |
| 75 base::MakeUnique<PaymentRequestRowView>(this); | |
| 76 views::GridLayout* layout = new views::GridLayout(row.get()); | |
| 77 row->SetLayoutManager(layout); | |
| 78 | |
| 79 layout->SetInsets( | |
| 80 kPaymentRequestRowVerticalInsets, kPaymentRequestRowHorizontalInsets, | |
| 81 kPaymentRequestRowVerticalInsets, | |
| 82 kPaymentRequestRowHorizontalInsets + kPaymentRequestRowExtraRightInset); | |
| 83 | |
| 84 // Add a column listing the profile information. | |
|
tmartino
2017/03/16 17:42:01
nit: This class is not associated with a profile
anthonyvd
2017/03/20 13:24:59
Good catch, done!
| |
| 85 views::ColumnSet* columns = layout->AddColumnSet(0); | |
| 86 columns->AddColumn(views::GridLayout::FILL, views::GridLayout::LEADING, 1, | |
| 87 views::GridLayout::USE_PREF, 0, 0); | |
| 88 | |
| 89 columns->AddPaddingColumn(1, 0); | |
| 90 | |
| 91 // Add a column for the checkmark shown next to the selected profile. | |
| 92 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0, | |
| 93 views::GridLayout::USE_PREF, 0, 0); | |
| 94 | |
| 95 // Add a column for the extra_view, which comes after the checkmark. | |
| 96 columns->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0, | |
| 97 views::GridLayout::USE_PREF, 0, 0); | |
| 98 | |
| 99 layout->StartRow(0, 0); | |
| 100 content->set_can_process_events_within_subtree(false); | |
| 101 layout->AddView(content.release()); | |
| 102 | |
| 103 checkmark_ = CreateCheckmark(selected()); | |
| 104 layout->AddView(checkmark_.get()); | |
| 105 | |
| 106 std::unique_ptr<views::View> extra_view = CreateExtraView(); | |
| 107 if (extra_view) | |
| 108 layout->AddView(extra_view.release()); | |
| 109 | |
| 110 return std::move(row); | |
| 111 } | |
| 112 | |
| 113 void PaymentRequestItemList::Item::ButtonPressed(views::Button* sender, | |
| 114 const ui::Event& event) { | |
| 115 if (CanBeSelected()) { | |
| 116 list()->SelectItem(this); | |
| 117 } else { | |
| 118 PerformSelectionFallback(); | |
| 119 } | |
| 120 } | |
| 121 | |
| 58 PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {} | 122 PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {} |
| 59 | 123 |
| 60 PaymentRequestItemList::~PaymentRequestItemList() {} | 124 PaymentRequestItemList::~PaymentRequestItemList() {} |
| 61 | 125 |
| 62 void PaymentRequestItemList::AddItem( | 126 void PaymentRequestItemList::AddItem( |
| 63 std::unique_ptr<PaymentRequestItemList::Item> item) { | 127 std::unique_ptr<PaymentRequestItemList::Item> item) { |
| 64 DCHECK_EQ(this, item->list()); | 128 DCHECK_EQ(this, item->list()); |
| 65 items_.push_back(std::move(item)); | 129 items_.push_back(std::move(item)); |
| 66 if (items_.back()->selected()) | 130 if (items_.back()->selected()) |
| 67 SelectItem(items_.back().get()); | 131 SelectItem(items_.back().get()); |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 96 // It's possible that no item is currently selected, either during list | 160 // It's possible that no item is currently selected, either during list |
| 97 // creation or in the middle of the selection operation when the previously | 161 // creation or in the middle of the selection operation when the previously |
| 98 // selected item has been deselected but the new one isn't selected yet. | 162 // selected item has been deselected but the new one isn't selected yet. |
| 99 if (selected_item_) | 163 if (selected_item_) |
| 100 selected_item_->SetSelected(false); | 164 selected_item_->SetSelected(false); |
| 101 | 165 |
| 102 selected_item_ = nullptr; | 166 selected_item_ = nullptr; |
| 103 } | 167 } |
| 104 | 168 |
| 105 } // namespace payments | 169 } // namespace payments |
| OLD | NEW |