1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
/*
* Copyright (C) 2009 Nathan Ollerenshaw chrome@stupendous.net
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*/
#import "IRCClientChannel.h"
#import "IRCClientSession.h"
#import "NSObject+DDExtensions.h"
@implementation IRCClientChannel
@synthesize delegate;
@synthesize name;
@synthesize encoding;
@synthesize session;
@synthesize topic;
@synthesize modes;
@synthesize names;
-(id)init
{
return [self initWithName:nil];
}
-(id)initWithName:(NSString *)aName
{
if ((self = [super init])) {
[self setName:aName];
topic = [[NSString alloc] init];
encoding = NSASCIIStringEncoding;
}
return self;
}
-(void)dealloc
{
[super dealloc];
}
- (int)part
{
return irc_cmd_part([session session], [name cStringUsingEncoding:NSASCIIStringEncoding]);
}
- (int)invite:(NSString *)nick
{
return irc_cmd_invite([session session], [nick cStringUsingEncoding:NSASCIIStringEncoding], [name cStringUsingEncoding:NSASCIIStringEncoding]);
}
- (int)refreshNames
{
return irc_cmd_names([session session], [name cStringUsingEncoding:NSASCIIStringEncoding]);
}
- (void)setTopic:(NSString *)aTopic
{
irc_cmd_topic([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [topic cStringUsingEncoding:encoding]);
}
- (int)setMode:(NSString *)mode params:(NSString *)params
{
return irc_cmd_channel_mode([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [mode cStringUsingEncoding:NSASCIIStringEncoding]);
}
- (int)message:(NSString *)message
{
return irc_cmd_msg([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [message cStringUsingEncoding:encoding]);
}
- (int)action:(NSString *)action
{
return irc_cmd_me([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [action cStringUsingEncoding:encoding]);
}
- (int)notice:(NSString *)notice
{
return irc_cmd_notice([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [notice cStringUsingEncoding:encoding]);
}
- (int)kick:(NSString *)nick reason:(NSString *)reason
{
return irc_cmd_kick([session session], [nick cStringUsingEncoding:NSASCIIStringEncoding], [name cStringUsingEncoding:NSASCIIStringEncoding], [reason cStringUsingEncoding:encoding]);
}
- (int)ctcpRequest:(NSString *)request
{
return irc_cmd_ctcp_request([session session], [name cStringUsingEncoding:NSASCIIStringEncoding], [request cStringUsingEncoding:encoding]);
}
// event handlers
//
// These farm events out to the delegate on the main thread.
- (void)onJoin:(NSString *)nick
{
if ([delegate respondsToSelector:@selector(onJoin:)])
[[delegate dd_invokeOnMainThread] onJoin:nick];
}
- (void)onPart:(NSString *)nick reason:(NSString *)reason
{
if ([delegate respondsToSelector:@selector(onPart:reason:)])
[[delegate dd_invokeOnMainThread] onPart:nick reason:reason];
}
- (void)onMode:(NSString *)mode params:(NSString *)params nick:(NSString *)nick
{
if ([delegate respondsToSelector:@selector(onMode:params:nick:)])
[[delegate dd_invokeOnMainThread] onMode:mode params:params nick:nick];
}
- (void)onTopic:(NSString *)aTopic nick:(NSString *)nick
{
[topic release];
topic = [NSString stringWithString:aTopic];
if ([delegate respondsToSelector:@selector(onTopic:nick:)])
[[delegate dd_invokeOnMainThread] onTopic:aTopic nick:nick];
}
- (void)onKick:(NSString *)nick reason:(NSString *)reason byNick:(NSString *)byNick
{
if ([delegate respondsToSelector:@selector(onKick:reason:byNick:)])
[[delegate dd_invokeOnMainThread] onKick:nick reason:reason byNick:byNick];
}
- (void)onPrivmsg:(NSString *)message nick:(NSString *)nick
{
if ([delegate respondsToSelector:@selector(onPrivmsg:nick:)])
[[delegate dd_invokeOnMainThread] onPrivmsg:message nick:nick];
}
- (void)onNotice:(NSString *)notice nick:(NSString *)nick
{
if ([delegate respondsToSelector:@selector(onNotice:nick:)])
[[delegate dd_invokeOnMainThread] onNotice:notice nick:nick];
}
- (void)onAction:(NSString *)action nick:(NSString *)nick
{
if ([delegate respondsToSelector:@selector(onAction:nick:)])
[[delegate dd_invokeOnMainThread] onAction:action nick:nick];
}
@end
|