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

Side by Side Diff: ios/chrome/browser/payments/cells/price_item.mm

Issue 2814793003: Adds accessoryType property to CollectionViewItem (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
OLDNEW
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 #import "ios/chrome/browser/payments/cells/price_item.h" 5 #import "ios/chrome/browser/payments/cells/price_item.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" 9 #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h"
10 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h" 10 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h"
11 11
12 #if !defined(__has_feature) || !__has_feature(objc_arc) 12 #if !defined(__has_feature) || !__has_feature(objc_arc)
13 #error "This file requires ARC support." 13 #error "This file requires ARC support."
14 #endif 14 #endif
15 15
16 namespace { 16 namespace {
17 17
18 // Padding used on the leading and trailing edges of the cell and in between the 18 // Padding used on the leading and trailing edges of the cell and in between the
19 // labels. 19 // labels.
20 const CGFloat kHorizontalPadding = 16; 20 const CGFloat kHorizontalPadding = 16;
21 21
22 // Minimum proportion of the available width to guarantee to the labels. 22 // Minimum proportion of the available width to guarantee to the labels.
23 const CGFloat kMinWidthRatio = 0.5f; 23 const CGFloat kMinWidthRatio = 0.5f;
24 } 24 }
25 25
26 @implementation PriceItem 26 @implementation PriceItem
27 27
28 @synthesize accessoryType = _accessoryType;
29 @synthesize item = _item; 28 @synthesize item = _item;
30 @synthesize notification = _notification; 29 @synthesize notification = _notification;
31 @synthesize price = _price; 30 @synthesize price = _price;
32 31
33 #pragma mark CollectionViewItem 32 #pragma mark CollectionViewItem
34 33
35 - (instancetype)initWithType:(NSInteger)type { 34 - (instancetype)initWithType:(NSInteger)type {
36 self = [super initWithType:type]; 35 self = [super initWithType:type];
37 if (self) { 36 if (self) {
38 self.cellClass = [PriceCell class]; 37 self.cellClass = [PriceCell class];
39 } 38 }
40 return self; 39 return self;
41 } 40 }
42 41
43 - (void)configureCell:(PriceCell*)cell { 42 - (void)configureCell:(PriceCell*)cell {
44 [super configureCell:cell]; 43 [super configureCell:cell];
45 cell.accessoryType = self.accessoryType;
46 cell.itemLabel.text = self.item; 44 cell.itemLabel.text = self.item;
47 cell.notificationLabel.text = self.notification; 45 cell.notificationLabel.text = self.notification;
48 cell.priceLabel.text = self.price; 46 cell.priceLabel.text = self.price;
49 } 47 }
50 48
51 @end 49 @end
52 50
53 @implementation PriceCell { 51 @implementation PriceCell {
54 NSLayoutConstraint* _itemLabelWidthConstraint; 52 NSLayoutConstraint* _itemLabelWidthConstraint;
55 NSLayoutConstraint* _notificationLabelWidthConstraint; 53 NSLayoutConstraint* _notificationLabelWidthConstraint;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 self.notificationLabelTargetWidth; 156 self.notificationLabelTargetWidth;
159 157
160 // Now invoke the layout. 158 // Now invoke the layout.
161 [super layoutSubviews]; 159 [super layoutSubviews];
162 } 160 }
163 161
164 #pragma mark - UICollectionReusableView 162 #pragma mark - UICollectionReusableView
165 163
166 - (void)prepareForReuse { 164 - (void)prepareForReuse {
167 [super prepareForReuse]; 165 [super prepareForReuse];
168 self.accessoryType = MDCCollectionViewCellAccessoryNone;
169 self.itemLabel.text = nil; 166 self.itemLabel.text = nil;
170 self.notificationLabel.text = nil; 167 self.notificationLabel.text = nil;
171 self.priceLabel.text = nil; 168 self.priceLabel.text = nil;
172 } 169 }
173 170
174 #pragma mark - NSObject(Accessibility) 171 #pragma mark - NSObject(Accessibility)
175 172
176 - (NSString*)accessibilityLabel { 173 - (NSString*)accessibilityLabel {
177 return [NSString stringWithFormat:@"%@, %@, %@", self.itemLabel.text, 174 return [NSString stringWithFormat:@"%@, %@, %@", self.itemLabel.text,
178 self.notificationLabel.text, 175 self.notificationLabel.text,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 if (itemLabelWidth + notificationLabelWidth + priceLabelWidth <= 235 if (itemLabelWidth + notificationLabelWidth + priceLabelWidth <=
239 availableWidth) { 236 availableWidth) {
240 return priceLabelWidth; 237 return priceLabelWidth;
241 } else { 238 } else {
242 return std::max(availableWidth - itemLabelWidth - notificationLabelWidth, 239 return std::max(availableWidth - itemLabelWidth - notificationLabelWidth,
243 std::min(availableWidth * kMinWidthRatio, priceLabelWidth)); 240 std::min(availableWidth * kMinWidthRatio, priceLabelWidth));
244 } 241 }
245 } 242 }
246 243
247 @end 244 @end
OLDNEW
« no previous file with comments | « ios/chrome/browser/payments/cells/price_item.h ('k') | ios/chrome/browser/ui/authentication/account_control_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698