Developer Area

Changeset 623 for apps

Show
Ignore:
Timestamp:
01/11/10 10:26:27 (5 years ago)
Author:
henri
Message:

Changed groups management UI to conform to new standard

Location:
apps/iphone/my.tel/trunk/Classes
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • apps/iphone/my.tel/trunk/Classes/GroupFriendsController.m

    r593 r623  
    5656 
    5757- (void)deleteGroup { 
    58         Group *conn = [[[Group alloc] init] autorelease]; 
    59         [conn setTheDelegate:self]; 
    60         [conn setActionSel:@selector(groupDeletedWithJson:)]; 
    61         [conn setConnectionUrl:[conn urlFromAction:@"deletegroup"]]; 
    62          
    63         NSMutableDictionary *requestData = [[NSMutableDictionary dictionaryWithCapacity:2] retain]; 
    64         [requestData setObject:[self.delegate domain] forKey:@"domainName"]; 
    65         [requestData setObject:[theGroup objectForKey:@"id"] forKey:@"groupId"]; 
    66          
    67         [conn setPayload:requestData]; 
    68         NSDictionary *parsedJson = [conn performLookup:FALSE]; 
    69         [requestData release]; 
    70         if ([[parsedJson valueForKey:@"success"] integerValue] == 1) { 
    71                 [self.delegate dataDidChangeInController:self]; 
    72                 [self.navigationController popViewControllerAnimated:YES]; 
    73         } else { 
    74                 [Group throwJsonErrorAlert:parsedJson]; 
    75         } 
     58        [self.delegate objectWillGetDeletedInController:self]; 
     59        [self.navigationController popViewControllerAnimated:YES]; 
    7660} 
    7761 
  • apps/iphone/my.tel/trunk/Classes/GroupsViewController.h

    r593 r623  
    1616<UITableViewDelegate, UITableViewDataSource, UIAlertViewDelegate, TelControllerDelegate> { 
    1717        NSMutableArray *groupsArray;    // retrieved raw JSON data (also used as the datasource array) 
     18        NSUInteger currentGroupIndex;   // groupsArray index of the group being edited or viewed 
    1819        id <TelControllerDelegate> delegate; 
    1920@private 
     
    2627- (void)listGroups; 
    2728- (void)createGroup:(NSString *)aGroupName; 
    28  
     29- (void)deleteGroupAtIndex:(NSUInteger)index; 
    2930 
    3031- (IBAction)didClickAdd:(id)sender; 
  • apps/iphone/my.tel/trunk/Classes/GroupsViewController.m

    r593 r623  
    4343- (void)viewDidLoad { 
    4444    [super viewDidLoad]; 
    45         self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
    46                                                                                                                                                                                         target:self 
    47                                                                                                                                                                                         action:@selector(didClickAdd:)] 
    48                                                                                           autorelease]; 
     45        self.navigationItem.rightBarButtonItem = [self editButtonItem]; 
     46        // disable editing until we've loaded the data 
     47        self.navigationItem.rightBarButtonItem.enabled = NO; 
    4948        self.title = @"Privacy Groups"; 
    5049} 
     
    8887- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
    8988                   editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
     89        NSDictionary *sGroup = [groupsArray objectAtIndex:indexPath.row]; 
     90        if ([[sGroup valueForKey:@"allFriends"] integerValue] == 1) { 
     91                return UITableViewCellEditingStyleNone; 
     92        } 
    9093        return UITableViewCellEditingStyleDelete; 
    9194} 
    9295 
    9396- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    94         // Don't allow deleting here, do it in the navigation pane of the individual group 
    95         return FALSE; 
     97        // Disable swipe-to-delete: don't allow row edit if table not in edit mode 
     98        return (tableView.editing); 
     99} 
     100 
     101- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
     102forRowAtIndexPath:(NSIndexPath *)indexPath { 
     103        if (editingStyle == UITableViewCellEditingStyleDelete) { 
     104                [self deleteGroupAtIndex:indexPath.row]; 
     105        }                
    96106} 
    97107 
     
    119129                cell.textLabel.text = [sGroup valueForKey:@"name"]; 
    120130        } 
     131        [cell.textLabel setNeedsDisplay]; 
    121132    return cell; 
    122133} 
    123134 
    124135- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
     136        [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
     137        currentGroupIndex = indexPath.row; 
    125138        GroupFriendsController *newController = [GroupFriendsController  
    126139                                                                                         controllerForGroup:[groupsArray objectAtIndex:indexPath.row] delegate:self]; 
    127         [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    128140        [[self navigationController] pushViewController:newController animated:YES]; 
    129141} 
     142 
     143- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
     144        [super setEditing:editing animated:animated]; 
     145        if (editing) { 
     146                self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
     147                                                                                                                                                                                           target:self 
     148                                                                                                                                                                                           action:@selector(didClickAdd:)] autorelease]; 
     149        } else { 
     150                self.navigationItem.leftBarButtonItem = nil; 
     151        } 
     152} 
     153 
    130154 
    131155#pragma mark ------ UI Methods and JSON delegates 
     
    141165        alert.uiStringField.text = @""; 
    142166        [alert show]; 
     167} 
     168 
     169- (void)deleteGroupAtIndex:(NSUInteger)index { 
     170        NSDictionary *aGroup = [groupsArray objectAtIndex:index];  
     171        if (!aGroup) { 
     172                return; 
     173        } 
     174        [aGroup retain]; 
     175        Group *conn = [[[Group alloc] init] autorelease]; 
     176        [conn setTheDelegate:self]; 
     177        [conn setActionSel:@selector(groupDeletedWithJson:)]; 
     178        [conn setConnectionUrl:[conn urlFromAction:@"deletegroup"]]; 
     179         
     180        NSMutableDictionary *requestData = [[NSMutableDictionary dictionaryWithCapacity:2] retain]; 
     181        [requestData setObject:[self.delegate domain] forKey:@"domainName"]; 
     182        [requestData setObject:[aGroup objectForKey:@"id"] forKey:@"groupId"]; 
     183         
     184        [conn setPayload:requestData]; 
     185        NSDictionary *parsedJson = [conn performLookup:FALSE]; 
     186        [requestData release]; 
     187        if ([[parsedJson valueForKey:@"success"] integerValue] == 0) { 
     188                [Group throwJsonErrorAlert:parsedJson]; 
     189        } else { 
     190                [self.groupsArray removeObjectAtIndex:index]; 
     191                NSIndexPath *deleteIndexPath = [NSIndexPath indexPathForRow:index inSection:0]; 
     192        [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:deleteIndexPath] withRowAnimation:UITableViewRowAnimationFade]; 
     193        } 
    143194} 
    144195 
     
    169220                [self.delegate dataDidChangeInController:self]; 
    170221                [self.tableView reloadData]; 
     222                self.navigationItem.rightBarButtonItem.enabled = YES; 
    171223        } else { 
    172224                [self.tableView reloadData]; 
     
    186238        // request the domain from the calling controller 
    187239        return [self.delegate domain]; 
     240} 
     241 
     242- (void)objectWillGetDeletedInController:(UIViewController *)controller { 
     243        if ([controller isMemberOfClass:[GroupFriendsController class]]) { 
     244                [self deleteGroupAtIndex:currentGroupIndex]; 
     245        } 
    188246} 
    189247 
Telnic
Search This Site
Partners
Neustar
ICANN
Main site | WHOIS | Sell .tel | FAQ | Archived Site | About Telnic | Contact Us