|
- /*
- * 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
|