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

Unified Diff: ios/chrome/browser/infobars/infobar_picker_view.mm

Issue 2107743002: Add InfoBarPickerController for displaying a picker view from an infobar (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@update_passwords_strings
Patch Set: Created 4 years, 6 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
Index: ios/chrome/browser/infobars/infobar_picker_view.mm
diff --git a/ios/chrome/browser/infobars/infobar_picker_view.mm b/ios/chrome/browser/infobars/infobar_picker_view.mm
new file mode 100644
index 0000000000000000000000000000000000000000..1fdf0d733fc064a6635718277c166c24652fcf29
--- /dev/null
+++ b/ios/chrome/browser/infobars/infobar_picker_view.mm
@@ -0,0 +1,93 @@
+// Copyright 2016 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/infobars/infobar_picker_view.h"
+
+#import "base/mac/objc_property_releaser.h"
+#import "ios/chrome/browser/ui/uikit_ui_util.h"
+
+@interface InfoBarPickerView () {
+ id<InfoBarPickerViewDelegate> _delegate; // weak
+ base::mac::ObjCPropertyReleaser _propertyReleaser_InfoBarPickerView;
+}
+
+@end
+
+@implementation InfoBarPickerView
+
+@synthesize navigationBar = _navigationBar;
+@synthesize pickerView = _pickerView;
+
+- (instancetype)initWithFrame:(CGRect)frame {
+ if (self = [super initWithFrame:frame]) {
+ _propertyReleaser_InfoBarPickerView.Init(self, [InfoBarPickerView class]);
+ self.backgroundColor = [UIColor whiteColor];
+
+ _pickerView = [[UIPickerView alloc] initWithFrame:CGRectZero];
+ [_pickerView setShowsSelectionIndicator:YES];
+
+ _navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectZero];
+ UIBarButtonItem* doneButton = [[[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemDone
+ target:self
marq (ping after 24h) 2016/06/28 13:43:18 Better to set a target of nil, so the action will
+ action:@selector(doneButtonPressed)] autorelease];
+ UIBarButtonItem* cancelButton = [[[UIBarButtonItem alloc]
+ initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
+ target:self
+ action:@selector(cancelButtonPressed)]
+ autorelease];
+ UINavigationItem* navigationItem =
+ [[UINavigationItem alloc] initWithTitle:@""];
+ [navigationItem setRightBarButtonItem:doneButton];
+ [navigationItem setLeftBarButtonItem:cancelButton];
+ [navigationItem setHidesBackButton:YES];
+ [_navigationBar pushNavigationItem:navigationItem animated:NO];
+
+ _pickerView.translatesAutoresizingMaskIntoConstraints = NO;
+ _navigationBar.translatesAutoresizingMaskIntoConstraints = NO;
+ UIStackView* stackView = [[[UIStackView alloc]
+ initWithArrangedSubviews:@[ _navigationBar, _pickerView ]] autorelease];
+ stackView.axis = UILayoutConstraintAxisVertical;
+ stackView.translatesAutoresizingMaskIntoConstraints = NO;
+
+ [self addSubview:stackView];
+ AddSameSizeConstraint(stackView, self);
+ AddSameCenterConstraints(stackView, self);
+ }
+ return self;
+}
+
+- (void)setDelegate:(id<InfoBarPickerViewDelegate>)delegate {
+ _delegate = delegate;
+}
+
+- (id<InfoBarPickerViewDelegate>)delegate {
+ return _delegate;
+}
+
+- (void)setPickerDelegate:(id<UIPickerViewDelegate>)pickerDelegate {
+ _pickerView.delegate = pickerDelegate;
+}
+
+- (id<UIPickerViewDelegate>)pickerDelegate {
+ return _pickerView.delegate;
+}
+
+- (void)setPickerDataSource:(id<UIPickerViewDataSource>)pickerDataSource {
+ _pickerView.dataSource = pickerDataSource;
+}
+
+- (id<UIPickerViewDataSource>)pickerDataSource {
+ return _pickerView.dataSource;
+}
+
+- (void)doneButtonPressed {
+ [_delegate infoBarPickerViewPressedDone:self];
+}
+
+- (void)cancelButtonPressed {
+ [_delegate infoBarPickerViewPressedCancel:self];
+}
+
+@end

Powered by Google App Engine
This is Rietveld 408576698