Plugins/Purple Service/ESIRCService.m
author Zachary West <zacw@adium.im>
Sat Oct 17 17:35:57 2009 -0400 (2009-10-17)
changeset 2632 4e544bf1b994
parent 1408 0cbddb6a4b8d
child 2714 253da42ff00e
permissions -rw-r--r--
Add -[AIService pathForDefaultServiceIconOfType:], and use it for replacing %serviceIconImg% in headers. Fixes #12697.
Evan@227
     1
//
Evan@227
     2
//  ESIRCService.m
Evan@227
     3
//  Adium
Evan@227
     4
//
Evan@227
     5
//  Created by Evan Schoenberg on 3/4/06.
Evan@227
     6
//
Evan@227
     7
Evan@227
     8
#import "ESIRCService.h"
Evan@227
     9
#import "ESIRCAccount.h"
Evan@227
    10
#import "ESIRCAccountViewController.h"
Evan@227
    11
#import "ESIRCJoinChatViewController.h"
Evan@227
    12
#import <AIUtilities/AIImageAdditions.h>
Evan@227
    13
#import <AIUtilities/AIImageDrawingAdditions.h>
Evan@235
    14
#import <AIUtilities/AICharacterSetAdditions.h>
Evan@227
    15
Evan@227
    16
@implementation ESIRCService
Evan@227
    17
//Account Creation
Evan@227
    18
- (Class)accountClass{
Evan@227
    19
	return [ESIRCAccount class];
Evan@227
    20
}
Evan@227
    21
Evan@227
    22
- (AIAccountViewController *)accountViewController{
Evan@227
    23
    return [ESIRCAccountViewController accountViewController];
Evan@227
    24
}
Evan@227
    25
Evan@227
    26
- (DCJoinChatViewController *)joinChatView{
Evan@227
    27
	return [ESIRCJoinChatViewController joinChatView];
Evan@227
    28
}
Evan@227
    29
Evan@227
    30
//Service Description
Evan@227
    31
- (NSString *)serviceCodeUniqueID{
Evan@227
    32
	return @"libpurple-IRC";
Evan@227
    33
}
Evan@227
    34
- (NSString *)serviceID{
Evan@227
    35
	return @"IRC";
Evan@227
    36
}
Evan@227
    37
- (NSString *)serviceClass{
Evan@227
    38
	return @"IRC";
Evan@227
    39
}
Evan@227
    40
- (NSString *)shortDescription{
Evan@227
    41
	return @"IRC";
Evan@227
    42
}
Evan@227
    43
- (NSString *)longDescription{
Evan@235
    44
	return AILocalizedString(@"IRC (Internet Relay Chat)", nil);
Evan@227
    45
}
Evan@227
    46
- (NSCharacterSet *)allowedCharacters{
Evan@235
    47
	//Per RFC-2812: http://www.ietf.org/rfc/rfc2812.txt
Evan@235
    48
	NSMutableCharacterSet	*allowedCharacters = [[NSCharacterSet alphanumericCharacterSet] mutableCopy];
Evan@235
    49
	NSCharacterSet			*returnSet;
Evan@235
    50
	
zacw@1408
    51
	[allowedCharacters addCharactersInString:@"[]\\`_^{|}-"];
Evan@235
    52
	returnSet = [allowedCharacters immutableCopy];
Evan@235
    53
	[allowedCharacters release];
Evan@235
    54
Evan@235
    55
	return [returnSet autorelease];
Evan@227
    56
}
Evan@227
    57
- (BOOL)caseSensitive{
Evan@227
    58
	return NO;
Evan@227
    59
}
Evan@227
    60
- (BOOL)canCreateGroupChats{
Evan@227
    61
	return YES;
Evan@227
    62
}
Evan@227
    63
- (BOOL)supportsPassword{
Evan@227
    64
	return YES;
Evan@227
    65
}
Evan@227
    66
//Passwords are supported but optional
Evan@227
    67
- (BOOL)requiresPassword
Evan@227
    68
{
Evan@227
    69
	return NO;
Evan@227
    70
}
Evan@227
    71
- (AIServiceImportance)serviceImportance{
Evan@227
    72
	return AIServiceSecondary;
Evan@227
    73
}
Evan@227
    74
/*!
zacw@1385
    75
 * @brief Placeholder string for the UID field
Evan@227
    76
 */
Evan@227
    77
- (NSString *)UIDPlaceholder
Evan@227
    78
{
zacw@1385
    79
	return AILocalizedString(@"nickname","Sample name and server for new IRC accounts");
zacw@1385
    80
}
zacw@1385
    81
/*!
zacw@1385
    82
 * @brief Username label
zacw@1385
    83
 */
zacw@1385
    84
- (NSString *)userNameLabel
zacw@1385
    85
{
zacw@1385
    86
	return AILocalizedString(@"Nickname", "Name for IRC user names");
Evan@227
    87
}
Evan@227
    88
Evan@227
    89
/*!
Evan@227
    90
* @brief Default icon
Evan@227
    91
 *
Evan@227
    92
 * Service Icon packs should always include images for all the built-in Adium services.  This method allows external
Evan@227
    93
 * service plugins to specify an image which will be used when the service icon pack does not specify one.  It will
Evan@227
    94
 * also be useful if new services are added to Adium itself after a significant number of Service Icon packs exist
Evan@227
    95
 * which do not yet have an image for this service.  If the active Service Icon pack provides an image for this service,
Evan@227
    96
 * this method will not be called.
Evan@227
    97
 *
Evan@227
    98
 * The service should _not_ cache this icon internally; multiple calls should return unique NSImage objects.
Evan@227
    99
 *
Evan@227
   100
 * @param iconType The AIServiceIconType of the icon to return. This specifies the desired size of the icon.
Evan@227
   101
 * @return NSImage to use for this service by default
Evan@227
   102
 */
Evan@227
   103
- (NSImage *)defaultServiceIconOfType:(AIServiceIconType)iconType
Evan@227
   104
{
Evan@227
   105
	NSImage *baseImage = [NSImage imageNamed:@"irc" forClass:[self class] loadLazily:YES];
Evan@227
   106
Colin@249
   107
	if (iconType == AIServiceIconSmall || iconType == AIServiceIconList) {
Evan@227
   108
		baseImage = [baseImage imageByScalingToSize:NSMakeSize(16, 16)];
Colin@249
   109
    }
Evan@227
   110
Evan@227
   111
	return baseImage;
Evan@227
   112
}
Evan@227
   113
zacw@2632
   114
/*!
zacw@2632
   115
 * @brief Path for default icon
zacw@2632
   116
 *
zacw@2632
   117
 * For use in message views, this is the path to a default icon as described above.
zacw@2632
   118
 *
zacw@2632
   119
 * @param iconType The AIServiceIconType of the icon to return.
zacw@2632
   120
 * @return The path to the image, otherwise nil.
zacw@2632
   121
 */
zacw@2632
   122
- (NSString *)pathForDefaultServiceIconOfType:(AIServiceIconType)iconType
zacw@2632
   123
{
zacw@2632
   124
	if ((iconType == AIServiceIconSmall) || (iconType == AIServiceIconList)) {
zacw@2632
   125
		return nil; //xxx add small IRC icon
zacw@2632
   126
	} else {
zacw@2632
   127
		return [[NSBundle bundleForClass:[self class]] pathForImageResource:@"irc"];		
zacw@2632
   128
	}
zacw@2632
   129
}
zacw@2632
   130
Evan@227
   131
@end