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

Unified Diff: ios/chrome/browser/ui/ntp/new_tab_page_bar_button.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/ntp/new_tab_page_bar_button.mm
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_bar_button.mm b/ios/chrome/browser/ui/ntp/new_tab_page_bar_button.mm
new file mode 100644
index 0000000000000000000000000000000000000000..91580eee51861a286585c8d684c538cea67f8275
--- /dev/null
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_bar_button.mm
@@ -0,0 +1,138 @@
+// Copyright 2015 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/ntp/new_tab_page_bar_button.h"
+
+#include "base/logging.h"
+#include "base/mac/objc_property_releaser.h"
+#import "ios/chrome/browser/ui/ntp/new_tab_page_bar_item.h"
+#import "ios/chrome/browser/ui/uikit_ui_util.h"
+#import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h"
+
+namespace {
+
+const int kButtonColor = 0x333333;
+const int kButtonSelectedColor = 0x4285F4;
+
+} // anonymous namespace
+
+@interface NewTabPageBarButton () {
+ UIColor* _color;
+ UIColor* _selectedColor;
+ UIColor* _incognitoColor;
+ UIColor* _incognitoSelectedColor;
+ UIColor* _interpolatedColor;
+ UIColor* _interpolatedSelectedColor;
+
+ UIImage* _image;
+ NSString* _title;
+ base::mac::ObjCPropertyReleaser _propertyReleaser_NewTabPageBarButton;
+}
+
+@property(nonatomic, retain) UIColor* color;
+@property(nonatomic, retain) UIColor* selectedColor;
+@property(nonatomic, retain) UIColor* incognitoColor;
+@property(nonatomic, retain) UIColor* incognitoSelectedColor;
+@property(nonatomic, retain) UIColor* interpolatedColor;
+@property(nonatomic, retain) UIColor* interpolatedSelectedColor;
+@property(nonatomic, retain) UIImage* image;
+@property(nonatomic, copy) NSString* title;
+
+// Sets the tint color of the button to |interpolatedColor| or
+// |interpolatedSelectedColor|, depending on the state of the button.
+- (void)refreshTintColor;
+
+@end
+
+@implementation NewTabPageBarButton
+
+@synthesize color = _color;
+@synthesize selectedColor = _selectedColor;
+@synthesize incognitoColor = _incognitoColor;
+@synthesize incognitoSelectedColor = _incognitoSelectedColor;
+@synthesize interpolatedColor = _interpolatedColor;
+@synthesize interpolatedSelectedColor = _interpolatedSelectedColor;
+@synthesize image = _image;
+@synthesize title = _title;
+
++ (instancetype)buttonWithItem:(NewTabPageBarItem*)item {
+ DCHECK(item);
+ DCHECK(item.title);
+ DCHECK(item.image);
+ NewTabPageBarButton* button =
+ [[self class] buttonWithType:UIButtonTypeCustom];
+ button->_propertyReleaser_NewTabPageBarButton.Init(
+ button, [NewTabPageBarButton class]);
+
+ button.title = item.title;
+ button.image =
+ [item.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+ button.color = UIColorFromRGB(kButtonColor, 1.0);
+ button.selectedColor = UIColorFromRGB(kButtonSelectedColor, 1.0);
+ button.incognitoColor = [UIColor colorWithWhite:1 alpha:0.5];
+ button.incognitoSelectedColor = [UIColor whiteColor];
+
+ button.autoresizingMask = UIViewAutoresizingFlexibleWidth;
+ button.adjustsImageWhenHighlighted = NO;
+ button.accessibilityLabel = item.title;
+ button.titleLabel.font = [MDCTypography body2Font];
+ button.titleLabel.adjustsFontSizeToFitWidth = YES;
+ button.titleLabel.minimumScaleFactor = 0.6;
+
+ [button useIncognitoColorScheme:0];
+ [button setContentToDisplay:new_tab_page_bar_button::ContentType::TEXT];
+ return button;
+}
+
+- (void)useIncognitoColorScheme:(CGFloat)percentage {
+ DCHECK(percentage >= 0 && percentage <= 1);
+ self.interpolatedColor =
+ InterpolateFromColorToColor(_color, _incognitoColor, percentage);
+ self.interpolatedSelectedColor = InterpolateFromColorToColor(
+ _selectedColor, _incognitoSelectedColor, percentage);
+
+ [self setTitleColor:_interpolatedColor forState:UIControlStateNormal];
+ [self setTitleColor:_interpolatedSelectedColor
+ forState:UIControlStateSelected];
+ [self setTitleColor:_interpolatedSelectedColor
+ forState:UIControlStateHighlighted];
+
+ [self refreshTintColor];
+}
+
+- (void)setContentToDisplay:(new_tab_page_bar_button::ContentType)contentType {
+ switch (contentType) {
+ case new_tab_page_bar_button::ContentType::IMAGE:
+ [self setImage:_image forState:UIControlStateNormal];
+ [self setTitle:nil forState:UIControlStateNormal];
+ break;
+ case new_tab_page_bar_button::ContentType::TEXT:
+ [self setImage:nil forState:UIControlStateNormal];
+ [self setTitle:_title forState:UIControlStateNormal];
+ break;
+ }
+}
+
+- (void)refreshTintColor {
+ if (self.selected || self.highlighted) {
+ [self setTintColor:_interpolatedSelectedColor];
+ } else {
+ [self setTintColor:_interpolatedColor];
+ }
+}
+
+#pragma mark -
+#pragma mark UIButton overrides
+
+- (void)setSelected:(BOOL)selected {
+ [super setSelected:selected];
+ [self refreshTintColor];
+}
+
+- (void)setHighlighted:(BOOL)highlighted {
+ [super setHighlighted:highlighted];
+ [self refreshTintColor];
+}
+
+@end
« no previous file with comments | « ios/chrome/browser/ui/ntp/new_tab_page_bar_button.h ('k') | ios/chrome/browser/ui/ntp/new_tab_page_bar_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698