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

Unified Diff: ios/clean/chrome/browser/ui/tools/menu_view_controller.mm

Issue 2817203003: [ios clean] Functionality for menu overflow navigation buttons (Closed)
Patch Set: Refactor 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/clean/chrome/browser/ui/tools/menu_view_controller.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/clean/chrome/browser/ui/tools/menu_view_controller.mm
diff --git a/ios/clean/chrome/browser/ui/tools/menu_view_controller.mm b/ios/clean/chrome/browser/ui/tools/menu_view_controller.mm
index 0c2940a53a668ea7fbc9c8e2e51ade1e45b1b644..48f7e28f09cf83c29112ccfd3a6390224820dc79 100644
--- a/ios/clean/chrome/browser/ui/tools/menu_view_controller.mm
+++ b/ios/clean/chrome/browser/ui/tools/menu_view_controller.mm
@@ -9,6 +9,7 @@
#import "base/macros.h"
#import "ios/chrome/browser/ui/rtl_geometry.h"
#import "ios/clean/chrome/browser/ui/commands/find_in_page_visibility_commands.h"
+#import "ios/clean/chrome/browser/ui/commands/navigation_commands.h"
#import "ios/clean/chrome/browser/ui/commands/tools_menu_commands.h"
#import "ios/clean/chrome/browser/ui/toolbar/toolbar_button.h"
#import "ios/clean/chrome/browser/ui/tools/menu_overflow_controls_stackview.h"
@@ -26,6 +27,7 @@ const CGFloat kMenuItemHeight = 48;
}
@interface MenuViewController ()<ToolsActions>
+@property(nonatomic, strong) UIStackView* menuStackView;
@property(nonatomic, strong) NSArray<ToolsMenuItem*>* menuItems;
@property(nonatomic, strong)
MenuOverflowControlsStackView* toolbarOverflowStackView;
@@ -34,6 +36,7 @@ const CGFloat kMenuItemHeight = 48;
@implementation MenuViewController
@synthesize dispatcher = _dispatcher;
@synthesize menuItems = _menuItems;
+@synthesize menuStackView = _menuStackView;
@synthesize toolbarOverflowStackView = _toolbarOverflowStackView;
- (void)loadView {
@@ -50,6 +53,7 @@ const CGFloat kMenuItemHeight = 48;
NSMutableArray<UIButton*>* buttons =
[[NSMutableArray alloc] initWithCapacity:_menuItems.count];
+ // Load menu items.
for (ToolsMenuItem* item in _menuItems) {
UIButton* menuButton = [UIButton buttonWithType:UIButtonTypeSystem];
menuButton.translatesAutoresizingMaskIntoConstraints = NO;
@@ -59,7 +63,7 @@ const CGFloat kMenuItemHeight = 48;
[menuButton.titleLabel setFont:[MDCTypography subheadFont]];
[menuButton.titleLabel setTextAlignment:NSTextAlignmentNatural];
[menuButton addTarget:self
- action:@selector(closeToolsMenu:)
+ action:@selector(closeToolsMenu)
forControlEvents:UIControlEventTouchUpInside];
if (item.action) {
id target = (item.action == @selector(showFindInPage)) ? self : nil;
@@ -71,44 +75,61 @@ const CGFloat kMenuItemHeight = 48;
}
// Placeholder stack view to hold menu contents.
- UIStackView* menu = [[UIStackView alloc] initWithArrangedSubviews:buttons];
- menu.translatesAutoresizingMaskIntoConstraints = NO;
- menu.axis = UILayoutConstraintAxisVertical;
- menu.distribution = UIStackViewDistributionFillEqually;
- menu.alignment = UIStackViewAlignmentLeading;
+ self.menuStackView = [[UIStackView alloc] initWithArrangedSubviews:buttons];
+ self.menuStackView.translatesAutoresizingMaskIntoConstraints = NO;
+ self.menuStackView.axis = UILayoutConstraintAxisVertical;
+ self.menuStackView.distribution = UIStackViewDistributionFillEqually;
+ self.menuStackView.alignment = UIStackViewAlignmentLeading;
// Stack view to hold overflow ToolbarButtons.
if (self.traitCollection.horizontalSizeClass ==
UIUserInterfaceSizeClassCompact) {
- self.toolbarOverflowStackView =
- [[MenuOverflowControlsStackView alloc] init];
- // PLACEHOLDER: ToolsMenuButton might end up being part of the MenuVC's view
- // instead of the StackView. We are waiting confirmation on this.
- [self.toolbarOverflowStackView.toolsMenuButton
- addTarget:nil
- action:@selector(closeToolsMenu:)
- forControlEvents:UIControlEventTouchUpInside];
- [menu insertArrangedSubview:self.toolbarOverflowStackView atIndex:0];
- [NSLayoutConstraint activateConstraints:@[
- [self.toolbarOverflowStackView.leadingAnchor
- constraintEqualToAnchor:menu.leadingAnchor],
- [self.toolbarOverflowStackView.trailingAnchor
- constraintEqualToAnchor:menu.trailingAnchor],
- ]];
+ [self setUpOverFlowControlsStackView];
}
- [self.view addSubview:menu];
+ // Setup constraints.
+ [self.view addSubview:self.menuStackView];
[NSLayoutConstraint activateConstraints:@[
- [menu.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor],
- [menu.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor],
- [menu.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor],
- [menu.topAnchor constraintEqualToAnchor:self.view.topAnchor],
+ [self.menuStackView.leadingAnchor
+ constraintEqualToAnchor:self.view.leadingAnchor],
+ [self.menuStackView.trailingAnchor
+ constraintEqualToAnchor:self.view.trailingAnchor],
+ [self.menuStackView.bottomAnchor
+ constraintEqualToAnchor:self.view.bottomAnchor],
+ [self.menuStackView.topAnchor constraintEqualToAnchor:self.view.topAnchor],
+ ]];
+}
+
+- (void)setUpOverFlowControlsStackView {
+ self.toolbarOverflowStackView = [[MenuOverflowControlsStackView alloc] init];
+ // PLACEHOLDER: ToolsMenuButton might end up being part of the MenuVC's view
+ // instead of the StackView. We are waiting confirmation on this.
+ [self.toolbarOverflowStackView.toolsMenuButton
+ addTarget:nil
lpromero 2017/04/18 09:34:11 This uses nil-targeting but not the others. Consid
sczs 2017/04/19 22:49:00 Good catch. Done.
+ action:@selector(closeToolsMenu)
+ forControlEvents:UIControlEventTouchUpInside];
+ [self.toolbarOverflowStackView.reloadButton
+ addTarget:self
+ action:@selector(reloadPage)
+ forControlEvents:UIControlEventTouchUpInside];
+ [self.toolbarOverflowStackView.stopButton
+ addTarget:self
+ action:@selector(stopLoadingPage)
+ forControlEvents:UIControlEventTouchUpInside];
+
+ [self.menuStackView insertArrangedSubview:self.toolbarOverflowStackView
+ atIndex:0];
+ [NSLayoutConstraint activateConstraints:@[
+ [self.toolbarOverflowStackView.leadingAnchor
+ constraintEqualToAnchor:self.menuStackView.leadingAnchor],
+ [self.toolbarOverflowStackView.trailingAnchor
+ constraintEqualToAnchor:self.menuStackView.trailingAnchor],
]];
}
#pragma mark - ToolsMenuCommands
-- (void)closeToolsMenu:(id)sender {
+- (void)closeToolsMenu {
[self.dispatcher closeToolsMenu];
}
@@ -116,6 +137,18 @@ const CGFloat kMenuItemHeight = 48;
[self.dispatcher showFindInPage];
lpromero 2017/04/18 09:34:11 Should this also close the tools menu if opened?
marq (ping after 24h) 2017/04/18 12:11:23 It does already; all of the regular menu buttons h
lpromero 2017/04/18 12:12:16 Acknowledged.
}
+#pragma mark - NavigationCommands
+
+- (void)reloadPage {
+ [self.dispatcher reloadPage];
+ [self closeToolsMenu];
marq (ping after 24h) 2017/04/18 12:11:23 Please follow the pattern of the other menu contro
sczs 2017/04/19 22:49:00 Done.
+}
+
+- (void)stopLoadingPage {
+ [self.dispatcher stopLoadingPage];
+ [self closeToolsMenu];
+}
+
#pragma mark - Tools Consumer
- (void)setToolsMenuItems:(NSArray*)menuItems {
« no previous file with comments | « ios/clean/chrome/browser/ui/tools/menu_view_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698