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

Unified Diff: ios/chrome/browser/ui/history/tab_history_cell.mm

Issue 2590473002: Upstream Chrome on iOS source code [5/11]. (Closed)
Patch Set: Created 4 years 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/history/tab_history_cell.mm
diff --git a/ios/chrome/browser/ui/history/tab_history_cell.mm b/ios/chrome/browser/ui/history/tab_history_cell.mm
new file mode 100644
index 0000000000000000000000000000000000000000..0e0cf5d4c5fc627e1557acc33b666aa3dd7b7bc7
--- /dev/null
+++ b/ios/chrome/browser/ui/history/tab_history_cell.mm
@@ -0,0 +1,183 @@
+// Copyright 2014 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/history/tab_history_cell.h"
+
+#include "base/mac/scoped_nsobject.h"
+#include "base/strings/sys_string_conversions.h"
+#include "ios/chrome/browser/ui/ui_util.h"
+#import "ios/chrome/browser/ui/uikit_ui_util.h"
+#import "ios/third_party/material_roboto_font_loader_ios/src/src/MaterialRobotoFontLoader.h"
+#import "ios/web/navigation/crw_session_entry.h"
+#include "ios/web/public/navigation_item.h"
+
+namespace {
+// Header horizontal layout inset.
+const CGFloat kHeaderHorizontalInset = 16;
+// Header vertical layout inset.
+const CGFloat kHeaderVerticalInset = 16;
+// Width and Height for the site icon view.
+const CGFloat kSiteIconViewWidth = 16;
+// Height adjustment for the line view. The design calls for some overlap.
+const CGFloat kHeaderHeightAdjustment = 6;
+// Margin between the icon and the line view in the header.
+const CGFloat kLineViewTopMargin = 3;
+// Color for the line with in the header section.
+const int kHeaderLineRGB = 0xE5E5E5;
+// Color for the footer line.
+const int kFooterRGB = 0xD2D2D2;
+// Color for the text in the title label.
+const int kTitleTextRGB = 0x333333;
+// Width for the header line view.
+NS_INLINE CGFloat HeaderLineWidth() {
+ return IsHighResScreen() ? 1.5 : 2;
+}
+// Corner radius for the header line view.
+NS_INLINE CGFloat HeaderLineRadius() {
+ return HeaderLineWidth() / 2.0;
+}
+}
+
+@implementation TabHistoryCell {
+ base::scoped_nsobject<CRWSessionEntry> _entry;
+ base::scoped_nsobject<UILabel> _titleLabel;
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+ self = [super initWithFrame:frame];
+ if (self)
+ [self commonInitialization];
+
+ return self;
+}
+
+- (instancetype)initWithCoder:(NSCoder*)coder {
+ self = [super initWithCoder:coder];
+ if (self)
+ [self commonInitialization];
+
+ return self;
+}
+
+- (void)commonInitialization {
+ _titleLabel.reset([[UILabel alloc] initWithFrame:CGRectZero]);
+ [_titleLabel setTextColor:UIColorFromRGB(kTitleTextRGB)];
+ [_titleLabel
+ setFont:[[MDFRobotoFontLoader sharedInstance] regularFontOfSize:16]];
+ [[self contentView] addSubview:_titleLabel];
+}
+
+- (void)layoutSubviews {
+ [super layoutSubviews];
+
+ CGRect bounds = [[self contentView] bounds];
+ CGRect frame = AlignRectOriginAndSizeToPixels(bounds);
+ [_titleLabel setFrame:frame];
+}
+
+- (CRWSessionEntry*)entry {
+ return [[_entry retain] autorelease];
+}
+
+- (void)setEntry:(CRWSessionEntry*)entry {
+ _entry.reset([entry retain]);
+
+ NSString* title = nil;
+ web::NavigationItem* navigationItem = [_entry navigationItem];
+ if (navigationItem) {
+ // TODO(rohitrao): Can this use GetTitleForDisplay() instead?
+ if (navigationItem->GetTitle().empty())
+ title = base::SysUTF8ToNSString(navigationItem->GetURL().spec());
+ else
+ title = base::SysUTF16ToNSString(navigationItem->GetTitle());
+ }
+
+ [_titleLabel setText:title];
+ [self setAccessibilityLabel:title];
+ [self setNeedsLayout];
+}
+
+- (UILabel*)titleLabel {
+ return [[_titleLabel retain] autorelease];
+}
+
+- (void)prepareForReuse {
+ [super prepareForReuse];
+ _entry.reset(nil);
+ [_titleLabel setText:nil];
+ [self setAccessibilityLabel:nil];
+}
+
+@end
+
+@implementation TabHistorySectionHeader {
+ base::scoped_nsobject<UIImageView> _iconView;
+ base::scoped_nsobject<UIView> _lineView;
+}
+
+- (UIImageView*)iconView {
+ return [[_iconView retain] autorelease];
+}
+
+- (UIView*)lineView {
+ return [[_lineView retain] autorelease];
+}
+
+- (instancetype)initWithFrame:(CGRect)frame {
+ self = [super initWithFrame:frame];
+ if (self) {
+ CGRect iconFrame = CGRectMake(0, 0, kSiteIconViewWidth, kSiteIconViewWidth);
+ _iconView.reset([[UIImageView alloc] initWithFrame:iconFrame]);
+ [self addSubview:_iconView];
+
+ UIColor* lineColor = UIColorFromRGB(kHeaderLineRGB);
+
+ _lineView.reset([[UIView alloc] initWithFrame:CGRectZero]);
+ [[_lineView layer] setCornerRadius:HeaderLineRadius()];
+ [_lineView setBackgroundColor:lineColor];
+ [self addSubview:_lineView];
+ }
+
+ return self;
+}
+
+- (void)layoutSubviews {
+ [super layoutSubviews];
+
+ CGRect bounds =
+ CGRectInset([self bounds], kHeaderHorizontalInset, kHeaderVerticalInset);
+
+ CGRect iconViewFrame = AlignRectToPixel(bounds);
+ iconViewFrame.size = CGSizeMake(kSiteIconViewWidth, kSiteIconViewWidth);
+ [_iconView setFrame:iconViewFrame];
+
+ CGFloat iconViewMaxY = CGRectGetMaxY(iconViewFrame);
+ CGFloat height =
+ CGRectGetHeight(bounds) - iconViewMaxY + kHeaderHeightAdjustment;
+ if (height < 0)
+ height = 0;
+
+ CGRect lineViewFrame = CGRectZero;
+ lineViewFrame.origin.x = CGRectGetMidX(bounds) - HeaderLineWidth() / 2.0;
+ lineViewFrame.origin.y = iconViewMaxY + kLineViewTopMargin;
+ lineViewFrame.size.width = HeaderLineWidth();
+ lineViewFrame.size.height = height;
+ lineViewFrame = AlignRectOriginAndSizeToPixels(lineViewFrame);
+
+ [_lineView setFrame:lineViewFrame];
+}
+
+@end
+
+@implementation TabHistorySectionFooter
+
+- (instancetype)initWithFrame:(CGRect)frame {
+ self = [super initWithFrame:frame];
+ if (self)
+ [self setBackgroundColor:UIColorFromRGB(kFooterRGB)];
+
+ return self;
+}
+
+@end
« no previous file with comments | « ios/chrome/browser/ui/history/tab_history_cell.h ('k') | ios/chrome/browser/ui/history/tab_history_popup_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698