Developer Area

Show
Ignore:
Timestamp:
06/07/09 11:21:46 (5 years ago)
Author:
henri
Message:

Major update: save .tel data to AddressBook?, with many other small fixes

Location:
apps/iphone/superbook/trunk
Files:
4 added
17 modified

Legend:

Unmodified
Added
Removed
  • apps/iphone/superbook/trunk/Classes/FriendsData.h

    r363 r382  
    7474}; 
    7575 
    76 - (void)loadDataInBackground; 
     76- (void)loadFriendsDataFromAB:(ABAddressBookRef)aBook; 
     77 
     78- (void)loadFriendsDataUsingTimer:(NSTimer *)aTimer; 
    7779 
    7880- (ABAddressBookRef)getAddressBookRef; 
     
    8183 
    8284- (NSNumber *)getABRecordIdForIndexPath:(NSIndexPath *)indexPath; 
     85 
     86- (NSNumber *) getABRecordIdForTel:(NSString *)telname; 
    8387 
    8488- (ABRecordRef)getABRecordRefForABRecordId:(NSNumber *)theId withAddressBook:(ABRecordRef)theBook; 
  • apps/iphone/superbook/trunk/Classes/FriendsData.m

    r363 r382  
    3131static FriendsData *sharedFriendsData = nil; 
    3232 
     33@interface FriendsData (PrivateMethods) 
     34 
     35void abChanged (ABAddressBookRef addressBook, 
     36                                CFDictionaryRef info, 
     37                                void *context); 
     38 
     39@end 
     40 
    3341@implementation FriendsData 
    3442 
     
    5260        self.prefsUnitKm = [defaults integerForKey:@"unitsPreference"]; 
    5361        self.prefsSorting = [defaults integerForKey:@"sortingPreference"]; 
     62 
     63        book = ABAddressBookCreate(); 
     64        ABAddressBookRegisterExternalChangeCallback(book, abChanged, self); 
    5465        return self; 
    5566} 
    5667 
    57 - (void) loadDataInBackground { 
    58         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    59         if (self != nil) {               
    60                 // open the default address book.  
    61                 book = ABAddressBookCreate(); 
    62                 if (!book) { 
     68- (void)loadFriendsDataUsingTimer:(NSTimer *)aTimer { 
     69        ABAddressBookRef aBook = (ABAddressBookRef)[aTimer userInfo]; 
     70        [self loadFriendsDataFromAB:aBook]; 
     71} 
     72 
     73- (void)loadFriendsDataFromAB:(ABAddressBookRef)aBook { 
     74        ABAddressBookRef theBook = ABAddressBookCreate();       // Override the incoming ab because it's not thread safe 
     75        if (self != nil) { 
     76                if (!theBook) { 
    6377                        NSLog(@"Error opening address book"); 
    6478                        if (self.delegate) 
    6579                                [self.delegate friendsDataDidLoad]; 
    66                         [pool release]; 
    6780                        return; 
    6881                } 
     
    7386                // choose which group he wants to filter by 
    7487                // TODO: allow filter by group, managed in preferences 
    75 //              CFArrayRef allGroups = ABAddressBookCopyArrayOfAllGroups(book); 
    76 //              CFIndex nGroups = ABAddressBookGetGroupCount(book); 
     88//              CFArrayRef allGroups = ABAddressBookCopyArrayOfAllGroups(theBook); 
     89//              CFIndex nGroups = ABAddressBookGetGroupCount(theBook); 
    7790//              ABRecordRef *aGroup; 
    7891//              for (int i=0;i < nGroups;i++) { 
     
    87100//              } 
    88101                 
    89                 // Find everyone with a .tel and add them to peopleWithTel 
     102                // Find everyone with a .tel and add them to peopleCurrentList 
    90103                CFArrayRef allPeople; 
    91104                CFIndex nPeople = 0; 
     
    95108                                nPeople = CFArrayGetCount(allPeople); 
    96109                } else { 
    97                         allPeople = ABAddressBookCopyArrayOfAllPeople(book); 
     110                        allPeople = ABAddressBookCopyArrayOfAllPeople(theBook); 
    98111                        if (allPeople) 
    99                                 nPeople = ABAddressBookGetPersonCount(book); 
     112                                nPeople = ABAddressBookGetPersonCount(theBook); 
    100113                } 
    101114                ABRecordRef *aPerson; 
     
    107120                        NSString *theTel = [self getTelForABRecordId:aPersonId withABRecordRef:aPerson]; 
    108121                        if (theTel) { 
    109                                 //                              [self.peopleWithTel addObject:aPersonId]; 
    110122                                // the people list has for each personid: name, type of status, location, location timestamp, distance from user and telname 
    111                                 NSArray *personInfoRow = [NSArray arrayWithObjects:[(NSString *)ABRecordCopyCompositeName(aPerson) autorelease], 
     123                                NSString *compName = [(NSString *)ABRecordCopyCompositeName(aPerson) autorelease]; 
     124                                if (!compName) { 
     125                                        compName = theTel; 
     126                                } 
     127                                NSArray *personInfoRow = [NSArray arrayWithObjects:compName, 
    112128                                                                                  [NSNumber numberWithInt:FriendsDataSectionStatusUnknown], 
    113129                                                                                  noLoc,  
     
    136152                [self.delegate friendsDataDidLoad]; 
    137153 
    138         [pool release]; 
    139154        return; 
    140155} 
     
    252267} 
    253268 
     269#pragma mark ---- AddressBook change callback method ---- 
     270 
     271void abChanged (ABAddressBookRef addressBook, 
     272                                CFDictionaryRef info, 
     273                                void *context) { 
     274        if (ABAddressBookHasUnsavedChanges(addressBook)) { 
     275                // Not done saving changes, let's wait 
     276                return; 
     277        } 
     278        // Something changed in the address book 
     279        // Let's get the latest changes and reload 
     280        FriendsData *fd = context; 
     281        [fd loadFriendsDataFromAB:addressBook]; 
     282//      [fd performSelectorOnMainThread:@selector(loadFriendsDataFromAB:) withObject:(id)addressBook waitUntilDone:NO]; 
     283} 
     284 
     285 
    254286#pragma mark ---- utility methods ---- 
    255287 
    256288// Get AddressBook 
    257289- (ABAddressBookRef) getAddressBookRef { 
    258  
    259         ABAddressBookRef bookForThread = ABAddressBookCreate(); 
    260         CFRetain(bookForThread); 
    261         return bookForThread; 
     290        return book; 
    262291} 
    263292 
     
    278307} 
    279308 
     309// Get ABRecordId for a specific .tel 
     310- (NSNumber *) getABRecordIdForTel:(NSString *)telname { 
     311        if (telname == NULL) 
     312                return [NSNumber numberWithInt:kABRecordInvalidID]; 
     313        // the people list has for each personid: name, type of status, location, location timestamp, distance from user and telname 
     314        // the sorted people array just has personids 
     315         
     316        NSNumber *theId; 
     317        NSArray *thePersonInfo; 
     318        for (theId in sortedPeopleArray) { 
     319                thePersonInfo = [peopleCurrentList objectForKey:theId]; 
     320                if ([(NSString *)[thePersonInfo objectAtIndex:5] isEqualToString:telname]) { 
     321                        return theId; 
     322                } 
     323        } 
     324        // Couldn't find a match 
     325        return [NSNumber numberWithInt:kABRecordInvalidID]; 
     326} 
    280327 
    281328// Get ABRecordRef for an ID 
     
    296343 
    297344        BOOL shouldRelease = NO; 
    298         ABAddressBookRef theBook; 
    299345        if (!recordRef) { 
    300346                shouldRelease = YES; 
    301                 theBook = ABAddressBookCreate(); 
    302                 recordRef = ABAddressBookGetPersonWithRecordID(theBook, (ABRecordID)[theId intValue]); 
     347                recordRef = ABAddressBookGetPersonWithRecordID(book, (ABRecordID)[theId intValue]); 
    303348        } 
    304349        CFStringRef telUrl; 
    305350        BOOL foundUrl = NO; 
    306351         
    307         ABMultiValueRef allUrls; 
    308         allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty); 
     352        ABMultiValueRef allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty); 
    309353         
    310354        for (CFIndex j = 0; j < ABMultiValueGetCount(allUrls); j++) { 
     
    314358                        break; 
    315359                } 
     360                if ([(NSString *)telUrl hasSuffix:@".tel/"]) { 
     361                        foundUrl = YES; 
     362                        break; 
     363                } 
    316364                CFRelease(telUrl); 
    317365        } 
     
    327375        } 
    328376        if (foundUrl) { 
    329                 if ([(NSString *)telUrl hasPrefix:@"http://"]) { 
    330                         NSString *retStr = [(NSString *)telUrl substringFromIndex:[@"http://" length]]; 
    331                         CFRelease(telUrl); 
     377                NSMutableString *cleanTelUrl = [NSMutableString stringWithString:(NSString *)telUrl]; 
     378                CFRelease(telUrl); 
     379                if ([cleanTelUrl hasSuffix:@".tel/"]) { 
     380                        // Remove the trailing slash 
     381                        [cleanTelUrl deleteCharactersInRange:NSMakeRange([cleanTelUrl length]-1, 1)]; 
     382                } 
     383                if ([cleanTelUrl hasPrefix:@"http://"]) { 
     384                        NSString *retStr = [cleanTelUrl substringFromIndex:[@"http://" length]]; 
    332385                        return retStr; 
    333386                } else if ([(NSString *)telUrl hasPrefix:@"https://"]) { 
    334                         NSString *retStr = [(NSString *)telUrl substringFromIndex:[@"https://" length]]; 
    335                         CFRelease(telUrl); 
     387                        NSString *retStr = [cleanTelUrl substringFromIndex:[@"https://" length]]; 
    336388                        return retStr; 
    337389                } else { 
    338                         return [(NSString *)telUrl autorelease]; 
     390                        return cleanTelUrl; 
    339391                } 
    340392        } 
     
    349401         
    350402        BOOL shouldRelease = NO; 
    351         ABAddressBookRef theBook; 
    352403        if (!recordRef) { 
    353404                shouldRelease = YES; 
    354                 theBook = ABAddressBookCreate(); 
    355                 recordRef = ABAddressBookGetPersonWithRecordID(theBook, (ABRecordID)[theId intValue]); 
     405                recordRef = ABAddressBookGetPersonWithRecordID(book, (ABRecordID)[theId intValue]); 
    356406        } 
    357407        CFStringRef telUrlValue; 
    358         ABMutableMultiValueRef allUrls; 
    359         allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty); 
     408        ABMultiValueRef allUrls = ABRecordCopyValue(recordRef, kABPersonURLProperty); 
    360409        NSInteger telIndex = -1; //  Return value for nonexistent 
    361410         
    362411        for (CFIndex j = 0; j < ABMultiValueGetCount(allUrls); j++) { 
    363412                telUrlValue = ABMultiValueCopyValueAtIndex(allUrls, j); 
    364                 if ([(NSString *)telUrlValue hasSuffix:@".tel"]) { 
     413                if ([(NSString *)telUrlValue hasSuffix:@".tel"] || [(NSString *)telUrlValue hasSuffix:@".tel/"]) { 
    365414                        CFRelease(telUrlValue); 
    366415                        telIndex = (NSInteger)j; 
     
    372421        if (shouldRelease) { 
    373422                CFRelease(recordRef); 
    374                 CFRelease(theBook); 
    375423        } 
    376424        return telIndex; 
     
    421469} 
    422470 
     471- (void)dealloc { 
     472        CFRelease(book); 
     473        [super dealloc]; 
     474} 
     475 
    423476@end 
  • apps/iphone/superbook/trunk/Classes/LocateThem_ViewController.h

    r363 r382  
    3434#import "CustomAlertView.h" 
    3535 
    36 // Shorthand for getting localized strings 
    37 #define LocStr(key) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil] 
    38  
    3936@interface LocateThem_ViewController : UIViewController <MyCLControllerDelegate, FriendsDataDelegate,  
    4037UINavigationControllerDelegate, UISearchBarDelegate, UIWebViewDelegate> { 
     
    4845        UINavigationController *telNavController; 
    4946@private 
     47        BOOL isFirstRun; 
    5048        BOOL keyboardShown; 
     49        BOOL isUpdatingLocation; 
     50        BOOL needsFriendsTableRefresh; 
     51        UILabel *instructionsView; 
     52        NSTimer *friendsTableLoadingTimer; 
    5153} 
    5254 
  • apps/iphone/superbook/trunk/Classes/LocateThem_ViewController.m

    r363 r382  
    4343                [MyCLController sharedInstance].delegate = self; 
    4444    } 
     45        isFirstRun = YES; 
    4546    return self; 
    4647} 
     
    5253                 
    5354                // NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];     
    54                 [[MyCLController sharedInstance].locationManager startUpdatingLocation]; 
    55  
    56                 // Now load our friends in the background, so that the application can finish initializing 
    57                 // and it can display the "loading..." information. Once the friend data has been loaded, 
    58                 // friendsDataDidLoad() is called and we complete building the table 
    59                 [self.view addSubview:loadingView]; 
    60                 loadingView.center = self.view.center; 
    61                 FriendsData *sharedFriendsInstance = [[FriendsData alloc] init]; 
     55                FriendsData *sharedFriendsInstance = [FriendsData sharedInstance]; 
    6256                sharedFriendsInstance.delegate = self; 
    6357                friendsTableView.dataSource = sharedFriendsInstance; 
    64                 [sharedFriendsInstance performSelectorInBackground:@selector(loadDataInBackground) withObject:nil]; 
    6558                 
    6659                // Do the other setup tasks 
     
    7265                [[NSNotificationCenter defaultCenter] addObserver:self 
    7366                                                                                                 selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil ]; 
     67                isUpdatingLocation = FALSE; 
     68                needsFriendsTableRefresh = TRUE; 
    7469        } 
    7570} 
     
    8075} 
    8176 
     77- (void)viewDidAppear:(BOOL)animated { 
     78        if (! isUpdatingLocation) { 
     79                [[MyCLController sharedInstance].locationManager startUpdatingLocation]; 
     80                isUpdatingLocation = TRUE; 
     81        } 
     82 
     83        if (needsFriendsTableRefresh) { 
     84                // Now load our friends using a timer, so that the application can finish initializing 
     85                // and it can display the "loading..." information. Once the friend data has been loaded, 
     86                // friendsDataDidLoad() is called and we complete building the table. 
     87                // Don't use a background thread because the AddressBook framework may not be threadsafe 
     88                [self.view addSubview:loadingView]; 
     89                loadingView.center = self.view.center; 
     90                friendsTableLoadingTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 
     91                                                                                                                                        target:[FriendsData sharedInstance] 
     92                                                                                                                                  selector:@selector(loadFriendsDataUsingTimer:) 
     93                                                                                                                                  userInfo:nil repeats:NO]; 
     94                needsFriendsTableRefresh = FALSE; 
     95        } 
     96} 
     97 
    8298// Delegate for FriendsData that gets called when data has been loaded and we can update the tableview 
    8399- (void)friendsDataDidLoad { 
    84100 
    85101        //[NSThread sleepForTimeInterval:5];    // for testing loadingView only 
     102        [friendsTableView reloadData]; 
    86103        [loadingView removeFromSuperview]; 
    87         [friendsTableView reloadData]; 
    88104        if ([friendsTableView numberOfRowsInSection:0] == 0) { 
    89105                [friendsTableView setHidden:NO]; 
    90                 UILabel *instructionsView = [[[UILabel alloc] initWithFrame:friendsTableView.frame] autorelease]; 
     106                instructionsView = [[[UILabel alloc] initWithFrame:friendsTableView.frame] autorelease]; 
    91107                instructionsView.numberOfLines = 0; 
    92108                instructionsView.text = LocStr(@"NoContactsWithTel"); 
     
    98114        } else { 
    99115                [friendsTableView setHidden:NO]; 
    100         } 
    101  
    102     // Check to see if the user has disabled location services altogether 
    103     // In that case, we show an alert and disable the find button and gps switch 
    104         if ( ! [MyCLController sharedInstance].locationManager.locationServicesEnabled ) { 
    105                 BOOL shouldQuit = NO; 
     116                if (instructionsView != nil) { 
     117                        [instructionsView removeFromSuperview]; 
     118                } 
     119        } 
     120 
     121        if (isFirstRun) { 
     122                isFirstRun = NO; 
     123                // Check to see if the user has disabled location services altogether 
     124                // In that case, we show an alert and disable the find button and gps switch 
     125                // TODO: re-enable when find location button is brought back 
     126//              if ( ! [MyCLController sharedInstance].locationManager.locationServicesEnabled ) { 
     127//                      BOOL shouldQuit = NO; 
     128//                       
     129//                      CustomAlertView *alertView = [[CustomAlertView alloc] initWithTitle:NSLocalizedString(@"LocationDenied", nil) 
     130//                                                                                                                              message:nil 
     131//                                                                                                                         delegate:nil 
     132//                                                                                                                       shouldQuit:shouldQuit 
     133//                                                                                                        cancelButtonTitle:nil 
     134//                                                                                                        otherButtonTitles:NSLocalizedString(@"OK", nil), nil]; 
     135//                      [alertView show]; 
     136//                      [alertView release]; 
     137//              } 
     138 
     139 
     140                //register whenever a change to the underlying dataset happens, so we can update the friends list view 
     141                [[FriendsData sharedInstance] addObserver:self forKeyPath:@"lastFriendsUpdate"  
     142                                                                                  options:NSKeyValueObservingOptionNew context:NULL]; 
    106143                 
    107                 CustomAlertView *alertView = [[CustomAlertView alloc] initWithTitle:NSLocalizedString(@"LocationDenied", nil) 
    108                                                                                                                         message:nil 
    109                                                                                                                    delegate:nil 
    110                                                                                                                  shouldQuit:shouldQuit 
    111                                                                                                   cancelButtonTitle:nil 
    112                                                                                                   otherButtonTitles:NSLocalizedString(@"OK", nil), nil]; 
    113                 [alertView show]; 
    114                 [alertView release]; 
    115     } 
    116  
    117  
    118         //register whenever a change to the underlying dataset happens, so we can update the friends list view 
    119         [[FriendsData sharedInstance] addObserver:self forKeyPath:@"lastFriendsUpdate"  
    120                                                                           options:NSKeyValueObservingOptionNew context:NULL]; 
    121          
    122         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    123         if ([defaults boolForKey:@"startupLocatePreference"]) { 
    124                 [self performSelectorInBackground:@selector(updateFriendsListInBackground) withObject:nil]; 
     144                NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     145                if ([defaults boolForKey:@"startupLocatePreference"]) { 
     146                        [self performSelectorInBackground:@selector(updateFriendsListInBackground) withObject:nil]; 
     147                } 
     148        } else { 
     149                // check if the db has been updated, then get rid of alertView 
    125150        } 
    126151} 
  • apps/iphone/superbook/trunk/Classes/NaptrViewController.h

    r363 r382  
    3131#import "FriendsData.h" 
    3232#import "FriendsMapViewController.h" 
     33#import "DotTelABDelegate.h" 
    3334#import "DnsResolver.h" 
    3435#import "NetworkUtility.h" 
     
    6364        NSTimeZone *timeZone; 
    6465        UIActivityIndicatorView *loadingAIView; 
     66        UIBarButtonItem *loadingAIButton; 
     67        UIBarButtonItem *storeContactButton; 
    6568        NSNumber *abId; // addressbook id 
    6669        BOOL prefsReverseGeo;  // Preferences for reverse geolocation 
     
    7073        NSUInteger callButtonIndex; 
    7174        NSUInteger smsButtonIndex; 
     75        DotTelABDelegate *abD; 
    7276} 
    7377 
     
    8286- (void)getCountryAndTimeZoneForLoc:(CLLocation *)aLoc; 
    8387- (void)actOnUri:(NSString *)uri; 
     88- (IBAction)saveContact:(id)sender; 
    8489 
    8590@property (nonatomic, retain) IBOutlet UITableView *theTable; 
     
    9297@property (nonatomic, retain) NSTimeZone *timeZone; 
    9398@property (nonatomic, retain) UIActivityIndicatorView *loadingAIView; 
     99@property (nonatomic, retain) UIBarButtonItem *loadingAIButton; 
     100@property (nonatomic, retain) UIBarButtonItem *storeContactButton; 
    94101@property (nonatomic, retain) NSNumber *abId; 
    95102@property BOOL prefsReverseGeo; 
    96 @property NSUInteger loadingCount; 
     103@property (readonly) NSUInteger loadingCount; 
    97104 
    98105@end 
  • apps/iphone/superbook/trunk/Classes/NaptrViewController.m

    r363 r382  
    2929#import "NaptrViewController.h" 
    3030 
     31static UIFont *headerFont; 
     32static UIFont *txtFont; 
     33 
     34@interface NaptrViewController (PrivateMethods) 
     35 
     36- (void)decrementLoadingCount; 
     37 
     38@end 
     39 
    3140@implementation NaptrViewController 
    3241 
     
    4150@synthesize prefsReverseGeo; 
    4251@synthesize loadingAIView; 
     52@synthesize loadingAIButton; 
     53@synthesize storeContactButton; 
    4354@synthesize abId; 
    4455 
    4556#define kHeaderTextFontSize 14.0 
     57#define kTextFontSize 14.0 
    4658 
    4759#pragma mark ------- canonical init methods 
     
    5567 
    5668- (void) setupWithTel:(NSString *)telName { 
     69         
     70        headerFont = [UIFont boldSystemFontOfSize:kHeaderTextFontSize]; 
     71        txtFont = [UIFont boldSystemFontOfSize:kTextFontSize]; 
     72 
    5773        self.title = telName; 
    58         self.abId = [NSNumber numberWithInt:UINT_MAX]; 
     74        self.abId = [NSNumber numberWithInt:NSUIntegerMax]; 
    5975        self.cleanTelName = [NSMutableString stringWithString:self.title]; 
    6076        [self.cleanTelName replaceOccurrencesOfString:@"-" 
     
    7894        self.loadingAIView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    7995        self.loadingAIView.hidesWhenStopped = YES; 
     96        self.loadingAIButton = [[UIBarButtonItem alloc] initWithCustomView:self.loadingAIView]; 
     97         
     98        self.storeContactButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave  
     99                                                                                                                                                        target:self  
     100                                                                                                                                                        action:@selector(saveContact:)]; 
    80101         
    81102        // set the uinavbar of the root viewcontroller of the navcontroller 
    82         self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:self.loadingAIView] autorelease]; 
     103        self.navigationItem.rightBarButtonItem = self.loadingAIButton; 
    83104         
    84105        [self.theTable reloadData]; 
    85         self.loadingCount = 3; 
     106        loadingCount = 3; 
    86107        [self performSelectorInBackground:@selector(getNaptrInBackgroundForTel:) withObject:self.title]; 
    87108        [self performSelectorInBackground:@selector(getTxtInBackgroundForTel:) withObject:self.title]; 
     
    100121        self.navigationItem.title = self.title; 
    101122        if (!self.navigationItem.rightBarButtonItem) 
    102                 self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:self.loadingAIView] autorelease]; 
     123                self.navigationItem.rightBarButtonItem = self.loadingAIButton; 
    103124} 
    104125 
     
    117138} 
    118139 
    119 - (void)setLoadingCount:(NSUInteger)newCount { 
    120         loadingCount = newCount; 
     140- (void)decrementLoadingCount { 
     141        // Must call this on main thread, because it has UI needs and is called from background threads 
     142        if (![NSThread isMainThread]) { 
     143                [self performSelectorOnMainThread:@selector(decrementLoadingCount) 
     144                                                           withObject:nil 
     145                                                        waitUntilDone:YES]; 
     146                return; 
     147        } 
     148        loadingCount--; 
     149        NSLog(@"Count set to %d", loadingCount); 
    121150        if (loadingCount == 0) { 
    122151                [self.loadingAIView stopAnimating]; 
     152                self.navigationItem.rightBarButtonItem = self.storeContactButton; 
    123153        } else { 
    124154                [self.loadingAIView startAnimating]; 
    125         } 
    126  
     155                self.navigationItem.rightBarButtonItem = self.loadingAIButton; 
     156        } 
    127157} 
    128158 
     
    194224                        } 
    195225                        UILabel *cellLabel; 
    196                         cellLabel = [headerText sizeCellLabelWithBoldSystemFontOfSize:kHeaderTextFontSize paddingWidth:10.0f Height:10.0f];                      
     226                        cellLabel = [headerText sizeCellLabelWithFont:headerFont paddingWidth:10.0f Height:10.0f]; 
    197227                        [cell.contentView addSubview:cellLabel]; 
    198228                        return cell; 
     
    247277                                cell = (UITableViewCell *)[txtCellNib objectAtIndex:0]; 
    248278                        } 
    249                         [(UILabel *)[cell viewWithTag:1] setText:theRec.typeDescription]; 
    250                         [(UILabel *)[cell viewWithTag:2] setText:theRec.textValue]; 
     279                        [(UILabel *)[cell viewWithTag:1] setText:theRec.primaryDescription]; 
     280                        if (theRec.primaryValue != NULL) { 
     281                                [(UILabel *)[cell viewWithTag:3] setText:theRec.primaryValue]; 
     282                        } else { 
     283                                [(UILabel *)[cell viewWithTag:3] setText:@""]; 
     284                        } 
     285                         
     286                        // Set the text description and resize the label accordingly 
     287                        // We're not doing it like the header because we're using a nib for the cell 
     288                        // (but we override the font size here) 
     289                        UILabel *textDescriptionLabel = (UILabel *)[cell viewWithTag:2]; 
     290                        textDescriptionLabel.text = theRec.textValue; 
     291                        CGFloat width = textDescriptionLabel.frame.size.width; 
     292                        CGFloat height = [textDescriptionLabel.text cellHeightForFont:txtFont paddingWidth:10.0f Height:6.0f]; 
     293                        CGRect newframe = CGRectMake(textDescriptionLabel.frame.origin.x, textDescriptionLabel.frame.origin.y, width, height); 
     294                        textDescriptionLabel.frame = newframe; 
     295 
    251296                        return cell; 
    252297                } 
     
    358403                                FriendsMapViewController *fMVC = [FriendsMapViewController sharedInstance]; 
    359404                                fMVC.initialLoc = loc; 
    360                                 if ([self.abId integerValue] == UINT_MAX) {     // not one of our address book .tel domains 
     405                                if ([abId integerValue] == NSUIntegerMax) {     // not one of our address book .tel domains 
    361406                                        [fMVC setMarkerWithABRecordId:self.abId title:nil telname:self.title location:loc]; 
    362407                                } else { 
     
    381426        switch (indexPath.section) { 
    382427                case SECTION_HEADER: 
    383                         return [headerText cellHeightForBoldSystemFontOfSize:kHeaderTextFontSize paddingWidth:10.0f Height:10.0f]; 
     428                { 
     429                        return [headerText cellHeightForFont:headerFont paddingWidth:10.0f Height:10.0f]; 
     430                } 
     431                case SECTION_TXT: 
     432                { 
     433                        RecordTxt *theRec = [self.txtArray objectAtIndex:indexPath.row]; 
     434                        return [theRec.textValue cellHeightForFont:txtFont paddingWidth:10.0f Height:18.0f]; 
     435                } 
    384436                default: 
    385                         return (CGFloat)59.0; 
     437                        return (CGFloat)44.0; 
    386438        } 
    387439} 
     
    425477        } 
    426478        [[NetworkUtility sharedInstance] networkwillActivate:NO]; 
     479        [self decrementLoadingCount]; 
    427480        [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 
    428         self.loadingCount = self.loadingCount - 1; 
    429481        if (error) { 
    430482                UIAlertView *errAlert = [[UIAlertView alloc] initWithTitle:@"Error" 
     
    444496        [res release]; 
    445497        [[NetworkUtility sharedInstance] networkwillActivate:NO]; 
     498        [self decrementLoadingCount]; 
    446499        [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 
    447         self.loadingCount = self.loadingCount - 1; 
    448500} 
    449501 
     
    455507        [res release]; 
    456508        [[NetworkUtility sharedInstance] networkwillActivate:NO]; 
     509        [self decrementLoadingCount];   // Don't wait for reverse geo to say we're done, that's a bonus 
    457510        if (locCount > 1) { 
    458                 NSLog(@"Warning: %d LOC records in domain %@", locCount, telName); 
     511                //NSLog(@"Warning: %d LOC records in domain %@", locCount, telName); 
    459512        } 
    460513        [self.theTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 
    461         self.loadingCount = self.loadingCount - 1;      // Don't wait for reverse geo to say we're done, that's a bonus 
    462514        if (locCount > 0) { 
    463515                if (prefsReverseGeo) { 
     
    576628} 
    577629 
     630#pragma mark ------ Methods to save a contact 
     631 
     632- (IBAction)saveContact:(id)sender { 
     633        if (abD) 
     634                [abD release]; 
     635        abD = [[DotTelABDelegate alloc] initWithViewController:self telName:self.title]; 
     636        abD.naptrArray = self.naptrArray; 
     637        abD.txtArray = self.txtArray; 
     638        NSError *err; 
     639        if ([abId integerValue] == NSUIntegerMax) {     // not one of our address book .tel domains 
     640                err = [abD saveRecord]; 
     641        } else { 
     642                err = [abD saveRecordWithRecordId:[abId integerValue]]; 
     643        } 
     644        if (err) { 
     645                NSLog([err localizedDescription]); 
     646        } 
     647} 
     648 
    578649@end 
    579650 
  • apps/iphone/superbook/trunk/Classes/NSString+UITableViewHelper.h

    r363 r382  
    3333@interface NSString (UITableViewHelper) 
    3434 
    35 - (CGFloat)textHeightForBoldSystemFontOfSize:(CGFloat)size paddingWidth:(CGFloat)pW Height:(CGFloat)pH; 
    36 - (CGFloat)cellHeightForBoldSystemFontOfSize:(CGFloat)size paddingWidth:(CGFloat)pW Height:(CGFloat)pH; 
    37 - (UILabel *)sizeCellLabelWithBoldSystemFontOfSize:(CGFloat)size paddingWidth:(CGFloat)pW Height:(CGFloat)pH; 
     35- (CGFloat)textHeightForFont:(UIFont *)font paddingWidth:(CGFloat)pW Height:(CGFloat)pH; 
     36- (CGFloat)cellHeightForFont:(UIFont *)font paddingWidth:(CGFloat)pW Height:(CGFloat)pH; 
     37- (UILabel *)sizeCellLabelWithFont:(UIFont *)font paddingWidth:(CGFloat)pW Height:(CGFloat)pH; 
    3838 
    3939@end 
  • apps/iphone/superbook/trunk/Classes/NSString+UITableViewHelper.m

    r363 r382  
    3131@implementation NSString (UITableViewHelper) 
    3232 
    33 - (CGFloat)textHeightForBoldSystemFontOfSize:(CGFloat)size paddingWidth:(CGFloat)pW Height:(CGFloat)pH { 
     33- (CGFloat)textHeightForFont:(UIFont *)font paddingWidth:(CGFloat)pW Height:(CGFloat)pH { 
    3434    //Calculate the expected size based on the font and linebreak mode of the label 
    3535    CGFloat maxWidth = [UIScreen mainScreen].bounds.size.width - pW*2; 
     
    3737    CGSize maximumLabelSize = CGSizeMake(maxWidth,maxHeight); 
    3838         
    39     CGSize expectedLabelSize = [self sizeWithFont:[UIFont boldSystemFontOfSize:size] 
     39    CGSize expectedLabelSize = [self sizeWithFont:font 
    4040                                                                constrainedToSize:maximumLabelSize 
    4141                                                                        lineBreakMode:UILineBreakModeWordWrap];  
     
    4444} 
    4545 
    46 - (CGFloat)cellHeightForBoldSystemFontOfSize:(CGFloat)size paddingWidth:(CGFloat)pW Height:(CGFloat)pH { 
    47         return [self textHeightForBoldSystemFontOfSize:size paddingWidth:pW Height:pH] + pH*2; 
     46- (CGFloat)cellHeightForFont:(UIFont *)font paddingWidth:(CGFloat)pW Height:(CGFloat)pH { 
     47        return [self textHeightForFont:font paddingWidth:pW Height:pH] + pH*2; 
    4848} 
    4949 
    50 - (UILabel *)sizeCellLabelWithBoldSystemFontOfSize:(CGFloat)size paddingWidth:(CGFloat)pW Height:(CGFloat)pH { 
     50- (UILabel *)sizeCellLabelWithFont:(UIFont *)font paddingWidth:(CGFloat)pW Height:(CGFloat)pH { 
    5151    CGFloat width = [UIScreen mainScreen].bounds.size.width - pW*2; 
    52     CGFloat height = [self cellHeightForBoldSystemFontOfSize:size paddingWidth:pW Height:pH]; 
     52    CGFloat height = [self cellHeightForFont:font paddingWidth:pW Height:pH]; 
    5353    CGRect frame = CGRectMake(pW, pH, width, height); 
    5454    UILabel *cellLabel = [[[UILabel alloc] initWithFrame:frame] autorelease]; 
     
    5656    cellLabel.backgroundColor = [UIColor clearColor]; 
    5757    cellLabel.textAlignment = UITextAlignmentLeft; 
    58     cellLabel.font = [UIFont boldSystemFontOfSize:size]; 
     58        cellLabel.font = font; 
    5959    cellLabel.text = self;  
    6060    cellLabel.numberOfLines = 0;  
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/DnsResolver.m

    r363 r382  
    245245                        } 
    246246                        @catch (NSException * e) { 
    247                                 dict = [NSDictionary dictionaryWithObject:@"Network Error: Bad data returned" forKey:NSLocalizedDescriptionKey]; 
    248                                 err2 = [NSError errorWithDomain:@"org.telnic.tel.sdk" code:RESOLVER_STATUS_BAD_DATA userInfo:dict]; 
    249                                 if (error) 
    250                                         *error = err2; 
     247                                // Exception is caught if there's no data in the rrlist, 
     248                                // i.e. if there are no records. That's BAD. 
     249                                // TODO: See in ldns rr.c source why ldns_rr_list_rr_count() fails and doesn't return 0 
     250                                // In the meantime, disable the error 
     251                                 
     252//                              dict = [NSDictionary dictionaryWithObject:@"Network Error: Bad data returned" forKey:NSLocalizedDescriptionKey]; 
     253//                              err2 = [NSError errorWithDomain:@"org.telnic.tel.sdk" code:RESOLVER_STATUS_BAD_DATA userInfo:dict]; 
     254//                              if (error) 
     255//                                      *error = err2; 
    251256                                rrlist = NULL; 
    252257                        } 
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordNaptr.h

    r363 r382  
    104104@property (readonly) BOOL isValid; 
    105105 
     106@property (readonly, nonatomic, retain) NSMutableArray *serviceTypeArray; 
     107@property (readonly, nonatomic, retain) NSMutableArray *labelArray; 
     108@property (readonly, nonatomic, retain) NSMutableArray *lihArray; 
     109 
    106110@property (readonly, nonatomic, retain) NSNumber *order;  
    107111@property (readonly, nonatomic, retain) NSNumber *preference;  
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordNaptr.m

    r366 r382  
    4545@implementation RecordNaptr 
    4646 
     47@synthesize serviceTypeArray; 
     48@synthesize labelArray; 
     49@synthesize lihArray; 
     50 
    4751@synthesize order; 
    4852@synthesize preference; 
     
    9599        expiryDate = [lookupDate addTimeInterval:ttl]; 
    96100         
    97         serviceTypeArray = [NSMutableArray arrayWithCapacity:2]; 
    98         labelArray = [NSMutableArray arrayWithCapacity:2]; 
    99         lihArray = [NSMutableArray arrayWithCapacity:2]; 
     101        serviceTypeArray = [[NSMutableArray arrayWithCapacity:2] retain]; 
     102        labelArray = [[NSMutableArray arrayWithCapacity:2] retain]; 
     103        lihArray = [[NSMutableArray arrayWithCapacity:2] retain]; 
    100104         
    101105        order = [[self numberFromIntRdf:ldns_rr_rdf(rr,0)] retain]; 
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordTxt.h

    r363 r382  
    4242         
    4343        // Derived attributes 
    44         NSString *typeDescription;                      // keyword type(s) string 
     44        NSString *primaryDescription;           // primary keyword type description (nl, pa, ...) 
     45        NSString *primaryValue;                         // primary keyword value 
    4546        NSString *textValue;                            // string value of the TXT record 
     47        NSMutableArray *keysAndValues;          // all keys and values of the TXT record (including primary key/value) 
    4648        NSDate *expiryDate;                                     // Expiry date of the record, based on time-to-live 
    4749 
     
    8082@property (readonly) BOOL isSystemMessage; 
    8183 
    82 @property (readonly, nonatomic, retain) NSString *typeDescription; 
     84@property (readonly, nonatomic, retain) NSString *primaryDescription; 
     85@property (readonly, nonatomic, retain) NSString *primaryValue; 
    8386@property (readonly, nonatomic, retain) NSString *textValue; 
     87@property (readonly, nonatomic, retain) NSMutableArray *keysAndValues; 
    8488@property (readonly, nonatomic, retain) NSDate *expiryDate; 
    8589 
  • apps/iphone/superbook/trunk/DotTel_SDK/Classes/RecordTxt.m

    r363 r382  
    2929#import "RecordTxt.h" 
    3030 
     31static NSCharacterSet *trimCharacterSet; 
     32 
    3133@interface RecordTxt (PrivateMethods) 
    3234 
     
    4547@synthesize expiryDate; 
    4648 
    47 @synthesize typeDescription; 
     49@synthesize primaryDescription; 
     50@synthesize primaryValue; 
    4851@synthesize textValue; 
     52@synthesize keysAndValues; 
    4953 
    5054+ (id)recordWithRr:(ldns_rr *)rr { 
     
    6973- (id)initWithRr:(ldns_rr *)rr date:(NSDate *)lookupDate { 
    7074        self = [super init]; 
     75        trimCharacterSet = [[NSCharacterSet whitespaceCharacterSet] retain]; 
    7176        isValid = NO; 
    72          
     77        isKeyword = NO; 
     78 
    7379        if (ldns_rr_get_type(rr) != LDNS_RR_TYPE_TXT) 
    7480                return self; 
     
    8086        if ([firstString isEqualToString:@".tkw"]) { 
    8187                // parse keywords 
     88                isKeyword = YES; 
    8289                isValid = [self parseKeywordsFromRecord:rr]; 
    8390        } else if ([firstString isEqualToString:@".tsm"]) { 
    8491                // system message, do nothing 
    8592                return self; 
     93        } else if ([firstString isEqualToString:@".tad"]) { 
     94                // advert, do nothing for now 
     95                return self; 
    8696        } else { 
    8797                // header 
    8898                isHeader = YES; 
    89                 typeDescription= [@"" retain]; 
     99                primaryDescription = [@"" retain]; 
     100                primaryValue = NULL; 
    90101                // Could have multiple strings in one record, they need to be joined together 
    91102                NSMutableArray *stringComponents = [NSMutableArray arrayWithCapacity:2]; 
    92                 // TODO: concatenate all the strings in that rr 
    93103                for (NSUInteger i=0; i < ldns_rr_rd_count(rr); i++) { 
    94104                        [stringComponents addObject:[self stringFromStringRdf:ldns_rr_rdf(rr,i)]]; 
    95105                } 
    96106 
    97                 textValue = [stringComponents componentsJoinedByString:@", "]; 
     107                textValue = [stringComponents componentsJoinedByString:@" "]; 
    98108                isValid = YES; 
    99109        } 
     
    108118        // will have more. Here we opt to concatenate all the values for these compound keywords 
    109119        // and only keep the first type string, discarding all other type strings if they exist 
     120        // However, we also keep a full array of type+value in case the user wants to store that 
     121        // info into the address book. 
    110122         
    111123        // Check version 
    112124        if ([[self stringFromStringRdf:ldns_rr_rdf(rr,1)] isEqualToString:@"1"]) { 
    113125                // Version 1 
    114                 typeDescription = [LocTelStr([self stringFromStringRdf:ldns_rr_rdf(rr,2)]) retain]; 
    115                 NSMutableArray *keyValueComponents = [NSMutableArray arrayWithCapacity:2]; 
    116                 for (NSUInteger i=3; i < ldns_rr_rd_count(rr); i=i+2) { 
    117                         [keyValueComponents addObject:[self stringFromStringRdf:ldns_rr_rdf(rr,i)]]; 
     126                keysAndValues = [[NSMutableArray arrayWithCapacity:ldns_rr_rd_count(rr)] retain]; 
     127                for (NSUInteger i=2; i < ldns_rr_rd_count(rr); i=i+2) { 
     128                        [keysAndValues addObject:[self stringFromStringRdf:ldns_rr_rdf(rr,i)]]; 
     129                        [keysAndValues addObject:[self stringFromStringRdf:ldns_rr_rdf(rr,i+1)]]; 
    118130                } 
    119                 textValue = [[keyValueComponents componentsJoinedByString:@" "] retain]; 
     131                primaryDescription = [LocTelStr([keysAndValues objectAtIndex:0]) retain]; 
     132                if ([keysAndValues count] < 3) {        // Only a single primary keyword/value 
     133                        primaryValue = NULL; 
     134                        textValue = [keysAndValues objectAtIndex:1]; 
     135                } else { 
     136                        primaryValue = [keysAndValues objectAtIndex:1]; 
     137                        NSMutableArray *keyValueComponents = [NSMutableArray arrayWithCapacity:2]; 
     138                        for (NSUInteger i=1; i < [keysAndValues count]; i=i+2) { 
     139                                [keyValueComponents addObject:[keysAndValues objectAtIndex:i]]; 
     140                        } 
     141                        textValue = [[[keyValueComponents componentsJoinedByString:@" "] 
     142                                                  stringByTrimmingCharactersInSet:trimCharacterSet] retain]; 
     143                } 
    120144                return TRUE; 
    121145        } else { 
     
    137161} 
    138162 
     163#pragma mark ---- cleanup ---- 
     164 
     165- (void)dealloc { 
     166        [trimCharacterSet release]; 
     167        [super dealloc]; 
     168} 
    139169 
    140170@end 
  • apps/iphone/superbook/trunk/LocateThem_Prefix.pch

    r357 r382  
    88#endif 
    99 
     10// Shorthand for getting localized strings 
    1011#define LocStr(key) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil] 
    1112 
  • apps/iphone/superbook/trunk/LocTableViewCell.xib

    r357 r382  
    33        <data> 
    44                <int key="IBDocument.SystemTarget">528</int> 
    5                 <string key="IBDocument.SystemVersion">9G55</string> 
     5                <string key="IBDocument.SystemVersion">9J61</string> 
    66                <string key="IBDocument.InterfaceBuilderVersion">677</string> 
    7                 <string key="IBDocument.AppKitVersion">949.43</string> 
     7                <string key="IBDocument.AppKitVersion">949.46</string> 
    88                <string key="IBDocument.HIToolboxVersion">353.00</string> 
    99                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> 
     
    4545                                                                <reference key="NSNextResponder" ref="28551456"/> 
    4646                                                                <int key="NSvFlags">292</int> 
    47                                                                 <string key="NSFrame">{{98, 39}, {126, 19}}</string> 
     47                                                                <string key="NSFrame">{{86, 23}, {177, 19}}</string> 
    4848                                                                <reference key="NSSuperview" ref="28551456"/> 
    4949                                                                <bool key="IBUIOpaque">NO</bool> 
     
    7070                                                                <reference key="NSNextResponder" ref="28551456"/> 
    7171                                                                <int key="NSvFlags">292</int> 
    72                                                                 <string key="NSFrame">{{12, 37}, {69, 21}}</string> 
     72                                                                <string key="NSFrame">{{12, 23}, {69, 19}}</string> 
    7373                                                                <reference key="NSSuperview" ref="28551456"/> 
    7474                                                                <bool key="IBUIOpaque">NO</bool> 
     
    8585                                                                <reference key="NSNextResponder" ref="28551456"/> 
    8686                                                                <int key="NSvFlags">292</int> 
    87                                                                 <string key="NSFrame">{{205, 7}, {92, 21}}</string> 
     87                                                                <string key="NSFrame">{{205, 2}, {92, 21}}</string> 
    8888                                                                <reference key="NSSuperview" ref="28551456"/> 
    8989                                                                <bool key="IBUIOpaque">NO</bool> 
     
    9494                                                                <object class="NSFont" key="IBUIFont"> 
    9595                                                                        <string key="NSName">Helvetica</string> 
    96                                                                         <double key="NSSize">1.800000e+01</double> 
     96                                                                        <double key="NSSize">1.400000e+01</double> 
    9797                                                                        <int key="NSfFlags">16</int> 
    9898                                                                </object> 
     
    105105                                                                <reference key="NSNextResponder" ref="28551456"/> 
    106106                                                                <int key="NSvFlags">292</int> 
    107                                                                 <string key="NSFrame">{{12, 6}, {157, 22}}</string> 
     107                                                                <string key="NSFrame">{{12, 2}, {157, 21}}</string> 
    108108                                                                <reference key="NSSuperview" ref="28551456"/> 
    109109                                                                <bool key="IBUIOpaque">NO</bool> 
     
    114114                                                                <object class="NSFont" key="IBUIFont"> 
    115115                                                                        <string key="NSName">Helvetica-Bold</string> 
    116                                                                         <double key="NSSize">1.800000e+01</double> 
     116                                                                        <double key="NSSize">1.400000e+01</double> 
    117117                                                                        <int key="NSfFlags">16</int> 
    118118                                                                </object> 
     
    125125                                                                <reference key="NSNextResponder" ref="28551456"/> 
    126126                                                                <int key="NSvFlags">-2147483356</int> 
    127                                                                 <string key="NSFrame">{{177, 7}, {20, 20}}</string> 
     127                                                                <string key="NSFrame">{{177, 3}, {20, 20}}</string> 
    128128                                                                <reference key="NSSuperview" ref="28551456"/> 
    129129                                                                <bool key="IBUIOpaque">NO</bool> 
     
    134134                                                        </object> 
    135135                                                </object> 
    136                                                 <string key="NSFrameSize">{297, 63}</string> 
     136                                                <string key="NSFrameSize">{300, 44}</string> 
    137137                                                <reference key="NSSuperview" ref="895293714"/> 
    138138                                                <object class="NSColor" key="IBUIBackgroundColor"> 
     
    146146                                        </object> 
    147147                                </object> 
    148                                 <string key="NSFrameSize">{320, 63}</string> 
     148                                <string key="NSFrameSize">{320, 44}</string> 
    149149                                <reference key="NSSuperview"/> 
    150150                                <object class="NSColor" key="IBUIBackgroundColor"> 
     
    190190                                                <object class="NSMutableArray" key="children"> 
    191191                                                        <bool key="EncodedWithXMLCoder">YES</bool> 
    192                                                         <reference ref="483724623"/> 
    193192                                                        <reference ref="820518850"/> 
    194193                                                        <reference ref="283132979"/> 
    195194                                                        <reference ref="175760398"/> 
    196195                                                        <reference ref="1015408229"/> 
     196                                                        <reference ref="483724623"/> 
    197197                                                </object> 
    198198                                                <reference key="parent" ref="360949347"/> 
     
    242242                                        <string>UIResponder</string> 
    243243                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 
    244                                         <string>{{30, 330}, {320, 63}}</string> 
     244                                        <string>{{30, 349}, {320, 44}}</string> 
    245245                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 
    246246                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 
     
    276276                <string key="IBDocument.LastKnownRelativeProjectPath">LocateThem.xcodeproj</string> 
    277277                <int key="IBDocument.defaultPropertyAccessControl">3</int> 
     278                <string key="IBCocoaTouchPluginVersion">3.0</string> 
    278279        </data> 
    279280</archive> 
  • apps/iphone/superbook/trunk/NaptrTableViewCell.xib

    r357 r382  
    33        <data> 
    44                <int key="IBDocument.SystemTarget">512</int> 
    5                 <string key="IBDocument.SystemVersion">9G55</string> 
     5                <string key="IBDocument.SystemVersion">9J61</string> 
    66                <string key="IBDocument.InterfaceBuilderVersion">677</string> 
    7                 <string key="IBDocument.AppKitVersion">949.43</string> 
     7                <string key="IBDocument.AppKitVersion">949.46</string> 
    88                <string key="IBDocument.HIToolboxVersion">353.00</string> 
    99                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> 
     
    4545                                                                <reference key="NSNextResponder" ref="286161198"/> 
    4646                                                                <int key="NSvFlags">292</int> 
    47                                                                 <string key="NSFrame">{{8, 6}, {162, 21}}</string> 
     47                                                                <string key="NSFrame">{{8, 5}, {169, 15}}</string> 
    4848                                                                <reference key="NSSuperview" ref="286161198"/> 
    4949                                                                <bool key="IBUIOpaque">NO</bool> 
     
    5252                                                                <bool key="IBUIUserInteractionEnabled">NO</bool> 
    5353                                                                <string key="IBUIText">Service Type</string> 
    54                                                                 <object class="NSFont" key="IBUIFont" id="282619197"> 
     54                                                                <object class="NSFont" key="IBUIFont" id="946507737"> 
    5555                                                                        <string key="NSName">Helvetica-Bold</string> 
    56                                                                         <double key="NSSize">1.600000e+01</double> 
     56                                                                        <double key="NSSize">1.400000e+01</double> 
    5757                                                                        <int key="NSfFlags">16</int> 
    5858                                                                </object> 
     
    6868                                                                <reference key="NSNextResponder" ref="286161198"/> 
    6969                                                                <int key="NSvFlags">292</int> 
    70                                                                 <string key="NSFrame">{{187, 6}, {115, 21}}</string> 
     70                                                                <string key="NSFrame">{{192, 5}, {120, 15}}</string> 
    7171                                                                <reference key="NSSuperview" ref="286161198"/> 
    7272                                                                <bool key="IBUIOpaque">NO</bool> 
     
    7575                                                                <bool key="IBUIUserInteractionEnabled">NO</bool> 
    7676                                                                <string key="IBUIText">Label</string> 
    77                                                                 <reference key="IBUIFont" ref="282619197"/> 
     77                                                                <reference key="IBUIFont" ref="946507737"/> 
    7878                                                                <object class="NSColor" key="IBUITextColor"> 
    7979                                                                        <int key="NSColorSpace">1</int> 
     
    8888                                                                <reference key="NSNextResponder" ref="286161198"/> 
    8989                                                                <int key="NSvFlags">292</int> 
    90                                                                 <string key="NSFrame">{{8, 26}, {285, 31}}</string> 
     90                                                                <string key="NSFrame">{{8, 21}, {285, 22}}</string> 
    9191                                                                <reference key="NSSuperview" ref="286161198"/> 
    9292                                                                <bool key="IBUIOpaque">NO</bool> 
     
    9797                                                                <object class="NSFont" key="IBUIFont"> 
    9898                                                                        <string key="NSName">Helvetica</string> 
    99                                                                         <double key="NSSize">1.600000e+01</double> 
     99                                                                        <double key="NSSize">1.400000e+01</double> 
    100100                                                                        <int key="NSfFlags">16</int> 
    101101                                                                </object> 
     
    109109                                                                <reference key="NSNextResponder" ref="286161198"/> 
    110110                                                                <int key="NSvFlags">-2147483356</int> 
    111                                                                 <string key="NSFrame">{{263, 31}, {20, 20}}</string> 
     111                                                                <string key="NSFrame">{{284, 21}, {20, 20}}</string> 
    112112                                                                <reference key="NSSuperview" ref="286161198"/> 
    113113                                                                <bool key="IBUIOpaque">NO</bool> 
     
    118118                                                        </object> 
    119119                                                </object> 
    120                                                 <string key="NSFrameSize">{313, 58}</string> 
     120                                                <string key="NSFrameSize">{320, 43}</string> 
    121121                                                <reference key="NSSuperview" ref="764223561"/> 
    122122                                                <object class="NSColor" key="IBUIBackgroundColor"> 
     
    130130                                        </object> 
    131131                                </object> 
    132                                 <string key="NSFrameSize">{313, 59}</string> 
     132                                <string key="NSFrameSize">{320, 44}</string> 
    133133                                <reference key="NSSuperview"/> 
    134134                                <object class="NSColor" key="IBUIBackgroundColor"> 
     
    176176                                                        <bool key="EncodedWithXMLCoder">YES</bool> 
    177177                                                        <reference ref="627271656"/> 
    178                                                         <reference ref="12770826"/> 
    179178                                                        <reference ref="1000921730"/> 
    180179                                                        <reference ref="187587257"/> 
     180                                                        <reference ref="12770826"/> 
    181181                                                </object> 
    182182                                                <reference key="parent" ref="957960031"/> 
     
    227227                                        <string>UIResponder</string> 
    228228                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 
    229                                         <string>{{44, 530}, {313, 59}}</string> 
     229                                        <string>{{360, 757}, {320, 44}}</string> 
    230230                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 
    231231                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 
     
    272272                <string key="IBDocument.LastKnownRelativeProjectPath">LocateThem.xcodeproj</string> 
    273273                <int key="IBDocument.defaultPropertyAccessControl">3</int> 
     274                <string key="IBCocoaTouchPluginVersion">3.0</string> 
    274275        </data> 
    275276</archive> 
  • apps/iphone/superbook/trunk/TxtTableViewCell.xib

    r357 r382  
    33        <data> 
    44                <int key="IBDocument.SystemTarget">528</int> 
    5                 <string key="IBDocument.SystemVersion">9G55</string> 
     5                <string key="IBDocument.SystemVersion">9J61</string> 
    66                <string key="IBDocument.InterfaceBuilderVersion">677</string> 
    7                 <string key="IBDocument.AppKitVersion">949.43</string> 
     7                <string key="IBDocument.AppKitVersion">949.46</string> 
    88                <string key="IBDocument.HIToolboxVersion">353.00</string> 
    99                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> 
     
    4545                                                                <reference key="NSNextResponder" ref="351667048"/> 
    4646                                                                <int key="NSvFlags">292</int> 
    47                                                                 <string key="NSFrame">{{9, 5}, {282, 21}}</string> 
     47                                                                <string key="NSFrame">{{9, 4}, {185, 16}}</string> 
    4848                                                                <reference key="NSSuperview" ref="351667048"/> 
    4949                                                                <bool key="IBUIOpaque">NO</bool> 
     
    5252                                                                <bool key="IBUIUserInteractionEnabled">NO</bool> 
    5353                                                                <string key="IBUIText">Keyword Type</string> 
    54                                                                 <object class="NSFont" key="IBUIFont"> 
     54                                                                <object class="NSFont" key="IBUIFont" id="759531827"> 
    5555                                                                        <string key="NSName">Helvetica-Bold</string> 
    56                                                                         <double key="NSSize">1.500000e+01</double> 
     56                                                                        <double key="NSSize">1.400000e+01</double> 
    5757                                                                        <int key="NSfFlags">16</int> 
    5858                                                                </object> 
     
    6868                                                                <reference key="NSNextResponder" ref="351667048"/> 
    6969                                                                <int key="NSvFlags">292</int> 
    70                                                                 <string key="NSFrame">{{9, 27}, {282, 25}}</string> 
     70                                                                <string key="NSFrame">{{9, 20}, {303, 16}}</string> 
    7171                                                                <reference key="NSSuperview" ref="351667048"/> 
    7272                                                                <bool key="IBUIOpaque">NO</bool> 
     
    7474                                                                <int key="IBUITag">2</int> 
    7575                                                                <bool key="IBUIUserInteractionEnabled">NO</bool> 
    76                                                                 <string key="IBUIText">Keyword text string</string> 
     76                                                                <string key="IBUIText">Keyword text string (expands dynamically)</string> 
    7777                                                                <object class="NSFont" key="IBUIFont"> 
    7878                                                                        <string key="NSName">Helvetica</string> 
    79                                                                         <double key="NSSize">1.500000e+01</double> 
     79                                                                        <double key="NSSize">1.400000e+01</double> 
    8080                                                                        <int key="NSfFlags">16</int> 
    8181                                                                </object> 
     
    8484                                                                <int key="IBUIBaselineAdjustment">1</int> 
    8585                                                                <bool key="IBUIAdjustsFontSizeToFit">NO</bool> 
    86                                                                 <float key="IBUIMinimumFontSize">1.000000e+01</float> 
    87                                                                 <int key="IBUINumberOfLines">4</int> 
     86                                                                <float key="IBUIMinimumFontSize">1.400000e+01</float> 
     87                                                                <int key="IBUINumberOfLines">0</int> 
    8888                                                                <int key="IBUILineBreakMode">0</int> 
    8989                                                        </object> 
    90                                                 </object> 
    91                                                 <string key="NSFrameSize">{322, 54}</string> 
     90                                                        <object class="IBUILabel" id="506645348"> 
     91                                                                <reference key="NSNextResponder" ref="351667048"/> 
     92                                                                <int key="NSvFlags">292</int> 
     93                                                                <string key="NSFrame">{{202, 5}, {110, 15}}</string> 
     94                                                                <reference key="NSSuperview" ref="351667048"/> 
     95                                                                <bool key="IBUIOpaque">NO</bool> 
     96                                                                <bool key="IBUIClipsSubviews">YES</bool> 
     97                                                                <int key="IBUITag">3</int> 
     98                                                                <bool key="IBUIUserInteractionEnabled">NO</bool> 
     99                                                                <string key="IBUIText">Label</string> 
     100                                                                <reference key="IBUIFont" ref="759531827"/> 
     101                                                                <object class="NSColor" key="IBUITextColor"> 
     102                                                                        <int key="NSColorSpace">1</int> 
     103                                                                        <bytes key="NSRGB">MCAwIDEAA</bytes> 
     104                                                                </object> 
     105                                                                <nil key="IBUIHighlightedColor"/> 
     106                                                                <int key="IBUIBaselineAdjustment">1</int> 
     107                                                                <float key="IBUIMinimumFontSize">1.000000e+01</float> 
     108                                                                <int key="IBUITextAlignment">2</int> 
     109                                                        </object> 
     110                                                </object> 
     111                                                <string key="NSFrameSize">{320, 44}</string> 
    92112                                                <reference key="NSSuperview" ref="877144942"/> 
    93113                                                <object class="NSColor" key="IBUIBackgroundColor"> 
     
    101121                                        </object> 
    102122                                </object> 
    103                                 <string key="NSFrameSize">{322, 54}</string> 
     123                                <string key="NSFrameSize">{320, 44}</string> 
    104124                                <reference key="NSSuperview"/> 
    105125                                <object class="NSColor" key="IBUIBackgroundColor"> 
     
    148168                                                        <bool key="EncodedWithXMLCoder">YES</bool> 
    149169                                                        <reference ref="512545261"/> 
     170                                                        <reference ref="506645348"/> 
    150171                                                        <reference ref="1047834826"/> 
    151172                                                </object> 
     
    160181                                                <int key="objectID">5</int> 
    161182                                                <reference key="object" ref="1047834826"/> 
     183                                                <reference key="parent" ref="877144942"/> 
     184                                        </object> 
     185                                        <object class="IBObjectRecord"> 
     186                                                <int key="objectID">6</int> 
     187                                                <reference key="object" ref="506645348"/> 
    162188                                                <reference key="parent" ref="877144942"/> 
    163189                                        </object> 
     
    173199                                        <string>4.IBPluginDependency</string> 
    174200                                        <string>5.IBPluginDependency</string> 
     201                                        <string>6.IBPluginDependency</string> 
    175202                                </object> 
    176203                                <object class="NSMutableArray" key="dict.values"> 
    177204                                        <bool key="EncodedWithXMLCoder">YES</bool> 
    178205                                        <string>UIResponder</string> 
    179                                         <string>{{392, 472}, {322, 54}}</string> 
     206                                        <string>{{360, 682}, {320, 44}}</string> 
     207                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 
    180208                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 
    181209                                        <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> 
     
    203231                        </object> 
    204232                        <nil key="sourceID"/> 
    205                         <int key="maxID">5</int> 
     233                        <int key="maxID">6</int> 
    206234                </object> 
    207235                <object class="IBClassDescriber" key="IBDocument.Classes"/> 
     
    209237                <string key="IBDocument.LastKnownRelativeProjectPath">LocateThem.xcodeproj</string> 
    210238                <int key="IBDocument.defaultPropertyAccessControl">3</int> 
     239                <string key="IBCocoaTouchPluginVersion">3.0</string> 
    211240        </data> 
    212241</archive> 
Telnic
Search This Site
Partners
Neustar
ICANN
Main site | WHOIS | Sell .tel | FAQ | Archived Site | About Telnic | Contact Us