From 0d1ccc298cb8ea2959404ed7b616096bc35ee0fd Mon Sep 17 00:00:00 2001 From: Da Woon Jung Date: Thu, 4 Oct 2007 18:57:46 +0000 Subject: [PATCH] Begin migrating to url-based favorites. --- macosx/CelestiaFavorite.h | 11 +++++- macosx/CelestiaFavorite.mm | 68 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 75 insertions(+), 4 deletions(-) diff --git a/macosx/CelestiaFavorite.h b/macosx/CelestiaFavorite.h index 6b533830..50e0aaa2 100644 --- a/macosx/CelestiaFavorite.h +++ b/macosx/CelestiaFavorite.h @@ -8,9 +8,15 @@ #import "CelestiaUniversalCoord.h" +#define URL_FAVORITES + // parentFolder is totally vestigal crap @interface CelestiaFavorite : NSObject { +#ifdef URL_FAVORITES + NSString *_name; + NSString *url; +#endif NSValue* _data; BOOL _freeWhenDone; } @@ -37,7 +43,10 @@ -(BOOL)isEqual:(id)obj; //-(NSDictionary*)dictionaryRepresentation; -(NSString*)description; --(void)setName:(NSString*)name; -(NSString*)selectionName; -(NSString*)coordinateSystem; +#ifdef URL_FAVORITES +-(NSString*)url; +-(void)setUrl:(NSString *)aUrl; +#endif @end diff --git a/macosx/CelestiaFavorite.mm b/macosx/CelestiaFavorite.mm index ce6b012e..ccd9a2dd 100644 --- a/macosx/CelestiaFavorite.mm +++ b/macosx/CelestiaFavorite.mm @@ -16,6 +16,10 @@ #import "CelestiaSimulation.h" #import "CelestiaSimulation_PrivateAPI.h" +#ifdef URL_FAVORITES +#include "url.h" +#endif + @implementation CelestiaFavorite(PrivateAPI) -(CelestiaFavorite *)initWithFavorite:(FavoritesEntry *)fav { @@ -88,7 +92,12 @@ } -(void)activate { - [[CelestiaAppCore sharedAppCore] activateFavorite:self]; +#ifdef URL_FAVORITES + if (url) + [[CelestiaAppCore sharedAppCore] goToUrl: url]; + else +#endif + [[CelestiaAppCore sharedAppCore] activateFavorite:self]; } -(id)initWithName:(NSString*)name { @@ -109,6 +118,9 @@ fav->parentFolder = [parentFolder stdString]; self = [self initWithFavorite:fav]; _freeWhenDone = YES; +#ifdef URL_FAVORITES + [self setName: name]; +#endif return self; } -(id)initWithName:(NSString*)name parentFolder:(CelestiaFavorite*)folder @@ -136,14 +148,31 @@ fav->coordSys = sim->getFrame().coordSys; self = [self initWithFavorite:fav]; _freeWhenDone = YES; +#ifdef URL_FAVORITES + Url currentUrl = Url([[CelestiaAppCore sharedAppCore] appCore], Url::Absolute); + [self setUrl: [NSString stringWithStdString: currentUrl.getAsString()]]; + [self setName: [NSString stringWithStdString: currentUrl.getName()]]; + if (_name == nil) + [self setName: [[[[CelestiaAppCore sharedAppCore] simulation] selection] name]]; + if (_name == nil) + [self setName: [[[[CelestiaAppCore sharedAppCore] simulation] julianDate] description]]; +#endif return self; } -(unsigned)hash { +#ifdef URL_FAVORITES + if (url) + return [url hash]; +#endif return (unsigned)[_data pointerValue]; } -(void)dealloc { +#ifdef URL_FAVORITES + [url release]; url = nil; + [_name release]; _name = nil; +#endif if (_data != nil) { if (_freeWhenDone) { FavoritesEntry* fav = [self favorite]; @@ -176,7 +205,19 @@ { if ([self isFolder]) return [NSDictionary dictionaryWithObjectsAndKeys:[self name],@"name",[NSNumber numberWithBool:YES],@"isFolder",nil,nil]; - return [NSDictionary dictionaryWithObjectsAndKeys:[self name],@"name",[self parentFolder],@"parentFolder",[self selectionName],@"selectionName",[NSArray arrayWithArray:[self orientation]],@"orientation",[[self position] data],@"position",[self jd],@"jd",[NSNumber numberWithBool:NO],@"isFolder",[self coordinateSystem],@"coordinateSystem",nil,nil]; + return [NSDictionary dictionaryWithObjectsAndKeys: + [self name], @"name", + [self parentFolder], @"parentFolder", + [self selectionName], @"selectionName", + [NSArray arrayWithArray:[self orientation]], @"orientation", + [[self position] data], @"position", + [self jd], @"jd", + [NSNumber numberWithBool:NO], @"isFolder", + [self coordinateSystem], @"coordinateSystem", +#ifdef URL_FAVORITES + url, @"url", +#endif + nil]; } -(id)initWithDictionary:(NSDictionary*)dict { @@ -198,6 +239,9 @@ [self setPosition:[[[CelestiaUniversalCoord alloc] initWithData:[dict objectForKey:@"position"]] autorelease]]; [self setJd:[dict objectForKey:@"jd"]]; [self setCoordinateSystem:[dict objectForKey:@"coordinateSystem"]]; +#ifdef URL_FAVORITES + [self setUrl: [dict objectForKey: @"url"]]; +#endif return self; } -(NSString*)description @@ -208,7 +252,11 @@ { if (name == nil) name = @""; +#ifdef URL_FAVORITES + _name = [name retain]; +#else [self favorite]->name = [name stdString]; +#endif } -(void)setParentFolder:(NSString*)parentFolder { @@ -218,7 +266,11 @@ } -(NSString*)name { +#ifdef URL_FAVORITES + return [[_name retain] autorelease]; +#else return [NSString stringWithStdString:[self favorite]->name]; +#endif } -(NSString*)selectionName { @@ -248,4 +300,14 @@ { return [Astro stringWithCoordinateSystem:[NSNumber numberWithInt:(int)[self favorite]->coordSys]]; } -@end \ No newline at end of file +#ifdef URL_FAVORITES +-(NSString*)url +{ + return url; +} +-(void)setUrl:(NSString *)aUrl +{ + url = [aUrl retain]; +} +#endif +@end