Adium

Changeset 23915

Show
Ignore:
Timestamp:
06/11/2008 07:33:48 AM (6 months ago)
Author:
evands
Message:

Update the social networking status menu when the account changes to/from online to update connect/disconnect. Fixes #10026

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Frameworks/Adium Framework/Source/AIAccountMenu.m

    r23914 r23915  
    486486                        } 
    487487                } 
     488                 
     489                if ((submenuType == AIAccountStatusSubmenu) && [[inObject service] isSocialNetworkingService] && [inModifiedKeys containsObject:@"Online"]) { 
     490                        menuItem = [self menuItemForAccount:(AIAccount *)inObject]; 
     491                         
     492                        if (menuItem) { 
     493                                [menuItem setSubmenu:socialNetworkingSubmenuForAccount((AIAccount *)inObject)]; 
     494                        } 
     495                } 
    488496        } 
    489497 
     
    666674} 
    667675 
     676NSMenu *socialNetworkingSubmenuForAccount(AIAccount *account) 
     677{ 
     678        NSMenuItem *onlineOfflineItem; 
     679        NSMenu *accountSubmenu; 
     680        accountSubmenu = [AISocialNetworkingStatusMenu socialNetworkingSubmenuForAccount:account]; 
     681         
     682        /* Put a connect/disconnect menu item at the top, since we skip the status items 
     683         * By copying the accountMenuItem's target and action, it gains the action of toggling conncectivity, 
     684         * which is exactly what we want. 
     685         */ 
     686        onlineOfflineItem = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:([account online] ? 
     687                                                                                                                                                                         AILocalizedString(@"Disconnect", nil) : 
     688                                                                                                                                                                         AILocalizedString(@"Connect", nil)) 
     689                                                                                                                                                         target:[accountMenuItem target] 
     690                                                                                                                                                         action:[accountMenuItem action] 
     691                                                                                                                                          keyEquivalent:@"" 
     692                                                                                                                                  representedObject:account]; 
     693         
     694        [accountSubmenu insertItem:onlineOfflineItem atIndex:0]; 
     695        [accountSubmenu insertItem:[NSMenuItem separatorItem] atIndex:1]; 
     696        [onlineOfflineItem release];     
     697         
     698        return accountSubmenu; 
     699} 
     700 
    668701NSMenu *statusMenuForAccountMenuItem(NSArray *menuItemArray, NSMenuItem *accountMenuItem, BOOL addOriginalItems, id self) 
    669702{ 
     
    674707         
    675708        if ([[account service] isSocialNetworkingService]) {             
    676                 NSMenuItem *onlineOfflineItem; 
    677  
    678                 accountSubmenu = [AISocialNetworkingStatusMenu socialNetworkingSubmenuForAccount:account]; 
     709                accountSubmenu = socialNetworkingSubmenuForAccount(account); 
    679710                [accountSubmenu setMenuChangedMessagesEnabled:NO]; 
    680  
    681                 /* Put a connect/disconnect menu item at the top, since we skip the status items 
    682                  * By copying the accountMenuItem's target and action, it gains the action of toggling conncectivity, 
    683                  * which is exactly what we want. 
    684                  */ 
    685                 onlineOfflineItem = [[NSMenuItem allocWithZone:[NSMenu menuZone]] initWithTitle:([account online] ? 
    686                                                                                                                                                                                  AILocalizedString(@"Disconnect", nil) : 
    687                                                                                                                                                                                  AILocalizedString(@"Connect", nil)) 
    688                                                                                                                                                                  target:[accountMenuItem target] 
    689                                                                                                                                                                  action:[accountMenuItem action] 
    690                                                                                                                                                   keyEquivalent:@"" 
    691                                                                                                                                           representedObject:account]; 
    692                  
    693                 [accountSubmenu insertItem:onlineOfflineItem atIndex:0]; 
    694                 [accountSubmenu insertItem:[NSMenuItem separatorItem] atIndex:1]; 
    695                 [onlineOfflineItem release]; 
    696711                 
    697712        } else {