Chromium Code Reviews| 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 |