| Index: ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.mm
|
| diff --git a/ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.mm b/ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..faedbaf0686b3323ead8355483c3d7b9446bb52d
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.mm
|
| @@ -0,0 +1,92 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#import "ios/chrome/browser/ui/tools_menu/reading_list_menu_view_item.h"
|
| +
|
| +#include "base/mac/foundation_util.h"
|
| +#import "base/mac/scoped_nsobject.h"
|
| +#import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h"
|
| +#import "ios/chrome/browser/ui/reading_list/number_badge_view.h"
|
| +#import "ios/third_party/material_components_ios/src/components/Palettes/src/MaterialPalettes.h"
|
| +
|
| +namespace {
|
| +// ID for cell reuse
|
| +static NSString* const kReadingListCellID = @"ReadingListCellID";
|
| +const CGFloat kToolsMenuItemTrailingMargin = 25;
|
| +} // namespace
|
| +
|
| +@interface ReadingListMenuViewCell () {
|
| + base::scoped_nsobject<NumberBadgeView> _badge;
|
| +}
|
| +@end
|
| +
|
| +@implementation ReadingListMenuViewItem
|
| +
|
| ++ (NSString*)cellID {
|
| + return kReadingListCellID;
|
| +}
|
| +
|
| ++ (Class)cellClass {
|
| + return [ReadingListMenuViewCell class];
|
| +}
|
| +
|
| +@end
|
| +
|
| +@implementation ReadingListMenuViewCell
|
| +
|
| +- (void)initializeViews {
|
| + if (_badge && [self title]) {
|
| + return;
|
| + }
|
| +
|
| + [super initializeViews];
|
| +
|
| + _badge.reset([[NumberBadgeView alloc] initWithFrame:CGRectZero]);
|
| + [_badge setTranslatesAutoresizingMaskIntoConstraints:NO];
|
| + [self.contentView addSubview:_badge];
|
| +
|
| + [self.contentView removeConstraints:self.contentView.constraints];
|
| +
|
| + NSMutableArray<NSLayoutConstraint*>* constraintsToApply = [NSMutableArray
|
| + arrayWithArray:[NSLayoutConstraint
|
| + constraintsWithVisualFormat:
|
| + @"H:|-(margin)-[title]-[badge]-(endMargin)-|"
|
| + options:NSLayoutFormatDirectionLeadingToTrailing
|
| + metrics:@{
|
| + @"margin" : @(self.horizontalMargin),
|
| + @"endMargin" : @(kToolsMenuItemTrailingMargin)
|
| + }
|
| + views:@{
|
| + @"title" : self.title,
|
| + @"badge" : _badge
|
| + }]];
|
| + [constraintsToApply
|
| + addObject:[self.title.centerYAnchor
|
| + constraintEqualToAnchor:self.contentView.centerYAnchor]];
|
| + [constraintsToApply
|
| + addObject:[_badge.get().centerYAnchor
|
| + constraintEqualToAnchor:self.contentView.centerYAnchor]];
|
| +
|
| + [NSLayoutConstraint activateConstraints:constraintsToApply];
|
| +}
|
| +
|
| +- (void)updateBadgeCount:(NSInteger)count animated:(BOOL)animated {
|
| + [_badge setNumber:count animated:animated];
|
| +}
|
| +
|
| +- (void)updateSeenState:(BOOL)hasUnseenItems animated:(BOOL)animated {
|
| + if (hasUnseenItems) {
|
| + UIColor* highlightedColor = [[MDCPalette cr_bluePalette] tint500];
|
| +
|
| + [_badge setBackgroundColor:highlightedColor animated:animated];
|
| + [self.title setTextColor:highlightedColor];
|
| + } else {
|
| + UIColor* regularColor = [[MDCPalette greyPalette] tint500];
|
| +
|
| + [_badge setBackgroundColor:regularColor animated:animated];
|
| + [self.title setTextColor:[UIColor blackColor]];
|
| + }
|
| +}
|
| +
|
| +@end
|
|
|