summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Wray <jason@kulturny.com>2015-05-10 22:49:58 -0700
committerMinh Nguyễn <mxn@1ec5.org>2017-04-01 19:58:09 -0700
commit228bff76020c48299a393fb324ff1fead06aeefb (patch)
tree777ab2b221ee1e27ca73a8aba9093c19a5784272
parentaa3db60300eecc52b21e4b38c70bd89566daa95f (diff)
downloadqtlocation-mapboxgl-228bff76020c48299a393fb324ff1fead06aeefb.tar.gz
[ios] Replaced UIActionSheet, UIAlertView with UIAlertController
-rw-r--r--platform/ios/src/MGLMapView.mm160
1 files changed, 88 insertions, 72 deletions
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm
index 6ce41d6fb4..79467a065f 100644
--- a/platform/ios/src/MGLMapView.mm
+++ b/platform/ios/src/MGLMapView.mm
@@ -220,10 +220,8 @@ public:
@interface MGLMapView () <UIGestureRecognizerDelegate,
GLKViewDelegate,
CLLocationManagerDelegate,
- UIActionSheetDelegate,
SMCalloutViewDelegate,
MGLCalloutViewDelegate,
- UIAlertViewDelegate,
MGLMultiPointDelegate,
MGLAnnotationImageDelegate>
@@ -236,7 +234,6 @@ public:
@property (nonatomic) NS_MUTABLE_ARRAY_OF(NSLayoutConstraint *) *logoViewConstraints;
@property (nonatomic, readwrite) UIButton *attributionButton;
@property (nonatomic) NS_MUTABLE_ARRAY_OF(NSLayoutConstraint *) *attributionButtonConstraints;
-@property (nonatomic) UIActionSheet *attributionSheet;
@property (nonatomic, readwrite) MGLStyle *style;
@property (nonatomic) UITapGestureRecognizer *singleTapGestureRecognizer;
@property (nonatomic) UIPanGestureRecognizer *pan;
@@ -312,8 +309,6 @@ public:
MGLCompassDirectionFormatter *_accessibilityCompassFormatter;
- NS_ARRAY_OF(MGLAttributionInfo *) *_attributionInfos;
-
MGLReachability *_reachability;
}
@@ -897,11 +892,6 @@ public:
_mbglMap->setSize([self size]);
}
- if (self.attributionSheet.visible)
- {
- [self.attributionSheet dismissWithClickedButtonIndex:self.attributionSheet.cancelButtonIndex animated:YES];
- }
-
if (self.compassView.alpha)
{
[self updateHeadingForDeviceOrientation];
@@ -1881,82 +1871,108 @@ public:
- (void)showAttribution
{
- self.attributionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedStringWithDefaultValue(@"SDK_NAME", nil, nil, @"Mapbox iOS SDK", @"Action sheet title")
- delegate:self
- cancelButtonTitle:NSLocalizedStringWithDefaultValue(@"CANCEL", nil, nil, @"Cancel", @"")
- destructiveButtonTitle:nil
- otherButtonTitles:nil];
-
- _attributionInfos = [self.style attributionInfosWithFontSize:[UIFont buttonFontSize] linkColor:nil];
- for (MGLAttributionInfo *info in _attributionInfos)
+ NSString *title = NSLocalizedStringWithDefaultValue(@"SDK_NAME", nil, nil, @"Mapbox iOS SDK", @"Action sheet title");
+ UIAlertController *attributionController = [UIAlertController alertControllerWithTitle:title
+ message:nil
+ preferredStyle:UIAlertControllerStyleActionSheet];
+
+ NSArray *attributionInfos = [self.style attributionInfosWithFontSize:[UIFont buttonFontSize]
+ linkColor:nil];
+ for (MGLAttributionInfo *info in attributionInfos)
{
NSString *title = [info.title.string mgl_titleCasedStringWithLocale:[NSLocale currentLocale]];
- [self.attributionSheet addButtonWithTitle:title];
- }
-
- [self.attributionSheet addButtonWithTitle:NSLocalizedStringWithDefaultValue(@"TELEMETRY_NAME", nil, nil, @"Mapbox Telemetry", @"Action in attribution sheet")];
-
- [self.attributionSheet showFromRect:self.attributionButton.frame inView:self animated:YES];
-}
-
-- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
-{
- if (buttonIndex == actionSheet.numberOfButtons - 1)
- {
- NSString *message;
- NSString *participate;
- NSString *optOut;
-
- if ([[NSUserDefaults standardUserDefaults] boolForKey:@"MGLMapboxMetricsEnabled"])
- {
- message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_MSG", nil, nil, @"You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
- participate = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_ON", nil, nil, @"Keep Participating", @"Telemetry prompt button");
- optOut = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_OFF", nil, nil, @"Stop Participating", @"Telemetry prompt button");
- }
- else
- {
- message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_MSG", nil, nil, @"You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
- participate = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_ON", nil, nil, @"Participate", @"Telemetry prompt button");
- optOut = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_OFF", nil, nil, @"Don’t Participate", @"Telemetry prompt button");
- }
-
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedStringWithDefaultValue(@"TELEMETRY_TITLE", nil, nil, @"Make Mapbox Maps Better", @"Telemetry prompt title")
- message:message
- delegate:self
- cancelButtonTitle:participate
- otherButtonTitles:NSLocalizedStringWithDefaultValue(@"TELEMETRY_MORE", nil, nil, @"Tell Me More", @"Telemetry prompt button"), optOut, nil];
- [alert show];
- }
- else if (buttonIndex > 0)
- {
- MGLAttributionInfo *info = _attributionInfos[buttonIndex + actionSheet.firstOtherButtonIndex];
- NSURL *url = info.URL;
- if (url)
- {
- if (info.feedbackLink)
+ UIAlertAction *action = [UIAlertAction actionWithTitle:title
+ style:UIAlertActionStyleDefault
+ handler:^(UIAlertAction * _Nonnull action) {
+ NSURL *url = info.URL;
+ if (url)
{
- url = [info feedbackURLAtCenterCoordinate:self.centerCoordinate zoomLevel:self.zoomLevel];
+ if (info.feedbackLink)
+ {
+ url = [info feedbackURLAtCenterCoordinate:self.centerCoordinate
+ zoomLevel:self.zoomLevel];
+ }
+ [[UIApplication sharedApplication] openURL:url];
}
- [[UIApplication sharedApplication] openURL:url];
- }
+ }];
+ [attributionController addAction:action];
+ }
+
+ NSString *telemetryTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_NAME", nil, nil, @"Mapbox Telemetry", @"Action in attribution sheet");
+ UIAlertAction *telemetryAction = [UIAlertAction actionWithTitle:telemetryTitle
+ style:UIAlertActionStyleDefault
+ handler:^(UIAlertAction * _Nonnull action) {
+ [self presentTelemetryAlertController];
+ }];
+ [attributionController addAction:telemetryAction];
+
+ NSString *cancelTitle = NSLocalizedStringWithDefaultValue(@"CANCEL", nil, nil, @"Cancel", @"");
+ UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelTitle
+ style:UIAlertActionStyleCancel
+ handler:NULL];
+ [attributionController addAction:cancelAction];
+
+ attributionController.popoverPresentationController.sourceView = self;
+ attributionController.popoverPresentationController.sourceRect = self.attributionButton.frame;
+
+ UIViewController *viewController = self.window.rootViewController;
+ if ([viewController isKindOfClass:[UINavigationController class]]) {
+ viewController = [(UINavigationController *)viewController viewControllers].firstObject;
}
+ [viewController presentViewController:attributionController
+ animated:YES
+ completion:NULL];
}
-- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
+- (void)presentTelemetryAlertController
{
- if (buttonIndex == alertView.cancelButtonIndex)
+ NSString *title = NSLocalizedStringWithDefaultValue(@"TELEMETRY_TITLE", nil, nil, @"Make Mapbox Maps Better", @"Telemetry prompt title");
+ NSString *message;
+ NSString *participateTitle;
+ NSString *declineTitle;
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"MGLMapboxMetricsEnabled"])
{
- [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MGLMapboxMetricsEnabled"];
+ message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_MSG", nil, nil, @"You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
+ participateTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_ON", nil, nil, @"Keep Participating", @"Telemetry prompt button");
+ declineTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_ENABLED_OFF", nil, nil, @"Stop Participating", @"Telemetry prompt button");
}
- else if (buttonIndex == alertView.firstOtherButtonIndex)
+ else
{
+ message = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_MSG", nil, nil, @"You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data.", @"Telemetry prompt message");
+ participateTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_ON", nil, nil, @"Participate", @"Telemetry prompt button");
+ declineTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_DISABLED_OFF", nil, nil, @"Don’t Participate", @"Telemetry prompt button");
+ }
+
+ UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
+ message:message
+ preferredStyle:UIAlertControllerStyleAlert];
+
+ NSString *moreTitle = NSLocalizedStringWithDefaultValue(@"TELEMETRY_MORE", nil, nil, @"Tell Me More", @"Telemetry prompt button");
+ UIAlertAction *moreAction = [UIAlertAction actionWithTitle:moreTitle
+ style:UIAlertActionStyleDefault
+ handler:^(UIAlertAction * _Nonnull action) {
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"https://www.mapbox.com/telemetry/"]];
- }
- else if (buttonIndex == alertView.firstOtherButtonIndex + 1)
- {
+ }];
+ [alertController addAction:moreAction];
+
+ UIAlertAction *declineAction = [UIAlertAction actionWithTitle:declineTitle
+ style:UIAlertActionStyleDefault
+ handler:^(UIAlertAction * _Nonnull action) {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MGLMapboxMetricsEnabled"];
- }
+ }];
+ [alertController addAction:declineAction];
+
+ UIAlertAction *participateAction = [UIAlertAction actionWithTitle:participateTitle
+ style:UIAlertActionStyleCancel
+ handler:^(UIAlertAction * _Nonnull action) {
+ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MGLMapboxMetricsEnabled"];
+ }];
+ [alertController addAction:participateAction];
+
+ [self.window.rootViewController presentViewController:alertController
+ animated:YES
+ completion:NULL];
}
#pragma mark - Properties -