adium: condense code
[siplcs.git] / src / adium / ESSIPEService.m
blob9f83e94d340f2b140cea3b0ac263d8ae934467b5
1 //
2 //  ESSIPEService.m
3 //  SIPEAdiumPlugin
4 //
5 //  Created by Matt Meissner on 10/30/09.
6 //  Modified by Michael Lamb on 2/27/13
7 //  Copyright 2013 Michael Lamb/Harris Kauffman. All rights reserved.
8 //
10 #import <AIUtilities/AICharacterSetAdditions.h>
11 #import <AIUtilities/AIImageAdditions.h>
12 #import <Adium/AIStatusControllerProtocol.h>
13 #import <AISharedAdium.h>
15 #import "DCPurpleSIPEJoinChatViewController.h"
16 #import "ESSIPEAccountViewController.h"
17 #import "ESPurpleSIPEAccount.h"
18 #import "ESSIPEService.h"
20 @implementation ESSIPEService
22 #pragma mark Account/Chat Creation
23 - (Class)accountClass
25         return [ESPurpleSIPEAccount class];
28 - (AIAccountViewController *)accountViewController{
29     return [ESSIPEAccountViewController accountViewController];
32 - (DCJoinChatViewController *)joinChatView{
33         return [DCPurpleSIPEJoinChatViewController joinChatView];
36 - (BOOL)canCreateGroupChats{
37         return YES;
40 #pragma mark Service Description Metadata
41 - (NSString *)serviceCodeUniqueID{
42     return @"libpurple-SIPE";
45 - (NSString *)serviceID{
46     return @"SIPE";
49 - (NSString *)serviceClass{
50         return @"SIPE";
53 - (NSString *)shortDescription{
54     return @"OCS";
57 - (NSString *)longDescription{
58     return @"Office Communicator";
61 - (BOOL)caseSensitive{
62         return NO;
64 - (AIServiceImportance)serviceImportance{
65         return AIServiceSecondary;
68 // Some auth schemes may not need a password
69 - (BOOL)requiresPassword{
70         return NO;
73 - (NSImage *)defaultServiceIconOfType:(AIServiceIconType)iconType {
74         NSImage *baseImage = [NSImage imageNamed:@"sipe" forClass:[self class]];
75     
76         if ((iconType == AIServiceIconSmall) || (iconType == AIServiceIconList)) { 
77         [baseImage setSize:NSMakeSize(16, 16)];
78         }
79     
80         return baseImage;
84 #pragma mark Service Properties
85 - (NSCharacterSet *)allowedCharacters
87         NSMutableCharacterSet *allowedCharacters = [[NSCharacterSet alphanumericCharacterSet] mutableCopy];
88         NSCharacterSet *returnSet;
89         
90         [allowedCharacters addCharactersInString:@"._@-()[]^%#|/\\`=,"];
91         returnSet = [allowedCharacters immutableCopy];
92         
93         return [returnSet autorelease];
96 #pragma mark Statuses
97 - (void)registerStatuses{
98     NSDictionary *statuses =
99     [NSDictionary dictionaryWithObjectsAndKeys:
100      AIAvailableStatusType, STATUS_NAME_AVAILABLE,
101      AIAwayStatusType,      STATUS_NAME_AWAY,
102      AIAwayStatusType,      STATUS_NAME_BUSY,
103      AIInvisibleStatusType, STATUS_NAME_INVISIBLE,
104      AIAwayStatusType,      STATUS_NAME_BRB,
105      AIAwayStatusType,      STATUS_NAME_DND,
106      AIAwayStatusType,      STATUS_NAME_LUNCH,
107      AIOfflineStatusType,   STATUS_NAME_OFFLINE,
108      AIAwayStatusType,      STATUS_NAME_PHONE,
109      AIAwayStatusType,      STATUS_NAME_NOT_AT_DESK,
110      AIAwayStatusType,      STATUS_NAME_NOT_IN_OFFICE,
111      AIAwayStatusType,      STATUS_NAME_AWAY_FRIENDS_ONLY,
112      nil
113      ];
114     
115     for (NSString* key in statuses) {
116         AIStatusType value = [statuses objectForKey:key];
117         
118         [adium.statusController
119          registerStatus:key
120          withDescription:[adium.statusController localizedDescriptionForCoreStatusName:key]
121          ofType:value
122          forService:self
123          ];
124     }
128 @end