Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

separate_exported_and_imported_map_categories #4084

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Resources/Localizations/en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -915,6 +915,10 @@
"with_permission_my_position_value" = "Move map to current location";
"shared_string_location_unknown" = "Location unknown";

"standard_maps" = "Standard maps";
"wikipedia_and_travel_maps" = "Wikipedia and Travel maps";
"topography_maps" = "Topography maps";

// HUD
"hud_heading" = "Heading";
"hud_no_movement" = "No movement";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ NS_ASSUME_NONNULL_BEGIN
+ (OAExportSettingsType *) CUSTOM_RENDER_STYLE;
+ (OAExportSettingsType *) CUSTOM_ROUTING;
+ (OAExportSettingsType *) MAP_SOURCES;
+ (OAExportSettingsType *) OFFLINE_MAPS;
+ (OAExportSettingsType *) STANDARD_MAPS;
+ (OAExportSettingsType *) WIKI_AND_TRAVEL;
+ (OAExportSettingsType *) DEPTH_DATA;
+ (OAExportSettingsType *) TERRAIN_DATA;
+ (OAExportSettingsType *) TTS_VOICE;
+ (OAExportSettingsType *) VOICE;
+ (OAExportSettingsType *) ONLINE_ROUTING_ENGINES;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,10 @@
static OAExportSettingsType * CUSTOM_RENDER_STYLE;
static OAExportSettingsType * CUSTOM_ROUTING;
static OAExportSettingsType * MAP_SOURCES;
static OAExportSettingsType * OFFLINE_MAPS;
static OAExportSettingsType * STANDARD_MAPS;
static OAExportSettingsType * WIKI_AND_TRAVEL;
static OAExportSettingsType * DEPTH_DATA;
static OAExportSettingsType * TERRAIN_DATA;
static OAExportSettingsType * TTS_VOICE;
static OAExportSettingsType * VOICE;
static OAExportSettingsType * ONLINE_ROUTING_ENGINES;
Expand Down Expand Up @@ -92,7 +95,7 @@ + (OAExportSettingsType *)findByFileSubtype:(EOASettingsItemFileSubtype)subtype
else if (subtype == EOASettingsItemFileSubtypeColorPalette)
return COLOR_DATA;
else if ([OAFileSettingsItemFileSubtype isMap:subtype])
return OFFLINE_MAPS;
return STANDARD_MAPS;
// else if (subtype == FileSubtype.TTS_VOICE)
// return ExportSettingsType.TTS_VOICE;
// else if (subtype == FileSubtype.VOICE)
Expand Down Expand Up @@ -122,7 +125,10 @@ + (OAExportSettingsType *)findByFileSubtype:(EOASettingsItemFileSubtype)subtype
[res addObject:self.CUSTOM_RENDER_STYLE];
[res addObject:self.CUSTOM_ROUTING];
[res addObject:self.MAP_SOURCES];
[res addObject:self.OFFLINE_MAPS];
[res addObject:self.STANDARD_MAPS];
[res addObject:self.WIKI_AND_TRAVEL];
[res addObject:self.DEPTH_DATA];
[res addObject:self.TERRAIN_DATA];
// [res addObject:self.TTS_VOICE];
// [res addObject:self.VOICE];
// [res addObject:self.ONLINE_ROUTING_ENGINES];
Expand Down Expand Up @@ -288,11 +294,32 @@ + (OAExportSettingsType *)MAP_SOURCES
return MAP_SOURCES;
}

+ (OAExportSettingsType *)OFFLINE_MAPS
+ (OAExportSettingsType *)STANDARD_MAPS
{
if (!OFFLINE_MAPS)
OFFLINE_MAPS = [[OAExportSettingsType alloc] initWithTitle:OALocalizedString(@"offline_maps") name:@"OFFLINE_MAPS" itemName:@"FILE" icon:[UIImage templateImageNamed:@"ic_custom_map"] isAllowedInFreeVersion:NO];
return OFFLINE_MAPS;
if (!STANDARD_MAPS)
STANDARD_MAPS = [[OAExportSettingsType alloc] initWithTitle:OALocalizedString(@"standard_maps") name:@"STANDARD_MAPS" itemName:@"FILE" icon:[UIImage templateImageNamed:@"ic_custom_map"] isAllowedInFreeVersion:NO];
return STANDARD_MAPS;
}

+ (OAExportSettingsType *)WIKI_AND_TRAVEL
{
if (!WIKI_AND_TRAVEL)
WIKI_AND_TRAVEL = [[OAExportSettingsType alloc] initWithTitle:OALocalizedString(@"wikipedia_and_travel_maps") name:@"WIKI_AND_TRAVEL" itemName:@"FILE" icon:[UIImage templateImageNamed:@"ic_custom_wikipedia"] isAllowedInFreeVersion:NO];
return WIKI_AND_TRAVEL;
}

+ (OAExportSettingsType *)DEPTH_DATA
{
if (!DEPTH_DATA)
DEPTH_DATA = [[OAExportSettingsType alloc] initWithTitle:OALocalizedString(@"nautical_maps") name:@"DEPTH_DATA" itemName:@"FILE" icon:[UIImage templateImageNamed:@"ic_live_nautical_depth"] isAllowedInFreeVersion:NO];
return DEPTH_DATA;
}

+ (OAExportSettingsType *)TERRAIN_DATA
{
if (!TERRAIN_DATA)
TERRAIN_DATA = [[OAExportSettingsType alloc] initWithTitle:OALocalizedString(@"topography_maps") name:@"TERRAIN_DATA" itemName:@"FILE" icon:[UIImage templateImageNamed:@"ic_custom_terrain"] isAllowedInFreeVersion:NO];
return TERRAIN_DATA;
}

+ (OAExportSettingsType *)TTS_VOICE
Expand Down Expand Up @@ -338,7 +365,7 @@ - (BOOL) isMyPlacesCategory
- (BOOL) isResourcesCategory
{
return self == self.class.CUSTOM_RENDER_STYLE || self == self.class.CUSTOM_ROUTING || self == self.class.MAP_SOURCES
|| self == self.class.OFFLINE_MAPS /*|| self == self.class.VOICE || self == self.class.TTS_VOICE || self == self.class.ONLINE_ROUTING_ENGINES*/;
|| self == self.class.STANDARD_MAPS || self == self.class.WIKI_AND_TRAVEL || self == self.class.DEPTH_DATA ||self == self.class.TERRAIN_DATA /*|| self == self.class.VOICE || self == self.class.TTS_VOICE || self == self.class.ONLINE_ROUTING_ENGINES*/;
}

- (OAExportSettingsCategory *) getCategory
Expand Down
66 changes: 58 additions & 8 deletions Sources/Backup/LocalBackup/OASettingsHelper.mm
Original file line number Diff line number Diff line change
Expand Up @@ -459,20 +459,52 @@ - (void) exportSettings:(NSString *)fileDir fileName:(NSString *)fileName settin
resourcesItems[OAExportSettingsType.MAP_SOURCES] = tileSources;

QSet<OsmAnd::ResourcesManager::ResourceType> types;
types << OsmAnd::ResourcesManager::ResourceType::MapRegion
<< OsmAnd::ResourcesManager::ResourceType::SrtmMapRegion
<< OsmAnd::ResourcesManager::ResourceType::HillshadeRegion
<< OsmAnd::ResourcesManager::ResourceType::SlopeRegion
<< OsmAnd::ResourcesManager::ResourceType::WikiMapRegion
<< OsmAnd::ResourcesManager::ResourceType::DepthMapRegion;
types << OsmAnd::ResourcesManager::ResourceType::MapRegion;
NSArray<NSString *> *localIndexFiles = [OAResourcesUIHelper getInstalledResourcePathsByTypes:types includeHidden:NO];
if (localIndexFiles.count > 0)
{
NSArray<NSString *> *sortedFiles = [localIndexFiles sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [[OAFileNameTranslationHelper getMapName:obj1.lastPathComponent] compare:[OAFileNameTranslationHelper getMapName:obj2.lastPathComponent]];
}];
resourcesItems[OAExportSettingsType.OFFLINE_MAPS] = sortedFiles;
resourcesItems[OAExportSettingsType.STANDARD_MAPS] = sortedFiles;
}

QSet<OsmAnd::ResourcesManager::ResourceType> wikiTypes;
wikiTypes << OsmAnd::ResourcesManager::ResourceType::WikiMapRegion;
wikiTypes << OsmAnd::ResourcesManager::ResourceType::Travel;
NSArray<NSString *> *wikiFiles = [OAResourcesUIHelper getInstalledResourcePathsByTypes:wikiTypes includeHidden:NO];
if (wikiFiles.count > 0)
{
NSArray<NSString *> *sortedFiles = [wikiFiles sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [[OAFileNameTranslationHelper getMapName:obj1.lastPathComponent] compare:[OAFileNameTranslationHelper getMapName:obj2.lastPathComponent]];
}];
resourcesItems[OAExportSettingsType.WIKI_AND_TRAVEL] = sortedFiles;
}

QSet<OsmAnd::ResourcesManager::ResourceType> nauticalTypes;
nauticalTypes << OsmAnd::ResourcesManager::ResourceType::DepthMapRegion;
NSArray<NSString *> *nauticalFiles = [OAResourcesUIHelper getInstalledResourcePathsByTypes:nauticalTypes includeHidden:NO];
if (nauticalFiles.count > 0)
{
NSArray<NSString *> *sortedFiles = [nauticalFiles sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [[OAFileNameTranslationHelper getMapName:obj1.lastPathComponent] compare:[OAFileNameTranslationHelper getMapName:obj2.lastPathComponent]];
}];
resourcesItems[OAExportSettingsType.DEPTH_DATA] = sortedFiles;
}

QSet<OsmAnd::ResourcesManager::ResourceType> terrainTypes;
terrainTypes << OsmAnd::ResourcesManager::ResourceType::SrtmMapRegion;
terrainTypes << OsmAnd::ResourcesManager::ResourceType::HillshadeRegion;
terrainTypes << OsmAnd::ResourcesManager::ResourceType::SlopeRegion;
NSArray<NSString *> *terrainFiles = [OAResourcesUIHelper getInstalledResourcePathsByTypes:terrainTypes includeHidden:NO];
if (terrainFiles.count > 0)
{
NSArray<NSString *> *sortedFiles = [terrainFiles sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [[OAFileNameTranslationHelper getMapName:obj1.lastPathComponent] compare:[OAFileNameTranslationHelper getMapName:obj2.lastPathComponent]];
}];
resourcesItems[OAExportSettingsType.TERRAIN_DATA] = sortedFiles;
}

// files = getFilesByType(localIndexInfoList, LocalIndexType.TTS_VOICE_DATA);
// if (!files.isEmpty()) {
// resourcesItems.put(ExportSettingsType.TTS_VOICE, files);
Expand Down Expand Up @@ -769,6 +801,9 @@ - (OAQuickActionsSettingsItem *)getBaseQuickActionsSettingsItem:(QuickActionButt
NSMutableArray<NSString *> *colorPaletteFilesList = [NSMutableArray array];
NSMutableArray<OAFileSettingsItem *> *tracksFilesList = [NSMutableArray array];
NSMutableArray<OAFileSettingsItem *> *mapFilesList = [NSMutableArray array];
NSMutableArray<OAFileSettingsItem *> *wikiFilesList = [NSMutableArray array];
NSMutableArray<OAFileSettingsItem *> *nauticalFilesList = [NSMutableArray array];
NSMutableArray<OAFileSettingsItem *> *terrainFilesList = [NSMutableArray array];
NSMutableArray<OAAvoidRoadInfo *> *avoidRoads = [NSMutableArray array];
NSMutableArray<OAFavoriteGroup *> *favorites = [NSMutableArray array];
NSMutableArray<OAOsmNotePoint *> *notesPointList = [NSMutableArray array];
Expand Down Expand Up @@ -796,6 +831,15 @@ - (OAQuickActionsSettingsItem *)getBaseQuickActionsSettingsItem:(QuickActionButt
[routingFilesList addObject:fileItem.filePath];
else if (fileItem.subtype == EOASettingsItemFileSubtypeColorPalette)
[colorPaletteFilesList addObject:fileItem.filePath];

//TODO: why terrain without type?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

else if (fileItem.subtype == EOASettingsItemFileSubtypeWikiMap || [[fileItem.filePath lowercaseString] hasSuffix:@"travel.obf"])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why "travel.obf" hardcoded?

[wikiFilesList addObject:fileItem];
else if (fileItem.subtype == EOASettingsItemFileSubtypeNauticalDepth)
[nauticalFilesList addObject:fileItem];
else if (fileItem.subtype == EOASettingsItemFileSubtypeSrtmMap)
[terrainFilesList addObject:fileItem];

else if ([OAFileSettingsItemFileSubtype isMap:fileItem.subtype])
[mapFilesList addObject:fileItem];
break;
Expand Down Expand Up @@ -918,7 +962,13 @@ - (OAQuickActionsSettingsItem *)getBaseQuickActionsSettingsItem:(QuickActionButt
if (tracksFilesList.count > 0 || addEmptyItems)
settingsToOperate[OAExportSettingsType.TRACKS] = tracksFilesList;
if (mapFilesList.count > 0 || addEmptyItems)
settingsToOperate[OAExportSettingsType.OFFLINE_MAPS] = mapFilesList;
settingsToOperate[OAExportSettingsType.STANDARD_MAPS] = mapFilesList;
if (wikiFilesList.count > 0 || addEmptyItems)
settingsToOperate[OAExportSettingsType.WIKI_AND_TRAVEL] = wikiFilesList;
if (nauticalFilesList.count > 0 || addEmptyItems)
settingsToOperate[OAExportSettingsType.DEPTH_DATA] = nauticalFilesList;
if (terrainFilesList.count > 0 || addEmptyItems)
settingsToOperate[OAExportSettingsType.TERRAIN_DATA] = terrainFilesList;
if (avoidRoads.count > 0 || addEmptyItems)
settingsToOperate[OAExportSettingsType.AVOID_ROADS] = avoidRoads;
if (favorites.count > 0 || addEmptyItems)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ typedef NS_ENUM(NSInteger, EOASettingsItemFileSubtype) {
EOASettingsItemFileSubtypeRenderingStyle,
EOASettingsItemFileSubtypeWikiMap,
EOASettingsItemFileSubtypeSrtmMap,
EOASettingsItemFileSubtypeTerrainMap,
EOASettingsItemFileSubtypeNauticalDepth,
EOASettingsItemFileSubtypeObfMap,
EOASettingsItemFileSubtypeTilesMap,
Expand Down
52 changes: 32 additions & 20 deletions Sources/Backup/LocalBackup/SettingsItems/OAFileSettingsItem.mm
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ + (NSString *) getSubtypeName:(EOASettingsItemFileSubtype)subtype
return @"routing_config";
case EOASettingsItemFileSubtypeRenderingStyle:
return @"rendering_style";
case EOASettingsItemFileSubtypeNauticalDepth:
return @"nautical_depth";
case EOASettingsItemFileSubtypeTerrainMap:
return @"terrain";
case EOASettingsItemFileSubtypeObfMap:
return @"obf_map";
case EOASettingsItemFileSubtypeTilesMap:
Expand Down Expand Up @@ -64,6 +68,8 @@ + (NSString *) getSubtypeFolder:(EOASettingsItemFileSubtype)subtype
case EOASettingsItemFileSubtypeObfMap:
case EOASettingsItemFileSubtypeWikiMap:
case EOASettingsItemFileSubtypeSrtmMap:
case EOASettingsItemFileSubtypeNauticalDepth:
case EOASettingsItemFileSubtypeTerrainMap:
case EOASettingsItemFileSubtypeRoadMap:
case EOASettingsItemFileSubtypeTilesMap:
return [documentsPath stringByAppendingPathComponent:RESOURCES_DIR];
Expand Down Expand Up @@ -129,15 +135,15 @@ + (EOASettingsItemFileSubtype) getSubtypeByFileName:(NSString *)fileName
case EOASettingsItemFileSubtypeUnknown:
case EOASettingsItemFileSubtypeOther:
break;
case EOASettingsItemFileSubtypeObfMap:
case EOASettingsItemFileSubtypeSrtmMap:
{
if ([name hasSuffix:BINARY_MAP_INDEX_EXT])
if ([name hasSuffix:BINARY_SRTM_MAP_INDEX_EXT] || [name hasSuffix:BINARY_SRTMF_MAP_INDEX_EXT])
return subtype;
break;
}
case EOASettingsItemFileSubtypeSrtmMap:
case EOASettingsItemFileSubtypeTerrainMap:
{
if ([name hasSuffix:BINARY_SRTM_MAP_INDEX_EXT] || [name hasSuffix:BINARY_SRTMF_MAP_INDEX_EXT])
if ([name hasSuffix:TIF_EXT])
return subtype;
break;
}
Expand All @@ -147,9 +153,9 @@ + (EOASettingsItemFileSubtype) getSubtypeByFileName:(NSString *)fileName
return subtype;
break;
}
case EOASettingsItemFileSubtypeGpx:
case EOASettingsItemFileSubtypeObfMap:
{
if ([name hasSuffix:@".gpx"])
if ([name hasSuffix:BINARY_MAP_INDEX_EXT])
return subtype;
break;
}
Expand All @@ -159,45 +165,51 @@ + (EOASettingsItemFileSubtype) getSubtypeByFileName:(NSString *)fileName
return subtype;
break;
}
case EOASettingsItemFileSubtypeTravel:
case EOASettingsItemFileSubtypeNauticalDepth:
{
if ([name hasSuffix:@".sqlite"] && [name.lowercaseString containsString:@"travel"])
if ([name hasSuffix:BINARY_DEPTH_MAP_INDEX_EXT])
return subtype;
break;
}
case EOASettingsItemFileSubtypeTilesMap:
case EOASettingsItemFileSubtypeColorPalette:
{
if ([name hasSuffix:@".sqlitedb"] || name.pathExtension.length == 0)
if ([name hasSuffix:TXT_EXT])
return subtype;
break;
}
case EOASettingsItemFileSubtypeRoutingConfig:
case EOASettingsItemFileSubtypeGpx:
{
if ([name hasSuffix:@".xml"] && ![name hasSuffix:RENDERER_INDEX_EXT])
if ([name hasSuffix:GPX_FILE_EXT])
return subtype;
break;
}
case EOASettingsItemFileSubtypeRenderingStyle:
case EOASettingsItemFileSubtypeTravel:
{
if ([name hasSuffix:RENDERER_INDEX_EXT])
if ([name hasSuffix:BINARY_WIKIVOYAGE_MAP_INDEX_EXT] && [name.lowercaseString containsString:@"travel"])
return subtype;
break;
}
case EOASettingsItemFileSubtypeRoadMap:
case EOASettingsItemFileSubtypeTilesMap:
{
if ([name containsString:@"road"])
if ([name hasSuffix:SQLITE_EXT] || name.pathExtension.length == 0)
return subtype;
break;
}
case EOASettingsItemFileSubtypeNauticalDepth:
case EOASettingsItemFileSubtypeRoutingConfig:
{
if ([name hasSuffix:BINARY_DEPTH_MAP_INDEX_EXT])
if ([name hasSuffix:ROUTING_FILE_EXT] && ![name hasSuffix:RENDERER_INDEX_EXT])
return subtype;
break;
}
case EOASettingsItemFileSubtypeColorPalette:
case EOASettingsItemFileSubtypeRenderingStyle:
{
if ([name hasSuffix:TXT_EXT])
if ([name hasSuffix:RENDERER_INDEX_EXT])
return subtype;
break;
}
case EOASettingsItemFileSubtypeRoadMap:
{
if ([name containsString:@"road"])
return subtype;
break;
}
Expand Down
2 changes: 2 additions & 0 deletions Sources/Constants/OAIndexConstants.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ static NSString * const BINARY_SRTMF_MAP_INDEX_EXT_ZIP = @".srtmf.obf.zip";
static NSString * const BINARY_DEPTH_MAP_INDEX_EXT = @".depth.obf";
static NSString * const BINARY_DEPTH_MAP_INDEX_EXT_ZIP = @".depth.obf.zip";

static NSString * const TIF_EXT = @".depth.obf.zip";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?


static NSString * const EXTRA_EXT = @".extra";
static NSString * const EXTRA_ZIP_EXT = @".extra.zip";
static NSString * const TXT_EXT = @".txt";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ - (void)generateData
tileSourcesCount += settings.count;
else if (type == OAExportSettingsType.CUSTOM_RENDER_STYLE)
renderFilesCount += settings.count;
else if (type == OAExportSettingsType.OFFLINE_MAPS)
else if (type == OAExportSettingsType.STANDARD_MAPS)
mapsCount += settings.count;
else if (type == OAExportSettingsType.CUSTOM_ROUTING)
routingFilesCount += settings.count;
Expand Down