Developer Area

Changeset 546 for apps

Show
Ignore:
Timestamp:
11/03/09 21:43:56 (4 years ago)
Author:
henri
Message:

Significant update to 1.4.
Long labels, subdomain IDNs, Google MapKit?. Required OS Version 3.0.

Location:
apps/iphone/superbook/trunk
Files:
8 added
2 removed
29 modified

Legend:

Unmodified
Added
Removed
  • apps/iphone/superbook/trunk/ABMapperSelectors.plist

    r396 r546  
    5757                <key>x-im:skype</key> 
    5858                <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> 
    5967        </dict> 
    6068        <key>txt</key> 
  • apps/iphone/superbook/trunk/Classes/DotTelABDelegate.h

    r382 r546  
    3838#import "DotTelABMapper.h" 
    3939 
    40 @interface DotTelABDelegate : NSObject <ABPersonViewControllerDelegate, ABUnknownPersonViewControllerDelegate, UIActionSheetDelegate> { 
     40@interface DotTelABDelegate : NSObject <ABPersonViewControllerDelegate, 
     41ABNewPersonViewControllerDelegate, ABPeoplePickerNavigationControllerDelegate, UIActionSheetDelegate> { 
    4142         
    4243        ABAddressBookRef addressBook; 
     
    4950        NSUInteger saveToExistingButtonIndex; 
    5051        NSUInteger saveToNewButtonIndex; 
     52        NSUInteger saveToOtherButtonIndex; 
    5153        ABRecordRef recordForActionSheet; 
    5254} 
     
    6466- (NSError *)saveRecord; 
    6567- (NSError *)saveRecordWithRecordId:(ABRecordID)_recordId; 
    66 - (NSError *)saveUnknownRecord; 
    6768- (IBAction)didPressSaveButton:(id)sender; 
    6869 
  • apps/iphone/superbook/trunk/Classes/DotTelABDelegate.m

    r461 r546  
    3232@interface DotTelABDelegate (PrivateMethods) 
    3333 
    34 - (NSError *)updateRecord:(ABRecordRef)_recordRef; 
     34- (void)pickABRecordForSaving; 
     35- (NSError *)saveNewABRecord; 
     36- (NSError *)updateABRecord:(ABRecordRef)_recordRef; 
    3537 
    3638//      Merges .tel info into an existing record 
     
    7678- (NSError *)saveRecordWithRecordId:(ABRecordID)_recordId { 
    7779        // 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; 
    8184        if (_recordId != kABRecordInvalidID) { 
    8285                // Record id is known. Pick up ABRecordRef and update the record 
    8386                // if no ABRecordRef, go to the unknown version 
    84                 ABRecordRef aRecord = ABAddressBookGetPersonWithRecordID(addressBook, _recordId); 
     87                aRecord = ABAddressBookGetPersonWithRecordID(addressBook, _recordId); 
    8588                NSString *personName = (NSString *)ABRecordCopyCompositeName(aRecord); 
    8689                if (!personName) { 
    8790                        personName = telName; 
    8891                } 
    89                 NSString *saveExistingButtonLabel = [NSString stringWithFormat:NSLocalizedString(@"UpdateExisting", @"Save to existing"), personName]; 
     92                saveExistingButtonLabel = [NSString stringWithFormat:NSLocalizedString(@"UpdateExisting", @"Update %@"), personName]; 
    9093                [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; 
    119131        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];        
    125134        if (!err) { 
    126135                //setup properties to display 
     
    128137                [topViewController presentModalViewController:navC animated:YES]; 
    129138        } 
    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 { 
    139143        // Load a ABPersonViewController and merge the data in it, then display it 
    140144         
    141145        if (_recordRef == NULL) 
    142                 return NULL; 
     146                return nil; 
    143147         
    144148        ABPersonViewController *pVC = [[[ABPersonViewController alloc] init] autorelease]; 
     149        pVC.displayedPerson = _recordRef; 
    145150        pVC.personViewDelegate = self; 
    146151        pVC.addressBook = addressBook; 
    147152        pVC.allowsEditing = YES; 
    148         pVC.displayedPerson = _recordRef; 
    149153        NSMutableArray *properties = [[NSMutableArray alloc] initWithCapacity:1]; 
    150154         
     
    162166        } 
    163167        //pVC.displayedProperties = properties; // NOTE: We'll display everything, it makes more sense 
    164         pVC.displayedProperties = NULL; 
     168        pVC.displayedProperties = nil; 
    165169        if (!err) { 
    166                 //setup properties to display 
    167170                UINavigationController *navC = [[[UINavigationController alloc] initWithRootViewController:pVC] autorelease]; 
    168171                navC.navigationBar.topItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave 
    169172                                                                                                                                                                                                         target:self 
    170173                                                                                                                                                                                                         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 
    172181        } 
    173182        return err; 
     
    206215} 
    207216 
    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 
    209242 
    210243- (BOOL)personViewController:(ABPersonViewController *)personViewController 
     
    222255} 
    223256 
    224 #pragma mark ------ ABUnknownPersonViewControllerDelegate methods 
    225  
    226 - (void)unknownPersonViewController:(ABUnknownPersonViewController *)unknownPersonView 
    227                                  didResolveToPerson:(ABRecordRef)person { 
     257#pragma mark ABNewPersonViewControllerDelegate methods 
     258 
     259- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController 
     260           didCompleteWithNewPerson:(ABRecordRef)person { 
    228261        [topViewController dismissModalViewControllerAnimated:YES]; 
    229262} 
    230263 
    231 #pragma mark ------ UIActionSheetDelegate methods 
     264#pragma mark UIActionSheetDelegate methods 
    232265 
    233266- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
     
    238271        NSError *err = nil; 
    239272    if (buttonIndex == saveToExistingButtonIndex) {              
    240                 err = [self updateRecord:recordForActionSheet]; 
     273                err = [self updateABRecord:recordForActionSheet]; 
    241274        } else if (buttonIndex == saveToNewButtonIndex) { 
    242                 err = [self saveUnknownRecord]; 
     275                err = [self saveNewABRecord]; 
     276    } else if (buttonIndex == saveToOtherButtonIndex) { 
     277                [self pickABRecordForSaving]; 
    243278    } 
    244279        if (err) { 
  • apps/iphone/superbook/trunk/Classes/DotTelABMapper.h

    r397 r546  
    4545        ABRecordRef abRecord; 
    4646        NSMutableArray *updatedProperties;              // All updated properties for a record 
     47        BOOL didSetPhoto;                                               // Set to true if the photo has been set in this run 
    4748} 
    4849 
    4950@property (readonly, retain) NSMutableArray *updatedProperties; 
     51@property (nonatomic) BOOL didSetPhoto; 
    5052 
    5153- (DotTelABMapper *)initWithABRecord:(ABRecordRef)rec; 
  • apps/iphone/superbook/trunk/Classes/DotTelABMapper.m

    r509 r546  
    8181 
    8282@synthesize updatedProperties; 
     83@synthesize didSetPhoto; 
    8384 
    8485#pragma mark ---- designated initializer ---- 
     
    9697        } 
    9798        updatedProperties = [[NSMutableArray array] retain]; 
     99        didSetPhoto = NO; 
    98100         
    99101        NSDictionary *selectorsMapper = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ABMapperSelectors" 
     
    211213} 
    212214 
     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 
    213233- (NSError *)setNaptrPhone:(RecordNaptr *)rec { 
    214234        SETNAPTR_INITIALIZATION; 
     
    345365 
    346366- (NSError *)setNaptrIM:(RecordNaptr *)rec { 
    347         // NOTE: The simulator does NOT support IM fields. It silently discards them. 
    348367        // IM fields are dictionaries, not strings. They need special handling. 
    349368        SETNAPTR_INITIALIZATION; 
     
    397416                CFDictionaryRef existingIM = (CFDictionaryRef)ABMultiValueCopyValueAtIndex(allupdated, i); 
    398417                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) { 
    400421                                // Found a matching IM service type 
    401422                                CFStringRef existingLabel = (CFStringRef)ABMultiValueCopyLabelAtIndex(allupdated, i); 
  • apps/iphone/superbook/trunk/Classes/FriendsData.m

    r470 r546  
    141141//                      CFRelease(allGroups); 
    142142                 
     143//              CFRelease(theBook);     // Releasing the book crashes the app! OS bug? 
     144                 
    143145                if (prefsSorting == 0) {        // alpha sorting on composite name 
    144146                        self.sortedPeopleArray = [peopleCurrentList keysSortedByValueUsingSelector:@selector(compositeNameSortAlgorithm:)]; 
     
    384386                return [personInfoRow objectAtIndex:5]; 
    385387 
    386         BOOL shouldRelease = NO; 
     388        ABMultiValueRef allUrls; 
     389        BOOL foundUrl = NO; 
    387390        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         
    391398        CFStringRef telUrl; 
    392         BOOL foundUrl = NO; 
    393          
    394         ABMultiValueRef allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty); 
    395          
    396399        for (CFIndex j = 0; j < ABMultiValueGetCount(allUrls); j++) { 
    397400                telUrl = ABMultiValueCopyValueAtIndex(allUrls, j); 
     
    410413//      } 
    411414        CFRelease(allUrls); 
    412  
    413          
    414         if (shouldRelease) { 
    415                 CFRelease(recordRef); 
    416         } 
     415         
    417416        if (foundUrl) { 
    418417                NSString *returnedTelUrl = [[FriendsData sharedInstance] telFromQueryString:(NSString *)telUrl]; 
     
    428427- (NSInteger) getTelIndexForABRecordId:(NSNumber *)theId withABRecordRef:(ABRecordRef)recordRef { 
    429428         
    430          
    431         BOOL shouldRelease = NO; 
     429        ABMultiValueRef allUrls; 
    432430        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 
    436439        CFStringRef telUrlValue; 
    437         ABMultiValueRef allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty); 
    438         NSInteger telIndex = -1; //  Return value for nonexistent 
    439          
    440440        for (CFIndex j = 0; j < ABMultiValueGetCount(allUrls); j++) { 
    441441                telUrlValue = ABMultiValueCopyValueAtIndex(allUrls, j); 
     
    448448        } 
    449449        CFRelease(allUrls); 
    450         if (shouldRelease) { 
    451                 CFRelease(recordRef); 
    452         } 
    453450        return telIndex; 
    454451} 
  • apps/iphone/superbook/trunk/Classes/FriendsMapViewController.h

    r453 r546  
    2929 
    3030#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" 
    3732#import <CoreLocation/CoreLocation.h> 
    3833#import "MyCLController.h" 
     
    4035#define VIEW_GPS_TIME_DESC_LABEL_TAG 101 
    4136 
    42 @interface FriendsMapViewController : UIViewController <RMMapViewDelegate, MyCLControllerDelegate, UIActionSheetDelegate>{       
     37@interface FriendsMapViewController : UIViewController <MKMapViewDelegate, MyCLControllerDelegate, UIActionSheetDelegate> {      
    4338        IBOutlet UILabel *labelGpsLastUpdateDate; 
    4439        IBOutlet UIToolbar *actionBar; 
    4540        IBOutlet UIBarButtonItem *buttonMoveTo; 
    46         IBOutlet RMMapView *theMap; 
     41        IBOutlet MKMapView *theMap; 
    4742        CLLocation *initialLoc; 
    48         UIImage *markerGpsImage; 
    49         UIImage *markerRedImage; 
    50         UIImage *markerBlueImage; 
    51         RMMarker *markerGps; 
     43        TelMapAnnotation *markerGps; 
    5244@private 
    5345        BOOL gpsLocIsAvailable; 
     
    5951+ (FriendsMapViewController *)sharedInstance; 
    6052 
    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; 
    6659 
    6760- (IBAction)didPressCenterGps:(id)sender; 
     
    7265@property (nonatomic, retain) IBOutlet UIToolbar *actionBar; 
    7366@property (nonatomic, retain) IBOutlet UIBarButtonItem *buttonMoveTo; 
    74 @property (nonatomic, retain) IBOutlet RMMapView *theMap; 
     67@property (nonatomic, retain) IBOutlet MKMapView *theMap; 
    7568@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; 
    8170 
    8271@end 
  • apps/iphone/superbook/trunk/Classes/FriendsMapViewController.m

    r461 r546  
    3636@synthesize theMap; 
    3737@synthesize initialLoc; 
    38 @synthesize markerGpsImage, markerBlueImage, markerRedImage; 
    3938@synthesize markerGps; 
    40  
    41 #define kIphoneCoolCloudMadeStyleNumber 1818 
    4239 
    4340// This is a singleton class, see below 
     
    4845- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    4946    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"]];  
    5347                uniqueMarkers = [[NSMutableDictionary dictionaryWithCapacity:20] retain]; 
    5448                firstMarkers = [[NSMutableArray arrayWithCapacity:5] retain]; 
    55                 self.markerGps = [[RMMarker alloc] initWithUIImage:self.markerGpsImage]; 
    56                 markerGps.anchorPoint = CGPointMake(0.5, 1); 
    5749    } 
    5850    return self; 
     
    6355        self.title = NSLocalizedString(@"Map", @"Title for Map View"); 
    6456        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 
    7459        // 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]; 
    7961        [firstMarkers removeAllObjects]; 
    80         CLLocationCoordinate2D zeroPoint = {0,0}; 
    81         [theMap.markerManager addMarker:self.markerGps AtLatLong:zeroPoint]; 
    82         // Put GPS marker above all markers 
    83         self.markerGps.zPosition = 1.0; 
    84         self.markerGps.hidden = YES; 
    8562} 
    8663 
     
    9370                        initialLoc = [MyCLController sharedInstance].myCurrentLoc; 
    9471                } 
    95                 [theMap moveToLatLong:initialLoc.coordinate]; 
     72                [theMap setCenterCoordinate:initialLoc.coordinate]; 
    9673        } 
    9774} 
     
    10077- (void)viewDidAppear:(BOOL)animated { 
    10178        [super viewDidAppear:animated]; 
     79        self.theMap.showsUserLocation = YES; 
    10280        self.navigationController.navigationBarHidden = NO; 
    10381} 
     
    10886} 
    10987 
    110 - (void)didReceiveMemoryWarning { 
    111         // due to a bug, RMMapView should never be released, as it causes the application to crash 
    112     //[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview 
    113         [theMap.contents didReceiveMemoryWarning]; 
    114 } 
    115  
    116  
    11788- (void)dealloc { 
     89        [firstMarkers release]; 
    11890        [uniqueMarkers release]; 
    11991    [super dealloc]; 
     
    12294# pragma mark ---- Methods ---- 
    12395 
     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 
    124125- (IBAction)didPressCenterGps:(id)sender { 
    125         [theMap moveToLatLong:[[[MyCLController sharedInstance] myCurrentLoc] coordinate]]; 
     126        [theMap setCenterCoordinate:[[[MyCLController sharedInstance] myCurrentLoc] coordinate] animated:YES]; 
    126127} 
    127128 
     
    152153 
    153154- (void) setMarkers:(NSDictionary *)peopleList { 
    154  
    155         //[theMap.markerManager removeMarkers]; 
    156155        // the people list has for each personid: name, type of status, location, location timestamp, distance from user and telname 
    157156        id personId; 
     
    177176                return; 
    178177        } 
    179         RMMarker *theMarker; 
    180         BOOL markerExists = NO; 
     178        TelMapAnnotation *theMarker; 
    181179        if ([theId integerValue] == UINT_MAX) { 
    182180                // 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                } 
    187190        } else { 
    188191                // is a friend 
    189192                theMarker = [uniqueMarkers objectForKey:theId]; 
    190193                if (theMarker) { 
    191                         markerExists = YES; 
    192                         [theMarker retain]; 
     194                        theMarker.coordinate = loc.coordinate; 
    193195                } 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; 
    197200                        [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} 
    243255         
    244256#pragma mark ---- MyCLController delegate methods ---- 
     
    248260                [self.labelGpsLastUpdateDate setText:NSLocalizedString(@"LatLongUnavailable", @"Latitude/Longitude unavailable")]; 
    249261                [self.labelGpsLastUpdateDate setNeedsDisplay]; 
    250                 self.markerGps.hidden = NO; 
    251262                gpsLocIsAvailable = NO; 
    252263                return; 
     
    259270        [dateFormatter release]; 
    260271         
    261         [theMap.markerManager moveMarker:markerGps AtLatLon:aLoc.coordinate];    
    262         self.markerGps.hidden = NO; 
    263272        gpsLocIsAvailable = YES; 
    264273        return; 
  • apps/iphone/superbook/trunk/Classes/LocateThem_ViewController.m

    r521 r546  
    229229- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    230230         
    231         mapViewController.zoomLevel = 14.0; 
    232231        NSNumber *personId = [[FriendsData sharedInstance] getABRecordIdForIndexPath:indexPath]; 
    233232        [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
     
    373372        [alertView show]; 
    374373        [alertView release]; 
    375         if (alertMessage) 
    376                 [alertMessage release]; 
    377374}        
    378375 
     
    400397        // Do data setup 
    401398        [mapViewController didPressCenterGps:nil]; 
    402         mapViewController.zoomLevel = 6.0; 
    403399        [self.navigationController pushViewController:mapViewController animated:YES]; 
    404400} 
  • apps/iphone/superbook/trunk/Classes/NaptrViewController.h

    r514 r546  
    2929#import <UIKit/UIKit.h> 
    3030#import "NSString+UITableViewHelper.h" 
     31#import "NaptrCell.h" 
     32#import "NTNaptrCell.h" 
    3133#import "FriendsData.h" 
    3234#import "FriendsMapViewController.h" 
     
    3840enum table_sections { 
    3941        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 
    4346}; 
    44  
    45 #define NAPTRCELL_SERVICETYPE_TAG 1 
    46 #define NAPTRCELL_LABEL_TAG 2 
    47 #define NAPTRCELL_VALUE_TAG 3 
    4847 
    4948#define TXTCELL_DESCRIPTION_TAG 1 
     
    6059        NSString *headerText; 
    6160        NSMutableArray *naptrArray; 
    62         NSMutableArray *txtArray; 
     61        NSMutableArray *txtArray;               // only keywords 
     62        NSMutableArray *allTxtArray;    // all txt records 
    6363        NSMutableArray *locArray; 
    6464        NSString *country; 
     
    8282- (void)getTxtForTel:(NSString *)telName; 
    8383- (void)getLocForTel:(NSString *)telName; 
    84 - (void)getNaptrInBackgroundForTel:(NSString *)telName; 
    85 - (void)getTxtInBackgroundForTel:(NSString *)telName; 
     84- (void)getNaptrAndTxtInBackgroundForTel:(NSString *)telName; 
    8685- (void)getLocInBackgroundForTel:(NSString *)telName; 
    8786- (void)getCountryAndTimeZoneForLoc:(CLLocation *)aLoc; 
     
    9594@property (nonatomic, retain) NSMutableArray *naptrArray; 
    9695@property (nonatomic, retain) NSMutableArray *txtArray; 
     96@property (nonatomic, retain) NSMutableArray *allTxtArray; 
    9797@property (nonatomic, retain) NSMutableArray *locArray; 
    9898@property (nonatomic, retain) NSString *country; 
  • apps/iphone/superbook/trunk/Classes/NaptrViewController.m

    r516 r546  
    3030 
    3131static UIFont *headerFont; 
     32static UIFont *naptrLabelFont; 
    3233static UIFont *txtFont; 
    3334 
     
    3536 
    3637- (void)decrementLoadingCount; 
     38- (void)refreshTableNaptrAndTxt; 
     39- (void)refreshTableLoc; 
    3740- (void)showError:(NSError *)error; 
    3841@end 
     
    4649@synthesize naptrArray; 
    4750@synthesize txtArray; 
     51@synthesize allTxtArray; 
    4852@synthesize locArray; 
    4953@synthesize country; 
     
    5660 
    5761#define kHeaderTextFontSize 14.0 
     62#define kNaptrLabelTextFontSize 12.0 
    5863#define kTextFontSize 14.0 
    5964 
     
    7075         
    7176        headerFont = [UIFont boldSystemFontOfSize:kHeaderTextFontSize]; 
     77        naptrLabelFont = [UIFont systemFontOfSize:kNaptrLabelTextFontSize]; 
    7278        txtFont = [UIFont boldSystemFontOfSize:kTextFontSize]; 
    7379 
     
    94100        self.naptrArray = [NSMutableArray arrayWithCapacity:10]; 
    95101        self.txtArray = [NSMutableArray arrayWithCapacity:10]; 
     102        self.allTxtArray = [NSMutableArray arrayWithCapacity:20]; 
    96103        self.locArray = [NSMutableArray arrayWithCapacity:1]; 
    97104 
     
    109116        [self.theTable reloadData]; 
    110117        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]; 
    113119        [self performSelectorInBackground:@selector(getLocInBackgroundForTel:) withObject:self.title]; 
    114120        return TRUE; 
     
    147153} 
    148154 
    149 #pragma mark ------ set up loading stuff 
     155#pragma mark - 
     156#pragma mark UI updates 
    150157 
    151158- (NSUInteger)loadingCount { 
     
    171178} 
    172179 
    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 
    174206 
    175207- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    176         return SECTION_LOC+1; 
     208        return SECTION_TOTAL; 
    177209} 
    178210 
     
    229261                        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    230262                        if (cell == nil) { 
    231                                 cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease]; 
     263                                cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] autorelease]; 
    232264                        } 
    233265                        //Working with a resizable cell 
     
    246278                case SECTION_NAPTR: 
    247279                { 
    248                         static NSString *MyIdentifier = @"naptrCells"; 
     280                        static NSString *NaptrCellId = @"naptrCells"; 
     281                        static NSString *NTNaptrCellId = @"ntnaptrCells"; 
    249282                         
    250283                        RecordNaptr *theRec = [self.naptrArray objectAtIndex:indexPath.row]; 
    251284                         
    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; 
    262286                        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                                } 
    265291                        } 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)) { 
    268305                                // 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; 
    271309                                        if (suffixIndex > 0) { 
    272                                                 [(UILabel *)[cell viewWithTag:NAPTRCELL_VALUE_TAG] setText:[theRec.labelDescription substringToIndex:suffixIndex]]; 
     310                                                cell.labelText = [theRec.uriContent substringToIndex:suffixIndex]; 
    273311                                        } 
    274312                                } 
    275                                 [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 
    276313                        } 
    277314                         
     
    420457                                fMVC.initialLoc = loc; 
    421458                                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 
    423465                                } else { 
    424466                                        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     
    445487                        return [headerText cellHeightForFont:headerFont paddingWidth:10.0f Height:10.0f]; 
    446488                } 
     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                } 
    447495                case SECTION_TXT: 
    448496                { 
     
    494542        [[NetworkUtility sharedInstance] networkwillActivate:NO]; 
    495543        [self decrementLoadingCount]; 
    496         [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 
    497544        if (error) { 
    498545                // Show all errors unless the answer is invalid, which generally means there aren't any NAPTRs 
     
    507554        [[NetworkUtility sharedInstance] networkwillActivate:YES]; 
    508555        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]; 
    511557        if (txtCount == 0) { 
    512558#ifdef DEBUG 
     
    520566        RecordTxt *theRec; 
    521567        NSMutableString *_headerText = nil; 
    522         for (theRec in alltxtArray) { 
     568        for (theRec in allTxtArray) { 
    523569                if (theRec.subType == RecordTxtSubTypeKeyword) { 
    524570                        // It's a keyword, let's add it to the array in the txt section 
     
    544590        } 
    545591        self.headerText = _headerText; 
    546         [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 
    547592} 
    548593 
     
    558603                //NSLog(@"Warning: %d LOC records in domain %@", locCount, telName); 
    559604        } 
    560         [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 
    561605        if (locCount > 0) { 
    562606                if (prefsReverseGeo) { 
     
    565609                        [self getCountryAndTimeZoneForLoc:(RecordLoc *)[self.locArray objectAtIndex:0]]; 
    566610                        [[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 { 
    579616        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    580617        [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]; 
    581624        [pool release]; 
    582625} 
    583626 
    584 - (void) getLocInBackgroundForTel:(NSString *)telName { 
     627- (void)getLocInBackgroundForTel:(NSString *)telName { 
    585628        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    586629        [self getLocForTel:telName]; 
     630        [self refreshTableLoc]; 
    587631        [pool release]; 
    588632} 
     
    695739        } 
    696740        if (err) { 
    697                 NSLog([err localizedDescription]); 
     741                [self showError:err]; 
    698742        } 
    699743} 
  • apps/iphone/superbook/trunk/Classes/NSString+UITableViewHelper.m

    r382 r546  
    5757    cellLabel.textAlignment = UITextAlignmentLeft; 
    5858        cellLabel.font = font; 
    59     cellLabel.text = self;  
     59    cellLabel.text = self; 
    6060    cellLabel.numberOfLines = 0;  
    6161    [cellLabel sizeToFit]; 
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/DnsResolver.h

    r507 r546  
    3939#import <ldns/ldns.h> 
    4040#import "NetworkUtility.h" 
     41#import "idna.h" 
    4142#import "RecordNaptr.h" 
    4243#import "RecordTxt.h" 
     
    7172 * @param aDom       the domain to query 
    7273 * @param naptrArray the array to add the naptrs to 
     74 * 
    7375 * @return           the number of NAPTR records in the domain. 0 should mean error 
    7476 * 
     
    104106- (NSUInteger)getLOCForTel:(NSString *)domain inArray:(NSMutableArray *)locArray withError:(NSError **)error; 
    105107 
     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; 
    106134@end 
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/DnsResolver.m

    r507 r546  
    136136} 
    137137 
     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} 
    138171 
    139172#pragma mark ------------ private methods ------------------- 
     
    174207         
    175208        ldns_rr_list *rrlist;    
    176         ldns_rdf *ldnsdomain = ldns_dname_new_frm_str([domain UTF8String]); 
    177         NSError *err2;   
     209        ldns_rdf *ldnsdomain = ldns_dname_new_frm_str([[self idnStringFromDomain:domain] UTF8String]); 
     210        NSError *err2; 
    178211        NSDictionary *dict; 
    179212         
     
    271304} 
    272305 
     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 
    273323@end 
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordNaptr.h

    r496 r546  
    2929#import <UIKit/UIKit.h> 
    3030#import <ldns/ldns.h> 
     31#import "idna.h" 
    3132 
    3233// Shorthand for getting localized strings 
     
    9899- (NSComparisonResult)comparator:(RecordNaptr *)aNaptr; 
    99100 
     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 
    100114@property (readonly) BOOL isTerminal; 
    101115@property (readonly) BOOL isPrivate; 
     
    111125@property (readonly, nonatomic, retain) NSNumber *preference;  
    112126@property (readonly, nonatomic, retain) NSString *serviceDescription; 
    113 @property (readonly, nonatomic, retain) NSString *labelDescription; 
     127@property (nonatomic, copy) NSString *labelDescription; 
    114128@property (readonly, nonatomic, retain) NSString *uriContent; 
    115129@property (readonly, nonatomic, retain) NSDate *expiryDate; 
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordNaptr.m

    r483 r546  
    149149                        NSURL *telUrl = [NSURL URLWithString:uriContent]; 
    150150                        if ([telUrl host]) { 
    151                                 replacement = [NSString stringWithString:[telUrl host]]; 
     151                                replacement = [self domainFromIdnString:[telUrl host]]; 
    152152                                uriContent = replacement; 
    153153                                isTerminal = NO; 
    154                                 labelDescription = [[[replacement stringByReplacingOccurrencesOfString:@"-" withString:@" "] capitalizedString] retain]; 
    155154                        } 
    156155                } 
    157156                 
    158157        } 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; 
    159161                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 
    163163                 
    164164        } else { // Not valid 
     
    286286                                                                options:NSLiteralSearch 
    287287                                                                  range:NSMakeRange(0, [theDesc length])]; 
    288         // cut off max label 
    289 //      if ([theDesc length] > 20) { 
    290 //              [theDesc deleteCharactersInRange:NSMakeRange(20, [theDesc length] - 20)]; 
    291 //      } 
    292288        return theDesc; 
    293289} 
     
    318314}        
    319315 
    320 # pragma mark ------------- Utility functions for parsing record data fields ------------ 
     316#pragma mark - 
     317#pragma mark Utility functions for parsing record data fields 
    321318 
    322319- (NSString *)stringFromStringRdf:(const ldns_rdf *)rdf { 
     
    382379} 
    383380 
    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 
    385400 
    386401- (void)dealloc { 
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordTxt.h

    r507 r546  
    3939        RecordTxtSubTypeOtherTSM                = 3,    // other .tel system message 
    4040        RecordTxtSubTypeAdvert                  = 4,    // .tad advert 
     41        RecordTxtSubTypeLabel                   = 5,    // .tlb record label 
    4142}; 
    4243 
     
    5253        NSMutableArray *keysAndValues;          // all keys and values of the TXT record (including primary key/value) 
    5354        NSDate *expiryDate;                                     // Expiry date of the record, based on time-to-live 
    54  
     55        NSInteger order; 
     56        NSInteger preference; 
    5557} 
    5658 
     
    8991@property (readonly, nonatomic, retain) NSMutableArray *keysAndValues; 
    9092@property (readonly, nonatomic, retain) NSDate *expiryDate; 
     93@property (readonly) NSInteger order; 
     94@property (readonly) NSInteger preference; 
    9195 
    9296@end 
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordTxt.m

    r507 r546  
    3434 
    3535- (BOOL)parseDisplayStringFromRecord:(const ldns_rr *)rr; 
     36- (BOOL)parseLabelFromRecord:(const ldns_rr *)rr; 
    3637- (BOOL)parseKeywordsFromRecord:(const ldns_rr *)rr; 
    3738 
     
    5051@synthesize textValue; 
    5152@synthesize keysAndValues; 
     53@synthesize order; 
     54@synthesize preference; 
    5255 
    5356+ (id)recordWithRr:(ldns_rr *)rr { 
     
    7578        trimCharacterSet = [[NSCharacterSet whitespaceCharacterSet] retain]; 
    7679        isValid = NO; 
    77  
     80        order = preference = 0; 
     81         
    7882        if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_TXT) 
    7983                return self; 
    80  
     84         
    8185        NSTimeInterval ttl = (NSTimeInterval)ldns_rr_ttl(rr); 
    8286        expiryDate = [lookupDate addTimeInterval:ttl]; 
     
    105109                subType = RecordTxtSubTypeAdvert; 
    106110                return self; 
     111        } else if ([firstString isEqualToString:@".tlb"]) { 
     112                // record label 
     113                subType = RecordTxtSubTypeLabel; 
     114                isValid = [self parseLabelFromRecord:rr]; 
     115                return self; 
    107116        } else { 
    108117                // header 
     
    115124                        [stringComponents addObject:[self stringFromStringRdf:ldns_rr_rdf(rr,i)]]; 
    116125                } 
    117  
     126                 
    118127                textValue = [stringComponents componentsJoinedByString:@" "]; 
    119128                isValid = YES; 
     
    135144        textValue = nil; 
    136145        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        } 
    137164} 
    138165 
     
    208235- (void)dealloc { 
    209236        [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]; 
    215242        [super dealloc]; 
    216243} 
  • apps/iphone/superbook/trunk/DotTel_SDK/README DotTel SDK

    r357 r546  
    11Welcome to the .tel iPhone SDK. 
    2 Version 1.1 for iPhone OS 2.0 and above 
     2Version 1.2 for iPhone OS 2.0 and above 
    33 
    44The main purpose of this SDK is to enable quick development of iPhone 
     
    5757CHANGE NOTES: 
    5858 
     59- 1.2 Oct 30, 2009 
     60  Added .tlb support 
     61 
    5962- 1.1 Sept 20, 2008 
    6063  Added expiryDate based on TTL. 
  • apps/iphone/superbook/trunk/English.lproj/About.html

    r511 r546  
    88 
    99<body  style="font-family: verdana; font-size: small;"> 
    10 <p align="right">Version 1.3 by 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 /> 
    1111Copyright 2009 Telnic Ltd., <a href="http://dev.telnic.org/pages/legal.html">License Agreement</a><br /> 
    1212Report issues in the <a href="http://dev.telnic.org/trac/discussion">.tel Community Forum</a></p> 
     
    3030</ul> 
    3131<p>Henri Asseily, Beirut, Lebanon, June 2009.</p> 
     32<p>Updated November 2009</p> 
    3233</body> 
    3334</html> 
  • apps/iphone/superbook/trunk/English.lproj/Localizable.strings

    r508 r546  
    122122"UpdateExisting" = "Update %@"; 
    123123 
     124/* Create a new contact */ 
     125"CreateNewContact" = "Create new contact"; 
    124126 
    125127 
  • apps/iphone/superbook/trunk/FMapView.xib

    r452 r546  
    11<?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"> 
    33        <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"> 
    1517                        <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"> 
    2821                        <object class="IBProxyObject" id="372490531"> 
    2922                                <string key="IBProxiedObjectIdentifier">IBFilesOwner</string> 
     
    3528                                <reference key="NSNextResponder"/> 
    3629                                <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> 
    6454                                                        </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> 
    117105                                <string key="NSFrameSize">{320, 416}</string> 
    118106                                <reference key="NSSuperview"/> 
     
    129117                                </object> 
    130118                        </object> 
    131                 </object> 
     119                </array> 
    132120                <object class="IBObjectContainer" key="IBDocument.Objects"> 
    133                         <object class="NSMutableArray" key="connectionRecords"> 
    134                                 <bool key="EncodedWithXMLCoder">YES</bool> 
     121                        <array class="NSMutableArray" key="connectionRecords"> 
    135122                                <object class="IBConnectionRecord"> 
    136123                                        <object class="IBCocoaTouchOutletConnection" key="connection"> 
     
    156143                                        </object> 
    157144                                        <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> 
    166145                                </object> 
    167146                                <object class="IBConnectionRecord"> 
     
    181160                                        <int key="connectionID">56</int> 
    182161                                </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> 
    184171                        <object class="IBMutableOrderedSet" key="objectRecords"> 
    185                                 <object class="NSArray" key="orderedObjects"> 
    186                                         <bool key="EncodedWithXMLCoder">YES</bool> 
     172                                <array key="orderedObjects"> 
    187173                                        <object class="IBObjectRecord"> 
    188174                                                <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"/> 
    192176                                                <reference key="children" ref="1000"/> 
    193177                                                <nil key="parent"/> 
     
    196180                                                <int key="objectID">-1</int> 
    197181                                                <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> 
    200184                                        </object> 
    201185                                        <object class="IBObjectRecord"> 
    202186                                                <int key="objectID">-2</int> 
    203187                                                <reference key="object" ref="975951072"/> 
    204                                                 <reference key="parent" ref="360949347"/> 
     188                                                <reference key="parent" ref="0"/> 
    205189                                        </object> 
    206190                                        <object class="IBObjectRecord"> 
    207191                                                <int key="objectID">3</int> 
    208192                                                <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"/> 
    220195                                                        <reference ref="139092493"/> 
    221196                                                        <reference ref="390972019"/> 
    222197                                                        <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"/> 
    224215                                                <reference key="parent" ref="313343111"/> 
    225216                                        </object> 
     
    227218                                                <int key="objectID">36</int> 
    228219                                                <reference key="object" ref="139092493"/> 
    229                                                 <object class="NSMutableArray" key="children"> 
    230                                                         <bool key="EncodedWithXMLCoder">YES</bool> 
     220                                                <array class="NSMutableArray" key="children"> 
    231221                                                        <reference ref="144500120"/> 
    232                                                 </object> 
    233                                                 <reference key="parent" ref="129435978"/> 
     222                                                </array> 
     223                                                <reference key="parent" ref="313343111"/> 
    234224                                        </object> 
    235225                                        <object class="IBObjectRecord"> 
     
    238228                                                <reference key="parent" ref="139092493"/> 
    239229                                        </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"/> 
    291245                        <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"/> 
    301247                        <nil key="sourceID"/> 
    302                         <int key="maxID">56</int> 
     248                        <int key="maxID">58</int> 
    303249                </object> 
    304250                <object class="IBClassDescriber" key="IBDocument.Classes"> 
    305                         <object class="NSMutableArray" key="referencedPartialClassDescriptions"> 
    306                                 <bool key="EncodedWithXMLCoder">YES</bool> 
     251                        <array class="NSMutableArray" key="referencedPartialClassDescriptions"> 
    307252                                <object class="IBPartialClassDescription"> 
    308253                                        <string key="className">FriendsMapViewController</string> 
    309254                                        <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> 
    342266                                        <object class="IBClassDescriptionSource" key="sourceIdentifier"> 
    343267                                                <string key="majorKey">IBProjectSource</string> 
     
    345269                                        </object> 
    346270                                </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> 
    348282                </object> 
    349283                <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> 
    350293                <string key="IBDocument.LastKnownRelativeProjectPath">LocateThem.xcodeproj</string> 
    351294                <int key="IBDocument.defaultPropertyAccessControl">3</int> 
    352                 <string key="IBCocoaTouchPluginVersion">3.0</string> 
     295                <string key="IBCocoaTouchPluginVersion">3.1</string> 
    353296        </data> 
    354297</archive> 
  • apps/iphone/superbook/trunk/French.lproj/About.html

    r511 r546  
    88 
    99<body  style="font-family: verdana; font-size: small;"> 
    10 <p align="right">Version 1.3 par 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 /> 
    1111Copyright 2009 Telnic Ltd., <a href="http://dev.telnic.org/pages/legal.html">Mentions l&eacute;gales et conditions d'utilisation</a><br /> 
    1212Posez vos questions sur <a href="http://dev.telnic.org/trac/discussion">.tel Community Forum</a></p> 
     
    3030</ul>  
    3131<p>Henri Asseily, Beyrouth, Liban, Juin 2009.</p> 
     32<p>Modifications Novembre 2009</p> 
    3233</body> 
    3334</html> 
  • apps/iphone/superbook/trunk/French.lproj/Localizable.strings

    r479 r546  
    146146/* Save to another contact */ 
    147147/*"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"; 
    149149 
    150150/* Save to existing current contact */ 
     
    152152"UpdateExisting" = "Mettre à jour %@"; 
    153153 
     154/* Create a new contact */ 
     155/*"CreateNewContact" = "Create new contact";*/ 
     156"CreateNewContact" = "Créer un nouveau contact"; 
    154157 
    155158 
  • apps/iphone/superbook/trunk/German.lproj/Localizable.strings

    r522 r546  
    114114 
    115115/* Save To Address Book */ 
    116 "Save To Address Book" = "im Adressbuch speichern"; 
     116"Save To Address Book" = "Im Adressbuch speichern"; 
    117117 
    118118/* Save to another contact */ 
    119 "Save to another contact" = "auf anderen Kontakt"; 
     119"Save to another contact" = "Auf anderen Kontakt"; 
    120120 
    121121/* Save to existing current contact */ 
    122122"UpdateExisting" = "Aktualisiere %@"; 
     123 
     124/* Create a new contact */ 
     125"CreateNewContact" = "Neues Kontakt"; 
    123126 
    124127 
  • apps/iphone/superbook/trunk/Info.plist

    r511 r546  
    2222        <string>????</string> 
    2323        <key>CFBundleVersion</key> 
    24         <string>1.3.0</string> 
     24        <string>1.4.0</string> 
    2525        <key>LSRequiresIPhoneOS</key> 
    2626        <true/> 
  • apps/iphone/superbook/trunk/LocateThem.xcodeproj/project.pbxproj

    r522 r546  
    1919                381A04760F89193500446D89 /* MainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 381A04750F89193500446D89 /* MainView.xib */; }; 
    2020                381A88430FAF947200CD57A2 /* Entitlements.plist in Resources */ = {isa = PBXBuildFile; fileRef = 381A88420FAF947200CD57A2 /* Entitlements.plist */; }; 
    21                 382650EB0F7CFD4D0065B5B9 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 382650EA0F7CFD4D0065B5B9 /* libsqlite3.dylib */; }; 
    2221                3826516A0F7CFFAC0065B5B9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 382651690F7CFFAC0065B5B9 /* QuartzCore.framework */; }; 
    2322                382F8C1C0F8379CB00ED53BF /* NSString+UITableViewHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 382F8C1B0F8379CB00ED53BF /* NSString+UITableViewHelper.m */; }; 
    2423                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 */; }; 
    2527                3849097B0FEA786C00F54327 /* routeme.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3849097A0FEA786C00F54327 /* routeme.plist */; }; 
    2628                38527485100A82E9005F4329 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 38527483100A82E9005F4329 /* Localizable.strings */; }; 
     
    4648                38976FB20FE016B5006D2DDE /* WebUrlViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 38976FB00FE016B5006D2DDE /* WebUrlViewController.m */; }; 
    4749                38976FB30FE016B5006D2DDE /* WebUrlView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 38976FB10FE016B5006D2DDE /* WebUrlView.xib */; }; 
    48                 38ACC9F70FB85589001EC74E /* MapView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38ACC9F60FB85589001EC74E /* MapView.framework */; }; 
    4950                38B8B9280FF11173001E59B0 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 38B8B9260FF11173001E59B0 /* SettingsViewController.m */; }; 
    5051                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 */; }; 
    5154                38D1582D0F84C3C900A97E88 /* bg-main.png in Resources */ = {isa = PBXBuildFile; fileRef = 38D1582C0F84C3C800A97E88 /* bg-main.png */; }; 
    5255                38D1582F0F84C3F400A97E88 /* logo.png in Resources */ = {isa = PBXBuildFile; fileRef = 38D1582E0F84C3F400A97E88 /* logo.png */; }; 
     
    5457                38D163260F861E2E00A97E88 /* NetworkUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D163250F861E2E00A97E88 /* NetworkUtility.m */; }; 
    5558                38D164CD0F864A1000A97E88 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D164CC0F864A1000A97E88 /* Reachability.m */; }; 
    56                 38D166E10F8658D900A97E88 /* LocTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D166E00F8658D900A97E88 /* LocTableViewCell.m */; }; 
    5759                38DB6B4F0F8B943500C7AE69 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 38DB6B4E0F8B943500C7AE69 /* Icon.png */; }; 
    5860                38DD047B0F7AE8BB000C66F6 /* loading.png in Resources */ = {isa = PBXBuildFile; fileRef = 38DD04760F7AE8BB000C66F6 /* loading.png */; }; 
     
    9698                381A04750F89193500446D89 /* MainView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainView.xib; sourceTree = "<group>"; }; 
    9799                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; }; 
    100101                382F8C1A0F8379CB00ED53BF /* NSString+UITableViewHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+UITableViewHelper.h"; sourceTree = "<group>"; }; 
    101102                382F8C1B0F8379CB00ED53BF /* NSString+UITableViewHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+UITableViewHelper.m"; sourceTree = "<group>"; }; 
     
    106107                383D3FD51043E33F0018D271 /* German */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = German; path = German.lproj/Localizable.strings; sourceTree = "<group>"; }; 
    107108                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>"; }; 
    108114                3849097A0FEA786C00F54327 /* routeme.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = routeme.plist; sourceTree = "<group>"; }; 
    109115                38527484100A82E9005F4329 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; }; 
     
    138144                38976FB00FE016B5006D2DDE /* WebUrlViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebUrlViewController.m; sourceTree = "<group>"; }; 
    139145                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>"; }; 
    141146                38B8B9250FF11173001E59B0 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = "<group>"; }; 
    142147                38B8B9260FF11173001E59B0 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = "<group>"; }; 
    143148                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>"; }; 
    144153                38D1582C0F84C3C800A97E88 /* bg-main.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "bg-main.png"; sourceTree = "<group>"; }; 
    145154                38D1582E0F84C3F400A97E88 /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = "<group>"; }; 
     
    149158                38D164CB0F864A1000A97E88 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; }; 
    150159                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>"; }; 
    153160                38DB6B4E0F8B943500C7AE69 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; }; 
    154161                38DD04760F7AE8BB000C66F6 /* loading.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = loading.png; sourceTree = "<group>"; }; 
     
    199206                                BB2775A40E55EB230007ECB3 /* libobjc.dylib in Frameworks */, 
    200207                                BB2776340E55EC9E0007ECB3 /* SystemConfiguration.framework in Frameworks */, 
    201                                 382650EB0F7CFD4D0065B5B9 /* libsqlite3.dylib in Frameworks */, 
    202208                                3826516A0F7CFFAC0065B5B9 /* QuartzCore.framework in Frameworks */, 
    203                                 38ACC9F70FB85589001EC74E /* MapView.framework in Frameworks */, 
    204209                                3892642910233A060023DE3B /* ldns.framework in Frameworks */, 
     210                                38BA1E2A109C91490049D362 /* MapKit.framework in Frameworks */, 
     211                                38451057109F4630004302FF /* libidn.a in Frameworks */, 
    205212                        ); 
    206213                        runOnlyForDeploymentPostprocessing = 0; 
     
    300307                        children = ( 
    301308                                3892642810233A060023DE3B /* ldns.framework */, 
    302                                 38ACC9F60FB85589001EC74E /* MapView.framework */, 
     309                                38BA1E29109C91490049D362 /* MapKit.framework */, 
    303310                                382651690F7CFFAC0065B5B9 /* QuartzCore.framework */, 
    304                                 382650EA0F7CFD4D0065B5B9 /* libsqlite3.dylib */, 
    305311                                BB2775A30E55EB230007ECB3 /* libobjc.dylib */, 
    306312                                BB2F18030E54FD08009C75BE /* AddressBook.framework */, 
     
    329335                        isa = PBXGroup; 
    330336                        children = ( 
     337                                38C3325B109E952B00E85FFE /* IDN Library */, 
    331338                                385BD6C50EBF694500D32EB0 /* Classes */, 
    332339                                388926160F7AD1C500855EF9 /* DotTel.strings */, 
     
    369376                        sourceTree = "<group>"; 
    370377                }; 
     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                }; 
    371388                38FEEE3B0F873B3B003FEBAD /* Cells */ = { 
    372389                        isa = PBXGroup; 
     
    374391                                BB2F182B0E5501C8009C75BE /* FriendsTableViewCell.h */, 
    375392                                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 */, 
    378397                        ); 
    379398                        name = Cells; 
     
    411430                                BB3261D90E64597E0091BF08 /* FriendsMapViewController.h */, 
    412431                                BB3261DA0E64597E0091BF08 /* FriendsMapViewController.m */, 
     432                                38BA1DFC109C90880049D362 /* TelMapAnnotation.h */, 
     433                                38BA1DFD109C90880049D362 /* TelMapAnnotation.m */, 
    413434                        ); 
    414435                        name = "All Friends Map View Controller"; 
     
    440461                29B97313FDCFA39411CA2CEA /* Project object */ = { 
    441462                        isa = PBXProject; 
     463                        attributes = { 
     464                                ORGANIZATIONNAME = "Telnic Limited"; 
     465                        }; 
    442466                        buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "LocateThem" */; 
    443467                        compatibilityVersion = "Xcode 3.1"; 
     
    527551                                38D163260F861E2E00A97E88 /* NetworkUtility.m in Sources */, 
    528552                                38D164CD0F864A1000A97E88 /* Reachability.m in Sources */, 
    529                                 38D166E10F8658D900A97E88 /* LocTableViewCell.m in Sources */, 
    530553                                387680950FC9B3CD00360BD4 /* DotTelABDelegate.m in Sources */, 
    531554                                3876822F0FCD483E00360BD4 /* DotTelABMapper.m in Sources */, 
    532555                                38976FB20FE016B5006D2DDE /* WebUrlViewController.m in Sources */, 
    533556                                38B8B9280FF11173001E59B0 /* SettingsViewController.m in Sources */, 
     557                                38BA1DFE109C90880049D362 /* TelMapAnnotation.m in Sources */, 
     558                                3841975110A0817D00A18A20 /* NaptrCell.m in Sources */, 
     559                                3841981610A0C6BA00A18A20 /* NTNaptrCell.m in Sources */, 
    534560                        ); 
    535561                        runOnlyForDeploymentPostprocessing = 0; 
     
    587613                                GCC_PREFIX_HEADER = LocateThem_Prefix.pch; 
    588614                                INFOPLIST_FILE = Info.plist; 
     615                                LIBRARY_SEARCH_PATHS = ( 
     616                                        "$(inherited)", 
     617                                        "\"$(SRCROOT)\"", 
     618                                ); 
    589619                                PRODUCT_NAME = Superbook; 
    590                                 SDKROOT = iphoneos2.0; 
    591620                        }; 
    592621                        name = Debug; 
     
    604633                                GCC_PREFIX_HEADER = LocateThem_Prefix.pch; 
    605634                                INFOPLIST_FILE = Info.plist; 
     635                                LIBRARY_SEARCH_PATHS = ( 
     636                                        "$(inherited)", 
     637                                        "\"$(SRCROOT)\"", 
     638                                ); 
    606639                                PRODUCT_NAME = Superbook; 
    607                                 SDKROOT = iphoneos2.0; 
    608640                        }; 
    609641                        name = Release; 
     
    612644                        isa = XCBuildConfiguration; 
    613645                        buildSettings = { 
    614                                 ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 
    615646                                CODE_SIGN_ENTITLEMENTS = Entitlements.plist; 
    616647                                CODE_SIGN_IDENTITY = "iPhone Distribution: Henri Asseily"; 
     
    618649                                GCC_WARN_ABOUT_RETURN_TYPE = YES; 
    619650                                GCC_WARN_UNUSED_VARIABLE = YES; 
     651                                OTHER_LDFLAGS = "-liconv"; 
    620652                                PREBINDING = NO; 
    621653                                PROVISIONING_PROFILE = "BBE4CD7C-3CBD-47E2-8691-8779B872D969"; 
    622                                 SDKROOT = iphoneos2.1; 
     654                                SDKROOT = iphoneos3.0; 
    623655                        }; 
    624656                        name = "Release Apple ad-hoc"; 
     
    636668                                GCC_PREFIX_HEADER = LocateThem_Prefix.pch; 
    637669                                INFOPLIST_FILE = Info.plist; 
     670                                LIBRARY_SEARCH_PATHS = ( 
     671                                        "$(inherited)", 
     672                                        "\"$(SRCROOT)\"", 
     673                                ); 
    638674                                PRODUCT_NAME = Superbook; 
    639                                 SDKROOT = iphoneos2.0; 
    640675                        }; 
    641676                        name = "Release Apple ad-hoc"; 
     
    644679                        isa = XCBuildConfiguration; 
    645680                        buildSettings = { 
    646                                 ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 
    647681                                CODE_SIGN_IDENTITY = "iPhone Distribution: Henri Asseily"; 
    648682                                GCC_C_LANGUAGE_STANDARD = c99; 
    649683                                GCC_WARN_ABOUT_RETURN_TYPE = YES; 
    650684                                GCC_WARN_UNUSED_VARIABLE = YES; 
     685                                OTHER_LDFLAGS = "-liconv"; 
    651686                                PREBINDING = NO; 
    652687                                PROVISIONING_PROFILE = "DC881623-4681-45BB-B714-179F016CBFD9"; 
    653                                 SDKROOT = iphoneos2.1; 
     688                                SDKROOT = iphoneos3.0; 
    654689                        }; 
    655690                        name = Distribution; 
     
    667702                                GCC_PREFIX_HEADER = LocateThem_Prefix.pch; 
    668703                                INFOPLIST_FILE = Info.plist; 
     704                                LIBRARY_SEARCH_PATHS = ( 
     705                                        "$(inherited)", 
     706                                        "\"$(SRCROOT)\"", 
     707                                ); 
    669708                                PRODUCT_NAME = Superbook; 
    670                                 SDKROOT = iphoneos2.0; 
    671709                        }; 
    672710                        name = Distribution; 
     
    675713                        isa = XCBuildConfiguration; 
    676714                        buildSettings = { 
    677                                 ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 
    678715                                CODE_SIGN_IDENTITY = "iPhone Developer: Henri Asseily"; 
    679716                                GCC_C_LANGUAGE_STANDARD = c99; 
     
    681718                                GCC_WARN_UNUSED_VARIABLE = YES; 
    682719                                ONLY_ACTIVE_ARCH = YES; 
     720                                OTHER_LDFLAGS = "-liconv"; 
    683721                                PREBINDING = NO; 
    684722                                PROVISIONING_PROFILE = "03F769C8-6A46-4229-9D24-C0B2E38DDE7C"; 
    685                                 SDKROOT = iphoneos2.1; 
     723                                SDKROOT = iphoneos3.0; 
    686724                        }; 
    687725                        name = Debug; 
     
    690728                        isa = XCBuildConfiguration; 
    691729                        buildSettings = { 
    692                                 ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 
    693730                                CODE_SIGN_IDENTITY = "iPhone Developer: Henri Asseily"; 
    694731                                GCC_C_LANGUAGE_STANDARD = c99; 
    695732                                GCC_WARN_ABOUT_RETURN_TYPE = YES; 
    696733                                GCC_WARN_UNUSED_VARIABLE = YES; 
     734                                OTHER_LDFLAGS = "-liconv"; 
    697735                                PREBINDING = NO; 
    698736                                PROVISIONING_PROFILE = "447EE44B-840F-4966-BF8B-8DE8B2B74D91"; 
    699                                 SDKROOT = iphoneos2.1; 
     737                                SDKROOT = iphoneos3.0; 
    700738                        }; 
    701739                        name = Release; 
  • apps/iphone/superbook/trunk/Russian.lproj/About.html

    r511 r546  
    88 
    99<body  style="font-family: verdana; font-size: small;"> 
    10 <p align="right">Version 1.3 by 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 /> 
    1111Copyright 2009 Telnic Ltd., <a href="http://dev.telnic.org/pages/legal.html">License Agreement</a><br /> 
    1212Report issues in the <a href="http://dev.telnic.org/trac/discussion">.tel Community Forum</a></p> 
     
    3030</ul> 
    3131<p>Henri Asseily, Beirut, Lebanon, June 2009.</p> 
     32<p>Updated November 2009</p> 
    3233</body> 
    3334</html> 
  • apps/iphone/superbook/trunk/Russian.lproj/Localizable.strings

    r482 r546  
    121121"UpdateExisting" = "Обновить %@"; 
    122122 
     123/* Create a new contact */ 
     124"CreateNewContact" = "Сохранить в новый контакт"; 
     125 
    123126 
    124127 
Telnic
Search This Site
Partners
Neustar
ICANN
Main site | WHOIS | Sell .tel | FAQ | Archived Site | About Telnic | Contact Us