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

Unified Diff: ios/chrome/browser/ui/suggestions/suggestions_stack_item.mm

Issue 2630313004: Suggestions UI - stack item (Closed)
Patch Set: Address comments Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/suggestions/suggestions_stack_item.mm
diff --git a/ios/chrome/browser/ui/suggestions/suggestions_stack_item.mm b/ios/chrome/browser/ui/suggestions/suggestions_stack_item.mm
new file mode 100644
index 0000000000000000000000000000000000000000..1ea97d726798707d361d9a683c48e9762d5674b4
--- /dev/null
+++ b/ios/chrome/browser/ui/suggestions/suggestions_stack_item.mm
@@ -0,0 +1,143 @@
+// Copyright 2017 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/suggestions/suggestions_stack_item.h"
+
+#import "ios/chrome/browser/ui/suggestions/suggestions_stack_item_actions.h"
+#import "ios/chrome/browser/ui/uikit_ui_util.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace {
+const CGFloat kStackSpacing = 8;
+}
+
+@implementation SuggestionsStackItem {
+ NSString* _title;
+ NSString* _subtitle;
+}
+
+- (instancetype)initWithType:(NSInteger)type
+ title:(NSString*)title
+ subtitle:(NSString*)subtitle {
+ self = [super initWithType:type];
+ if (self) {
+ self.cellClass = [SuggestionsStackCell class];
+ _title = [title copy];
+ _subtitle = [subtitle copy];
+ }
+ return self;
+}
+
+#pragma mark - CollectionViewItem
+
+- (void)configureCell:(SuggestionsStackCell*)cell {
+ [super configureCell:cell];
+ [cell.titleButton setTitle:_title forState:UIControlStateNormal];
+ cell.detailTextLabel.text = _subtitle;
+}
+
+@end
+
+@implementation SuggestionsStackCell
+
+@synthesize titleButton = _titleButton;
+@synthesize detailTextLabel = _detailTextLabel;
+
+- (instancetype)initWithFrame:(CGRect)frame {
+ self = [super initWithFrame:frame];
+ if (self) {
+ self.backgroundColor = [UIColor clearColor];
+ self.contentView.backgroundColor = [UIColor clearColor];
+ self.backgroundView.backgroundColor = [UIColor clearColor];
+
+ UIControl* itemDisplay = [[UIControl alloc] init];
+ itemDisplay.layer.borderColor = [UIColor blackColor].CGColor;
+ itemDisplay.layer.borderWidth = 1;
+ itemDisplay.backgroundColor = [UIColor whiteColor];
+ [itemDisplay addTarget:nil
+ action:@selector(openReadingListFirstItem:)
+ forControlEvents:UIControlEventTouchUpInside];
+ itemDisplay.translatesAutoresizingMaskIntoConstraints = NO;
+
+ _titleButton = [UIButton buttonWithType:UIButtonTypeSystem];
+ _detailTextLabel = [[UILabel alloc] init];
+ _titleButton.translatesAutoresizingMaskIntoConstraints = NO;
+ _detailTextLabel.translatesAutoresizingMaskIntoConstraints = NO;
+
+ [itemDisplay addSubview:_titleButton];
+ [itemDisplay addSubview:_detailTextLabel];
+
+ // Placeholder. This view is only used to display a border below the item.
+ UIView* secondView = [[UIView alloc] init];
+ secondView.backgroundColor = [UIColor whiteColor];
+ secondView.translatesAutoresizingMaskIntoConstraints = NO;
+ secondView.layer.borderColor = [UIColor blackColor].CGColor;
+ secondView.layer.borderWidth = 1;
+
+ // Placeholder. This view is only used to display a border below the item.
+ UIView* thirdView = [[UIView alloc] init];
+ thirdView.backgroundColor = [UIColor whiteColor];
+ thirdView.translatesAutoresizingMaskIntoConstraints = NO;
+ thirdView.layer.borderColor = [UIColor blackColor].CGColor;
+ thirdView.layer.borderWidth = 1;
+
+ // Placeholder. This view is only used to display a border below the item.
+ UIView* fourthView = [[UIView alloc] init];
+ fourthView.backgroundColor = [UIColor whiteColor];
+ fourthView.translatesAutoresizingMaskIntoConstraints = NO;
+ fourthView.layer.borderColor = [UIColor blackColor].CGColor;
+ fourthView.layer.borderWidth = 1;
+
+ [self.contentView addSubview:itemDisplay];
+ [self.contentView insertSubview:secondView belowSubview:itemDisplay];
+ [self.contentView insertSubview:thirdView belowSubview:secondView];
+ [self.contentView insertSubview:fourthView belowSubview:thirdView];
+
+ [NSLayoutConstraint activateConstraints:@[
+ [itemDisplay.widthAnchor constraintEqualToAnchor:secondView.widthAnchor],
+ [itemDisplay.heightAnchor
+ constraintEqualToAnchor:secondView.heightAnchor],
+ [itemDisplay.widthAnchor constraintEqualToAnchor:thirdView.widthAnchor],
+ [itemDisplay.heightAnchor constraintEqualToAnchor:thirdView.heightAnchor],
+ [itemDisplay.widthAnchor constraintEqualToAnchor:fourthView.widthAnchor],
+ [itemDisplay.heightAnchor
+ constraintEqualToAnchor:fourthView.heightAnchor],
+ ]];
+
+ ApplyVisualConstraintsWithMetrics(
+ @[
+ @"H:|-[title]-|",
+ @"H:|-[text]-|",
+ @"H:|[item]-(fourSpace)-|",
+ @"H:|-(oneSpace)-[second]-(threeSpace)-|",
+ @"H:|-(twoSpace)-[third]-(twoSpace)-|",
+ @"H:|-(threeSpace)-[fourth]-(oneSpace)-|",
+ @"V:|-[title]-[text]-|",
+ @"V:|[item]",
+ @"V:|-(oneSpace)-[second]",
+ @"V:|-(twoSpace)-[third]",
+ @"V:|-(threeSpace)-[fourth]|",
+ ],
+ @{
+ @"title" : _titleButton,
+ @"text" : _detailTextLabel,
+ @"item" : itemDisplay,
+ @"second" : secondView,
+ @"third" : thirdView,
+ @"fourth" : fourthView,
+ },
+ @{
+ @"oneSpace" : @(kStackSpacing * 1),
+ @"twoSpace" : @(kStackSpacing * 2),
+ @"threeSpace" : @(kStackSpacing * 3),
+ @"fourSpace" : @(kStackSpacing * 4)
+ });
+ }
+ return self;
+}
+
+@end

Powered by Google App Engine
This is Rietveld 408576698