| Index: webrtc/examples/objc/AppRTCMobile/ios/ARDSettingsViewController.m
|
| diff --git a/webrtc/examples/objc/AppRTCMobile/ios/ARDSettingsViewController.m b/webrtc/examples/objc/AppRTCMobile/ios/ARDSettingsViewController.m
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1df98926732bb45d8d89e50e54406a6469ad8059
|
| --- /dev/null
|
| +++ b/webrtc/examples/objc/AppRTCMobile/ios/ARDSettingsViewController.m
|
| @@ -0,0 +1,162 @@
|
| +/*
|
| + * Copyright 2016 The WebRTC Project Authors. All rights reserved.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license
|
| + * that can be found in the LICENSE file in the root of the source
|
| + * tree. An additional intellectual property rights grant can be found
|
| + * in the file PATENTS. All contributing project authors may
|
| + * be found in the AUTHORS file in the root of the source tree.
|
| + */
|
| +
|
| +#import "ARDSettingsViewController.h"
|
| +#import "ARDMediaConstraintsModel.h"
|
| +
|
| +NS_ASSUME_NONNULL_BEGIN
|
| +@interface ARDSettingsViewController () {
|
| + ARDMediaConstraintsModel *_mediaConstraintsModel;
|
| +}
|
| +
|
| +@end
|
| +
|
| +@implementation ARDSettingsViewController
|
| +
|
| +- (instancetype)initWithStyle:(UITableViewStyle)style
|
| + mediaConstraintsModel:(ARDMediaConstraintsModel *)mediaConstraintsModel {
|
| + self = [super initWithStyle:style];
|
| + if (self) {
|
| + _mediaConstraintsModel = mediaConstraintsModel;
|
| + }
|
| + return self;
|
| +}
|
| +
|
| +#pragma mark - View lifecycle
|
| +
|
| +- (void)viewDidLoad {
|
| + [super viewDidLoad];
|
| + self.title = @"Settings";
|
| + [self addDoneBarButton];
|
| +}
|
| +
|
| +- (void)viewDidAppear:(BOOL)animated {
|
| + [super viewDidAppear:animated];
|
| + [self selectCurrentlyStoredOrDefaultMediaConstraints];
|
| +}
|
| +
|
| +#pragma mark - Data source
|
| +
|
| +- (NSArray<NSString *> *)mediaConstraintsArray {
|
| + return _mediaConstraintsModel.availableVideoResoultionsMediaConstraints;
|
| +}
|
| +
|
| +#pragma mark -
|
| +
|
| +- (void)addDoneBarButton {
|
| + UIBarButtonItem *barItem =
|
| + [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
|
| + target:self
|
| + action:@selector(dismissModally:)];
|
| + self.navigationItem.leftBarButtonItem = barItem;
|
| +}
|
| +
|
| +- (void)selectCurrentlyStoredOrDefaultMediaConstraints {
|
| + NSString *currentSelection = [_mediaConstraintsModel currentVideoResoultionConstraintFromStore];
|
| +
|
| + NSUInteger indexOfSelection = [[self mediaConstraintsArray] indexOfObject:currentSelection];
|
| + NSIndexPath *pathToBeSelected = [NSIndexPath indexPathForRow:indexOfSelection inSection:0];
|
| + [self.tableView selectRowAtIndexPath:pathToBeSelected
|
| + animated:NO
|
| + scrollPosition:UITableViewScrollPositionNone];
|
| + // Manully invoke the delegate method because the previous invocation will not.
|
| + [self tableView:self.tableView didSelectRowAtIndexPath:pathToBeSelected];
|
| +}
|
| +
|
| +#pragma mark - Dismissal of view controller
|
| +
|
| +- (void)dismissModally:(id)sender {
|
| + [self dismissViewControllerAnimated:YES completion:nil];
|
| +}
|
| +
|
| +#pragma mark - Table view data source
|
| +
|
| +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
| + return 1;
|
| +}
|
| +
|
| +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
| + return self.mediaConstraintsArray.count;
|
| +}
|
| +
|
| +#pragma mark - Table view delegate
|
| +
|
| +- (BOOL)sectionIsMediaConstraints:(int)section {
|
| + return section == 0;
|
| +}
|
| +
|
| +- (BOOL)indexPathIsMediaConstraints:(NSIndexPath *)indexPath {
|
| + return [self sectionIsMediaConstraints:indexPath.section];
|
| +}
|
| +
|
| +- (nullable NSString *)tableView:(UITableView *)tableView
|
| + titleForHeaderInSection:(NSInteger)section {
|
| + if ([self sectionIsMediaConstraints:section]) {
|
| + return @"Media constraints";
|
| + }
|
| + return @"";
|
| +}
|
| +
|
| +- (UITableViewCell *)tableView:(UITableView *)tableView
|
| + cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
| + if ([self indexPathIsMediaConstraints:indexPath]) {
|
| + return [self mediaConstraintsTableViewCellForTableView:tableView atIndexPath:indexPath];
|
| + }
|
| + return [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
|
| + reuseIdentifier:@"identifier"];
|
| +}
|
| +
|
| +- (nullable NSIndexPath *)tableView:(UITableView *)tableView
|
| + willSelectRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
|
| + if ([self indexPathIsMediaConstraints:indexPath]) {
|
| + return [self tableView:tableView willDeselectMediaConstraintsRowAtIndexPath:indexPath];
|
| + }
|
| + return indexPath;
|
| +}
|
| +
|
| +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
| + if ([self indexPathIsMediaConstraints:indexPath]) {
|
| + [self tableView:tableView didSelectMediaConstraintsCellAtIndexPath:indexPath];
|
| + }
|
| +}
|
| +
|
| +#pragma mark - Table view delegate(Media Constraints)
|
| +
|
| +- (UITableViewCell *)mediaConstraintsTableViewCellForTableView:(UITableView *)tableView
|
| + atIndexPath:(NSIndexPath *)indexPath {
|
| + NSString *dequeueIdentifier = @"ARDSettingsMediaConstraintsViewCellIdentifier";
|
| + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:dequeueIdentifier];
|
| + if (!cell) {
|
| + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
|
| + reuseIdentifier:dequeueIdentifier];
|
| + }
|
| + cell.textLabel.text = self.mediaConstraintsArray[indexPath.row];
|
| + return cell;
|
| +}
|
| +
|
| +- (void)tableView:(UITableView *)tableView
|
| + didSelectMediaConstraintsCellAtIndexPath:(NSIndexPath *)indexPath {
|
| + UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
|
| + cell.accessoryType = UITableViewCellAccessoryCheckmark;
|
| +
|
| + NSString *mediaConstraintsString = self.mediaConstraintsArray[indexPath.row];
|
| + [_mediaConstraintsModel storeVideoResoultionConstraint:mediaConstraintsString];
|
| +}
|
| +
|
| +- (NSIndexPath *)tableView:(UITableView *)tableView
|
| + willDeselectMediaConstraintsRowAtIndexPath:(NSIndexPath *)indexPath {
|
| + NSIndexPath *oldSelection = [tableView indexPathForSelectedRow];
|
| + UITableViewCell *cell = [tableView cellForRowAtIndexPath:oldSelection];
|
| + cell.accessoryType = UITableViewCellAccessoryNone;
|
| + return indexPath;
|
| +}
|
| +
|
| +@end
|
| +NS_ASSUME_NONNULL_END
|
|
|