CelestiaFavorites.m
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:3k
源码类别:

OpenGL

开发平台:

Visual C++

  1. //
  2. //  CelestiaFavorites.m
  3. //  celestia
  4. //
  5. //  Created by Bob Ippolito on Thu Jun 20 2002.
  6. //  Copyright (c) 2002 Chris Laurel. All rights reserved.
  7. //  
  8. #import "CelestiaFavorites.h"
  9. #import "CelestiaFavorite.h"
  10. @implementation CelestiaFavorites
  11. static NSInvocation* _synchronize;
  12. static CelestiaFavorites* _celestiaFavorites;
  13. -(void)archive
  14. {
  15.     NSMutableArray* children = [NSMutableArray arrayWithCapacity:[self numberOfChildren]];
  16.     NSEnumerator* enumerator = [[self children] objectEnumerator];
  17.     id obj = nil;
  18.     NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
  19.     while ((obj = [enumerator nextObject]) != nil)
  20.         [children addObject:[(MyTree*)obj recursiveDictionary]];
  21.     [defaults setObject:children forKey:@"favorites"];
  22.     // NSLog(@""favorites" = %@",[defaults objectForKey:@"favorites"]);
  23. }
  24. -(void)setSynchronize:(NSInvocation*)synchronize
  25. {
  26.     if (_synchronize != nil)
  27.         [_synchronize autorelease];
  28.     _synchronize = [synchronize retain];
  29. }
  30. -(void)synchronize
  31. {
  32.     if (_synchronize != nil)
  33.         [_synchronize invoke];
  34. }
  35. -(NSString*)description
  36. {
  37.     return [NSString stringWithFormat:@"<CelestiaFavorites numberOfChildren=%d>",[self numberOfChildren]];
  38. }
  39. -(MyTree*)addNewFavorite:(NSString*)name
  40. {
  41.     MyTree* obj = [[[MyTree alloc] initWithNode:[[[CelestiaFavorite alloc] initWithName:name] autorelease] parent:self] autorelease];
  42.     [[self children] addObject:obj];
  43.     return obj;
  44. }
  45. -(MyTree*)addNewFolder:(NSString*)name
  46. {
  47.     MyTree* obj = [[[MyTree alloc] initWithNode:[[[CelestiaFavorite alloc] initWithFolderName:name] autorelease] parent:self children:[NSArray array]] autorelease];
  48.     [[self children] addObject:obj];
  49.     return obj;
  50. }
  51. +(void)initialize
  52. {
  53.     _celestiaFavorites = nil;
  54.     _synchronize = nil;
  55. }
  56. +(CelestiaFavorites*)sharedFavorites
  57. {
  58.     if (_celestiaFavorites != nil) {
  59.         return _celestiaFavorites;
  60.     } else {
  61.         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  62.         _celestiaFavorites = [[CelestiaFavorites alloc] initWithNode:nil parent:nil children:[NSArray array]];
  63.         if ([defaults objectForKey:@"favorites"] != nil) {
  64.             NSEnumerator *enumerator = [[defaults objectForKey:@"favorites"] objectEnumerator];
  65.             MyVector* children = [_celestiaFavorites children];
  66.             id obj = nil;
  67.             while ((obj = [enumerator nextObject]) != nil)
  68.                 [children addObject:[[[MyTree alloc] initWithDictionary:obj parent:_celestiaFavorites] autorelease]];            
  69.         }
  70.         return _celestiaFavorites;
  71.     }
  72. }
  73. @end