- Timestamp:
- 11/03/09 21:43:56 (4 years ago)
- Location:
- apps/iphone/superbook/trunk
- Files:
-
- 8 added
- 2 removed
- 29 modified
-
ABMapperSelectors.plist (modified) (1 diff)
-
Classes/DotTelABDelegate.h (modified) (3 diffs)
-
Classes/DotTelABDelegate.m (modified) (7 diffs)
-
Classes/DotTelABMapper.h (modified) (1 diff)
-
Classes/DotTelABMapper.m (modified) (5 diffs)
-
Classes/FriendsData.m (modified) (5 diffs)
-
Classes/FriendsMapViewController.h (modified) (4 diffs)
-
Classes/FriendsMapViewController.m (modified) (11 diffs)
-
Classes/LocateThem_ViewController.m (modified) (3 diffs)
-
Classes/LocTableViewCell.h (deleted)
-
Classes/LocTableViewCell.m (deleted)
-
Classes/NaptrCell.h (added)
-
Classes/NaptrCell.m (added)
-
Classes/NaptrViewController.h (modified) (5 diffs)
-
Classes/NaptrViewController.m (modified) (20 diffs)
-
Classes/NSString+UITableViewHelper.m (modified) (1 diff)
-
Classes/NTNaptrCell.h (added)
-
Classes/NTNaptrCell.m (added)
-
Classes/TelMapAnnotation.h (added)
-
Classes/TelMapAnnotation.m (added)
-
DotTel_SDK/Classes/DnsResolver.h (modified) (3 diffs)
-
DotTel_SDK/Classes/DnsResolver.m (modified) (3 diffs)
-
DotTel_SDK/Classes/RecordNaptr.h (modified) (3 diffs)
-
DotTel_SDK/Classes/RecordNaptr.m (modified) (4 diffs)
-
DotTel_SDK/Classes/RecordTxt.h (modified) (3 diffs)
-
DotTel_SDK/Classes/RecordTxt.m (modified) (7 diffs)
-
DotTel_SDK/README DotTel SDK (modified) (2 diffs)
-
English.lproj/About.html (modified) (2 diffs)
-
English.lproj/Localizable.strings (modified) (1 diff)
-
FMapView.xib (modified) (9 diffs)
-
French.lproj/About.html (modified) (2 diffs)
-
French.lproj/Localizable.strings (modified) (2 diffs)
-
German.lproj/Localizable.strings (modified) (1 diff)
-
idna.h (added)
-
Info.plist (modified) (1 diff)
-
libidn.a (added)
-
LocateThem.xcodeproj/project.pbxproj (modified) (25 diffs)
-
Russian.lproj/About.html (modified) (2 diffs)
-
Russian.lproj/Localizable.strings (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
apps/iphone/superbook/trunk/ABMapperSelectors.plist
r396 r546 57 57 <key>x-im:skype</key> 58 58 <string>setNaptrIM:</string> 59 <key>x-photo:http</key> 60 <string>setNaptrPhoto:</string> 61 <key>x-photo:https</key> 62 <string>setNaptrPhoto:</string> 63 <key>x-img:http</key> 64 <string>setNaptrPhoto:</string> 65 <key>x-img:https</key> 66 <string>setNaptrPhoto:</string> 59 67 </dict> 60 68 <key>txt</key> -
apps/iphone/superbook/trunk/Classes/DotTelABDelegate.h
r382 r546 38 38 #import "DotTelABMapper.h" 39 39 40 @interface DotTelABDelegate : NSObject <ABPersonViewControllerDelegate, ABUnknownPersonViewControllerDelegate, UIActionSheetDelegate> { 40 @interface DotTelABDelegate : NSObject <ABPersonViewControllerDelegate, 41 ABNewPersonViewControllerDelegate, ABPeoplePickerNavigationControllerDelegate, UIActionSheetDelegate> { 41 42 42 43 ABAddressBookRef addressBook; … … 49 50 NSUInteger saveToExistingButtonIndex; 50 51 NSUInteger saveToNewButtonIndex; 52 NSUInteger saveToOtherButtonIndex; 51 53 ABRecordRef recordForActionSheet; 52 54 } … … 64 66 - (NSError *)saveRecord; 65 67 - (NSError *)saveRecordWithRecordId:(ABRecordID)_recordId; 66 - (NSError *)saveUnknownRecord;67 68 - (IBAction)didPressSaveButton:(id)sender; 68 69 -
apps/iphone/superbook/trunk/Classes/DotTelABDelegate.m
r461 r546 32 32 @interface DotTelABDelegate (PrivateMethods) 33 33 34 - (NSError *)updateRecord:(ABRecordRef)_recordRef; 34 - (void)pickABRecordForSaving; 35 - (NSError *)saveNewABRecord; 36 - (NSError *)updateABRecord:(ABRecordRef)_recordRef; 35 37 36 38 // Merges .tel info into an existing record … … 76 78 - (NSError *)saveRecordWithRecordId:(ABRecordID)_recordId { 77 79 // If there's a valid record, we will show a UIActionSheet to ask if the user wants to save to 78 // this existing record, another record, or cancel altogether 79 // If there's no valid record, we show the ABUnknownPersonViewController directly 80 80 // this existing record, another existing record, a new record, or cancel altogether 81 82 ABRecordRef aRecord = NULL; 83 NSString *saveExistingButtonLabel = nil; 81 84 if (_recordId != kABRecordInvalidID) { 82 85 // Record id is known. Pick up ABRecordRef and update the record 83 86 // if no ABRecordRef, go to the unknown version 84 ABRecordRefaRecord = ABAddressBookGetPersonWithRecordID(addressBook, _recordId);87 aRecord = ABAddressBookGetPersonWithRecordID(addressBook, _recordId); 85 88 NSString *personName = (NSString *)ABRecordCopyCompositeName(aRecord); 86 89 if (!personName) { 87 90 personName = telName; 88 91 } 89 NSString *saveExistingButtonLabel = [NSString stringWithFormat:NSLocalizedString(@"UpdateExisting", @"Save to existing"), personName];92 saveExistingButtonLabel = [NSString stringWithFormat:NSLocalizedString(@"UpdateExisting", @"Update %@"), personName]; 90 93 [personName release]; 91 if (aRecord != NULL) { 92 // We've got an existing ABRecord 93 recordForActionSheet = aRecord; 94 UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Save To Address Book", @"Save To Address Book") 95 delegate:self 96 cancelButtonTitle:nil 97 destructiveButtonTitle:nil 98 otherButtonTitles:nil]; 99 saveToExistingButtonIndex = [actionSheet addButtonWithTitle:saveExistingButtonLabel]; 100 saveToNewButtonIndex = [actionSheet addButtonWithTitle:NSLocalizedString(@"Save to another contact", @"Save to another contact")]; 101 actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:NSLocalizedString(@"Cancel", @"Cancel")]; 102 [actionSheet showInView:topViewController.view]; 103 [actionSheet release]; 104 //CFRelease(aRecord); 105 return NULL; 106 } 107 } 108 return [self saveUnknownRecord]; 109 } 110 111 112 - (NSError *)saveUnknownRecord { 113 // Unknown or missing recordId 114 // Show ABUnknownPersonViewController 115 116 ABRecordRef aRecord = ABPersonCreate(); 117 ABUnknownPersonViewController *pVC = [[[ABUnknownPersonViewController alloc] init] autorelease]; 118 pVC.unknownPersonViewDelegate = self; 94 } 95 recordForActionSheet = aRecord; 96 UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Save To Address Book", @"Save To Address Book") 97 delegate:self 98 cancelButtonTitle:nil 99 destructiveButtonTitle:nil 100 otherButtonTitles:nil]; 101 if (saveExistingButtonLabel != nil) { 102 saveToExistingButtonIndex = [actionSheet addButtonWithTitle:saveExistingButtonLabel]; 103 } 104 saveToNewButtonIndex = [actionSheet addButtonWithTitle:NSLocalizedString(@"CreateNewContact", @"Create new contact")]; 105 saveToOtherButtonIndex = [actionSheet addButtonWithTitle:NSLocalizedString(@"Save to another contact", @"Save to another contact")]; 106 actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:NSLocalizedString(@"Cancel", @"Cancel")]; 107 [actionSheet showInView:topViewController.view]; 108 [actionSheet release]; 109 return NULL; 110 } 111 112 113 #pragma mark - 114 #pragma mark Private & actionSheet methods 115 116 117 - (void)pickABRecordForSaving { 118 // Use ABPeoplePickerNavigationController 119 120 ABPeoplePickerNavigationController *aPNC = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; 121 aPNC.peoplePickerDelegate = self; 122 aPNC.addressBook = addressBook; 123 [topViewController presentModalViewController:aPNC animated:YES]; 124 return; 125 } 126 127 - (NSError *)saveNewABRecord { 128 ABNewPersonViewController *pVC = [[[ABNewPersonViewController alloc] init] autorelease]; 129 pVC.displayedPerson = ABPersonCreate(); 130 pVC.newPersonViewDelegate = self; 119 131 pVC.addressBook = addressBook; 120 pVC.allowsAddingToAddressBook = YES; 121 pVC.allowsActions = NO; 122 pVC.displayedPerson = aRecord; 123 124 NSError *err = [self mergeTelInfoIntoRecordRef:aRecord updatedProperties:nil]; 132 NSMutableArray *properties = [[[NSMutableArray alloc] initWithCapacity:1] autorelease]; 133 NSError *err = [self mergeTelInfoIntoRecordRef:pVC.displayedPerson updatedProperties:properties]; 125 134 if (!err) { 126 135 //setup properties to display … … 128 137 [topViewController presentModalViewController:navC animated:YES]; 129 138 } 130 CFRelease(aRecord); 131 132 return err; 133 } 134 135 136 #pragma mark ------ private methods 137 138 - (NSError *)updateRecord:(ABRecordRef)_recordRef { 139 return err; 140 } 141 142 - (NSError *)updateABRecord:(ABRecordRef)_recordRef { 139 143 // Load a ABPersonViewController and merge the data in it, then display it 140 144 141 145 if (_recordRef == NULL) 142 return NULL;146 return nil; 143 147 144 148 ABPersonViewController *pVC = [[[ABPersonViewController alloc] init] autorelease]; 149 pVC.displayedPerson = _recordRef; 145 150 pVC.personViewDelegate = self; 146 151 pVC.addressBook = addressBook; 147 152 pVC.allowsEditing = YES; 148 pVC.displayedPerson = _recordRef;149 153 NSMutableArray *properties = [[NSMutableArray alloc] initWithCapacity:1]; 150 154 … … 162 166 } 163 167 //pVC.displayedProperties = properties; // NOTE: We'll display everything, it makes more sense 164 pVC.displayedProperties = NULL;168 pVC.displayedProperties = nil; 165 169 if (!err) { 166 //setup properties to display167 170 UINavigationController *navC = [[[UINavigationController alloc] initWithRootViewController:pVC] autorelease]; 168 171 navC.navigationBar.topItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave 169 172 target:self 170 173 action:@selector(didPressSaveButton:)]; 171 [topViewController presentModalViewController:navC animated:YES]; 174 if (topViewController.modalViewController) { 175 // This is if the ABPickerController was used. Both will be dismissed upon save 176 [topViewController.modalViewController presentModalViewController:navC animated:YES]; 177 } else { 178 [topViewController presentModalViewController:navC animated:YES]; 179 } 180 172 181 } 173 182 return err; … … 206 215 } 207 216 208 #pragma mark ------ ABPersonViewControllerDelegate methods 217 #pragma mark - 218 #pragma mark delegates 219 220 #pragma mark ABPeoplePickerNavigationControllerDelegate methods 221 222 - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 223 shouldContinueAfterSelectingPerson:(ABRecordRef)person { 224 // Don't dismiss the modal controller. Add the Person one on top of it, and have both be dismissed together. 225 // Otherwise, dismissing and adding a modalviewcontroller within a short period crashes the OS... 226 [self updateABRecord:person]; 227 return NO; 228 } 229 230 - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 231 shouldContinueAfterSelectingPerson:(ABRecordRef)person 232 property:(ABPropertyID)property 233 identifier:(ABMultiValueIdentifier)identifier { 234 return NO; 235 } 236 237 - (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker { 238 [topViewController dismissModalViewControllerAnimated:YES]; 239 } 240 241 #pragma mark ABPersonViewControllerDelegate methods 209 242 210 243 - (BOOL)personViewController:(ABPersonViewController *)personViewController … … 222 255 } 223 256 224 #pragma mark ------ ABUnknownPersonViewControllerDelegate methods225 226 - (void) unknownPersonViewController:(ABUnknownPersonViewController *)unknownPersonView227 didResolveToPerson:(ABRecordRef)person {257 #pragma mark ABNewPersonViewControllerDelegate methods 258 259 - (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController 260 didCompleteWithNewPerson:(ABRecordRef)person { 228 261 [topViewController dismissModalViewControllerAnimated:YES]; 229 262 } 230 263 231 #pragma mark ------UIActionSheetDelegate methods264 #pragma mark UIActionSheetDelegate methods 232 265 233 266 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { … … 238 271 NSError *err = nil; 239 272 if (buttonIndex == saveToExistingButtonIndex) { 240 err = [self update Record:recordForActionSheet];273 err = [self updateABRecord:recordForActionSheet]; 241 274 } else if (buttonIndex == saveToNewButtonIndex) { 242 err = [self saveUnknownRecord]; 275 err = [self saveNewABRecord]; 276 } else if (buttonIndex == saveToOtherButtonIndex) { 277 [self pickABRecordForSaving]; 243 278 } 244 279 if (err) { -
apps/iphone/superbook/trunk/Classes/DotTelABMapper.h
r397 r546 45 45 ABRecordRef abRecord; 46 46 NSMutableArray *updatedProperties; // All updated properties for a record 47 BOOL didSetPhoto; // Set to true if the photo has been set in this run 47 48 } 48 49 49 50 @property (readonly, retain) NSMutableArray *updatedProperties; 51 @property (nonatomic) BOOL didSetPhoto; 50 52 51 53 - (DotTelABMapper *)initWithABRecord:(ABRecordRef)rec; -
apps/iphone/superbook/trunk/Classes/DotTelABMapper.m
r509 r546 81 81 82 82 @synthesize updatedProperties; 83 @synthesize didSetPhoto; 83 84 84 85 #pragma mark ---- designated initializer ---- … … 96 97 } 97 98 updatedProperties = [[NSMutableArray array] retain]; 99 didSetPhoto = NO; 98 100 99 101 NSDictionary *selectorsMapper = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ABMapperSelectors" … … 211 213 } 212 214 215 - (NSError *)setNaptrPhoto:(RecordNaptr *)rec { 216 NSError *err = nil; 217 if (didSetPhoto) { 218 // Photo was already set once this run, we won't override 219 return err; 220 } 221 CFErrorRef cferr = (CFErrorRef)err; 222 NSString *photoUrl = [rec uriContent]; 223 if (photoUrl == nil) return err; 224 NSData *photoData = [NSData dataWithContentsOfURL:[NSURL URLWithString:photoUrl]]; 225 BOOL res = ABPersonSetImageData(abRecord, (CFDataRef)photoData, &cferr); 226 if (res) { 227 didSetPhoto = YES; 228 return nil; 229 } 230 return err; 231 } 232 213 233 - (NSError *)setNaptrPhone:(RecordNaptr *)rec { 214 234 SETNAPTR_INITIALIZATION; … … 345 365 346 366 - (NSError *)setNaptrIM:(RecordNaptr *)rec { 347 // NOTE: The simulator does NOT support IM fields. It silently discards them.348 367 // IM fields are dictionaries, not strings. They need special handling. 349 368 SETNAPTR_INITIALIZATION; … … 397 416 CFDictionaryRef existingIM = (CFDictionaryRef)ABMultiValueCopyValueAtIndex(allupdated, i); 398 417 if (existingIM) { 399 if (CFDictionaryGetValue(anIM, kABPersonInstantMessageServiceKey) == CFDictionaryGetValue(existingIM, kABPersonInstantMessageServiceKey)) { 418 CFStringRef anIMService = CFDictionaryGetValue(anIM, kABPersonInstantMessageServiceKey); 419 CFStringRef existingIMService = CFDictionaryGetValue(existingIM, kABPersonInstantMessageServiceKey); 420 if (CFStringCompare(anIMService, existingIMService, 0) == kCFCompareEqualTo) { 400 421 // Found a matching IM service type 401 422 CFStringRef existingLabel = (CFStringRef)ABMultiValueCopyLabelAtIndex(allupdated, i); -
apps/iphone/superbook/trunk/Classes/FriendsData.m
r470 r546 141 141 // CFRelease(allGroups); 142 142 143 // CFRelease(theBook); // Releasing the book crashes the app! OS bug? 144 143 145 if (prefsSorting == 0) { // alpha sorting on composite name 144 146 self.sortedPeopleArray = [peopleCurrentList keysSortedByValueUsingSelector:@selector(compositeNameSortAlgorithm:)]; … … 384 386 return [personInfoRow objectAtIndex:5]; 385 387 386 BOOL shouldRelease = NO; 388 ABMultiValueRef allUrls; 389 BOOL foundUrl = NO; 387 390 if (!recordRef) { 388 shouldRelease = YES; 389 recordRef = ABAddressBookGetPersonWithRecordID(book, (ABRecordID)[theId intValue]); 390 } 391 ABRecordRef newRecordRef = ABAddressBookGetPersonWithRecordID(book, (ABRecordID)[theId intValue]); 392 allUrls = ABRecordCopyValue(newRecordRef, kABPersonURLProperty); 393 // CFRelease(newRecordRef); 394 } else { 395 allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty); 396 } 397 391 398 CFStringRef telUrl; 392 BOOL foundUrl = NO;393 394 ABMultiValueRef allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty);395 396 399 for (CFIndex j = 0; j < ABMultiValueGetCount(allUrls); j++) { 397 400 telUrl = ABMultiValueCopyValueAtIndex(allUrls, j); … … 410 413 // } 411 414 CFRelease(allUrls); 412 413 414 if (shouldRelease) { 415 CFRelease(recordRef); 416 } 415 417 416 if (foundUrl) { 418 417 NSString *returnedTelUrl = [[FriendsData sharedInstance] telFromQueryString:(NSString *)telUrl]; … … 428 427 - (NSInteger) getTelIndexForABRecordId:(NSNumber *)theId withABRecordRef:(ABRecordRef)recordRef { 429 428 430 431 BOOL shouldRelease = NO; 429 ABMultiValueRef allUrls; 432 430 if (!recordRef) { 433 shouldRelease = YES; 434 recordRef = ABAddressBookGetPersonWithRecordID(book, (ABRecordID)[theId intValue]); 435 } 431 ABRecordRef newRecordRef = ABAddressBookGetPersonWithRecordID(book, (ABRecordID)[theId intValue]); 432 allUrls = ABRecordCopyValue(newRecordRef, kABPersonURLProperty); 433 // CFRelease(newRecordRef); 434 } else { 435 allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty); 436 } 437 438 NSInteger telIndex = -1; // Return value for nonexistent 436 439 CFStringRef telUrlValue; 437 ABMultiValueRef allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty);438 NSInteger telIndex = -1; // Return value for nonexistent439 440 440 for (CFIndex j = 0; j < ABMultiValueGetCount(allUrls); j++) { 441 441 telUrlValue = ABMultiValueCopyValueAtIndex(allUrls, j); … … 448 448 } 449 449 CFRelease(allUrls); 450 if (shouldRelease) {451 CFRelease(recordRef);452 }453 450 return telIndex; 454 451 } -
apps/iphone/superbook/trunk/Classes/FriendsMapViewController.h
r453 r546 29 29 30 30 #import <UIKit/UIKit.h> 31 #import "MapView/RMMapView.h" 32 #import "MapView/RMMarker.h" 33 #import "MapView/RMMarkerManager.h" 34 #import "MapView/RMOpenStreetMapsSource.h" 35 #import "MapView/RMVirtualEarthSource.h" 36 #import "MapView/RMCloudMadeMapSource.h" 31 #import "TelMapAnnotation.h" 37 32 #import <CoreLocation/CoreLocation.h> 38 33 #import "MyCLController.h" … … 40 35 #define VIEW_GPS_TIME_DESC_LABEL_TAG 101 41 36 42 @interface FriendsMapViewController : UIViewController < RMMapViewDelegate, MyCLControllerDelegate, UIActionSheetDelegate>{37 @interface FriendsMapViewController : UIViewController <MKMapViewDelegate, MyCLControllerDelegate, UIActionSheetDelegate> { 43 38 IBOutlet UILabel *labelGpsLastUpdateDate; 44 39 IBOutlet UIToolbar *actionBar; 45 40 IBOutlet UIBarButtonItem *buttonMoveTo; 46 IBOutlet RMMapView *theMap;41 IBOutlet MKMapView *theMap; 47 42 CLLocation *initialLoc; 48 UIImage *markerGpsImage; 49 UIImage *markerRedImage; 50 UIImage *markerBlueImage; 51 RMMarker *markerGps; 43 TelMapAnnotation *markerGps; 52 44 @private 53 45 BOOL gpsLocIsAvailable; … … 59 51 + (FriendsMapViewController *)sharedInstance; 60 52 61 - (void) setMarkers:(NSDictionary *)peopleList; 62 - (void) setMarkerWithABRecordId:(NSNumber *)theId 63 title:(NSString *)title 64 telname:(NSString *)telname 65 location:(CLLocation *)loc; 53 - (void)recenterMap; 54 - (void)setMarkers:(NSDictionary *)peopleList; 55 - (void)setMarkerWithABRecordId:(NSNumber *)theId 56 title:(NSString *)title 57 telname:(NSString *)telname 58 location:(CLLocation *)loc; 66 59 67 60 - (IBAction)didPressCenterGps:(id)sender; … … 72 65 @property (nonatomic, retain) IBOutlet UIToolbar *actionBar; 73 66 @property (nonatomic, retain) IBOutlet UIBarButtonItem *buttonMoveTo; 74 @property (nonatomic, retain) IBOutlet RMMapView *theMap;67 @property (nonatomic, retain) IBOutlet MKMapView *theMap; 75 68 @property (nonatomic, copy) CLLocation *initialLoc; 76 @property (nonatomic, retain) UIImage *markerGpsImage; 77 @property (nonatomic, retain) UIImage *markerRedImage; 78 @property (nonatomic, retain) UIImage *markerBlueImage; 79 @property (nonatomic, retain) RMMarker *markerGps; 80 @property double zoomLevel; 69 @property (nonatomic, retain) TelMapAnnotation *markerGps; 81 70 82 71 @end -
apps/iphone/superbook/trunk/Classes/FriendsMapViewController.m
r461 r546 36 36 @synthesize theMap; 37 37 @synthesize initialLoc; 38 @synthesize markerGpsImage, markerBlueImage, markerRedImage;39 38 @synthesize markerGps; 40 41 #define kIphoneCoolCloudMadeStyleNumber 181842 39 43 40 // This is a singleton class, see below … … 48 45 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 49 46 if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 50 self.markerGpsImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"marker-gps" ofType:@"png"]];51 self.markerBlueImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"marker-blue" ofType:@"png"]];52 self.markerRedImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"marker-red" ofType:@"png"]];53 47 uniqueMarkers = [[NSMutableDictionary dictionaryWithCapacity:20] retain]; 54 48 firstMarkers = [[NSMutableArray arrayWithCapacity:5] retain]; 55 self.markerGps = [[RMMarker alloc] initWithUIImage:self.markerGpsImage];56 markerGps.anchorPoint = CGPointMake(0.5, 1);57 49 } 58 50 return self; … … 63 55 self.title = NSLocalizedString(@"Map", @"Title for Map View"); 64 56 gpsLocIsAvailable = NO; 65 [RMMapView class]; // Make IB happy that the RMMapView symbol exists in the code 66 id myTilesource = [[[RMCloudMadeMapSource alloc] initWithAccessKey:@"ac2ada56343a5386a1958f7024b248d9" 67 styleNumber:kIphoneCoolCloudMadeStyleNumber] autorelease]; 68 // have to initialize the RMMapContents object explicitly if we want it to use a particular tilesource 69 [[[RMMapContents alloc] initWithView:theMap 70 tilesource:myTilesource] autorelease]; 71 72 // theMap.contents.tileSource = [[[RMCloudMadeMapSource alloc] initWithAccessKey:@"ac2ada56343a5386a1958f7024b248d9" 73 // styleNumber:kIphoneCoolCloudMadeStyleNumber] retain]; 57 theMap.delegate = self; 58 74 59 // Now put in the markers that are pending 75 RMMarker *aMarker; 76 for (aMarker in firstMarkers) { 77 [theMap.markerManager addMarker:aMarker AtLatLong:((CLLocation *)aMarker.data).coordinate]; 78 } 60 [theMap addAnnotations:firstMarkers]; 79 61 [firstMarkers removeAllObjects]; 80 CLLocationCoordinate2D zeroPoint = {0,0};81 [theMap.markerManager addMarker:self.markerGps AtLatLong:zeroPoint];82 // Put GPS marker above all markers83 self.markerGps.zPosition = 1.0;84 self.markerGps.hidden = YES;85 62 } 86 63 … … 93 70 initialLoc = [MyCLController sharedInstance].myCurrentLoc; 94 71 } 95 [theMap moveToLatLong:initialLoc.coordinate];72 [theMap setCenterCoordinate:initialLoc.coordinate]; 96 73 } 97 74 } … … 100 77 - (void)viewDidAppear:(BOOL)animated { 101 78 [super viewDidAppear:animated]; 79 self.theMap.showsUserLocation = YES; 102 80 self.navigationController.navigationBarHidden = NO; 103 81 } … … 108 86 } 109 87 110 - (void)didReceiveMemoryWarning {111 // due to a bug, RMMapView should never be released, as it causes the application to crash112 //[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview113 [theMap.contents didReceiveMemoryWarning];114 }115 116 117 88 - (void)dealloc { 89 [firstMarkers release]; 118 90 [uniqueMarkers release]; 119 91 [super dealloc]; … … 122 94 # pragma mark ---- Methods ---- 123 95 96 - (void)recenterMap { 97 // Center and zoom the map so it has all the annotations in it 98 NSArray *coordinates = [self.theMap valueForKeyPath:@"annotations.coordinate"]; 99 CLLocationCoordinate2D maxCoord = {-90.0f, -180.0f}; 100 CLLocationCoordinate2D minCoord = {90.0f, 180.0f}; 101 for (NSValue *value in coordinates) { 102 CLLocationCoordinate2D coord = {0.0f, 0.0f}; 103 [value getValue:&coord]; 104 if(coord.longitude > maxCoord.longitude) { 105 maxCoord.longitude = coord.longitude; 106 } 107 if(coord.latitude > maxCoord.latitude) { 108 maxCoord.latitude = coord.latitude; 109 } 110 if(coord.longitude < minCoord.longitude) { 111 minCoord.longitude = coord.longitude; 112 } 113 if(coord.latitude < minCoord.latitude) { 114 minCoord.latitude = coord.latitude; 115 } 116 } 117 MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}}; 118 region.center.longitude = (minCoord.longitude + maxCoord.longitude) / 2.0; 119 region.center.latitude = (minCoord.latitude + maxCoord.latitude) / 2.0; 120 region.span.longitudeDelta = 1.3 * (maxCoord.longitude - minCoord.longitude); // make the region 30% bigger than necessary 121 region.span.latitudeDelta = 1.3 * (maxCoord.latitude - minCoord.latitude); // make the region 30% bigger than necessary 122 [theMap setRegion:[theMap regionThatFits:region] animated:YES]; 123 } 124 124 125 - (IBAction)didPressCenterGps:(id)sender { 125 [theMap moveToLatLong:[[[MyCLController sharedInstance] myCurrentLoc] coordinate]];126 [theMap setCenterCoordinate:[[[MyCLController sharedInstance] myCurrentLoc] coordinate] animated:YES]; 126 127 } 127 128 … … 152 153 153 154 - (void) setMarkers:(NSDictionary *)peopleList { 154 155 //[theMap.markerManager removeMarkers];156 155 // the people list has for each personid: name, type of status, location, location timestamp, distance from user and telname 157 156 id personId; … … 177 176 return; 178 177 } 179 RMMarker *theMarker; 180 BOOL markerExists = NO; 178 TelMapAnnotation *theMarker; 181 179 if ([theId integerValue] == UINT_MAX) { 182 180 // just a domain we navigated to 183 theMarker = [[RMMarker alloc] initWithUIImage:self.markerRedImage]; 184 theMarker.anchorPoint = CGPointMake(0.5, 1); 185 [theMarker changeLabelUsingText:[NSString stringWithString:telname]]; 186 theMarker.zPosition = 0.1; 181 theMarker = [TelMapAnnotation annotationWithCoordinate:loc.coordinate]; 182 theMarker.type = TelMapAnnotationTypeOther; 183 theMarker.title = title; 184 theMarker.subtitle = telname; 185 if ([self isViewLoaded]) { 186 [theMap addAnnotation:theMarker]; 187 } else { 188 [firstMarkers addObject:theMarker]; 189 } 187 190 } else { 188 191 // is a friend 189 192 theMarker = [uniqueMarkers objectForKey:theId]; 190 193 if (theMarker) { 191 markerExists = YES; 192 [theMarker retain]; 194 theMarker.coordinate = loc.coordinate; 193 195 } else { 194 theMarker = [[RMMarker alloc] initWithUIImage:self.markerBlueImage]; 195 theMarker.anchorPoint = CGPointMake(0.5, 1); 196 [theMarker changeLabelUsingText:[NSString stringWithString:title]]; 196 theMarker = [TelMapAnnotation annotationWithCoordinate:loc.coordinate]; 197 theMarker.type = TelMapAnnotationTypeABRecord; 198 theMarker.title = title; 199 theMarker.subtitle = telname; 197 200 [uniqueMarkers setObject:theMarker forKey:theId]; 198 theMarker.zPosition = 0.2; 199 } 200 } 201 theMarker.data = [loc copy]; 202 203 // NSArray *mapMarkerNib = [[NSBundle mainBundle] loadNibNamed:@"MapMarker" owner:self options:nil]; 204 // [uniqueMarkers setObject:[mapMarkerNib objectAtIndex:0] forKey:theId]; 205 // theMarker.labelView = [uniqueMarkers objectForKey:theId]; 206 // [(UILabel *)[theMarker.labelView viewWithTag:1] setText:title]; // Title of the marker 207 // [(UILabel *)[theMarker.labelView viewWithTag:2] setText:telname]; // .tel value 208 // [(UILabel *)[theMarker.labelView viewWithTag:3] setText:[theId stringValue]]; // personId value 209 // [theMarker showLabel]; 210 211 // Now add the marker, but put it in a temporary array if the map view isn't yet loaded 212 if (theMap.markerManager) { 213 if (!markerExists) { 214 [theMap.markerManager addMarker:theMarker AtLatLong:((CLLocation *)theMarker.data).coordinate]; 215 } else { 216 [theMap.markerManager moveMarker:theMarker AtLatLon:((CLLocation *)theMarker.data).coordinate]; 217 } 218 } else { 219 if (!markerExists) { 220 [firstMarkers addObject:theMarker]; 221 } 222 } 223 [theMarker release]; 224 return; 225 } 226 227 #pragma mark ---- Zoom accessors ---- 228 229 - (double)zoomLevel { 230 return theMap.contents.zoom; 231 } 232 233 - (void)setZoomLevel:(double)zoom { 234 theMap.contents.zoom = zoom; 235 } 236 237 #pragma mark ---- RMMapView delegate methods ---- 238 239 - (BOOL)mapView:(RMMapView *)map shouldDragMarker:(RMMarker *)marker withEvent:(UIEvent *)event { 240 return NO; 241 } 242 201 if ([self isViewLoaded]) { 202 [theMap addAnnotation:theMarker]; 203 } else { 204 [firstMarkers addObject:theMarker]; 205 } 206 } 207 } 208 return; 209 } 210 211 #pragma mark ------ MKMapViewDelegate Methods 212 213 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 214 if ([annotation isMemberOfClass:[MKUserLocation class]]) return nil; 215 static NSString *annotationViewIdentifier = @"standardAnnotationView"; 216 MKPinAnnotationView *aView; 217 aView = (MKPinAnnotationView *)[theMap dequeueReusableAnnotationViewWithIdentifier:annotationViewIdentifier]; 218 if (aView == nil) { 219 aView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation 220 reuseIdentifier:annotationViewIdentifier] autorelease]; 221 aView.animatesDrop = YES; 222 aView.enabled = YES; 223 aView.canShowCallout = YES; 224 } 225 switch (((TelMapAnnotation *)annotation).type) { 226 case TelMapAnnotationTypeABRecord: 227 aView.pinColor = MKPinAnnotationColorPurple; 228 break; 229 case TelMapAnnotationTypeOther: 230 aView.pinColor = MKPinAnnotationColorRed; 231 break; 232 default: 233 aView.pinColor = MKPinAnnotationColorGreen; 234 break; 235 } 236 return aView; 237 } 238 239 - (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 240 // enable the below to zoom to local 241 // MKAnnotationView *aV; 242 // for (aV in views) { 243 // if (aV.annotation == theMap.userLocation) { 244 // [theMap setCenterCoordinate:theMap.userLocation.location.coordinate animated:YES]; 245 // // zoom in (even if it's updating) 246 // CLLocation *theLoc = [MyCLController sharedInstance].myCurrentLoc; 247 // CLLocationDistance radiusAccuracy = 1000; 248 // if (theLoc.horizontalAccuracy > 0.9 * radiusAccuracy) 249 // radiusAccuracy = theLoc.horizontalAccuracy / 0.9; 250 // MKCoordinateRegion aR = MKCoordinateRegionMakeWithDistance(theMap.userLocation.location.coordinate, radiusAccuracy, radiusAccuracy); 251 // [theMap setRegion:[theMap regionThatFits:aR] animated:YES]; 252 // } 253 // } 254 } 243 255 244 256 #pragma mark ---- MyCLController delegate methods ---- … … 248 260 [self.labelGpsLastUpdateDate setText:NSLocalizedString(@"LatLongUnavailable", @"Latitude/Longitude unavailable")]; 249 261 [self.labelGpsLastUpdateDate setNeedsDisplay]; 250 self.markerGps.hidden = NO;251 262 gpsLocIsAvailable = NO; 252 263 return; … … 259 270 [dateFormatter release]; 260 271 261 [theMap.markerManager moveMarker:markerGps AtLatLon:aLoc.coordinate];262 self.markerGps.hidden = NO;263 272 gpsLocIsAvailable = YES; 264 273 return; -
apps/iphone/superbook/trunk/Classes/LocateThem_ViewController.m
r521 r546 229 229 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 230 230 231 mapViewController.zoomLevel = 14.0;232 231 NSNumber *personId = [[FriendsData sharedInstance] getABRecordIdForIndexPath:indexPath]; 233 232 [tableView deselectRowAtIndexPath:indexPath animated:YES]; … … 373 372 [alertView show]; 374 373 [alertView release]; 375 if (alertMessage)376 [alertMessage release];377 374 } 378 375 … … 400 397 // Do data setup 401 398 [mapViewController didPressCenterGps:nil]; 402 mapViewController.zoomLevel = 6.0;403 399 [self.navigationController pushViewController:mapViewController animated:YES]; 404 400 } -
apps/iphone/superbook/trunk/Classes/NaptrViewController.h
r514 r546 29 29 #import <UIKit/UIKit.h> 30 30 #import "NSString+UITableViewHelper.h" 31 #import "NaptrCell.h" 32 #import "NTNaptrCell.h" 31 33 #import "FriendsData.h" 32 34 #import "FriendsMapViewController.h" … … 38 40 enum table_sections { 39 41 SECTION_HEADER = 0, 40 SECTION_NAPTR = 1, 41 SECTION_TXT = 2, 42 SECTION_LOC = 3, 42 SECTION_NAPTR, 43 SECTION_TXT, 44 SECTION_LOC, 45 SECTION_TOTAL 43 46 }; 44 45 #define NAPTRCELL_SERVICETYPE_TAG 146 #define NAPTRCELL_LABEL_TAG 247 #define NAPTRCELL_VALUE_TAG 348 47 49 48 #define TXTCELL_DESCRIPTION_TAG 1 … … 60 59 NSString *headerText; 61 60 NSMutableArray *naptrArray; 62 NSMutableArray *txtArray; 61 NSMutableArray *txtArray; // only keywords 62 NSMutableArray *allTxtArray; // all txt records 63 63 NSMutableArray *locArray; 64 64 NSString *country; … … 82 82 - (void)getTxtForTel:(NSString *)telName; 83 83 - (void)getLocForTel:(NSString *)telName; 84 - (void)getNaptrInBackgroundForTel:(NSString *)telName; 85 - (void)getTxtInBackgroundForTel:(NSString *)telName; 84 - (void)getNaptrAndTxtInBackgroundForTel:(NSString *)telName; 86 85 - (void)getLocInBackgroundForTel:(NSString *)telName; 87 86 - (void)getCountryAndTimeZoneForLoc:(CLLocation *)aLoc; … … 95 94 @property (nonatomic, retain) NSMutableArray *naptrArray; 96 95 @property (nonatomic, retain) NSMutableArray *txtArray; 96 @property (nonatomic, retain) NSMutableArray *allTxtArray; 97 97 @property (nonatomic, retain) NSMutableArray *locArray; 98 98 @property (nonatomic, retain) NSString *country; -
apps/iphone/superbook/trunk/Classes/NaptrViewController.m
r516 r546 30 30 31 31 static UIFont *headerFont; 32 static UIFont *naptrLabelFont; 32 33 static UIFont *txtFont; 33 34 … … 35 36 36 37 - (void)decrementLoadingCount; 38 - (void)refreshTableNaptrAndTxt; 39 - (void)refreshTableLoc; 37 40 - (void)showError:(NSError *)error; 38 41 @end … … 46 49 @synthesize naptrArray; 47 50 @synthesize txtArray; 51 @synthesize allTxtArray; 48 52 @synthesize locArray; 49 53 @synthesize country; … … 56 60 57 61 #define kHeaderTextFontSize 14.0 62 #define kNaptrLabelTextFontSize 12.0 58 63 #define kTextFontSize 14.0 59 64 … … 70 75 71 76 headerFont = [UIFont boldSystemFontOfSize:kHeaderTextFontSize]; 77 naptrLabelFont = [UIFont systemFontOfSize:kNaptrLabelTextFontSize]; 72 78 txtFont = [UIFont boldSystemFontOfSize:kTextFontSize]; 73 79 … … 94 100 self.naptrArray = [NSMutableArray arrayWithCapacity:10]; 95 101 self.txtArray = [NSMutableArray arrayWithCapacity:10]; 102 self.allTxtArray = [NSMutableArray arrayWithCapacity:20]; 96 103 self.locArray = [NSMutableArray arrayWithCapacity:1]; 97 104 … … 109 116 [self.theTable reloadData]; 110 117 loadingCount = 3; 111 [self performSelectorInBackground:@selector(getNaptrInBackgroundForTel:) withObject:self.title]; 112 [self performSelectorInBackground:@selector(getTxtInBackgroundForTel:) withObject:self.title]; 118 [self performSelectorInBackground:@selector(getNaptrAndTxtInBackgroundForTel:) withObject:self.title]; 113 119 [self performSelectorInBackground:@selector(getLocInBackgroundForTel:) withObject:self.title]; 114 120 return TRUE; … … 147 153 } 148 154 149 #pragma mark ------ set up loading stuff 155 #pragma mark - 156 #pragma mark UI updates 150 157 151 158 - (NSUInteger)loadingCount { … … 171 178 } 172 179 173 #pragma mark ------ tableView datasource methods 180 - (void)refreshTableNaptrAndTxt { 181 // Must call this on main thread, because it has UI needs and is called from background threads 182 if (![NSThread isMainThread]) { 183 [self performSelectorOnMainThread:_cmd 184 withObject:nil 185 waitUntilDone:YES]; 186 return; 187 } 188 [self.theTable reloadData]; 189 } 190 191 - (void)refreshTableLoc { 192 // Must call this on main thread, because it has UI needs and is called from background threads 193 if (![NSThread isMainThread]) { 194 [self performSelectorOnMainThread:_cmd 195 withObject:nil 196 waitUntilDone:YES]; 197 return; 198 } 199 // NSIndexSet *sections = [NSIndexSet indexSetWithIndex:SECTION_LOC]; 200 // [self.theTable reloadSections:sections withRowAnimation:UITableViewRowAnimationFade]; 201 [self.theTable reloadData]; 202 } 203 204 #pragma mark - 205 #pragma mark tableView datasource methods 174 206 175 207 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 176 return SECTION_ LOC+1;208 return SECTION_TOTAL; 177 209 } 178 210 … … 229 261 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 230 262 if (cell == nil) { 231 cell = [[[UITableViewCell alloc] initWith Frame:CGRectZeroreuseIdentifier:MyIdentifier] autorelease];263 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease]; 232 264 } 233 265 //Working with a resizable cell … … 246 278 case SECTION_NAPTR: 247 279 { 248 static NSString *MyIdentifier = @"naptrCells"; 280 static NSString *NaptrCellId = @"naptrCells"; 281 static NSString *NTNaptrCellId = @"ntnaptrCells"; 249 282 250 283 RecordNaptr *theRec = [self.naptrArray objectAtIndex:indexPath.row]; 251 284 252 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 253 if (cell == nil) { 254 NSArray *naptrCellNib = [[NSBundle mainBundle] loadNibNamed:@"NaptrTableViewCell" owner:self options:nil]; 255 cell = (UITableViewCell *)[naptrCellNib objectAtIndex:0]; 256 } 257 258 [(UILabel *)[cell viewWithTag:NAPTRCELL_SERVICETYPE_TAG] setText:theRec.serviceDescription]; 259 260 // Check if it's a nonterminal naptr. If so, add the accessory indicator 261 // and remove the trailing part of the string if it is a subdomain of the current domain 285 NaptrCell *cell; 262 286 if (theRec.isTerminal) { 263 [(UILabel *)[cell viewWithTag:NAPTRCELL_LABEL_TAG] setText:theRec.labelDescription]; 264 [(UILabel *)[cell viewWithTag:NAPTRCELL_VALUE_TAG] setText:theRec.uriContent]; 287 cell = (NaptrCell *)[tableView dequeueReusableCellWithIdentifier:NaptrCellId]; 288 if (cell == nil) { 289 cell = [[[NaptrCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:NaptrCellId] autorelease]; 290 } 265 291 } else { 266 [(UILabel *)[cell viewWithTag:NAPTRCELL_LABEL_TAG] setText:@""]; 267 [(UILabel *)[cell viewWithTag:NAPTRCELL_VALUE_TAG] setText:theRec.labelDescription]; 292 cell = (NTNaptrCell *)[tableView dequeueReusableCellWithIdentifier:NTNaptrCellId]; 293 if (cell == nil) { 294 cell = [[[NTNaptrCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:NTNaptrCellId] autorelease]; 295 } 296 } 297 298 cell.serviceText = theRec.serviceDescription; 299 cell.labelText = theRec.labelDescription; 300 cell.uriText = theRec.uriContent; 301 cell.iconImage = nil; 302 303 // Check if it's a ntnaptr. If so, remove the trailing part of the string if it is a subdomain of the current domain 304 if ((! theRec.isTerminal) && ([theRec.labelDescription length] == 0)) { 268 305 // If NTN points within domain, shorten text to only display the subdomain of this domain 269 if ([[theRec.labelDescription lowercaseString] hasSuffix:[self.cleanTelName lowercaseString]]) { 270 NSInteger suffixIndex = [theRec.labelDescription length] - [self.cleanTelName length] - 1; 306 NSLog(@"URI: %@, CLEAN NAME: %@", theRec.uriContent, self.cleanTelName); 307 if ([[theRec.uriContent lowercaseString] hasSuffix:[self.cleanTelName lowercaseString]]) { 308 NSInteger suffixIndex = [theRec.uriContent length] - [self.cleanTelName length] - 1; 271 309 if (suffixIndex > 0) { 272 [(UILabel *)[cell viewWithTag:NAPTRCELL_VALUE_TAG] setText:[theRec.labelDescription substringToIndex:suffixIndex]];310 cell.labelText = [theRec.uriContent substringToIndex:suffixIndex]; 273 311 } 274 312 } 275 [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];276 313 } 277 314 … … 420 457 fMVC.initialLoc = loc; 421 458 if ([abId integerValue] == NSUIntegerMax) { // not one of our address book .tel domains 422 [fMVC setMarkerWithABRecordId:self.abId title:nil telname:self.title location:loc]; 459 if (self.displayName) { 460 [fMVC setMarkerWithABRecordId:self.abId title:self.displayName telname:self.title location:loc]; 461 } else { 462 [fMVC setMarkerWithABRecordId:self.abId title:self.cleanTelName telname:self.title location:loc]; 463 } 464 423 465 } else { 424 466 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; … … 445 487 return [headerText cellHeightForFont:headerFont paddingWidth:10.0f Height:10.0f]; 446 488 } 489 case SECTION_NAPTR: 490 { 491 RecordNaptr *theRec = [self.naptrArray objectAtIndex:indexPath.row]; 492 // padding takes into consideration the static size of the servicetype row and uricontent row 493 return [theRec.labelDescription cellHeightForFont:naptrLabelFont paddingWidth:10.0f Height:20.0f]; 494 } 447 495 case SECTION_TXT: 448 496 { … … 494 542 [[NetworkUtility sharedInstance] networkwillActivate:NO]; 495 543 [self decrementLoadingCount]; 496 [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];497 544 if (error) { 498 545 // Show all errors unless the answer is invalid, which generally means there aren't any NAPTRs … … 507 554 [[NetworkUtility sharedInstance] networkwillActivate:YES]; 508 555 DnsResolver *res = [[DnsResolver alloc] init]; 509 NSMutableArray *alltxtArray = [[[NSMutableArray alloc] initWithCapacity:20] autorelease]; 510 NSUInteger txtCount = [res getTXTForTel:telName inArray:alltxtArray withError:&error]; 556 NSUInteger txtCount = [res getTXTForTel:telName inArray:allTxtArray withError:&error]; 511 557 if (txtCount == 0) { 512 558 #ifdef DEBUG … … 520 566 RecordTxt *theRec; 521 567 NSMutableString *_headerText = nil; 522 for (theRec in all txtArray) {568 for (theRec in allTxtArray) { 523 569 if (theRec.subType == RecordTxtSubTypeKeyword) { 524 570 // It's a keyword, let's add it to the array in the txt section … … 544 590 } 545 591 self.headerText = _headerText; 546 [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];547 592 } 548 593 … … 558 603 //NSLog(@"Warning: %d LOC records in domain %@", locCount, telName); 559 604 } 560 [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];561 605 if (locCount > 0) { 562 606 if (prefsReverseGeo) { … … 565 609 [self getCountryAndTimeZoneForLoc:(RecordLoc *)[self.locArray objectAtIndex:0]]; 566 610 [[NetworkUtility sharedInstance] networkwillActivate:NO]; 567 [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 568 } 569 } 570 } 571 572 - (void) getNaptrInBackgroundForTel:(NSString *)telName { 573 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 574 [self getNaptrForTel:telName]; 575 [pool release]; 576 } 577 578 - (void) getTxtInBackgroundForTel:(NSString *)telName { 611 } 612 } 613 } 614 615 - (void)getNaptrAndTxtInBackgroundForTel:(NSString *)telName { 579 616 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 580 617 [self getTxtForTel:telName]; 618 [self getNaptrForTel:telName]; 619 // merge the txt labels into the naptrs 620 DnsResolver *res = [[DnsResolver alloc] init]; 621 [res updateNaptrArray:self.naptrArray withTxtArray:self.allTxtArray]; 622 [res release]; 623 [self refreshTableNaptrAndTxt]; 581 624 [pool release]; 582 625 } 583 626 584 - (void) getLocInBackgroundForTel:(NSString *)telName {627 - (void)getLocInBackgroundForTel:(NSString *)telName { 585 628 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 586 629 [self getLocForTel:telName]; 630 [self refreshTableLoc]; 587 631 [pool release]; 588 632 } … … 695 739 } 696 740 if (err) { 697 NSLog([err localizedDescription]);741 [self showError:err]; 698 742 } 699 743 } -
apps/iphone/superbook/trunk/Classes/NSString+UITableViewHelper.m
r382 r546 57 57 cellLabel.textAlignment = UITextAlignmentLeft; 58 58 cellLabel.font = font; 59 cellLabel.text = self; 59 cellLabel.text = self; 60 60 cellLabel.numberOfLines = 0; 61 61 [cellLabel sizeToFit]; -
apps/iphone/superbook/trunk/DotTel_SDK/Classes/DnsResolver.h
r507 r546 39 39 #import <ldns/ldns.h> 40 40 #import "NetworkUtility.h" 41 #import "idna.h" 41 42 #import "RecordNaptr.h" 42 43 #import "RecordTxt.h" … … 71 72 * @param aDom the domain to query 72 73 * @param naptrArray the array to add the naptrs to 74 * 73 75 * @return the number of NAPTR records in the domain. 0 should mean error 74 76 * … … 104 106 - (NSUInteger)getLOCForTel:(NSString *)domain inArray:(NSMutableArray *)locArray withError:(NSError **)error; 105 107 108 /** 109 * Updates naptr records given an array of txt records 110 * At this time the only items that this method will use are labels (.tlb) 111 * .tlb records will be matched to their respective naptr records and will be 112 * used to modify the naptr records' label property 113 * Returns an array of int indexes of all modified naptr records in naptrArray 114 * 115 * @param naptrArray the array of naptrs to be updated 116 * @param txtArray the array of txt records from which to extract the additional info 117 * 118 * @return a set of indexes of NAPTR records modified 119 * 120 */ 121 - (NSIndexSet *)updateNaptrArray:(NSMutableArray *)naptrArray withTxtArray:(NSArray *)txtArray; 122 123 /** 124 * Converts a fully qualified domain name into its IDN equivalent 125 * The output may be an unmodified string 126 * On error, returns the unmodified string (i.e. silently discards errors) 127 * 128 * @param domain the domain to convert 129 * 130 * @return the IDN string 131 * 132 */ 133 - (NSString *)idnStringFromDomain:(NSString *)domain; 106 134 @end -
apps/iphone/superbook/trunk/DotTel_SDK/Classes/DnsResolver.m
r507 r546 136 136 } 137 137 138 - (NSIndexSet *)updateNaptrArray:(NSMutableArray *)naptrArray withTxtArray:(NSArray *)txtArray { 139 #ifdef DEBUG 140 NSLog(@"Updating NAPTR array with TXT array"); 141 #endif 142 NSMutableIndexSet *updatedNaptrs = [NSMutableIndexSet indexSet]; 143 if ((naptrArray == nil) || (txtArray == nil)) return updatedNaptrs; 144 if (([naptrArray count] == 0) || ([txtArray count] == 0)) return updatedNaptrs; 145 RecordNaptr *aN; 146 RecordTxt *aT; 147 148 // Create a dictionary to map order+prefs of txt 149 // We're doing the mapping on the txt array because we'll need to iterate 150 // on the naptr array to populate the index set 151 NSMutableDictionary *txtDict = [NSMutableDictionary dictionaryWithCapacity:[txtArray count]]; 152 for (aT in txtArray) { 153 if (aT.subType == RecordTxtSubTypeLabel) { 154 NSString *key = [NSString stringWithFormat:@"%d_%d", aT.order, aT.preference]; 155 [txtDict setObject:aT forKey:key]; 156 } 157 } 158 159 NSUInteger i, count = [naptrArray count]; 160 for (i = 0; i < count; i++) { 161 aN = [naptrArray objectAtIndex:i]; 162 NSString *key = [NSString stringWithFormat:@"%d_%d", [aN.order intValue], [aN.preference intValue]]; 163 aT = [txtDict objectForKey:key]; 164 if (aT != nil) { 165 aN.labelDescription = aT.textValue; 166 [updatedNaptrs addIndex:i]; 167 } 168 } 169 return updatedNaptrs; 170 } 138 171 139 172 #pragma mark ------------ private methods ------------------- … … 174 207 175 208 ldns_rr_list *rrlist; 176 ldns_rdf *ldnsdomain = ldns_dname_new_frm_str([ domainUTF8String]);177 NSError *err2; 209 ldns_rdf *ldnsdomain = ldns_dname_new_frm_str([[self idnStringFromDomain:domain] UTF8String]); 210 NSError *err2; 178 211 NSDictionary *dict; 179 212 … … 271 304 } 272 305 306 #pragma mark - 307 #pragma mark IDN methods 308 309 - (NSString *)idnStringFromDomain:(NSString *)domain { 310 if (domain == nil) return nil; 311 char *p; 312 int rc; 313 rc = idna_to_ascii_8z([domain UTF8String], &p, 0); 314 if (rc != IDNA_SUCCESS) { 315 NSLog(@"idnStringFromDomain failed (%d): %s\n", rc, idna_strerror (rc)); 316 return domain; 317 } 318 NSString *idnString = [NSString stringWithCString:p encoding:NSASCIIStringEncoding]; 319 free(p); 320 return idnString; 321 } 322 273 323 @end -
apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordNaptr.h
r496 r546 29 29 #import <UIKit/UIKit.h> 30 30 #import <ldns/ldns.h> 31 #import "idna.h" 31 32 32 33 // Shorthand for getting localized strings … … 98 99 - (NSComparisonResult)comparator:(RecordNaptr *)aNaptr; 99 100 101 /** 102 * Converts an IDN string into a domain name 103 * If the IDN string doesn't have the "xn--" prefix, the method returns 104 * a string that is the exact same as the input 105 * On error, returns the unmodified string (i.e. silently discards errors) 106 * 107 * @param domain the IDN string 108 * 109 * @return the domain to convert 110 * 111 */ 112 - (NSString *)domainFromIdnString:(NSString *)idnString; 113 100 114 @property (readonly) BOOL isTerminal; 101 115 @property (readonly) BOOL isPrivate; … … 111 125 @property (readonly, nonatomic, retain) NSNumber *preference; 112 126 @property (readonly, nonatomic, retain) NSString *serviceDescription; 113 @property ( readonly, nonatomic, retain) NSString *labelDescription;127 @property (nonatomic, copy) NSString *labelDescription; 114 128 @property (readonly, nonatomic, retain) NSString *uriContent; 115 129 @property (readonly, nonatomic, retain) NSDate *expiryDate; -
apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordNaptr.m
r483 r546 149 149 NSURL *telUrl = [NSURL URLWithString:uriContent]; 150 150 if ([telUrl host]) { 151 replacement = [ NSString stringWithString:[telUrl host]];151 replacement = [self domainFromIdnString:[telUrl host]]; 152 152 uriContent = replacement; 153 153 isTerminal = NO; 154 labelDescription = [[[replacement stringByReplacingOccurrencesOfString:@"-" withString:@" "] capitalizedString] retain];155 154 } 156 155 } 157 156 158 157 } else if ([flags isEqualToString:@""]) { // Non-terminal naptr 158 NSString *idnString = [self stringFromDnameRdf:ldns_rr_rdf(rr,5)]; 159 replacement = [self domainFromIdnString:idnString]; 160 uriContent = replacement; 159 161 isTerminal = NO; 160 replacement = [self stringFromDnameRdf:ldns_rr_rdf(rr,5)]; 161 labelDescription = [[[replacement stringByReplacingOccurrencesOfString:@"-" withString:@" "] capitalizedString] retain]; 162 uriContent = replacement; 162 labelDescription = @""; // no short labels here 163 163 164 164 } else { // Not valid … … 286 286 options:NSLiteralSearch 287 287 range:NSMakeRange(0, [theDesc length])]; 288 // cut off max label289 // if ([theDesc length] > 20) {290 // [theDesc deleteCharactersInRange:NSMakeRange(20, [theDesc length] - 20)];291 // }292 288 return theDesc; 293 289 } … … 318 314 } 319 315 320 # pragma mark ------------- Utility functions for parsing record data fields ------------ 316 #pragma mark - 317 #pragma mark Utility functions for parsing record data fields 321 318 322 319 - (NSString *)stringFromStringRdf:(const ldns_rdf *)rdf { … … 382 379 } 383 380 384 #pragma mark ---- cleanup ---- 381 #pragma mark - 382 #pragma mark IDN methods 383 384 - (NSString *)domainFromIdnString:(NSString *)idnString { 385 if (idnString == nil) return nil; 386 char *p; 387 int rc; 388 rc = idna_to_unicode_8z8z([idnString UTF8String], &p, 0); 389 if (rc != IDNA_SUCCESS) { 390 NSLog(@"domainFromIdnString failed (%d): %s\n", rc, idna_strerror (rc)); 391 return idnString; 392 } 393 NSString *domain = [NSString stringWithUTF8String:p]; 394 free(p); 395 return domain; 396 } 397 398 #pragma mark - 399 #pragma mark cleanup 385 400 386 401 - (void)dealloc { -
apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordTxt.h
r507 r546 39 39 RecordTxtSubTypeOtherTSM = 3, // other .tel system message 40 40 RecordTxtSubTypeAdvert = 4, // .tad advert 41 RecordTxtSubTypeLabel = 5, // .tlb record label 41 42 }; 42 43 … … 52 53 NSMutableArray *keysAndValues; // all keys and values of the TXT record (including primary key/value) 53 54 NSDate *expiryDate; // Expiry date of the record, based on time-to-live 54 55 NSInteger order; 56 NSInteger preference; 55 57 } 56 58 … … 89 91 @property (readonly, nonatomic, retain) NSMutableArray *keysAndValues; 90 92 @property (readonly, nonatomic, retain) NSDate *expiryDate; 93 @property (readonly) NSInteger order; 94 @property (readonly) NSInteger preference; 91 95 92 96 @end -
apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordTxt.m
r507 r546 34 34 35 35 - (BOOL)parseDisplayStringFromRecord:(const ldns_rr *)rr; 36 - (BOOL)parseLabelFromRecord:(const ldns_rr *)rr; 36 37 - (BOOL)parseKeywordsFromRecord:(const ldns_rr *)rr; 37 38 … … 50 51 @synthesize textValue; 51 52 @synthesize keysAndValues; 53 @synthesize order; 54 @synthesize preference; 52 55 53 56 + (id)recordWithRr:(ldns_rr *)rr { … … 75 78 trimCharacterSet = [[NSCharacterSet whitespaceCharacterSet] retain]; 76 79 isValid = NO; 77 80 order = preference = 0; 81 78 82 if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_TXT) 79 83 return self; 80 84 81 85 NSTimeInterval ttl = (NSTimeInterval)ldns_rr_ttl(rr); 82 86 expiryDate = [lookupDate addTimeInterval:ttl]; … … 105 109 subType = RecordTxtSubTypeAdvert; 106 110 return self; 111 } else if ([firstString isEqualToString:@".tlb"]) { 112 // record label 113 subType = RecordTxtSubTypeLabel; 114 isValid = [self parseLabelFromRecord:rr]; 115 return self; 107 116 } else { 108 117 // header … … 115 124 [stringComponents addObject:[self stringFromStringRdf:ldns_rr_rdf(rr,i)]]; 116 125 } 117 126 118 127 textValue = [stringComponents componentsJoinedByString:@" "]; 119 128 isValid = YES; … … 135 144 textValue = nil; 136 145 return FALSE; 146 } 147 148 - (BOOL)parseLabelFromRecord:(const ldns_rr *)rr { 149 // Labels always start with ".lbl" and have an order and preference to map them to records 150 // ".tlb", "1", "100", "101", "This is a label" 151 152 // Check version 153 if ([[self stringFromStringRdf:ldns_rr_rdf(rr,1)] isEqualToString:@"1"]) { 154 // Version 1 155 order = [[self stringFromStringRdf:ldns_rr_rdf(rr,2)] integerValue]; 156 preference = [[self stringFromStringRdf:ldns_rr_rdf(rr,3)] integerValue]; 157 textValue = [[self stringFromStringRdf:ldns_rr_rdf(rr,4)] retain]; 158 return TRUE; 159 } else { 160 // Unknown version 161 textValue = nil; 162 return FALSE; 163 } 137 164 } 138 165 … … 208 235 - (void)dealloc { 209 236 [trimCharacterSet release]; 210 // [primaryDescription release];211 // [primaryValue release];212 // [textValue release];213 // [keysAndValues release];214 // [expiryDate release];237 // [primaryDescription release]; 238 // [primaryValue release]; 239 // [textValue release]; 240 // [keysAndValues release]; 241 // [expiryDate release]; 215 242 [super dealloc]; 216 243 } -
apps/iphone/superbook/trunk/DotTel_SDK/README DotTel SDK
r357 r546 1 1 Welcome to the .tel iPhone SDK. 2 Version 1. 1for iPhone OS 2.0 and above2 Version 1.2 for iPhone OS 2.0 and above 3 3 4 4 The main purpose of this SDK is to enable quick development of iPhone … … 57 57 CHANGE NOTES: 58 58 59 - 1.2 Oct 30, 2009 60 Added .tlb support 61 59 62 - 1.1 Sept 20, 2008 60 63 Added expiryDate based on TTL. -
apps/iphone/superbook/trunk/English.lproj/About.html
r511 r546 8 8 9 9 <body style="font-family: verdana; font-size: small;"> 10 <p align="right">Version 1. 3by Henri Asseily, <a href="http://henri.tel">henri.tel</a><br />10 <p align="right">Version 1.4 by Henri Asseily, <a href="http://henri.tel">henri.tel</a><br /> 11 11 Copyright 2009 Telnic Ltd., <a href="http://dev.telnic.org/pages/legal.html">License Agreement</a><br /> 12 12 Report issues in the <a href="http://dev.telnic.org/trac/discussion">.tel Community Forum</a></p> … … 30 30 </ul> 31 31 <p>Henri Asseily, Beirut, Lebanon, June 2009.</p> 32 <p>Updated November 2009</p> 32 33 </body> 33 34 </html> -
apps/iphone/superbook/trunk/English.lproj/Localizable.strings
r508 r546 122 122 "UpdateExisting" = "Update %@"; 123 123 124 /* Create a new contact */ 125 "CreateNewContact" = "Create new contact"; 124 126 125 127 -
apps/iphone/superbook/trunk/FMapView.xib
r452 r546 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version=" 7.03">2 <archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="8.00"> 3 3 <data> 4 <int key="IBDocument.SystemTarget">528</int> 5 <string key="IBDocument.SystemVersion">9J61</string> 6 <string key="IBDocument.InterfaceBuilderVersion">677</string> 7 <string key="IBDocument.AppKitVersion">949.46</string> 8 <string key="IBDocument.HIToolboxVersion">353.00</string> 9 <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> 10 <bool key="EncodedWithXMLCoder">YES</bool> 11 <integer value="4"/> 12 </object> 13 <object class="NSArray" key="IBDocument.PluginDependencies"> 14 <bool key="EncodedWithXMLCoder">YES</bool> 4 <int key="IBDocument.SystemTarget">768</int> 5 <string key="IBDocument.SystemVersion">10B504</string> 6 <string key="IBDocument.InterfaceBuilderVersion">732</string> 7 <string key="IBDocument.AppKitVersion">1038.2</string> 8 <string key="IBDocument.HIToolboxVersion">437.00</string> 9 <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> 10 <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 11 <string key="NS.object.0">62</string> 12 </object> 13 <array class="NSMutableArray" key="IBDocument.EditedObjectIDs"> 14 <integer value="57"/> 15 </array> 16 <array key="IBDocument.PluginDependencies"> 15 17 <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 16 </object> 17 <object class="NSMutableDictionary" key="IBDocument.Metadata"> 18 <bool key="EncodedWithXMLCoder">YES</bool> 19 <object class="NSArray" key="dict.sortedKeys"> 20 <bool key="EncodedWithXMLCoder">YES</bool> 21 </object> 22 <object class="NSMutableArray" key="dict.values"> 23 <bool key="EncodedWithXMLCoder">YES</bool> 24 </object> 25 </object> 26 <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> 27 <bool key="EncodedWithXMLCoder">YES</bool> 18 </array> 19 <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/> 20 <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> 28 21 <object class="IBProxyObject" id="372490531"> 29 22 <string key="IBProxiedObjectIdentifier">IBFilesOwner</string> … … 35 28 <reference key="NSNextResponder"/> 36 29 <int key="NSvFlags">274</int> 37 <object class="NSMutableArray" key="NSSubviews"> 38 <bool key="EncodedWithXMLCoder">YES</bool> 39 <object class="IBUIView" id="129435978"> 40 <reference key="NSNextResponder" ref="313343111"/> 41 <int key="NSvFlags">274</int> 42 <object class="NSMutableArray" key="NSSubviews"> 43 <bool key="EncodedWithXMLCoder">YES</bool> 44 <object class="IBUIToolbar" id="139092493"> 45 <reference key="NSNextResponder" ref="129435978"/> 46 <int key="NSvFlags">266</int> 47 <string key="NSFrame">{{0, 372}, {320, 44}}</string> 48 <reference key="NSSuperview" ref="129435978"/> 49 <bool key="IBUIOpaque">NO</bool> 50 <bool key="IBUIClearsContextBeforeDrawing">NO</bool> 51 <int key="IBUIBarStyle">2</int> 52 <object class="NSMutableArray" key="IBUIItems"> 53 <bool key="EncodedWithXMLCoder">YES</bool> 54 <object class="IBUIBarButtonItem" id="144500120"> 55 <int key="IBUIStyle">1</int> 56 <reference key="IBUIToolbar" ref="139092493"/> 57 <int key="IBUISystemItemIdentifier">9</int> 58 </object> 59 </object> 60 <object class="NSColor" key="IBUITintColor"> 61 <int key="NSColorSpace">1</int> 62 <bytes key="NSRGB">MCAwLjI1MDk4MDQxIDAuNTAxOTYwODEAA</bytes> 63 </object> 30 <array class="NSMutableArray" key="NSSubviews"> 31 <object class="IBMKMapView" id="270057972"> 32 <reference key="NSNextResponder" ref="313343111"/> 33 <int key="NSvFlags">268</int> 34 <string key="NSFrameSize">{320, 416}</string> 35 <reference key="NSSuperview" ref="313343111"/> 36 <bool key="IBUIOpaque">NO</bool> 37 <bool key="IBUIClipsSubviews">YES</bool> 38 <int key="IBUIContentMode">4</int> 39 <bool key="IBUIMultipleTouchEnabled">YES</bool> 40 </object> 41 <object class="IBUIToolbar" id="139092493"> 42 <reference key="NSNextResponder" ref="313343111"/> 43 <int key="NSvFlags">266</int> 44 <string key="NSFrame">{{0, 372}, {320, 44}}</string> 45 <reference key="NSSuperview" ref="313343111"/> 46 <bool key="IBUIOpaque">NO</bool> 47 <bool key="IBUIClearsContextBeforeDrawing">NO</bool> 48 <int key="IBUIBarStyle">2</int> 49 <array class="NSMutableArray" key="IBUIItems"> 50 <object class="IBUIBarButtonItem" id="144500120"> 51 <int key="IBUIStyle">1</int> 52 <reference key="IBUIToolbar" ref="139092493"/> 53 <int key="IBUISystemItemIdentifier">9</int> 64 54 </object> 65 <object class="IBUILabel" id="390972019"> 66 <reference key="NSNextResponder" ref="129435978"/> 67 <int key="NSvFlags">269</int> 68 <string key="NSFrame">{{57, 384}, {137, 21}}</string> 69 <reference key="NSSuperview" ref="129435978"/> 70 <bool key="IBUIOpaque">NO</bool> 71 <bool key="IBUIClipsSubviews">YES</bool> 72 <int key="IBUITag">101</int> 73 <bool key="IBUIUserInteractionEnabled">NO</bool> 74 <string key="IBUIText">GPS Last Update Time:</string> 75 <object class="NSFont" key="IBUIFont"> 76 <string key="NSName">Helvetica-Bold</string> 77 <double key="NSSize">1.200000e+01</double> 78 <int key="NSfFlags">16</int> 79 </object> 80 <object class="NSColor" key="IBUITextColor" id="693340492"> 81 <int key="NSColorSpace">1</int> 82 <bytes key="NSRGB">MSAxIDEAA</bytes> 83 </object> 84 <nil key="IBUIHighlightedColor"/> 85 <int key="IBUIBaselineAdjustment">1</int> 86 <float key="IBUIMinimumFontSize">1.000000e+01</float> 87 <int key="IBUITextAlignment">2</int> 88 </object> 89 <object class="IBUILabel" id="110319406"> 90 <reference key="NSNextResponder" ref="129435978"/> 91 <int key="NSvFlags">269</int> 92 <string key="NSFrame">{{198, 385}, {113, 19}}</string> 93 <reference key="NSSuperview" ref="129435978"/> 94 <bool key="IBUIOpaque">NO</bool> 95 <bool key="IBUIClipsSubviews">YES</bool> 96 <bool key="IBUIUserInteractionEnabled">NO</bool> 97 <string key="IBUIText">unknown</string> 98 <object class="NSFont" key="IBUIFont"> 99 <string key="NSName">Helvetica-Oblique</string> 100 <double key="NSSize">1.200000e+01</double> 101 <int key="NSfFlags">16</int> 102 </object> 103 <reference key="IBUITextColor" ref="693340492"/> 104 <nil key="IBUIHighlightedColor"/> 105 <int key="IBUIBaselineAdjustment">1</int> 106 <float key="IBUIMinimumFontSize">9.000000e+00</float> 107 </object> 108 </object> 109 <string key="NSFrameSize">{320, 416}</string> 110 <reference key="NSSuperview" ref="313343111"/> 111 <reference key="IBUIBackgroundColor" ref="693340492"/> 112 <bool key="IBUIClearsContextBeforeDrawing">NO</bool> 113 <int key="IBUIContentMode">9</int> 114 <bool key="IBUIMultipleTouchEnabled">YES</bool> 115 </object> 116 </object> 55 </array> 56 <object class="NSColor" key="IBUITintColor"> 57 <int key="NSColorSpace">1</int> 58 <bytes key="NSRGB">MCAwLjI1MDk4MDQxIDAuNTAxOTYwODEAA</bytes> 59 </object> 60 </object> 61 <object class="IBUILabel" id="110319406"> 62 <reference key="NSNextResponder" ref="313343111"/> 63 <int key="NSvFlags">269</int> 64 <string key="NSFrame">{{197, 385}, {113, 19}}</string> 65 <reference key="NSSuperview" ref="313343111"/> 66 <bool key="IBUIOpaque">NO</bool> 67 <bool key="IBUIClipsSubviews">YES</bool> 68 <bool key="IBUIUserInteractionEnabled">NO</bool> 69 <string key="IBUIText">unknown</string> 70 <object class="NSFont" key="IBUIFont"> 71 <string key="NSName">Helvetica-Oblique</string> 72 <double key="NSSize">12</double> 73 <int key="NSfFlags">16</int> 74 </object> 75 <object class="NSColor" key="IBUITextColor" id="693340492"> 76 <int key="NSColorSpace">1</int> 77 <bytes key="NSRGB">MSAxIDEAA</bytes> 78 </object> 79 <nil key="IBUIHighlightedColor"/> 80 <int key="IBUIBaselineAdjustment">1</int> 81 <float key="IBUIMinimumFontSize">9</float> 82 </object> 83 <object class="IBUILabel" id="390972019"> 84 <reference key="NSNextResponder" ref="313343111"/> 85 <int key="NSvFlags">269</int> 86 <string key="NSFrame">{{54, 384}, {137, 21}}</string> 87 <reference key="NSSuperview" ref="313343111"/> 88 <bool key="IBUIOpaque">NO</bool> 89 <bool key="IBUIClipsSubviews">YES</bool> 90 <int key="IBUITag">101</int> 91 <bool key="IBUIUserInteractionEnabled">NO</bool> 92 <string key="IBUIText">GPS Last Update Time:</string> 93 <object class="NSFont" key="IBUIFont"> 94 <string key="NSName">Helvetica-Bold</string> 95 <double key="NSSize">12</double> 96 <int key="NSfFlags">16</int> 97 </object> 98 <reference key="IBUITextColor" ref="693340492"/> 99 <nil key="IBUIHighlightedColor"/> 100 <int key="IBUIBaselineAdjustment">1</int> 101 <float key="IBUIMinimumFontSize">10</float> 102 <int key="IBUITextAlignment">2</int> 103 </object> 104 </array> 117 105 <string key="NSFrameSize">{320, 416}</string> 118 106 <reference key="NSSuperview"/> … … 129 117 </object> 130 118 </object> 131 </ object>119 </array> 132 120 <object class="IBObjectContainer" key="IBDocument.Objects"> 133 <object class="NSMutableArray" key="connectionRecords"> 134 <bool key="EncodedWithXMLCoder">YES</bool> 121 <array class="NSMutableArray" key="connectionRecords"> 135 122 <object class="IBConnectionRecord"> 136 123 <object class="IBCocoaTouchOutletConnection" key="connection"> … … 156 143 </object> 157 144 <int key="connectionID">52</int> 158 </object>159 <object class="IBConnectionRecord">160 <object class="IBCocoaTouchOutletConnection" key="connection">161 <string key="label">theMap</string>162 <reference key="source" ref="372490531"/>163 <reference key="destination" ref="129435978"/>164 </object>165 <int key="connectionID">53</int>166 145 </object> 167 146 <object class="IBConnectionRecord"> … … 181 160 <int key="connectionID">56</int> 182 161 </object> 183 </object> 162 <object class="IBConnectionRecord"> 163 <object class="IBCocoaTouchOutletConnection" key="connection"> 164 <string key="label">theMap</string> 165 <reference key="source" ref="372490531"/> 166 <reference key="destination" ref="270057972"/> 167 </object> 168 <int key="connectionID">58</int> 169 </object> 170 </array> 184 171 <object class="IBMutableOrderedSet" key="objectRecords"> 185 <object class="NSArray" key="orderedObjects"> 186 <bool key="EncodedWithXMLCoder">YES</bool> 172 <array key="orderedObjects"> 187 173 <object class="IBObjectRecord"> 188 174 <int key="objectID">0</int> 189 <object class="NSArray" key="object" id="360949347"> 190 <bool key="EncodedWithXMLCoder">YES</bool> 191 </object> 175 <array key="object" id="0"/> 192 176 <reference key="children" ref="1000"/> 193 177 <nil key="parent"/> … … 196 180 <int key="objectID">-1</int> 197 181 <reference key="object" ref="372490531"/> 198 <reference key="parent" ref=" 360949347"/>199 <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>182 <reference key="parent" ref="0"/> 183 <string key="objectName">File's Owner</string> 200 184 </object> 201 185 <object class="IBObjectRecord"> 202 186 <int key="objectID">-2</int> 203 187 <reference key="object" ref="975951072"/> 204 <reference key="parent" ref=" 360949347"/>188 <reference key="parent" ref="0"/> 205 189 </object> 206 190 <object class="IBObjectRecord"> 207 191 <int key="objectID">3</int> 208 192 <reference key="object" ref="313343111"/> 209 <object class="NSMutableArray" key="children"> 210 <bool key="EncodedWithXMLCoder">YES</bool> 211 <reference ref="129435978"/> 212 </object> 213 <reference key="parent" ref="360949347"/> 214 </object> 215 <object class="IBObjectRecord"> 216 <int key="objectID">4</int> 217 <reference key="object" ref="129435978"/> 218 <object class="NSMutableArray" key="children"> 219 <bool key="EncodedWithXMLCoder">YES</bool> 193 <array class="NSMutableArray" key="children"> 194 <reference ref="270057972"/> 220 195 <reference ref="139092493"/> 221 196 <reference ref="390972019"/> 222 197 <reference ref="110319406"/> 223 </object> 198 </array> 199 <reference key="parent" ref="0"/> 200 </object> 201 <object class="IBObjectRecord"> 202 <int key="objectID">57</int> 203 <reference key="object" ref="270057972"/> 204 <reference key="parent" ref="313343111"/> 205 </object> 206 <object class="IBObjectRecord"> 207 <int key="objectID">5</int> 208 <reference key="object" ref="110319406"/> 209 <reference key="parent" ref="313343111"/> 210 <string key="objectName">labelGpsLastUpdateDate</string> 211 </object> 212 <object class="IBObjectRecord"> 213 <int key="objectID">32</int> 214 <reference key="object" ref="390972019"/> 224 215 <reference key="parent" ref="313343111"/> 225 216 </object> … … 227 218 <int key="objectID">36</int> 228 219 <reference key="object" ref="139092493"/> 229 <object class="NSMutableArray" key="children"> 230 <bool key="EncodedWithXMLCoder">YES</bool> 220 <array class="NSMutableArray" key="children"> 231 221 <reference ref="144500120"/> 232 </ object>233 <reference key="parent" ref=" 129435978"/>222 </array> 223 <reference key="parent" ref="313343111"/> 234 224 </object> 235 225 <object class="IBObjectRecord"> … … 238 228 <reference key="parent" ref="139092493"/> 239 229 </object> 240 <object class="IBObjectRecord"> 241 <int key="objectID">32</int> 242 <reference key="object" ref="390972019"/> 243 <reference key="parent" ref="129435978"/> 244 </object> 245 <object class="IBObjectRecord"> 246 <int key="objectID">5</int> 247 <reference key="object" ref="110319406"/> 248 <reference key="parent" ref="129435978"/> 249 <string key="objectName">labelGpsLastUpdateDate</string> 250 </object> 251 </object> 252 </object> 253 <object class="NSMutableDictionary" key="flattenedProperties"> 254 <bool key="EncodedWithXMLCoder">YES</bool> 255 <object class="NSMutableArray" key="dict.sortedKeys"> 256 <bool key="EncodedWithXMLCoder">YES</bool> 257 <string>-1.CustomClassName</string> 258 <string>-2.CustomClassName</string> 259 <string>3.IBEditorWindowLastContentRect</string> 260 <string>3.IBPluginDependency</string> 261 <string>32.IBPluginDependency</string> 262 <string>36.IBPluginDependency</string> 263 <string>37.IBPluginDependency</string> 264 <string>4.CustomClassName</string> 265 <string>4.IBPluginDependency</string> 266 <string>5.IBPluginDependency</string> 267 </object> 268 <object class="NSMutableArray" key="dict.values"> 269 <bool key="EncodedWithXMLCoder">YES</bool> 270 <string>FriendsMapViewController</string> 271 <string>UIResponder</string> 272 <string>{{98, 376}, {320, 480}}</string> 273 <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 274 <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 275 <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 276 <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 277 <string>RMMapView</string> 278 <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 279 <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 280 </object> 281 </object> 282 <object class="NSMutableDictionary" key="unlocalizedProperties"> 283 <bool key="EncodedWithXMLCoder">YES</bool> 284 <object class="NSArray" key="dict.sortedKeys"> 285 <bool key="EncodedWithXMLCoder">YES</bool> 286 </object> 287 <object class="NSMutableArray" key="dict.values"> 288 <bool key="EncodedWithXMLCoder">YES</bool> 289 </object> 290 </object> 230 </array> 231 </object> 232 <dictionary class="NSMutableDictionary" key="flattenedProperties"> 233 <string key="-1.CustomClassName">FriendsMapViewController</string> 234 <string key="-2.CustomClassName">UIResponder</string> 235 <string key="3.IBEditorWindowLastContentRect">{{98, 376}, {320, 480}}</string> 236 <string key="3.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 237 <string key="32.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 238 <string key="36.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 239 <string key="37.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 240 <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 241 <string key="57.IBEditorWindowLastContentRect">{{0, 706}, {240, 128}}</string> 242 <string key="57.IBPluginDependency">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 243 </dictionary> 244 <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> 291 245 <nil key="activeLocalization"/> 292 <object class="NSMutableDictionary" key="localizations"> 293 <bool key="EncodedWithXMLCoder">YES</bool> 294 <object class="NSArray" key="dict.sortedKeys"> 295 <bool key="EncodedWithXMLCoder">YES</bool> 296 </object> 297 <object class="NSMutableArray" key="dict.values"> 298 <bool key="EncodedWithXMLCoder">YES</bool> 299 </object> 300 </object> 246 <dictionary class="NSMutableDictionary" key="localizations"/> 301 247 <nil key="sourceID"/> 302 <int key="maxID">5 6</int>248 <int key="maxID">58</int> 303 249 </object> 304 250 <object class="IBClassDescriber" key="IBDocument.Classes"> 305 <object class="NSMutableArray" key="referencedPartialClassDescriptions"> 306 <bool key="EncodedWithXMLCoder">YES</bool> 251 <array class="NSMutableArray" key="referencedPartialClassDescriptions"> 307 252 <object class="IBPartialClassDescription"> 308 253 <string key="className">FriendsMapViewController</string> 309 254 <string key="superclassName">UIViewController</string> 310 <object class="NSMutableDictionary" key="actions"> 311 <bool key="EncodedWithXMLCoder">YES</bool> 312 <object class="NSMutableArray" key="dict.sortedKeys"> 313 <bool key="EncodedWithXMLCoder">YES</bool> 314 <string>didPressCenterGps:</string> 315 <string>didPressMoveTo:</string> 316 <string>gpsSwitchToggled:</string> 317 </object> 318 <object class="NSMutableArray" key="dict.values"> 319 <bool key="EncodedWithXMLCoder">YES</bool> 320 <string>id</string> 321 <string>id</string> 322 <string>UISwitch</string> 323 </object> 324 </object> 325 <object class="NSMutableDictionary" key="outlets"> 326 <bool key="EncodedWithXMLCoder">YES</bool> 327 <object class="NSMutableArray" key="dict.sortedKeys"> 328 <bool key="EncodedWithXMLCoder">YES</bool> 329 <string>actionBar</string> 330 <string>buttonMoveTo</string> 331 <string>labelGpsLastUpdateDate</string> 332 <string>theMap</string> 333 </object> 334 <object class="NSMutableArray" key="dict.values"> 335 <bool key="EncodedWithXMLCoder">YES</bool> 336 <string>UIToolbar</string> 337 <string>UIBarButtonItem</string> 338 <string>UILabel</string> 339 <string>RMMapView</string> 340 </object> 341 </object> 255 <dictionary class="NSMutableDictionary" key="actions"> 256 <string key="didPressCenterGps:">id</string> 257 <string key="didPressMoveTo:">id</string> 258 <string key="gpsSwitchToggled:">UISwitch</string> 259 </dictionary> 260 <dictionary class="NSMutableDictionary" key="outlets"> 261 <string key="actionBar">UIToolbar</string> 262 <string key="buttonMoveTo">UIBarButtonItem</string> 263 <string key="labelGpsLastUpdateDate">UILabel</string> 264 <string key="theMap">MKMapView</string> 265 </dictionary> 342 266 <object class="IBClassDescriptionSource" key="sourceIdentifier"> 343 267 <string key="majorKey">IBProjectSource</string> … … 345 269 </object> 346 270 </object> 347 </object> 271 </array> 272 <array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> 273 <object class="IBPartialClassDescription"> 274 <string key="className">MKMapView</string> 275 <string key="superclassName">UIView</string> 276 <object class="IBClassDescriptionSource" key="sourceIdentifier"> 277 <string key="majorKey">IBFrameworkSource</string> 278 <string key="minorKey">MapKit.framework/Headers/MKMapView.h</string> 279 </object> 280 </object> 281 </array> 348 282 </object> 349 283 <int key="IBDocument.localizationMode">0</int> 284 <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies"> 285 <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string> 286 <integer value="768" key="NS.object.0"/> 287 </object> 288 <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> 289 <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string> 290 <integer value="512" key="NS.object.0"/> 291 </object> 292 <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> 350 293 <string key="IBDocument.LastKnownRelativeProjectPath">LocateThem.xcodeproj</string> 351 294 <int key="IBDocument.defaultPropertyAccessControl">3</int> 352 <string key="IBCocoaTouchPluginVersion">3. 0</string>295 <string key="IBCocoaTouchPluginVersion">3.1</string> 353 296 </data> 354 297 </archive> -
apps/iphone/superbook/trunk/French.lproj/About.html
r511 r546 8 8 9 9 <body style="font-family: verdana; font-size: small;"> 10 <p align="right">Version 1. 3par Henri Asseily, <a href="http://henri.tel">henri.tel</a><br />10 <p align="right">Version 1.4 par Henri Asseily, <a href="http://henri.tel">henri.tel</a><br /> 11 11 Copyright 2009 Telnic Ltd., <a href="http://dev.telnic.org/pages/legal.html">Mentions légales et conditions d'utilisation</a><br /> 12 12 Posez vos questions sur <a href="http://dev.telnic.org/trac/discussion">.tel Community Forum</a></p> … … 30 30 </ul> 31 31 <p>Henri Asseily, Beyrouth, Liban, Juin 2009.</p> 32 <p>Modifications Novembre 2009</p> 32 33 </body> 33 34 </html> -
apps/iphone/superbook/trunk/French.lproj/Localizable.strings
r479 r546 146 146 /* Save to another contact */ 147 147 /*"Save to another contact" = "Save to another contact";*/ 148 "Save to another contact" = " Enregistrer pour un autre contact";148 "Save to another contact" = "Mettre à jour autrui"; 149 149 150 150 /* Save to existing current contact */ … … 152 152 "UpdateExisting" = "Mettre à jour %@"; 153 153 154 /* Create a new contact */ 155 /*"CreateNewContact" = "Create new contact";*/ 156 "CreateNewContact" = "Créer un nouveau contact"; 154 157 155 158 -
apps/iphone/superbook/trunk/German.lproj/Localizable.strings
r522 r546 114 114 115 115 /* Save To Address Book */ 116 "Save To Address Book" = " im Adressbuch speichern";116 "Save To Address Book" = "Im Adressbuch speichern"; 117 117 118 118 /* Save to another contact */ 119 "Save to another contact" = " auf anderen Kontakt";119 "Save to another contact" = "Auf anderen Kontakt"; 120 120 121 121 /* Save to existing current contact */ 122 122 "UpdateExisting" = "Aktualisiere %@"; 123 124 /* Create a new contact */ 125 "CreateNewContact" = "Neues Kontakt"; 123 126 124 127 -
apps/iphone/superbook/trunk/Info.plist
r511 r546 22 22 <string>????</string> 23 23 <key>CFBundleVersion</key> 24 <string>1. 3.0</string>24 <string>1.4.0</string> 25 25 <key>LSRequiresIPhoneOS</key> 26 26 <true/> -
apps/iphone/superbook/trunk/LocateThem.xcodeproj/project.pbxproj
r522 r546 19 19 381A04760F89193500446D89 /* MainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 381A04750F89193500446D89 /* MainView.xib */; }; 20 20 381A88430FAF947200CD57A2 /* Entitlements.plist in Resources */ = {isa = PBXBuildFile; fileRef = 381A88420FAF947200CD57A2 /* Entitlements.plist */; }; 21 382650EB0F7CFD4D0065B5B9 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 382650EA0F7CFD4D0065B5B9 /* libsqlite3.dylib */; };22 21 3826516A0F7CFFAC0065B5B9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 382651690F7CFFAC0065B5B9 /* QuartzCore.framework */; }; 23 22 382F8C1C0F8379CB00ED53BF /* NSString+UITableViewHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 382F8C1B0F8379CB00ED53BF /* NSString+UITableViewHelper.m */; }; 24 23 382F8CFF0F83983D00ED53BF /* TelView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 382F8CFE0F83983D00ED53BF /* TelView.xib */; }; 24 3841975110A0817D00A18A20 /* NaptrCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3841975010A0817D00A18A20 /* NaptrCell.m */; }; 25 3841981610A0C6BA00A18A20 /* NTNaptrCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3841981510A0C6BA00A18A20 /* NTNaptrCell.m */; }; 26 38451057109F4630004302FF /* libidn.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 38451056109F4630004302FF /* libidn.a */; }; 25 27 3849097B0FEA786C00F54327 /* routeme.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3849097A0FEA786C00F54327 /* routeme.plist */; }; 26 28 38527485100A82E9005F4329 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 38527483100A82E9005F4329 /* Localizable.strings */; }; … … 46 48 38976FB20FE016B5006D2DDE /* WebUrlViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 38976FB00FE016B5006D2DDE /* WebUrlViewController.m */; }; 47 49 38976FB30FE016B5006D2DDE /* WebUrlView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 38976FB10FE016B5006D2DDE /* WebUrlView.xib */; }; 48 38ACC9F70FB85589001EC74E /* MapView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38ACC9F60FB85589001EC74E /* MapView.framework */; };49 50 38B8B9280FF11173001E59B0 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 38B8B9260FF11173001E59B0 /* SettingsViewController.m */; }; 50 51 38B8B9290FF11173001E59B0 /* SettingsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 38B8B9270FF11173001E59B0 /* SettingsView.xib */; }; 52 38BA1DFE109C90880049D362 /* TelMapAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = 38BA1DFD109C90880049D362 /* TelMapAnnotation.m */; }; 53 38BA1E2A109C91490049D362 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38BA1E29109C91490049D362 /* MapKit.framework */; }; 51 54 38D1582D0F84C3C900A97E88 /* bg-main.png in Resources */ = {isa = PBXBuildFile; fileRef = 38D1582C0F84C3C800A97E88 /* bg-main.png */; }; 52 55 38D1582F0F84C3F400A97E88 /* logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 38D1582E0F84C3F400A97E88 /* logo.png */; }; … … 54 57 38D163260F861E2E00A97E88 /* NetworkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D163250F861E2E00A97E88 /* NetworkUtility.m */; }; 55 58 38D164CD0F864A1000A97E88 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D164CC0F864A1000A97E88 /* Reachability.m */; }; 56 38D166E10F8658D900A97E88 /* LocTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D166E00F8658D900A97E88 /* LocTableViewCell.m */; };57 59 38DB6B4F0F8B943500C7AE69 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 38DB6B4E0F8B943500C7AE69 /* Icon.png */; }; 58 60 38DD047B0F7AE8BB000C66F6 /* loading.png in Resources */ = {isa = PBXBuildFile; fileRef = 38DD04760F7AE8BB000C66F6 /* loading.png */; }; … … 96 98 381A04750F89193500446D89 /* MainView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainView.xib; sourceTree = "<group>"; }; 97 99 381A88420FAF947200CD57A2 /* Entitlements.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Entitlements.plist; sourceTree = "<group>"; }; 98 382650EA0F7CFD4D0065B5B9 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; 99 382651690F7CFFAC0065B5B9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 100 382651690F7CFFAC0065B5B9 /* QuartzCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 100 101 382F8C1A0F8379CB00ED53BF /* NSString+UITableViewHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+UITableViewHelper.h"; sourceTree = "<group>"; }; 101 102 382F8C1B0F8379CB00ED53BF /* NSString+UITableViewHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+UITableViewHelper.m"; sourceTree = "<group>"; }; … … 106 107 383D3FD51043E33F0018D271 /* German */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = German; path = German.lproj/Localizable.strings; sourceTree = "<group>"; }; 107 108 383D3FFA1043EBFA0018D271 /* German */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = German; path = German.lproj/DotTel.strings; sourceTree = "<group>"; }; 109 3841974F10A0817D00A18A20 /* NaptrCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NaptrCell.h; sourceTree = "<group>"; }; 110 3841975010A0817D00A18A20 /* NaptrCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NaptrCell.m; sourceTree = "<group>"; }; 111 3841981410A0C6BA00A18A20 /* NTNaptrCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NTNaptrCell.h; sourceTree = "<group>"; }; 112 3841981510A0C6BA00A18A20 /* NTNaptrCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NTNaptrCell.m; sourceTree = "<group>"; }; 113 38451056109F4630004302FF /* libidn.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libidn.a; sourceTree = "<group>"; }; 108 114 3849097A0FEA786C00F54327 /* routeme.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = routeme.plist; sourceTree = "<group>"; }; 109 115 38527484100A82E9005F4329 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; }; … … 138 144 38976FB00FE016B5006D2DDE /* WebUrlViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebUrlViewController.m; sourceTree = "<group>"; }; 139 145 38976FB10FE016B5006D2DDE /* WebUrlView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = WebUrlView.xib; sourceTree = "<group>"; }; 140 38ACC9F60FB85589001EC74E /* MapView.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MapView.framework; sourceTree = "<group>"; };141 146 38B8B9250FF11173001E59B0 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = "<group>"; }; 142 147 38B8B9260FF11173001E59B0 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = "<group>"; }; 143 148 38B8B9270FF11173001E59B0 /* SettingsView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SettingsView.xib; sourceTree = "<group>"; }; 149 38BA1DFC109C90880049D362 /* TelMapAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TelMapAnnotation.h; sourceTree = "<group>"; }; 150 38BA1DFD109C90880049D362 /* TelMapAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TelMapAnnotation.m; sourceTree = "<group>"; }; 151 38BA1E29109C91490049D362 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/Frameworks/MapKit.framework; sourceTree = DEVELOPER_DIR; }; 152 38C3325C109E954500E85FFE /* idna.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = idna.h; sourceTree = "<group>"; }; 144 153 38D1582C0F84C3C800A97E88 /* bg-main.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bg-main.png"; sourceTree = "<group>"; }; 145 154 38D1582E0F84C3F400A97E88 /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = "<group>"; }; … … 149 158 38D164CB0F864A1000A97E88 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; }; 150 159 38D164CC0F864A1000A97E88 /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; }; 151 38D166DF0F8658D900A97E88 /* LocTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocTableViewCell.h; sourceTree = "<group>"; };152 38D166E00F8658D900A97E88 /* LocTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocTableViewCell.m; sourceTree = "<group>"; };153 160 38DB6B4E0F8B943500C7AE69 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; }; 154 161 38DD04760F7AE8BB000C66F6 /* loading.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = loading.png; sourceTree = "<group>"; }; … … 199 206 BB2775A40E55EB230007ECB3 /* libobjc.dylib in Frameworks */, 200 207 BB2776340E55EC9E0007ECB3 /* SystemConfiguration.framework in Frameworks */, 201 382650EB0F7CFD4D0065B5B9 /* libsqlite3.dylib in Frameworks */,202 208 3826516A0F7CFFAC0065B5B9 /* QuartzCore.framework in Frameworks */, 203 38ACC9F70FB85589001EC74E /* MapView.framework in Frameworks */,204 209 3892642910233A060023DE3B /* ldns.framework in Frameworks */, 210 38BA1E2A109C91490049D362 /* MapKit.framework in Frameworks */, 211 38451057109F4630004302FF /* libidn.a in Frameworks */, 205 212 ); 206 213 runOnlyForDeploymentPostprocessing = 0; … … 300 307 children = ( 301 308 3892642810233A060023DE3B /* ldns.framework */, 302 38 ACC9F60FB85589001EC74E /* MapView.framework */,309 38BA1E29109C91490049D362 /* MapKit.framework */, 303 310 382651690F7CFFAC0065B5B9 /* QuartzCore.framework */, 304 382650EA0F7CFD4D0065B5B9 /* libsqlite3.dylib */,305 311 BB2775A30E55EB230007ECB3 /* libobjc.dylib */, 306 312 BB2F18030E54FD08009C75BE /* AddressBook.framework */, … … 329 335 isa = PBXGroup; 330 336 children = ( 337 38C3325B109E952B00E85FFE /* IDN Library */, 331 338 385BD6C50EBF694500D32EB0 /* Classes */, 332 339 388926160F7AD1C500855EF9 /* DotTel.strings */, … … 369 376 sourceTree = "<group>"; 370 377 }; 378 38C3325B109E952B00E85FFE /* IDN Library */ = { 379 isa = PBXGroup; 380 children = ( 381 38451056109F4630004302FF /* libidn.a */, 382 38C3325C109E954500E85FFE /* idna.h */, 383 ); 384 name = "IDN Library"; 385 path = ..; 386 sourceTree = "<group>"; 387 }; 371 388 38FEEE3B0F873B3B003FEBAD /* Cells */ = { 372 389 isa = PBXGroup; … … 374 391 BB2F182B0E5501C8009C75BE /* FriendsTableViewCell.h */, 375 392 BB2F182C0E5501C8009C75BE /* FriendsTableViewCell.m */, 376 38D166DF0F8658D900A97E88 /* LocTableViewCell.h */, 377 38D166E00F8658D900A97E88 /* LocTableViewCell.m */, 393 3841974F10A0817D00A18A20 /* NaptrCell.h */, 394 3841975010A0817D00A18A20 /* NaptrCell.m */, 395 3841981410A0C6BA00A18A20 /* NTNaptrCell.h */, 396 3841981510A0C6BA00A18A20 /* NTNaptrCell.m */, 378 397 ); 379 398 name = Cells; … … 411 430 BB3261D90E64597E0091BF08 /* FriendsMapViewController.h */, 412 431 BB3261DA0E64597E0091BF08 /* FriendsMapViewController.m */, 432 38BA1DFC109C90880049D362 /* TelMapAnnotation.h */, 433 38BA1DFD109C90880049D362 /* TelMapAnnotation.m */, 413 434 ); 414 435 name = "All Friends Map View Controller"; … … 440 461 29B97313FDCFA39411CA2CEA /* Project object */ = { 441 462 isa = PBXProject; 463 attributes = { 464 ORGANIZATIONNAME = "Telnic Limited"; 465 }; 442 466 buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "LocateThem" */; 443 467 compatibilityVersion = "Xcode 3.1"; … … 527 551 38D163260F861E2E00A97E88 /* NetworkUtility.m in Sources */, 528 552 38D164CD0F864A1000A97E88 /* Reachability.m in Sources */, 529 38D166E10F8658D900A97E88 /* LocTableViewCell.m in Sources */,530 553 387680950FC9B3CD00360BD4 /* DotTelABDelegate.m in Sources */, 531 554 3876822F0FCD483E00360BD4 /* DotTelABMapper.m in Sources */, 532 555 38976FB20FE016B5006D2DDE /* WebUrlViewController.m in Sources */, 533 556 38B8B9280FF11173001E59B0 /* SettingsViewController.m in Sources */, 557 38BA1DFE109C90880049D362 /* TelMapAnnotation.m in Sources */, 558 3841975110A0817D00A18A20 /* NaptrCell.m in Sources */, 559 3841981610A0C6BA00A18A20 /* NTNaptrCell.m in Sources */, 534 560 ); 535 561 runOnlyForDeploymentPostprocessing = 0; … … 587 613 GCC_PREFIX_HEADER = LocateThem_Prefix.pch; 588 614 INFOPLIST_FILE = Info.plist; 615 LIBRARY_SEARCH_PATHS = ( 616 "$(inherited)", 617 "\"$(SRCROOT)\"", 618 ); 589 619 PRODUCT_NAME = Superbook; 590 SDKROOT = iphoneos2.0;591 620 }; 592 621 name = Debug; … … 604 633 GCC_PREFIX_HEADER = LocateThem_Prefix.pch; 605 634 INFOPLIST_FILE = Info.plist; 635 LIBRARY_SEARCH_PATHS = ( 636 "$(inherited)", 637 "\"$(SRCROOT)\"", 638 ); 606 639 PRODUCT_NAME = Superbook; 607 SDKROOT = iphoneos2.0;608 640 }; 609 641 name = Release; … … 612 644 isa = XCBuildConfiguration; 613 645 buildSettings = { 614 ARCHS = "$(ARCHS_STANDARD_32_BIT)";615 646 CODE_SIGN_ENTITLEMENTS = Entitlements.plist; 616 647 CODE_SIGN_IDENTITY = "iPhone Distribution: Henri Asseily"; … … 618 649 GCC_WARN_ABOUT_RETURN_TYPE = YES; 619 650 GCC_WARN_UNUSED_VARIABLE = YES; 651 OTHER_LDFLAGS = "-liconv"; 620 652 PREBINDING = NO; 621 653 PROVISIONING_PROFILE = "BBE4CD7C-3CBD-47E2-8691-8779B872D969"; 622 SDKROOT = iphoneos 2.1;654 SDKROOT = iphoneos3.0; 623 655 }; 624 656 name = "Release Apple ad-hoc"; … … 636 668 GCC_PREFIX_HEADER = LocateThem_Prefix.pch; 637 669 INFOPLIST_FILE = Info.plist; 670 LIBRARY_SEARCH_PATHS = ( 671 "$(inherited)", 672 "\"$(SRCROOT)\"", 673 ); 638 674 PRODUCT_NAME = Superbook; 639 SDKROOT = iphoneos2.0;640 675 }; 641 676 name = "Release Apple ad-hoc"; … … 644 679 isa = XCBuildConfiguration; 645 680 buildSettings = { 646 ARCHS = "$(ARCHS_STANDARD_32_BIT)";647 681 CODE_SIGN_IDENTITY = "iPhone Distribution: Henri Asseily"; 648 682 GCC_C_LANGUAGE_STANDARD = c99; 649 683 GCC_WARN_ABOUT_RETURN_TYPE = YES; 650 684 GCC_WARN_UNUSED_VARIABLE = YES; 685 OTHER_LDFLAGS = "-liconv"; 651 686 PREBINDING = NO; 652 687 PROVISIONING_PROFILE = "DC881623-4681-45BB-B714-179F016CBFD9"; 653 SDKROOT = iphoneos 2.1;688 SDKROOT = iphoneos3.0; 654 689 }; 655 690 name = Distribution; … … 667 702 GCC_PREFIX_HEADER = LocateThem_Prefix.pch; 668 703 INFOPLIST_FILE = Info.plist; 704 LIBRARY_SEARCH_PATHS = ( 705 "$(inherited)", 706 "\"$(SRCROOT)\"", 707 ); 669 708 PRODUCT_NAME = Superbook; 670 SDKROOT = iphoneos2.0;671 709 }; 672 710 name = Distribution; … … 675 713 isa = XCBuildConfiguration; 676 714 buildSettings = { 677 ARCHS = "$(ARCHS_STANDARD_32_BIT)";678 715 CODE_SIGN_IDENTITY = "iPhone Developer: Henri Asseily"; 679 716 GCC_C_LANGUAGE_STANDARD = c99; … … 681 718 GCC_WARN_UNUSED_VARIABLE = YES; 682 719 ONLY_ACTIVE_ARCH = YES; 720 OTHER_LDFLAGS = "-liconv"; 683 721 PREBINDING = NO; 684 722 PROVISIONING_PROFILE = "03F769C8-6A46-4229-9D24-C0B2E38DDE7C"; 685 SDKROOT = iphoneos 2.1;723 SDKROOT = iphoneos3.0; 686 724 }; 687 725 name = Debug; … … 690 728 isa = XCBuildConfiguration; 691 729 buildSettings = { 692 ARCHS = "$(ARCHS_STANDARD_32_BIT)";693 730 CODE_SIGN_IDENTITY = "iPhone Developer: Henri Asseily"; 694 731 GCC_C_LANGUAGE_STANDARD = c99; 695 732 GCC_WARN_ABOUT_RETURN_TYPE = YES; 696 733 GCC_WARN_UNUSED_VARIABLE = YES; 734 OTHER_LDFLAGS = "-liconv"; 697 735 PREBINDING = NO; 698 736 PROVISIONING_PROFILE = "447EE44B-840F-4966-BF8B-8DE8B2B74D91"; 699 SDKROOT = iphoneos 2.1;737 SDKROOT = iphoneos3.0; 700 738 }; 701 739 name = Release; -
apps/iphone/superbook/trunk/Russian.lproj/About.html
r511 r546 8 8 9 9 <body style="font-family: verdana; font-size: small;"> 10 <p align="right">Version 1. 3by Henri Asseily, <a href="http://henri.tel">henri.tel</a><br />10 <p align="right">Version 1.4 by Henri Asseily, <a href="http://henri.tel">henri.tel</a><br /> 11 11 Copyright 2009 Telnic Ltd., <a href="http://dev.telnic.org/pages/legal.html">License Agreement</a><br /> 12 12 Report issues in the <a href="http://dev.telnic.org/trac/discussion">.tel Community Forum</a></p> … … 30 30 </ul> 31 31 <p>Henri Asseily, Beirut, Lebanon, June 2009.</p> 32 <p>Updated November 2009</p> 32 33 </body> 33 34 </html> -
apps/iphone/superbook/trunk/Russian.lproj/Localizable.strings
r482 r546 121 121 "UpdateExisting" = "Обновить %@"; 122 122 123 /* Create a new contact */ 124 "CreateNewContact" = "Сохранить в новый контакт"; 125 123 126 124 127








