| Index: chrome/browser/ui/views/payments/payment_request_item_list.h
|
| diff --git a/chrome/browser/ui/views/payments/payment_request_item_list.h b/chrome/browser/ui/views/payments/payment_request_item_list.h
|
| index 71f4c04812d6eb0903b96538f6c6f5dab4fb23ab..09aafea098284a14576c184557756470939649e4 100644
|
| --- a/chrome/browser/ui/views/payments/payment_request_item_list.h
|
| +++ b/chrome/browser/ui/views/payments/payment_request_item_list.h
|
| @@ -16,17 +16,21 @@ class View;
|
|
|
| namespace payments {
|
|
|
| +class PaymentRequest;
|
| +
|
| // A control representing a list of selectable items in the PaymentRequest
|
| // dialog. These lists enforce that only one of their elements be selectable at
|
| // a time and that "incomplete" items (for example, a credit card with no known
|
| -// expriration date) behave differently when selected. Most of the time, this
|
| +// expiration date) behave differently when selected. Most of the time, this
|
| // behavior is to show an editor screen.
|
| class PaymentRequestItemList {
|
| public:
|
| // Represents an item in the item list.
|
| class Item {
|
| public:
|
| - Item();
|
| + // Creates an item that will be owned by |list| with the initial state set
|
| + // to |selected|.
|
| + Item(PaymentRequest* request, PaymentRequestItemList* list, bool selected);
|
| virtual ~Item();
|
|
|
| // Gets the view associated with this item. It's owned by this object so
|
| @@ -34,12 +38,33 @@ class PaymentRequestItemList {
|
| // view.
|
| views::View* GetItemView();
|
|
|
| + bool selected() const { return selected_; }
|
| + // Changes the selected state of this item to |selected| and calls
|
| + // SelectedStateChanged.
|
| + void SetSelected(bool selected);
|
| +
|
| + // Returns a pointer to the PaymentRequestItemList that owns this object.
|
| + PaymentRequestItemList* list() { return list_; }
|
| +
|
| + // Returns a pointer to the PaymentRequest object associated with this
|
| + // instance of the UI.
|
| + PaymentRequest* request() { return request_; }
|
| +
|
| protected:
|
| // Creates and returns the view associated with this list item.
|
| virtual std::unique_ptr<views::View> CreateItemView() = 0;
|
|
|
| + // Called when the selected state of this item changes. Subclasses may
|
| + // assume that they are the only selected item in |list| when this is
|
| + // called. This could be called before CreateItemView so subclasses should
|
| + // be aware that their views might not exist yet.
|
| + virtual void SelectedStateChanged() = 0;
|
| +
|
| private:
|
| std::unique_ptr<views::View> item_view_;
|
| + PaymentRequest* request_;
|
| + PaymentRequestItemList* list_;
|
| + bool selected_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(Item);
|
| };
|
| @@ -47,7 +72,7 @@ class PaymentRequestItemList {
|
| PaymentRequestItemList();
|
| ~PaymentRequestItemList();
|
|
|
| - // Adds an item to this list.
|
| + // Adds an item to this list. |item->list()| should return this object.
|
| void AddItem(std::unique_ptr<Item> item);
|
|
|
| // Creates and returns the UI representation of this list. It iterates over
|
| @@ -55,8 +80,17 @@ class PaymentRequestItemList {
|
| // hierarchy.
|
| std::unique_ptr<views::View> CreateListView();
|
|
|
| + // Deselects the currently selected item and selects |item| instead.
|
| + void SelectItem(Item* item);
|
| +
|
| private:
|
| + // Unselects the currently selected item. This is private so that the list can
|
| + // use it when selecting a new item while avoiding consumers of this class
|
| + // putting the list in a state where no item is selected.
|
| + void UnselectSelectedItem();
|
| +
|
| std::vector<std::unique_ptr<Item>> items_;
|
| + Item* selected_item_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PaymentRequestItemList);
|
| };
|
|
|