| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/ui/tools_menu/reading_list_menu_view_item.h" | 5 #import "ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.h" |
| 6 | 6 |
| 7 #include "base/mac/foundation_util.h" | 7 #include "base/mac/foundation_util.h" |
| 8 #import "base/mac/scoped_nsobject.h" | |
| 9 #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" | 8 #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" |
| 10 #import "ios/chrome/browser/ui/reading_list/number_badge_view.h" | 9 #import "ios/chrome/browser/ui/reading_list/number_badge_view.h" |
| 11 #import "ios/third_party/material_components_ios/src/components/Palettes/src/Mat
erialPalettes.h" | 10 #import "ios/third_party/material_components_ios/src/components/Palettes/src/Mat
erialPalettes.h" |
| 12 | 11 |
| 12 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 13 #error "This file requires ARC support." |
| 14 #endif |
| 15 |
| 13 namespace { | 16 namespace { |
| 14 // ID for cell reuse | 17 // ID for cell reuse |
| 15 static NSString* const kReadingListCellID = @"ReadingListCellID"; | 18 static NSString* const kReadingListCellID = @"ReadingListCellID"; |
| 16 const CGFloat kToolsMenuItemTrailingMargin = 25; | 19 const CGFloat kToolsMenuItemTrailingMargin = 25; |
| 17 } // namespace | 20 } // namespace |
| 18 | 21 |
| 19 @interface ReadingListMenuViewCell () { | 22 @interface ReadingListMenuViewCell () { |
| 20 base::scoped_nsobject<NumberBadgeView> _badge; | 23 NumberBadgeView* _badge; |
| 21 } | 24 } |
| 22 @end | 25 @end |
| 23 | 26 |
| 24 @implementation ReadingListMenuViewItem | 27 @implementation ReadingListMenuViewItem |
| 25 | 28 |
| 26 + (NSString*)cellID { | 29 + (NSString*)cellID { |
| 27 return kReadingListCellID; | 30 return kReadingListCellID; |
| 28 } | 31 } |
| 29 | 32 |
| 30 + (Class)cellClass { | 33 + (Class)cellClass { |
| 31 return [ReadingListMenuViewCell class]; | 34 return [ReadingListMenuViewCell class]; |
| 32 } | 35 } |
| 33 | 36 |
| 34 @end | 37 @end |
| 35 | 38 |
| 36 @implementation ReadingListMenuViewCell | 39 @implementation ReadingListMenuViewCell |
| 37 | 40 |
| 38 - (void)initializeViews { | 41 - (void)initializeViews { |
| 39 if (_badge && [self title]) { | 42 if (_badge && [self title]) { |
| 40 return; | 43 return; |
| 41 } | 44 } |
| 42 | 45 |
| 43 [super initializeViews]; | 46 [super initializeViews]; |
| 44 | 47 |
| 45 _badge.reset([[NumberBadgeView alloc] initWithFrame:CGRectZero]); | 48 _badge = [[NumberBadgeView alloc] initWithFrame:CGRectZero]; |
| 46 [_badge setTranslatesAutoresizingMaskIntoConstraints:NO]; | 49 [_badge setTranslatesAutoresizingMaskIntoConstraints:NO]; |
| 47 [self.contentView addSubview:_badge]; | 50 [self.contentView addSubview:_badge]; |
| 48 | 51 |
| 49 [self.contentView removeConstraints:self.contentView.constraints]; | 52 [self.contentView removeConstraints:self.contentView.constraints]; |
| 50 | 53 |
| 51 NSMutableArray<NSLayoutConstraint*>* constraintsToApply = [NSMutableArray | 54 NSMutableArray<NSLayoutConstraint*>* constraintsToApply = [NSMutableArray |
| 52 arrayWithArray:[NSLayoutConstraint | 55 arrayWithArray:[NSLayoutConstraint |
| 53 constraintsWithVisualFormat: | 56 constraintsWithVisualFormat: |
| 54 @"H:|-(margin)-[title]-[badge]-(endMargin)-|" | 57 @"H:|-(margin)-[title]-[badge]-(endMargin)-|" |
| 55 options:NSLayoutFormatDirectionLeadingToTrailing | 58 options:NSLayoutFormatDirectionLeadingToTrailing |
| 56 metrics:@{ | 59 metrics:@{ |
| 57 @"margin" : @(self.horizontalMargin), | 60 @"margin" : @(self.horizontalMargin), |
| 58 @"endMargin" : @(kToolsMenuItemTrailingMargin) | 61 @"endMargin" : @(kToolsMenuItemTrailingMargin) |
| 59 } | 62 } |
| 60 views:@{ | 63 views:@{ |
| 61 @"title" : self.title, | 64 @"title" : self.title, |
| 62 @"badge" : _badge | 65 @"badge" : _badge |
| 63 }]]; | 66 }]]; |
| 64 [constraintsToApply | 67 [constraintsToApply |
| 65 addObject:[self.title.centerYAnchor | 68 addObject:[self.title.centerYAnchor |
| 66 constraintEqualToAnchor:self.contentView.centerYAnchor]]; | 69 constraintEqualToAnchor:self.contentView.centerYAnchor]]; |
| 67 [constraintsToApply | 70 [constraintsToApply |
| 68 addObject:[_badge.get().centerYAnchor | 71 addObject:[_badge.centerYAnchor |
| 69 constraintEqualToAnchor:self.contentView.centerYAnchor]]; | 72 constraintEqualToAnchor:self.contentView.centerYAnchor]]; |
| 70 | 73 |
| 71 [NSLayoutConstraint activateConstraints:constraintsToApply]; | 74 [NSLayoutConstraint activateConstraints:constraintsToApply]; |
| 72 } | 75 } |
| 73 | 76 |
| 74 - (void)updateBadgeCount:(NSInteger)count animated:(BOOL)animated { | 77 - (void)updateBadgeCount:(NSInteger)count animated:(BOOL)animated { |
| 75 [_badge setNumber:count animated:animated]; | 78 [_badge setNumber:count animated:animated]; |
| 76 } | 79 } |
| 77 | 80 |
| 78 - (void)updateSeenState:(BOOL)hasUnseenItems animated:(BOOL)animated { | 81 - (void)updateSeenState:(BOOL)hasUnseenItems animated:(BOOL)animated { |
| 79 if (hasUnseenItems) { | 82 if (hasUnseenItems) { |
| 80 UIColor* highlightedColor = [[MDCPalette cr_bluePalette] tint500]; | 83 UIColor* highlightedColor = [[MDCPalette cr_bluePalette] tint500]; |
| 81 | 84 |
| 82 [_badge setBackgroundColor:highlightedColor animated:animated]; | 85 [_badge setBackgroundColor:highlightedColor animated:animated]; |
| 83 [self.title setTextColor:highlightedColor]; | 86 [self.title setTextColor:highlightedColor]; |
| 84 } else { | 87 } else { |
| 85 UIColor* regularColor = [[MDCPalette greyPalette] tint500]; | 88 UIColor* regularColor = [[MDCPalette greyPalette] tint500]; |
| 86 | 89 |
| 87 [_badge setBackgroundColor:regularColor animated:animated]; | 90 [_badge setBackgroundColor:regularColor animated:animated]; |
| 88 [self.title setTextColor:[UIColor blackColor]]; | 91 [self.title setTextColor:[UIColor blackColor]]; |
| 89 } | 92 } |
| 90 } | 93 } |
| 91 | 94 |
| 92 @end | 95 @end |
| OLD | NEW |