summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLOfflineStorage.mm
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2017-02-17 12:18:49 +0100
committerKonstantin Käfer <mail@kkaefer.com>2017-02-20 14:36:27 +0100
commit6c0310209de9d6721d6fb9391c43df6cb9962e22 (patch)
tree1c67720cdc6b4fad7ebc637a8ae24ef3658e2f0a /platform/darwin/src/MGLOfflineStorage.mm
parent03a14ff0003e976a4ded70d284bc80adf54bc6c9 (diff)
downloadqtlocation-mapboxgl-6c0310209de9d6721d6fb9391c43df6cb9962e22.tar.gz
[macos,ios] expose callback for transforming URLs
Diffstat (limited to 'platform/darwin/src/MGLOfflineStorage.mm')
-rw-r--r--platform/darwin/src/MGLOfflineStorage.mm44
1 files changed, 44 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLOfflineStorage.mm b/platform/darwin/src/MGLOfflineStorage.mm
index af0f592902..64f9111f14 100644
--- a/platform/darwin/src/MGLOfflineStorage.mm
+++ b/platform/darwin/src/MGLOfflineStorage.mm
@@ -42,9 +42,53 @@ NSString * const MGLOfflinePackMaximumCountUserInfoKey = MGLOfflinePackUserInfoK
sharedOfflineStorage = [[self alloc] init];
[sharedOfflineStorage reloadPacks];
});
+
return sharedOfflineStorage;
}
+- (void)setDelegate:(id<MGLOfflineStorageDelegate>)newValue {
+ _delegate = newValue;
+ if ([self.delegate respondsToSelector:@selector(offlineStorage:URLForResourceOfKind:withURL:)]) {
+ _mbglFileSource->setResourceTransform([offlineStorage = self](auto kind_, std::string&& url_) -> std::string {
+ NSURL* url =
+ [NSURL URLWithString:[[NSString alloc] initWithBytes:url_.data()
+ length:url_.length()
+ encoding:NSUTF8StringEncoding]];
+ MGLResourceKind kind = MGLResourceKindUnknown;
+ switch (kind_) {
+ case mbgl::Resource::Kind::Tile:
+ kind = MGLResourceKindTile;
+ break;
+ case mbgl::Resource::Kind::Glyphs:
+ kind = MGLResourceKindGlyphs;
+ break;
+ case mbgl::Resource::Kind::Style:
+ kind = MGLResourceKindStyle;
+ break;
+ case mbgl::Resource::Kind::Source:
+ kind = MGLResourceKindSource;
+ break;
+ case mbgl::Resource::Kind::SpriteImage:
+ kind = MGLResourceKindSpriteImage;
+ break;
+ case mbgl::Resource::Kind::SpriteJSON:
+ kind = MGLResourceKindSpriteJSON;
+ break;
+ case mbgl::Resource::Kind::Unknown:
+ kind = MGLResourceKindUnknown;
+ break;
+
+ }
+ url = [offlineStorage.delegate offlineStorage:offlineStorage
+ URLForResourceOfKind:kind
+ withURL:url];
+ return url.absoluteString.UTF8String;
+ });
+ } else {
+ _mbglFileSource->setResourceTransform(nullptr);
+ }
+}
+
/**
Returns the file URL to the offline cache, with the option to omit the private
subdirectory for legacy (v3.2.0 - v3.2.3) migration purposes.