From afb4fcf37b25a8283f89f9b5d1af8b6a7814f312 Mon Sep 17 00:00:00 2001 From: vshcherb Date: Sat, 18 Jan 2025 00:51:25 +0200 Subject: [PATCH] Fix restore for favorites --- Sources/Helpers/OADefaultFavorite.m | 9 +-------- Sources/Helpers/OAFavoritesHelper.h | 1 + Sources/Helpers/OAFavoritesHelper.mm | 30 ++++++++++++++++++++++------ Sources/Models/OAFavoriteItem.h | 4 ++++ Sources/Models/OAFavoriteItem.mm | 24 ++++++++++++++++++++++ 5 files changed, 54 insertions(+), 14 deletions(-) diff --git a/Sources/Helpers/OADefaultFavorite.m b/Sources/Helpers/OADefaultFavorite.m index 637c0aae7e..403506c5ce 100644 --- a/Sources/Helpers/OADefaultFavorite.m +++ b/Sources/Helpers/OADefaultFavorite.m @@ -41,20 +41,13 @@ + (NSArray*)builtinColors { if (!colors) colors = @[ + [[OAFavoriteColor alloc] initWithName:OALocalizedString(@"rendering_value_yellow_name") color:UIColorFromRGB(0xEECC22)], [[OAFavoriteColor alloc] initWithName:OALocalizedString(@"rendering_value_purple_name") color:UIColorFromRGB(0x3F51B5)], - [[OAFavoriteColor alloc] initWithName:OALocalizedString(@"rendering_value_green_name") color:UIColorFromRGB(0x43A047)], - [[OAFavoriteColor alloc] initWithName:OALocalizedString(@"rendering_value_yellow_name") color:UIColorFromRGB(0xffb300)], - - [[OAFavoriteColor alloc] initWithName:OALocalizedString(@"rendering_value_orange_name") color:UIColorFromRGB(0xff5722)], - [[OAFavoriteColor alloc] initWithName:OALocalizedString(@"col_gray") color:UIColorFromRGB(0x607d8b)], - [[OAFavoriteColor alloc] initWithName:OALocalizedString(@"rendering_value_red_name") color:UIColorFromRGB(0xe91e63)], - [[OAFavoriteColor alloc] initWithName:OALocalizedString(@"rendering_value_blue_name") color:UIColorFromRGB(0x2196f3)], - [[OAFavoriteColor alloc] initWithName:OALocalizedString(@"shared_string_color_magenta") color:UIColorFromRGB(0x9c27b0)] ]; diff --git a/Sources/Helpers/OAFavoritesHelper.h b/Sources/Helpers/OAFavoritesHelper.h index f03cfe4ddb..3b2841bb10 100644 --- a/Sources/Helpers/OAFavoritesHelper.h +++ b/Sources/Helpers/OAFavoritesHelper.h @@ -131,5 +131,6 @@ + (NSString *) convertDisplayNameToGroupIdName:(NSString *)name; - (OASGpxUtilitiesPointsGroup *)toPointsGroup; + (OAFavoriteGroup *)fromPointsGroup:(OASGpxUtilitiesPointsGroup *)pointsGroup; +- (BOOL)isEqual:(id)object; @end diff --git a/Sources/Helpers/OAFavoritesHelper.mm b/Sources/Helpers/OAFavoritesHelper.mm index 68fa2af626..ce17b9e2ee 100644 --- a/Sources/Helpers/OAFavoritesHelper.mm +++ b/Sources/Helpers/OAFavoritesHelper.mm @@ -792,7 +792,6 @@ + (NSArray *) getBackupFiles NSFileManager *manager = [NSFileManager defaultManager]; NSArray *files = [manager contentsOfDirectoryAtPath:favoritesPath error:nil]; - // acquire modification dates NSMutableArray *result = [NSMutableArray arrayWithCapacity:files.count]; for (NSString* file in files) if ([file hasSuffix:GPX_FILE_EXT]) @@ -1163,16 +1162,35 @@ - (instancetype)init return self; } +- (BOOL)isEqual:(id)object { + if (self == object) { + return YES; + } + + if (![object isKindOfClass:[OAFavoriteGroup class]]) { + return NO; + } + + OAFavoriteGroup *otherGroup = (OAFavoriteGroup *)object; + return ([self.name isEqualToString:otherGroup.name] && + [self.color isEqual:otherGroup.color] && + self.isVisible == otherGroup.isVisible && + [self.iconName isEqualToString:otherGroup.iconName] && + [self.backgroundType isEqualToString:otherGroup.backgroundType] && + [self.points isEqualToArray:otherGroup.points]); +} + + - (instancetype)initWithPoint:(OAFavoriteItem *)point { self = [self init]; if (self) { _name = [point getCategory]; - _color = [point getColor]; + _color = [point getInternalColor]; _isVisible = [point isVisible]; - _iconName = [point getIcon]; - _backgroundType = [point getBackgroundIcon]; + _iconName = [point getInternalIcon]; + _backgroundType = [point getInternalBackgroundIcon]; } return self; } @@ -1209,7 +1227,7 @@ - (void) addPoint:(OAFavoriteItem *)point - (UIColor *) color { - if ([_color toRGBNumber] != 0) + if (_color != nil && [_color toRGBNumber] != 0) return [UIColor colorRGB:_color equalToColorRGB:UIColor.whiteColor] ? [OADefaultFavorite getDefaultColor] : _color; else return [OADefaultFavorite getDefaultColor]; @@ -1251,7 +1269,7 @@ + (NSString *) convertDisplayNameToGroupIdName:(NSString *)name - (OASGpxUtilitiesPointsGroup *)toPointsGroup { - OASGpxUtilitiesPointsGroup *pointsGroup = [[OASGpxUtilitiesPointsGroup alloc] initWithName:_name iconName:_iconName backgroundType:_backgroundType color:_color.toARGBNumber]; + OASGpxUtilitiesPointsGroup *pointsGroup = [[OASGpxUtilitiesPointsGroup alloc] initWithName:_name iconName:_iconName backgroundType:_backgroundType color:[self color].toARGBNumber]; pointsGroup.hidden = !_isVisible; NSMutableArray *points = [NSMutableArray array]; for (OAFavoriteItem *point in _points) diff --git a/Sources/Models/OAFavoriteItem.h b/Sources/Models/OAFavoriteItem.h index 13d84e8cdc..1b85375802 100644 --- a/Sources/Models/OAFavoriteItem.h +++ b/Sources/Models/OAFavoriteItem.h @@ -63,11 +63,14 @@ - (void) setAddress:(NSString *)address; - (NSString *) getIcon; +- (NSString *) getInternalIcon; - (void) setIcon:(NSString *)icon; - (NSString *) getBackgroundIcon; +- (NSString *) getInternalBackgroundIcon; - (void) setBackgroundIcon:(NSString *)backgroundIcon; +- (UIColor *) getInternalColor; - (UIColor *) getColor; - (void) setColor:(UIColor *)color; @@ -103,5 +106,6 @@ + (OAFavoriteItem *)fromWpt:(OASWptPt *)pt category:(NSString *)category; - (UIImage *) getCompositeIcon; +- (BOOL)isEqual:(id)object; @end diff --git a/Sources/Models/OAFavoriteItem.mm b/Sources/Models/OAFavoriteItem.mm index c446544355..fa0b305c96 100644 --- a/Sources/Models/OAFavoriteItem.mm +++ b/Sources/Models/OAFavoriteItem.mm @@ -380,6 +380,13 @@ - (void) setAddress:(NSString *)address _address = nil; } +- (NSString *) getInternalIcon +{ + if (!self.favorite->getIcon().isNull()) + return self.favorite->getIcon().toNSString(); + return nil; +} + - (NSString *) getIcon { if (_icon) @@ -398,6 +405,13 @@ - (void) setIcon:(NSString *)icon _icon = nil; } +- (NSString *) getInternalBackgroundIcon +{ + if (!self.favorite->getBackground().isNull()) + return self.favorite->getBackground().toNSString(); + return nil; +} + - (NSString *) getBackgroundIcon { if (_backgroundIcon) @@ -421,6 +435,16 @@ - (void) setBackgroundIcon:(NSString *)backgroundIcon _backgroundIcon = nil; } +- (UIColor *) getInternalColor +{ + const auto color = self.favorite->getColor(); + if (color.argb != 0) + { + _color = [UIColor colorWithRed:color.r/255.0 green:color.g/255.0 blue:color.b/255.0 alpha:color.a/255.0]; + } + return nil; +} + - (UIColor *) getColor { if (_color)