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

Side by Side Diff: ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.mm

Issue 2827643002: [ObjC ARC] Converts ios/chrome/browser/ui/side_swipe:side_swipe to ARC. (Closed)
Patch Set: weak Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/side_swipe/side_swipe_navigation_view.h" 5 #import "ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/mac/objc_property_releaser.h" 10
11 #include "base/mac/scoped_nsobject.h"
12 #include "base/metrics/user_metrics.h" 11 #include "base/metrics/user_metrics.h"
13 #include "base/metrics/user_metrics_action.h" 12 #include "base/metrics/user_metrics_action.h"
14 #import "ios/chrome/browser/ui/side_swipe/side_swipe_util.h" 13 #import "ios/chrome/browser/ui/side_swipe/side_swipe_util.h"
15 #import "ios/chrome/browser/ui/side_swipe_gesture_recognizer.h" 14 #import "ios/chrome/browser/ui/side_swipe_gesture_recognizer.h"
16 #include "ios/chrome/browser/ui/ui_util.h" 15 #include "ios/chrome/browser/ui/ui_util.h"
17 #import "ios/chrome/browser/ui/uikit_ui_util.h" 16 #import "ios/chrome/browser/ui/uikit_ui_util.h"
18 #import "ios/chrome/common/material_timing.h" 17 #import "ios/chrome/common/material_timing.h"
19 18
19 #if !defined(__has_feature) || !__has_feature(objc_arc)
20 #error "This file requires ARC support."
21 #endif
22
20 namespace { 23 namespace {
21 24
22 enum class SwipeType { CHANGE_TABS, NAVIGATION }; 25 enum class SwipeType { CHANGE_TABS, NAVIGATION };
23 26
24 typedef struct { 27 typedef struct {
25 CGFloat min; 28 CGFloat min;
26 CGFloat max; 29 CGFloat max;
27 } FloatRange; 30 } FloatRange;
28 31
29 CGFloat MapValueToRange(FloatRange from, FloatRange to, CGFloat value) { 32 CGFloat MapValueToRange(FloatRange from, FloatRange to, CGFloat value) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 const CGFloat kSelectionAnimationDuration = 0.5; 67 const CGFloat kSelectionAnimationDuration = 0.5;
65 } 68 }
66 69
67 @interface SideSwipeNavigationView () { 70 @interface SideSwipeNavigationView () {
68 @private 71 @private
69 // Has the current swipe gone past the point where the action would trigger? 72 // Has the current swipe gone past the point where the action would trigger?
70 // Will be reset to NO if it recedes before that point (ie, not a latch). 73 // Will be reset to NO if it recedes before that point (ie, not a latch).
71 BOOL thresholdTriggered_; 74 BOOL thresholdTriggered_;
72 75
73 // The back or forward sprite image. 76 // The back or forward sprite image.
74 base::scoped_nsobject<UIImageView> arrowView_; 77 UIImageView* arrowView_;
75 78
76 // The selection bubble. 79 // The selection bubble.
77 CAShapeLayer* selectionCircleLayer_; 80 CAShapeLayer* selectionCircleLayer_;
78 81
79 // If |NO| this is an edge gesture and navigation isn't possible. Don't show 82 // If |NO| this is an edge gesture and navigation isn't possible. Don't show
80 // arrows and bubbles and don't allow navigate. 83 // arrows and bubbles and don't allow navigate.
81 BOOL canNavigate_; 84 BOOL canNavigate_;
82 85
83 // If |YES| arrowView_ is directionnal and must be rotated 180 degreed for the 86 // If |YES| arrowView_ is directionnal and must be rotated 180 degreed for the
84 // forward panes. 87 // forward panes.
85 BOOL rotateForward_; 88 BOOL rotateForward_;
86
87 base::mac::ObjCPropertyReleaser _propertyReleaser_SideSwipeNavigationView;
88 } 89 }
89 // Returns a newly allocated and configured selection circle shape. 90 // Returns a newly allocated and configured selection circle shape.
90 - (CAShapeLayer*)newSelectionCircleLayer; 91 - (CAShapeLayer*)newSelectionCircleLayer;
91 // Pushes the touch towards the edge because it's difficult to touch the very 92 // Pushes the touch towards the edge because it's difficult to touch the very
92 // edge of the screen (touches tend to sit near x ~ 4). 93 // edge of the screen (touches tend to sit near x ~ 4).
93 - (CGPoint)adjustPointToEdge:(CGPoint)point; 94 - (CGPoint)adjustPointToEdge:(CGPoint)point;
94 @end 95 @end
95 96
96 @implementation SideSwipeNavigationView 97 @implementation SideSwipeNavigationView
97 98
98 @synthesize targetView = targetView_; 99 @synthesize targetView = targetView_;
99 100
100 - (instancetype)initWithFrame:(CGRect)frame 101 - (instancetype)initWithFrame:(CGRect)frame
101 withDirection:(UISwipeGestureRecognizerDirection)direction 102 withDirection:(UISwipeGestureRecognizerDirection)direction
102 canNavigate:(BOOL)canNavigate 103 canNavigate:(BOOL)canNavigate
103 image:(UIImage*)image 104 image:(UIImage*)image
104 rotateForward:(BOOL)rotateForward { 105 rotateForward:(BOOL)rotateForward {
105 self = [super initWithFrame:frame]; 106 self = [super initWithFrame:frame];
106 if (self) { 107 if (self) {
107 _propertyReleaser_SideSwipeNavigationView.Init(
108 self, [SideSwipeNavigationView class]);
109 self.backgroundColor = [UIColor colorWithWhite:90.0 / 256 alpha:1.0]; 108 self.backgroundColor = [UIColor colorWithWhite:90.0 / 256 alpha:1.0];
110 109
111 canNavigate_ = canNavigate; 110 canNavigate_ = canNavigate;
112 rotateForward_ = rotateForward; 111 rotateForward_ = rotateForward;
113 if (canNavigate) { 112 if (canNavigate) {
114 image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 113 image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
115 const CGRect imageSize = CGRectMake(0, 0, 24, 24); 114 const CGRect imageSize = CGRectMake(0, 0, 24, 24);
116 arrowView_.reset([[UIImageView alloc] initWithImage:image]); 115 arrowView_ = [[UIImageView alloc] initWithImage:image];
117 [arrowView_ setTintColor:[UIColor whiteColor]]; 116 [arrowView_ setTintColor:[UIColor whiteColor]];
118 selectionCircleLayer_ = [self newSelectionCircleLayer]; 117 selectionCircleLayer_ = [self newSelectionCircleLayer];
119 [arrowView_ setFrame:imageSize]; 118 [arrowView_ setFrame:imageSize];
120 } 119 }
121 120
122 UIImage* shadowImage = 121 UIImage* shadowImage =
123 [UIImage imageNamed:@"side_swipe_navigation_content_shadow"]; 122 [UIImage imageNamed:@"side_swipe_navigation_content_shadow"];
124 CGRect borderFrame = 123 CGRect borderFrame =
125 CGRectMake(0, 0, shadowImage.size.width, self.frame.size.height); 124 CGRectMake(0, 0, shadowImage.size.width, self.frame.size.height);
126 base::scoped_nsobject<UIImageView> border( 125 UIImageView* border = [[UIImageView alloc] initWithFrame:borderFrame];
127 [[UIImageView alloc] initWithFrame:borderFrame]);
128 [border setImage:shadowImage]; 126 [border setImage:shadowImage];
129 [self addSubview:border]; 127 [self addSubview:border];
130 if (direction == UISwipeGestureRecognizerDirectionRight) { 128 if (direction == UISwipeGestureRecognizerDirectionRight) {
131 borderFrame.origin.x = frame.size.width - shadowImage.size.width; 129 borderFrame.origin.x = frame.size.width - shadowImage.size.width;
132 [border setFrame:borderFrame]; 130 [border setFrame:borderFrame];
133 [border setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin]; 131 [border setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin];
134 } else { 132 } else {
135 [border setTransform:CGAffineTransformMakeRotation(M_PI)]; 133 [border setTransform:CGAffineTransformMakeRotation(M_PI)];
136 [border setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin]; 134 [border setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin];
137 } 135 }
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 selectionCircleLayer.opacity = 0; 426 selectionCircleLayer.opacity = 0;
429 selectionCircleLayer.transform = 427 selectionCircleLayer.transform =
430 CATransform3DMakeScale(kSelectionDownScale, kSelectionDownScale, 1); 428 CATransform3DMakeScale(kSelectionDownScale, kSelectionDownScale, 1);
431 selectionCircleLayer.path = 429 selectionCircleLayer.path =
432 [[UIBezierPath bezierPathWithOvalInRect:bounds] CGPath]; 430 [[UIBezierPath bezierPathWithOvalInRect:bounds] CGPath];
433 431
434 return selectionCircleLayer; 432 return selectionCircleLayer;
435 } 433 }
436 434
437 @end 435 @end
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/side_swipe/side_swipe_navigation_view.h ('k') | ios/chrome/browser/ui/side_swipe/side_swipe_util.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698