Add -[AIService pathForDefaultServiceIconOfType:], and use it for replacing %serviceIconImg% in headers. Fixes #12697.
2 // PurpleMySpaceService.m
5 // Created by Evan Schoenberg on 9/11/07.
8 #import "PurpleMySpaceService.h"
9 #import "PurpleMySpaceAccount.h"
10 #import "PurpleMySpaceAccountViewController.h"
11 #import <Adium/AIStatusControllerProtocol.h>
12 #import <AIUtilities/AIImageAdditions.h>
14 @implementation PurpleMySpaceService
17 - (Class)accountClass{
18 return [PurpleMySpaceAccount class];
21 - (AIAccountViewController *)accountViewController{
22 return [PurpleMySpaceAccountViewController accountViewController];
25 - (DCJoinChatViewController *)joinChatView{
30 - (NSString *)serviceCodeUniqueID{
31 return @"libpurple-MySpace";
33 - (NSString *)serviceID{
36 - (NSString *)serviceClass{
39 - (NSString *)shortDescription{
42 - (NSString *)longDescription{
45 - (NSCharacterSet *)allowedCharacters{
46 return [NSCharacterSet characterSetWithCharactersInString:@"+abcdefghijklmnopqrstuvwxyz0123456789@._-"];
48 - (NSUInteger)allowedLength{
51 - (BOOL)caseSensitive{
54 - (AIServiceImportance)serviceImportance{
55 return AIServiceSecondary;
57 - (NSString *)userNameLabel{
58 return AILocalizedString(@"Email", "Used as a label for a username specified by email address");
60 - (NSString *)contactUserNameLabel{
61 return AILocalizedString(@"MySpace ID", "Label for the username for a MySpace contact");
63 - (void)registerStatuses{
64 [adium.statusController registerStatus:STATUS_NAME_AVAILABLE
65 withDescription:[adium.statusController localizedDescriptionForCoreStatusName:STATUS_NAME_AVAILABLE]
66 ofType:AIAvailableStatusType
69 [adium.statusController registerStatus:STATUS_NAME_AWAY
70 withDescription:[adium.statusController localizedDescriptionForCoreStatusName:STATUS_NAME_AWAY]
71 ofType:AIAwayStatusType
74 [adium.statusController registerStatus:STATUS_NAME_INVISIBLE
75 withDescription:[adium.statusController localizedDescriptionForCoreStatusName:STATUS_NAME_INVISIBLE]
76 ofType:AIInvisibleStatusType
83 * Service Icon packs should always include images for all the built-in Adium services. This method allows external
84 * service plugins to specify an image which will be used when the service icon pack does not specify one. It will
85 * also be useful if new services are added to Adium itself after a significant number of Service Icon packs exist
86 * which do not yet have an image for this service. If the active Service Icon pack provides an image for this service,
87 * this method will not be called.
89 * The service should _not_ cache this icon internally; multiple calls should return unique NSImage objects.
91 * @param iconType The AIServiceIconType of the icon to return. This specifies the desired size of the icon.
92 * @return NSImage to use for this service by default
94 - (NSImage *)defaultServiceIconOfType:(AIServiceIconType)iconType
96 //If we're going to do it this way, we've got to return the small icon for both AIServiceIconSmall and the AIServiceIconList icons.
97 return [NSImage imageNamed:((iconType == AIServiceIconSmall || iconType == AIServiceIconList) ? @"MySpace-small" : @"MySpace-large")
98 forClass:[self class] loadLazily:YES];
102 * @brief Path for default icon
104 * For use in message views, this is the path to a default icon as described above.
106 * @param iconType The AIServiceIconType of the icon to return.
107 * @return The path to the image, otherwise nil.
109 - (NSString *)pathForDefaultServiceIconOfType:(AIServiceIconType)iconType
111 if ((iconType == AIServiceIconSmall) || (iconType == AIServiceIconList)) {
112 return [[NSBundle bundleForClass:[self class]] pathForImageResource:@"MySpace-small"];
114 return [[NSBundle bundleForClass:[self class]] pathForImageResource:@"MySpace-large"];