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

Side by Side Diff: ios/chrome/browser/ui/no_tabs/no_tabs_toolbar_controller.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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "ios/chrome/browser/ui/no_tabs/no_tabs_toolbar_controller.h"
6
7 #include "base/mac/scoped_nsobject.h"
8 #import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h"
9 #include "ios/chrome/browser/ui/commands/ios_command_ids.h"
10 #import "ios/chrome/browser/ui/rtl_geometry.h"
11 #include "ios/chrome/browser/ui/toolbar/new_tab_button.h"
12 #import "ios/chrome/browser/ui/uikit_ui_util.h"
13 #import "ui/gfx/ios/uikit_util.h"
14
15 namespace {
16
17 const CGFloat kNewTabButtonLeading = 8;
18 const CGFloat kModeToggleWidth = 34;
19 const CGFloat kModeToggleHeight = 38;
20
21 } // end namespace
22
23 @interface NoTabsToolbarController () {
24 // Top-level view for notabs-specific content.
25 base::scoped_nsobject<UIView> _noTabsToolbar;
26 base::scoped_nsobject<UIButton> _buttonNewTab;
27 base::scoped_nsobject<UIButton> _modeToggleButton;
28 }
29
30 @end
31
32 @implementation NoTabsToolbarController
33
34 - (instancetype)initWithNoTabs {
35 self = [super initWithStyle:ToolbarControllerStyleDarkMode];
36 if (self) {
37 _noTabsToolbar.reset([[UIView alloc] initWithFrame:self.view.bounds]);
38 [_noTabsToolbar setBackgroundColor:[UIColor clearColor]];
39 [_noTabsToolbar setAutoresizingMask:UIViewAutoresizingFlexibleWidth |
40 UIViewAutoresizingFlexibleBottomMargin];
41
42 // Resize the container to match the available area.
43 // Do this before the layouts of subviews are computed.
44 [_noTabsToolbar setFrame:[self specificControlsArea]];
45
46 CGFloat boundingHeight = [_noTabsToolbar bounds].size.height;
47 CGFloat boundingWidth = [_noTabsToolbar bounds].size.width;
48 LayoutRect newTabButtonLayout = LayoutRectMake(
49 kNewTabButtonLeading, boundingWidth, 0, boundingHeight, boundingHeight);
50 _buttonNewTab.reset([[NewTabButton alloc]
51 initWithFrame:LayoutRectGetRect(newTabButtonLayout)]);
52 [_buttonNewTab
53 setAutoresizingMask:UIViewAutoresizingFlexibleTrailingMargin()];
54
55 LayoutRect modeToggleButtonLayout = LayoutRectMake(
56 boundingWidth - kModeToggleWidth - boundingHeight, boundingWidth,
57 ui::AlignValueToUpperPixel((boundingHeight - kModeToggleHeight) / 2),
58 kModeToggleWidth, kModeToggleHeight);
59
60 _modeToggleButton.reset([[UIButton alloc]
61 initWithFrame:LayoutRectGetRect(modeToggleButtonLayout)]);
62 [_modeToggleButton setHidden:YES];
63 [_modeToggleButton
64 setAutoresizingMask:UIViewAutoresizingFlexibleLeadingMargin()];
65 [_modeToggleButton setImageEdgeInsets:UIEdgeInsetsMakeDirected(7, 5, 7, 5)];
66 [_modeToggleButton setImage:[UIImage imageNamed:@"tabstrip_switch"]
67 forState:UIControlStateNormal];
68 [_modeToggleButton setTag:IDC_SWITCH_BROWSER_MODES];
69 [_modeToggleButton addTarget:self
70 action:@selector(recordUserMetrics:)
71 forControlEvents:UIControlEventTouchUpInside];
72 [_modeToggleButton addTarget:_modeToggleButton
73 action:@selector(chromeExecuteCommand:)
74 forControlEvents:UIControlEventTouchUpInside];
75
76 // The toolbar background is not supposed to show in the no-tabs UI.
77 [self.backgroundView setHidden:YES];
78
79 [self.view addSubview:_noTabsToolbar];
80 [_noTabsToolbar addSubview:_buttonNewTab];
81 [_noTabsToolbar addSubview:_modeToggleButton];
82
83 self.shadowView.hidden = YES;
84 }
85 return self;
86 }
87
88 // Applies the given transform to this toolbar's controls.
89 - (void)setControlsTransform:(CGAffineTransform)transform {
90 [self setStandardControlsTransform:transform];
91 [_buttonNewTab setTransform:transform];
92 [_modeToggleButton setTransform:transform];
93 }
94
95 // Shows or hides the mode toggle switch.
96 - (void)setHasModeToggleSwitch:(BOOL)hasModeToggle {
97 [_modeToggleButton setHidden:!hasModeToggle];
98 }
99
100 // Called when a button is pressed.
101 - (void)recordUserMetrics:(id)sender {
102 if (sender == _buttonNewTab.get()) {
103 // TODO(rohitrao): Record metrics. http://crbug.com/437418
104 } else if (sender == _modeToggleButton.get()) {
105 // TODO(rohitrao): Record metrics. http://crbug.com/437418
106 } else {
107 [super recordUserMetrics:sender];
108 }
109 }
110
111 - (UIButton*)modeToggleButton {
112 return _modeToggleButton;
113 }
114
115 @end
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/no_tabs/no_tabs_toolbar_controller.h ('k') | ios/chrome/browser/ui/ntp/centering_scrollview.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698