Adium Plugin assistance

David Smith catfish.man at gmail.com
Sat Sep 8 18:12:50 UTC 2012


Copy-pasting Adium code into an ARC project is not generally going to work...



On Sep 8, 2012, at 10:54 AM, "Evan D. Schoenberg, M.D." <evan at adium.im> wrote:

> Bob,
> 
> Everything looks right from here to me (except, of course, the problem itself).  Could you please post your project folder so far (to me privately off-list if you would prefer not to share it publicly)?  There must be something subtly wrong - I'd like to figure out what it is directly and update the docs to account for it.  Most of our docs were written before Xcode 4 and there may be some necessary change.
> 
> -Evan
> On Friday, September 7, 2012 at 11:52 PM, Bob Tanner wrote:
> 
>> Followed http://trac.adium.im/wiki/CreatingPlugins to get a bare bones plugin compiled.
>> 
>> 
>> 
>> Looking at "Plugins (Built In)/Services" for what to do next I created a obj-c class (posted at the end) but Xcode is giving me warnings and errors.
>> 
>> 
>> 
>> NetrekAdiumPlugin/NetrekAdiumPlugin/AINetrekService.m:47:30: Implicit declaration of function 'AILocalizedString' is invalid in C99
>> 
>> NetrekAdiumPlugin/NetrekAdiumPlugin/AINetrekService.m:47:30: Implicit conversion of 'int' to 'NSString *' is disallowed with ARC /
>> 
>> NetrekAdiumPlugin/NetrekAdiumPlugin/AINetrekService.m:47:30: Incompatible integer to pointer conversion sending 'int' to parameter of type 'NSString *'; 
>> 
>> NetrekAdiumPlugin/NetrekAdiumPlugin/AINetrekService.m:51:12: Implicit conversion of 'int' to 'NSString *' is disallowed with ARC
>> 
>> 
>> 
>> I found AILocalizedString is a macro defoined in "AIUtilities/AIStringUtilities.h: but #import that file does not make the implicit declarations go away.
>> 
>> 
>> 
>> Since I cut-n-pasted the code from the Bonjour plugin I'm not sure what I did wrong.  New to obj-c, very new to Xcode, but have done a significant about of development in C, C++, and Python.
>> 
>> 
>> 
>> Any help would be appreciated. Thanks.
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> //
>> 
>> //  AINetrekService.h
>> 
>> //  
>> 
>> #import <Adium/AIService.h>
>> 
>> 
>> 
>> @interface AINetrekService : AIService {
>> 
>>     
>> 
>> }
>> 
>> 
>> 
>> @end
>> 
>> 
>> 
>> //
>> 
>> //  AINetrekService.m
>> 
>> //  
>> 
>> #import "AINetrekService.h"
>> 
>> #import <Adium/AIStatusControllerProtocol.h>
>> 
>> #import "AINetrekAccount.h"
>> 
>> #import "AINetrekAccountViewController.h"
>> 
>> 
>> 
>> @implementation AINetrekService
>> 
>> 
>> 
>> //Account Creation
>> 
>> - (Class)accountClass{
>> 
>> return [AINetrekAccount class];
>> 
>> }
>> 
>> 
>> 
>> - (AIAccountViewController *)accountViewController{
>> 
>>     return [AINetrekAccountViewController accountViewController];
>> 
>> }
>> 
>> 
>> 
>> - (DCJoinChatViewController *)joinChatView{
>> 
>> return nil;
>> 
>> }
>> 
>> 
>> 
>> //Service Description
>> 
>> - (NSString *)serviceCodeUniqueID{
>> 
>> return @"Netrek";
>> 
>> }
>> 
>> - (NSString *)serviceID{
>> 
>> return @"Netrek";
>> 
>> }
>> 
>> - (NSString *)serviceClass{
>> 
>> return @"Netrek";
>> 
>> }
>> 
>> - (NSString *)shortDescription{
>> 
>> return @"Netrek";
>> 
>> }
>> 
>> - (NSString *)longDescription{
>> 
>> return @"Netrek";
>> 
>> }
>> 
>> - (NSURL *)serviceAccountSetupURL
>> 
>> {
>> 
>> return [NSURL URLWithString:AILocalizedString(@"http://en.wikipedia.org/wiki/Bonjour_(software)", @"URL for Bonjour signup or about page. Replace with the URL to an equivalent page in your language if one exists.")];
>> 
>> }
>> 
>> - (NSString *)accountSetupLabel
>> 
>> {
>> 
>>     return AILocalizedString(@"About Bonjour", @"Text for Bonjour sign up button");
>> 
>> }
>> 
>> - (NSCharacterSet *)allowedCharacters{
>> 
>> return [[NSCharacterSet illegalCharacterSet] invertedSet];
>> 
>> }
>> 
>> - (NSUInteger)allowedLength{
>> 
>> return 999;
>> 
>> }
>> 
>> - (BOOL)caseSensitive{
>> 
>> return YES;
>> 
>> }
>> 
>> - (AIServiceImportance)serviceImportance{
>> 
>> return AIServiceSecondary;
>> 
>> }
>> 
>> - (BOOL)supportsProxySettings{
>> 
>> return NO;
>> 
>> }
>> 
>> //No need for a password for Bonjour accounts
>> 
>> - (BOOL)supportsPassword
>> 
>> {
>> 
>> return NO;
>> 
>> }
>> 
>> - (void)registerStatuses{
>> 
>> [adium.statusController registerStatus:STATUS_NAME_AVAILABLE
>> 
>>                            withDescription:[adium.statusController localizedDescriptionForCoreStatusName:STATUS_NAME_AVAILABLE]
>> 
>>                                     ofType:AIAvailableStatusType
>> 
>>                                 forService:self];
>> 
>> 
>> [adium.statusController registerStatus:STATUS_NAME_AWAY
>> 
>>                            withDescription:[adium.statusController localizedDescriptionForCoreStatusName:STATUS_NAME_AWAY]
>> 
>>                                     ofType:AIAwayStatusType
>> 
>>                                 forService:self];
>> 
>> }
>> 
>> - (NSString *)defaultUserName {
>> 
>> return NSFullUserName(); 
>> 
>> }
>> 
>> 
>> 
>> @end
>> 
>> 
>> 
>> -- 
>> 
>> Bob Tanner <tanner at real-time.com>                  | Phone : (952 943-8700
>> 
>> http://www.real-time.com, Linux, OSX, VMware | Fax   : (952)943-8500
>> 
>> Key fingerprint = F785 DDFC CF94 7CE8 AA87 3A9D 3895 26F1 0DDB E378
>> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20120908/572f1172/attachment-0002.html>


More information about the devel mailing list