| 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_row_view.h" |
| 9 #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" | 10 #include "components/payments/content/payment_request_state.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 | 33 |
| 34 views::View* PaymentRequestItemList::Item::GetItemView() { | 34 views::View* PaymentRequestItemList::Item::GetItemView() { |
| 35 if (!item_view_) { | 35 if (!item_view_) { |
| 36 item_view_ = CreateItemView(); | 36 item_view_ = CreateItemView(); |
| 37 item_view_->set_owned_by_client(); | 37 item_view_->set_owned_by_client(); |
| 38 } | 38 } |
| 39 | 39 |
| 40 return item_view_.get(); | 40 return item_view_.get(); |
| 41 } | 41 } |
| 42 | 42 |
| 43 void PaymentRequestItemList::Item::SetSelected(bool selected) { | 43 void PaymentRequestItemList::Item::SetSelected(bool selected, bool notify) { |
| 44 selected_ = selected; | 44 selected_ = selected; |
| 45 | 45 |
| 46 // This could be called before CreateItemView, so before |checkmark_| is | 46 // This could be called before CreateItemView, so before |checkmark_| is |
| 47 // instantiated. | 47 // instantiated. |
| 48 if (checkmark_) | 48 if (checkmark_) |
| 49 checkmark_->SetVisible(selected_); | 49 checkmark_->SetVisible(selected_); |
| 50 | 50 |
| 51 SelectedStateChanged(); | 51 if (notify) |
| 52 SelectedStateChanged(); |
| 52 } | 53 } |
| 53 | 54 |
| 54 std::unique_ptr<views::ImageView> PaymentRequestItemList::Item::CreateCheckmark( | 55 std::unique_ptr<views::ImageView> PaymentRequestItemList::Item::CreateCheckmark( |
| 55 bool selected) { | 56 bool selected) { |
| 56 std::unique_ptr<views::ImageView> checkmark = | 57 std::unique_ptr<views::ImageView> checkmark = |
| 57 base::MakeUnique<views::ImageView>(); | 58 base::MakeUnique<views::ImageView>(); |
| 58 checkmark->set_id(static_cast<int>(DialogViewID::CHECKMARK_VIEW)); | 59 checkmark->set_id(static_cast<int>(DialogViewID::CHECKMARK_VIEW)); |
| 59 checkmark->set_can_process_events_within_subtree(false); | 60 checkmark->set_can_process_events_within_subtree(false); |
| 60 checkmark->set_owned_by_client(); | 61 checkmark->set_owned_by_client(); |
| 61 checkmark->SetImage( | 62 checkmark->SetImage( |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 } | 121 } |
| 121 | 122 |
| 122 PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {} | 123 PaymentRequestItemList::PaymentRequestItemList() : selected_item_(nullptr) {} |
| 123 | 124 |
| 124 PaymentRequestItemList::~PaymentRequestItemList() {} | 125 PaymentRequestItemList::~PaymentRequestItemList() {} |
| 125 | 126 |
| 126 void PaymentRequestItemList::AddItem( | 127 void PaymentRequestItemList::AddItem( |
| 127 std::unique_ptr<PaymentRequestItemList::Item> item) { | 128 std::unique_ptr<PaymentRequestItemList::Item> item) { |
| 128 DCHECK_EQ(this, item->list()); | 129 DCHECK_EQ(this, item->list()); |
| 129 items_.push_back(std::move(item)); | 130 items_.push_back(std::move(item)); |
| 130 if (items_.back()->selected()) | 131 if (items_.back()->selected()) { |
| 131 SelectItem(items_.back().get()); | 132 if (selected_item_) |
| 133 selected_item_->SetSelected(/*selected=*/false, /*notify=*/false); |
| 134 selected_item_ = items_.back().get(); |
| 135 } |
| 132 } | 136 } |
| 133 | 137 |
| 134 std::unique_ptr<views::View> PaymentRequestItemList::CreateListView() { | 138 std::unique_ptr<views::View> PaymentRequestItemList::CreateListView() { |
| 135 std::unique_ptr<views::View> content_view = base::MakeUnique<views::View>(); | 139 std::unique_ptr<views::View> content_view = base::MakeUnique<views::View>(); |
| 136 | 140 |
| 137 views::BoxLayout* layout = new views::BoxLayout( | 141 views::BoxLayout* layout = new views::BoxLayout( |
| 138 views::BoxLayout::kVertical, 0, kPaymentRequestRowVerticalInsets, 0); | 142 views::BoxLayout::kVertical, 0, kPaymentRequestRowVerticalInsets, 0); |
| 139 content_view->SetLayoutManager(layout); | 143 content_view->SetLayoutManager(layout); |
| 140 | 144 |
| 141 for (auto& item : items_) { | 145 for (auto& item : items_) { |
| 142 content_view->AddChildView(item->GetItemView()); | 146 content_view->AddChildView(item->GetItemView()); |
| 143 } | 147 } |
| 144 | 148 |
| 145 return content_view; | 149 return content_view; |
| 146 } | 150 } |
| 147 | 151 |
| 148 void PaymentRequestItemList::SelectItem(PaymentRequestItemList::Item* item) { | 152 void PaymentRequestItemList::SelectItem(PaymentRequestItemList::Item* item) { |
| 149 DCHECK_EQ(this, item->list()); | 153 DCHECK_EQ(this, item->list()); |
| 150 if (selected_item_ == item) | 154 if (selected_item_ == item) |
| 151 return; | 155 return; |
| 152 | 156 |
| 153 UnselectSelectedItem(); | 157 UnselectSelectedItem(); |
| 154 | 158 |
| 155 selected_item_ = item; | 159 selected_item_ = item; |
| 156 item->SetSelected(true); | 160 item->SetSelected(/*selected=*/true, /*notify=*/true); |
| 157 } | 161 } |
| 158 | 162 |
| 159 void PaymentRequestItemList::UnselectSelectedItem() { | 163 void PaymentRequestItemList::UnselectSelectedItem() { |
| 160 // It's possible that no item is currently selected, either during list | 164 // It's possible that no item is currently selected, either during list |
| 161 // creation or in the middle of the selection operation when the previously | 165 // creation or in the middle of the selection operation when the previously |
| 162 // selected item has been deselected but the new one isn't selected yet. | 166 // selected item has been deselected but the new one isn't selected yet. |
| 163 if (selected_item_) | 167 if (selected_item_) |
| 164 selected_item_->SetSelected(false); | 168 selected_item_->SetSelected(/*selected=*/false, /*notify=*/true); |
| 165 | 169 |
| 166 selected_item_ = nullptr; | 170 selected_item_ = nullptr; |
| 167 } | 171 } |
| 168 | 172 |
| 169 } // namespace payments | 173 } // namespace payments |
| OLD | NEW |