| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "content/browser/date_time_chooser/ios/date_time_chooser_coordinator.h" |
| |
| #import "content/browser/date_time_chooser/ios/date_time_chooser_mediator.h" |
| #import "content/browser/date_time_chooser/ios/date_time_chooser_view_controller.h" |
| #import "ui/gfx/native_widget_types.h" |
| |
| @interface DateTimeChooserCoordinator () |
| // The controller that has UI components. |
| @property(nonatomic, strong) |
| DateTimeChooserViewController* dateTimeChooserController; |
| |
| // The mediator that has DateTimeChooser. |
| @property(nonatomic, strong) DateTimeChooserMediator* dateTimeChooserMediator; |
| @end |
| |
| @implementation DateTimeChooserCoordinator |
| |
| - (instancetype)initWithDateTimeChooser:(content::DateTimeChooserIOS*)chooser |
| configs:(DateTimeDialogValuePtr)configs |
| baseViewController:(UIViewController*)baseViewController { |
| if (!(self = [super init])) { |
| return nil; |
| } |
| _dateTimeChooserMediator = |
| [[DateTimeChooserMediator alloc] initWithDateTimeChooser:chooser]; |
| |
| _dateTimeChooserController = [[DateTimeChooserViewController alloc] |
| initWithConfigs:std::move(configs)]; |
| _dateTimeChooserController.delegate = _dateTimeChooserMediator; |
| _dateTimeChooserController.view.backgroundColor = [UIColor whiteColor]; |
| _dateTimeChooserController.modalInPresentation = true; |
| _dateTimeChooserController.modalPresentationStyle = |
| UIModalPresentationPopover; |
| _dateTimeChooserController.popoverPresentationController.delegate = |
| _dateTimeChooserController; |
| _dateTimeChooserController.popoverPresentationController.sourceView = |
| baseViewController.view; |
| _dateTimeChooserController.popoverPresentationController.sourceRect = |
| baseViewController.view.bounds; |
| |
| [baseViewController presentViewController:_dateTimeChooserController |
| animated:true |
| completion:nil]; |
| return self; |
| } |
| |
| @end |