Changeset 3650

Show
Ignore:
Timestamp:
01/28/06 19:06:33 (3 years ago)
Author:
morris
Message:

Fix bugs when requesting additional groups, and reset to account's original values when selecting no group

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredClient/trunk/WCAccountEditor.m

    r3648 r3650  
    3838- (void)_updateGroup; 
    3939 
     40- (void)_setForAccount:(WCAccount *)account; 
     41 
    4042@end 
    4143 
     
    4850                                                         connection:connection]; 
    4951 
    50         _account = [account retain]; 
    51         _groups = [[NSMutableArray alloc] init]; 
    52  
    5352        [self window]; 
    5453 
    55         [[self connection] addObserver:self 
    56                                                   selector:@selector(accountEditorReceivedUser:) 
    57                                                           name:WCAccountEditorReceivedUser]; 
    58  
    59         [[self connection] addObserver:self 
    60                                                   selector:@selector(accountEditorReceivedGroup:) 
    61                                                           name:WCAccountEditorReceivedGroup]; 
    62  
    63         if(_account) { 
    64                 if([_account type] == WCAccountUser) { 
     54        if(account) { 
     55                if([account type] == WCAccountUser) { 
    6556                        [_typePopUpButton selectItem:_userMenuItem]; 
    6657 
    67                         [[self connection] sendCommand:WCReadUserCommand withArgument:[_account name]]; 
     58                        [[self connection] addObserver:self 
     59                                                                  selector:@selector(accountEditorReceivedUser:) 
     60                                                                          name:WCAccountEditorReceivedUser]; 
     61                         
     62                        [[self connection] sendCommand:WCReadUserCommand withArgument:[account name]]; 
    6863                } else { 
    6964                        [_typePopUpButton selectItem:_groupMenuItem]; 
    7065 
    71                         [[self connection] sendCommand:WCReadGroupCommand withArgument:[_account name]]; 
     66                        [[self connection] addObserver:self 
     67                                                                  selector:@selector(accountEditorReceivedGroup:) 
     68                                                                          name:WCAccountEditorReceivedGroup]; 
     69                         
     70                        [[self connection] sendCommand:WCReadGroupCommand withArgument:[account name]]; 
    7271                } 
    7372 
     
    7776                [_typePopUpButton setEnabled:NO]; 
    7877                [_nameTextField setEnabled:NO]; 
     78                [_nameTextField setStringValue:[account name]]; 
    7979        } else { 
    8080                [_okButton setAction:@selector(create:)]; 
     
    121121        account = [[self connection] account]; 
    122122 
    123         if([_groupPopUpButton selectedItem] == _noneMenuItem || ![[_groupPopUpButton selectedItem] title]) { 
     123        if(![[_groupPopUpButton selectedItem] title]) 
    124124                [_groupPopUpButton selectItem:_noneMenuItem]; 
     125 
     126        if([_groupPopUpButton selectedItem] == _noneMenuItem) { 
     127                if(_account) 
     128                        [self _setForAccount:_account]; 
    125129 
    126130                if([account elevatePrivileges]) { 
     
    158162                [_selectAllButton setEnabled:YES]; 
    159163        } else { 
     164                [[self connection] addObserver:self 
     165                                                          selector:@selector(accountEditorReceivedGroup:) 
     166                                                                  name:WCAccountEditorReceivedGroup]; 
     167                 
    160168                [[self connection] sendCommand:WCReadGroupCommand 
    161169                                                  withArgument:[[_groupPopUpButton selectedItem] title]]; 
     
    173181} 
    174182 
     183 
     184 
     185#pragma mark - 
     186 
     187- (void)_setForAccount:(WCAccount *)account { 
     188        if([_typePopUpButton selectedItem] == _groupMenuItem) 
     189                [_nameTextField setStringValue:[account name]]; 
     190 
     191        if([account type] == WCAccountUser) { 
     192                [_passwordTextField setStringValue:[account password]]; 
     193 
     194                if([[account group] length] > 0) 
     195                        [_groupPopUpButton selectItemWithTitle:[account group]]; 
     196        } 
     197 
     198        [_getUserInfoButton setState:[account getUserInfo]]; 
     199        [_broadcastButton setState:[account broadcast]]; 
     200        [_postNewsButton setState:[account postNews]]; 
     201        [_clearNewsButton setState:[account clearNews]]; 
     202        [_setTopicButton setState:[account setTopic]]; 
     203 
     204        [_downloadButton setState:[account download]]; 
     205        [_uploadButton setState:[account upload]]; 
     206        [_uploadAnywhereButton setState:[account uploadAnywhere]]; 
     207        [_createFoldersButton setState:[account createFolders]]; 
     208        [_moveButton setState:[account alterFiles]]; 
     209        [_deleteButton setState:[account deleteFiles]]; 
     210        [_viewDropBoxButton setState:[account viewDropBoxes]]; 
     211 
     212        [_createAccountsButton setState:[account createAccounts]]; 
     213        [_editAccountsButton setState:[account editAccounts]]; 
     214        [_deleteAccountsButton setState:[account deleteAccounts]]; 
     215        [_elevatePrivilegesButton setState:[account elevatePrivileges]]; 
     216        [_kickUsersButton setState:[account kickUsers]]; 
     217        [_banUsersButton setState:[account banUsers]]; 
     218        [_cannotBeKickedButton setState:[account cannotBeKicked]]; 
     219 
     220        if([account downloadSpeedLimit] > 0) 
     221                [_downloadSpeedTextField setIntValue:(double) [account downloadSpeedLimit] / 1024.0]; 
     222        else 
     223                [_downloadSpeedTextField setStringValue:@""]; 
     224 
     225        if([account uploadSpeedLimit] > 0) 
     226                [_uploadSpeedTextField setIntValue:(double) [account uploadSpeedLimit] / 1024.0]; 
     227        else 
     228                [_uploadSpeedTextField setStringValue:@""]; 
     229} 
     230 
    175231@end 
    176232 
     
    192248- (void)dealloc { 
    193249        [_buttons release]; 
    194         [_groups release]; 
    195250        [_account release]; 
    196251 
     
    274329        account = [WCAccount userAccountWithAccountArguments: 
    275330                [[notification userInfo] objectForKey:WCArgumentsKey]]; 
    276  
    277         if(![[account name] isEqualToString:[_account name]]) 
    278                 return; 
    279  
    280         [_nameTextField setStringValue:[account name]]; 
    281         [_passwordTextField setStringValue:[account password]]; 
    282  
    283         if([[account group] length] > 0) 
    284                 [_groupPopUpButton selectItemWithTitle:[account group]]; 
    285  
    286         [_getUserInfoButton setState:[account getUserInfo]]; 
    287         [_broadcastButton setState:[account broadcast]]; 
    288         [_postNewsButton setState:[account postNews]]; 
    289         [_clearNewsButton setState:[account clearNews]]; 
    290         [_setTopicButton setState:[account setTopic]]; 
    291  
    292         [_downloadButton setState:[account download]]; 
    293         [_uploadButton setState:[account upload]]; 
    294         [_uploadAnywhereButton setState:[account uploadAnywhere]]; 
    295         [_createFoldersButton setState:[account createFolders]]; 
    296         [_moveButton setState:[account alterFiles]]; 
    297         [_deleteButton setState:[account deleteFiles]]; 
    298         [_viewDropBoxButton setState:[account viewDropBoxes]]; 
    299  
    300         [_createAccountsButton setState:[account createAccounts]]; 
    301         [_editAccountsButton setState:[account editAccounts]]; 
    302         [_deleteAccountsButton setState:[account deleteAccounts]]; 
    303         [_elevatePrivilegesButton setState:[account elevatePrivileges]]; 
    304         [_kickUsersButton setState:[account kickUsers]]; 
    305         [_banUsersButton setState:[account banUsers]]; 
    306         [_cannotBeKickedButton setState:[account cannotBeKicked]]; 
    307  
    308         if([account downloadSpeedLimit] > 0) 
    309                 [_downloadSpeedTextField setIntValue:(double) [account downloadSpeedLimit] / 1024.0]; 
    310  
    311         if([account uploadSpeedLimit] > 0) 
    312                 [_uploadSpeedTextField setIntValue:(double) [account uploadSpeedLimit] / 1024.0]; 
     331         
     332        [self _setForAccount:account]; 
    313333 
    314334        [_account release]; 
    315335        _account = [account retain]; 
    316  
    317         [self _updateGroup]; 
    318  
     336         
    319337        [[self connection] removeObserver:self name:WCAccountEditorReceivedUser]; 
    320338} 
     
    327345        account = [WCAccount groupAccountWithAccountArguments: 
    328346                [[notification userInfo] objectForKey:WCArgumentsKey]]; 
    329  
    330         if(![[account name] isEqualToString:[_account name]]) { 
    331                 if([_typePopUpButton selectedItem] != _userMenuItem) 
    332                         return; 
    333         } 
    334  
    335         if([_typePopUpButton selectedItem] == _groupMenuItem) 
    336                 [_nameTextField setStringValue:[account name]]; 
    337  
    338         [_getUserInfoButton setState:[account getUserInfo]]; 
    339         [_broadcastButton setState:[account broadcast]]; 
    340         [_postNewsButton setState:[account postNews]]; 
    341         [_clearNewsButton setState:[account clearNews]]; 
    342         [_setTopicButton setState:[account setTopic]]; 
    343  
    344         [_downloadButton setState:[account download]]; 
    345         [_uploadButton setState:[account upload]]; 
    346         [_uploadAnywhereButton setState:[account uploadAnywhere]]; 
    347         [_createFoldersButton setState:[account createFolders]]; 
    348         [_moveButton setState:[account alterFiles]]; 
    349         [_deleteButton setState:[account deleteFiles]]; 
    350         [_viewDropBoxButton setState:[account viewDropBoxes]]; 
    351  
    352         [_createAccountsButton setState:[account createAccounts]]; 
    353         [_editAccountsButton setState:[account editAccounts]]; 
    354         [_deleteAccountsButton setState:[account deleteAccounts]]; 
    355         [_elevatePrivilegesButton setState:[account elevatePrivileges]]; 
    356         [_kickUsersButton setState:[account kickUsers]]; 
    357         [_banUsersButton setState:[account banUsers]]; 
    358         [_cannotBeKickedButton setState:[account cannotBeKicked]]; 
    359  
    360         if([account downloadSpeedLimit] > 0) 
    361                 [_downloadSpeedTextField setIntValue:(double) [account downloadSpeedLimit] / 1024.0]; 
    362  
    363         if([account uploadSpeedLimit] > 0) 
    364                 [_uploadSpeedTextField setIntValue:(double) [account uploadSpeedLimit] / 1024.0]; 
     347         
     348        [self _setForAccount:account]; 
    365349 
    366350        if([_typePopUpButton selectedItem] == _groupMenuItem) {