| | 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 | } |
|---|