diff --git a/Sources/Controllers/Map/OAMapHudViewController.mm b/Sources/Controllers/Map/OAMapHudViewController.mm index f706af0ebe..f85b4933f3 100644 --- a/Sources/Controllers/Map/OAMapHudViewController.mm +++ b/Sources/Controllers/Map/OAMapHudViewController.mm @@ -1253,8 +1253,8 @@ - (void) onDownloadTaskProgressChanged:(id)observer withKe [self.view insertSubview:self.downloadView aboveSubview:self.searchButton]; } - if (![_downloadView.titleView.text isEqualToString:task.name]) - [_downloadView setTitle: task.name]; + if (![_downloadView.titleView.text isEqualToString:task.title]) + [_downloadView setTitle: task.title]; [self.downloadView setProgress:[value floatValue]]; diff --git a/Sources/DownloadsManager/OADownloadTask.h b/Sources/DownloadsManager/OADownloadTask.h index 39555f2461..2f67f472d8 100644 --- a/Sources/DownloadsManager/OADownloadTask.h +++ b/Sources/DownloadsManager/OADownloadTask.h @@ -29,6 +29,7 @@ typedef NS_ENUM(NSInteger, OADownloadTaskState) { @property(readonly) NSString* targetPath; @property(readonly) NSString* key; @property(readonly) NSString* name; +@property(nonatomic) NSString* title; @property(readonly) BOOL hidden; @property(readonly) NSTimeInterval downloadTime; @property(readonly) CGFloat fileSize; // in MB diff --git a/Sources/DownloadsManager/OADownloadTask_AFURLSessionManager.h b/Sources/DownloadsManager/OADownloadTask_AFURLSessionManager.h index b2169cbe39..30bddc0be1 100644 --- a/Sources/DownloadsManager/OADownloadTask_AFURLSessionManager.h +++ b/Sources/DownloadsManager/OADownloadTask_AFURLSessionManager.h @@ -34,6 +34,7 @@ andHidden:(BOOL)hidden; @property(readonly) NSURLSessionDownloadTask* task; +@property(nonatomic) NSString *title; @property(nonatomic) id resourceItem; @property(nonatomic) NSDate *creationTime; diff --git a/Sources/DownloadsManager/OADownloadTask_AFURLSessionManager.m b/Sources/DownloadsManager/OADownloadTask_AFURLSessionManager.m index 8261d7b00b..0bbce1cfea 100644 --- a/Sources/DownloadsManager/OADownloadTask_AFURLSessionManager.m +++ b/Sources/DownloadsManager/OADownloadTask_AFURLSessionManager.m @@ -222,6 +222,21 @@ - (NSURLResponse*)response @synthesize name = _name; @synthesize hidden = _hidden; +//- (NSString *) name +//{ +// return _name; +//} +// +//- (void) setName:(NSString *)name +//{ +// _name = name; +//} + +- (NSString *) title +{ + return _title ? _title : _name; +} + - (OADownloadTaskState)state { switch (_task.state) diff --git a/Sources/Helpers/DownloadingListHelper/DownloadingListHelper.swift b/Sources/Helpers/DownloadingListHelper/DownloadingListHelper.swift index 75f42f84ad..85e34cbed9 100644 --- a/Sources/Helpers/DownloadingListHelper/DownloadingListHelper.swift +++ b/Sources/Helpers/DownloadingListHelper/DownloadingListHelper.swift @@ -61,7 +61,7 @@ final class DownloadingListHelper: NSObject, DownloadingCellResourceHelperDelega var title = localizedString("downloading") + ": " let tasks = getDownloadingTasks() if let downloadingTask = tasks.first(where: { $0.state == .running }) { - title += downloadingTask.name + title += downloadingTask.title } cell.textView.text = title diff --git a/Sources/Helpers/DownloadingListHelper/DownloadingListViewController.swift b/Sources/Helpers/DownloadingListHelper/DownloadingListViewController.swift index b743a2e808..f46885756c 100644 --- a/Sources/Helpers/DownloadingListHelper/DownloadingListViewController.swift +++ b/Sources/Helpers/DownloadingListHelper/DownloadingListViewController.swift @@ -58,7 +58,7 @@ final class DownloadingListViewController: OABaseNavbarViewController, Downloadi if let resourceItem = OAResourcesUISwiftHelper.getResourceFrom(task) { let row = section.createNewRow() row.cellType = DownloadingCell.reuseIdentifier - row.title = task.name + row.title = task.title let resourceId = task.key.replacingOccurrences(of: "resource:", with: "") row.setObj(resourceId, forKey: "resourceId") row.setObj(resourceItem, forKey: "item") diff --git a/Sources/Helpers/OAResourcesInstaller.mm b/Sources/Helpers/OAResourcesInstaller.mm index 385fa9ca68..a0bf8a8538 100644 --- a/Sources/Helpers/OAResourcesInstaller.mm +++ b/Sources/Helpers/OAResourcesInstaller.mm @@ -397,6 +397,7 @@ - (void) processResource:(id)task { // Handle custom resources BOOL failed = [self.class installCustomResource:localPath resourceId:nsResourceId fileName:task.name hidden:task.hidden]; + if (failed) { task.installResourceRetry++; diff --git a/Sources/Helpers/OAResourcesUIHelper.mm b/Sources/Helpers/OAResourcesUIHelper.mm index a964a8fe6f..792dddde31 100644 --- a/Sources/Helpers/OAResourcesUIHelper.mm +++ b/Sources/Helpers/OAResourcesUIHelper.mm @@ -1311,14 +1311,14 @@ + (void) startDownloadOfCustomItem:(OACustomResourceItem *)item { if (item.downloadUrl) { - NSString *name = [item getVisibleName]; - if (!name) - { - name = item.title; - if (item.subfolder && item.subfolder.length > 0) - name = [item.subfolder stringByAppendingPathComponent:name]; - } - + NSString *fileName = item.title; + if (item.subfolder && item.subfolder.length > 0) + fileName = [item.subfolder stringByAppendingPathComponent:fileName]; + + NSString *taskTitle = [item getVisibleName]; + if (!taskTitle) + taskTitle = fileName; + if ([item.downloadUrl hasPrefix:@"@"]) { NSString *relPath = [item.downloadUrl substringFromIndex:1]; @@ -1326,7 +1326,7 @@ + (void) startDownloadOfCustomItem:(OACustomResourceItem *)item if (pluginPath.length > 0 && relPath.length > 0) { NSString *srcFilePath = [pluginPath stringByAppendingPathComponent:relPath]; - BOOL failed = [OAResourcesInstaller installCustomResource:srcFilePath resourceId:srcFilePath.lastPathComponent fileName:name hidden:item.hidden]; + BOOL failed = [OAResourcesInstaller installCustomResource:srcFilePath resourceId:srcFilePath.lastPathComponent fileName:fileName hidden:item.hidden]; if (!failed) [OsmAndApp.instance.localResourcesChangedObservable notifyEvent]; } @@ -1342,9 +1342,10 @@ + (void) startDownloadOfCustomItem:(OACustomResourceItem *)item OsmAndAppInstance app = [OsmAndApp instance]; id task = [app.downloadsManager downloadTaskWithRequest:request andKey:[@"resource:" stringByAppendingString:item.resourceId.toNSString()] - andName:name + andName:fileName andHidden:item.hidden]; + task.title = taskTitle; task.resourceItem = item; task.creationTime = [NSDate now]; diff --git a/Sources/Helpers/OAResourcesUISwiftHelper.mm b/Sources/Helpers/OAResourcesUISwiftHelper.mm index 7ad181bf0b..67ecb948fb 100644 --- a/Sources/Helpers/OAResourcesUISwiftHelper.mm +++ b/Sources/Helpers/OAResourcesUISwiftHelper.mm @@ -134,8 +134,16 @@ - (NSString *) iconName - (BOOL) isInstalled { - OAResourceItem *res = (OAResourceItem *)self.objcResourceItem; - return [OsmAndApp instance].resourcesManager->isResourceInstalled(res.resourceId); + if ([self.objcResourceItem isKindOfClass:OACustomResourceItem.class]) + { + OACustomResourceItem *customResource = self.objcResourceItem; + return [customResource isInstalled]; + } + else + { + OAResourceItem *res = (OAResourceItem *)self.objcResourceItem; + return [OsmAndApp instance].resourcesManager->isResourceInstalled(res.resourceId); + } } - (NSString *) resourceId