Changeset 3738

Show
Ignore:
Timestamp:
09/19/07 16:18:06 (1 year ago)
Author:
akempgen
Message:

Avatar Support plugin: Some missing local changes, including context menu ui. #351

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Plug-Ins/Avatar Support/AKAvatarSupport.h

    r3611 r3738  
    1414 
    1515 
    16 @interface AKAvatarSupport : NSObject <MVChatPlugin> { 
    17  
     16@interface AKAvatarSupport : NSObject <MVChatPlugin> 
     17
     18        //NSMutableSet *_throttledRequests; 
    1819} 
     20- (IBAction) requestAvatarMenuItemAction:(id) sender; 
     21- (IBAction) offerAvatarMenuItemAction:(id) sender; 
    1922 
    2023- (void) requestAvatarFromUser:(MVChatUser *)chatUser; 
  • trunk/Plug-Ins/Avatar Support/AKAvatarSupport.m

    r3611 r3738  
    1212//MVChatPlugin and MVChatPluginReloadSupport 
    1313#import "MVChatPluginManager.h" 
     14//MVChatPluginContextualMenuSupport 
     15#import "MVApplicationController.h" 
    1416//MVChatPluginDirectChatSupport 
    1517@class JVDirectChatPanel; 
     
    1719#import "MVChatConnection.h" 
    1820 
    19 //For Growl output 
     21//For Bubbles/Growl output 
    2022#import "/Users/Alex/dev/svn/colloquy/Controllers/JVNotificationController.h" 
    2123 
     
    2426#import "MVChatUser.h" 
    2527#import "JVChatRoomMember.h" 
     28#import "MVChatRoom.h" 
    2629 
    2730//the chat view controller protocol 
     
    4245{ 
    4346        self = [super init]; 
     47        //_throttledRequests = (NSMutableSet *)[NSMutableSet set]; 
     48        //NSLog([_throttledRequests className]); 
    4449        //NSLog(@"Avatar Support: ** Plugin loaded"); 
    4550        return self; 
     
    6166                NSLog(@"Avatar Support: ** Cache directory created at %@.", cacheDir); 
    6267        } 
     68        //NSLog([_throttledRequests className]); 
    6369} 
    6470 
     
    6672{ 
    6773         
     74} 
     75 
     76#pragma mark - 
     77#pragma mark  MVChatPluginContextualMenuSupport 
     78 
     79- (NSArray *) contextualMenuItemsForObject:(id)object inView:(id <JVChatViewController>)view 
     80{ 
     81        NSMutableArray *avatarContextMenuItems = [NSMutableArray array]; 
     82        //if ([object isKindOfClass:NSClassFromString(@"JVChatRoomMember")]/* && ! [object isLocalUser]*/) 
     83        //{ 
     84                NSMenuItem *requestAvatarMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Request Avatar" action:@selector(requestAvatarMenuItemAction:) keyEquivalent:@""] autorelease]; 
     85                [requestAvatarMenuItem setTarget:self]; 
     86                [requestAvatarMenuItem setRepresentedObject:object]; 
     87                [avatarContextMenuItems addObject: requestAvatarMenuItem]; 
     88                NSMenuItem *offerAvatarMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Offer Avatar" action:@selector(offerAvatarMenuItemAction:) keyEquivalent:@""] autorelease]; 
     89                [offerAvatarMenuItem setTarget:self]; 
     90                [offerAvatarMenuItem setRepresentedObject:object]; 
     91                [avatarContextMenuItems addObject: offerAvatarMenuItem]; 
     92                [avatarContextMenuItems addObject: [NSMenuItem separatorItem]]; 
     93        //} 
     94        return avatarContextMenuItems; 
     95} 
     96 
     97- (IBAction) requestAvatarMenuItemAction:(id) sender 
     98{ 
     99//      if ( ! [object isLocalUser]) 
     100                if ( [[sender representedObject] isKindOfClass:NSClassFromString(@"JVChatRoomMember")] ) 
     101                { 
     102                        [self requestAvatarFromUser: [(JVChatRoomMember *)[sender representedObject] user]]; 
     103                } 
     104                else if ( [[sender representedObject] isKindOfClass:NSClassFromString(@"MVChatUser")] ) 
     105                { 
     106                        [self requestAvatarFromUser: (MVChatUser *)[sender representedObject]]; 
     107                } 
     108                else if ( [[sender representedObject] isMemberOfClass:NSClassFromString(@"JVDirectChatPanel")] ) 
     109                { 
     110                        [self requestAvatarFromUser: (MVChatUser *)[[sender representedObject] user]]; 
     111                } 
     112                else if ( [[sender representedObject] isMemberOfClass:NSClassFromString(@"JVChatRoomPanel")] ) 
     113                { 
     114                        //NSLog([_throttledRequests className]); 
     115                        //[_throttledRequests unionSet:[(MVChatRoom *)[[sender representedObject] target] memberUsers]]; 
     116                        //NSTimer *timer =  
     117                        //[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(requestAvatarThrottled:) userInfo:nil repeats:YES]; 
     118                         
     119                        /*NSEnumerator *enumerator = [[(MVChatRoom *)[[sender representedObject] target] memberUsers] objectEnumerator]; 
     120                        MVChatUser *chatUser = nil; 
     121 
     122                        while( ( chatUser = [enumerator nextObject] ) ) { 
     123                                [self requestAvatarFromUser:chatUser]; 
     124                        }*/ 
     125                } 
     126                else 
     127                { 
     128                        NSLog([[[[sender representedObject] target] class ]description]); 
     129                } 
     130//      } 
     131//      else 
     132//      { localuser actions } 
     133} 
     134 
     135/*- (void) requestAvatarThrottled:(NSTimer *)timer 
     136{ 
     137        MVChatUser *chatUser = (MVChatUser *)[_throttledRequests anyObject]; 
     138        [self requestAvatarFromUser:chatUser]; 
     139        [_throttledRequests removeObject:chatUser]; 
     140        if ([_throttledRequests count] == 0) 
     141        { 
     142                [timer invalidate]; 
     143        } 
     144}*/ 
     145 
     146- (IBAction) offerAvatarMenuItemAction:(id) sender 
     147{ 
     148        if ([[sender representedObject] isKindOfClass:NSClassFromString(@"JVChatRoomMember")]/* && ! [object isLocalUser]*/) 
     149        { 
     150                [self offerAvatarToUser: [(JVChatRoomMember *)[sender representedObject] user]]; 
     151        } 
     152        else if ([[sender representedObject] isKindOfClass:NSClassFromString(@"MVChatUser")]/* && ! [object isLocalUser]*/) 
     153        { 
     154                [self offerAvatarToUser: (MVChatUser *)[sender representedObject]]; 
     155        } 
    68156} 
    69157 
     
    163251                                return YES; 
    164252                        } 
    165 //                    else 
    166 //                    { 
     253                      else 
     254                      { 
    167255//                              if (filesizeisokay) 
    168256//                              { 
     
    175263                                        //return YES; 
    176264//                              } 
    177 //                    } 
     265                      } 
    178266//              } 
    179267        } 
     
    189277        //TODO: remove NSLog 
    190278        NSLog(@"Avatar Support: <- request from %@.", [chatUser nickname]); 
    191         [chatUser sendSubcodeRequest:AKAvatarSupportCTCPCommand withArguments:@"?"]; 
     279        [chatUser sendSubcodeRequest:AKAvatarSupportCTCPCommand withArguments:nil]; 
    192280} 
    193281 
     
    238326file transfer support (send/receive) 
    239327local user defineable avatar 
     328ui for choosing local users avatar 
    240329custom avatars for users 
    241330actual file management (with file extensions -> nsdictionary, lazy nsimages) 
     331bundle "default local user avatar" 
     332bundle some default icons (nickserv/chanserv, q/l, jibot, lisppaste, regulars?) 
     333use custom bundle icon 
    242334... 
    243335(fix colloquys buddies/ bubbles style)