adium 2329:6df78055375a: Simplify fetching the protocol's UI ops.

commits at adium.im commits at adium.im
Mon May 25 22:56:07 UTC 2009


details:	http://hg.adium.im/adium/rev/6df78055375a
revision:	2329:6df78055375a
author:		Zachary West <zacw at adium.im>
date:		Mon May 25 18:56:02 2009 -0400

Simplify fetching the protocol's UI ops.

diffstat:

 Plugins/Purple Service/CBPurpleAccount.h |   1 +
 Plugins/Purple Service/CBPurpleAccount.m |  62 ++++++++++++-------------------
 2 files changed, 25 insertions(+), 38 deletions(-)

diffs (153 lines):

diff -r 480241732fcf -r 6df78055375a Plugins/Purple Service/CBPurpleAccount.h
--- a/Plugins/Purple Service/CBPurpleAccount.h	Mon May 25 18:53:31 2009 -0400
+++ b/Plugins/Purple Service/CBPurpleAccount.h	Mon May 25 18:56:02 2009 -0400
@@ -49,6 +49,7 @@
 
 - (const char*)protocolPlugin;
 - (PurpleAccount*)purpleAccount;
+- (PurplePluginProtocolInfo *)protocolInfo;
 - (void)setPurpleAccount:(PurpleAccount *)inAccount;
 - (const char *)purpleAccountName;
 
diff -r 480241732fcf -r 6df78055375a Plugins/Purple Service/CBPurpleAccount.m
--- a/Plugins/Purple Service/CBPurpleAccount.m	Mon May 25 18:53:31 2009 -0400
+++ b/Plugins/Purple Service/CBPurpleAccount.m	Mon May 25 18:56:02 2009 -0400
@@ -119,6 +119,17 @@
 // Subclasses must override this
 - (const char*)protocolPlugin { return NULL; }
 
+- (PurplePluginProtocolInfo *)protocolInfo
+{
+	PurplePlugin				*prpl;
+	
+	if (prpl = prpl = purple_find_prpl(purple_account_get_protocol_id(account))) {
+		return PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+	}
+	
+	return NULL;
+}
+
 // Contacts ------------------------------------------------------------------------------------------------
 #pragma mark Contacts
 - (void)newContact:(AIListContact *)theContact withName:(NSString *)inName
@@ -258,10 +269,7 @@
 	
 	// Get the plugin's status message for this buddy if they don't have a status message
 	if (!message) {
-		PurplePlugin				*prpl;
-		PurplePluginProtocolInfo  *prpl_info = ((prpl = purple_find_prpl(purple_account_get_protocol_id(account))) ?
-												PURPLE_PLUGIN_PROTOCOL_INFO(prpl) :
-												NULL);
+		PurplePluginProtocolInfo  *prpl_info = self.protocolInfo;
 		
 		if (prpl_info && prpl_info->status_text) {
 			char *status_text = (prpl_info->status_text)(buddy);
@@ -1086,10 +1094,7 @@
 		return;
 	}
 	
-	PurplePlugin				*prpl;
-	PurplePluginProtocolInfo  *prpl_info = ((prpl = purple_find_prpl(purple_account_get_protocol_id(account))) ?
-											PURPLE_PLUGIN_PROTOCOL_INFO(prpl) :
-											NULL);
+	PurplePluginProtocolInfo  *prpl_info = self.protocolInfo;
 	
 	if (prpl_info && prpl_info->set_chat_topic) {
 		(prpl_info->set_chat_topic)(purple_account_get_connection(account),
@@ -1300,11 +1305,8 @@
 
 - (BOOL)allowFileTransferWithListObject:(AIListObject *)inListObject
 {
-	PurplePluginProtocolInfo *prpl_info = NULL;
+	PurplePluginProtocolInfo *prpl_info = self.protocolInfo;
 
-	if (account && purple_account_get_connection(account) && purple_account_get_connection(account)->prpl)
-		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_account_get_connection(account)->prpl);
-	
 	if (prpl_info && prpl_info->send_file)
 		return (!prpl_info->can_receive_file || prpl_info->can_receive_file(purple_account_get_connection(account), [inListObject.UID UTF8String]));
 	else
@@ -1322,11 +1324,8 @@
 
 - (BOOL)canSendOfflineMessageToContact:(AIListContact *)inContact
 {
-	PurplePluginProtocolInfo *prpl_info = NULL;
+	PurplePluginProtocolInfo *prpl_info = self.protocolInfo;
 
-	if (account && purple_account_get_connection(account) && purple_account_get_connection(account)->prpl)
-		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_account_get_connection(account)->prpl);
-	
 	if (prpl_info && prpl_info->offline_message) {
 		
 		return (prpl_info->offline_message(purple_find_buddy(account, [inContact.UID UTF8String])));
@@ -1625,10 +1624,7 @@
 	PurpleXfer				*newPurpleXfer = NULL;
 
 	if (account && purple_account_get_connection(account)) {
-		PurplePlugin				*prpl;
-		PurplePluginProtocolInfo  *prpl_info = ((prpl = purple_find_prpl(purple_account_get_protocol_id(account))) ?
-												PURPLE_PLUGIN_PROTOCOL_INFO(prpl) :
-												NULL);
+		PurplePluginProtocolInfo  *prpl_info = self.protocolInfo;
 
 		if (prpl_info && prpl_info->new_xfer) {
 			char *destsn = (char *)[[[fileTransfer contact] UID] UTF8String];
@@ -2523,10 +2519,7 @@
 		/* Now pass libpurple the new icon. Check to be sure our image doesn't have an NSZeroSize size,
 		 * which would indicate currupt data */
 		if (image && !NSEqualSizes(NSZeroSize, imageSize)) {
-			PurplePlugin				*prpl;
-			PurplePluginProtocolInfo  *prpl_info = ((prpl = purple_find_prpl(purple_account_get_protocol_id(account))) ?
-												  PURPLE_PLUGIN_PROTOCOL_INFO(prpl) :
-												  NULL);
+			PurplePluginProtocolInfo  *prpl_info = self.protocolInfo;
 
 			AILog(@"Original image of size %f %f",imageSize.width,imageSize.height);
 
@@ -2726,10 +2719,7 @@
 	NSMutableArray			*menuItemArray = nil;
 
 	if (account && purple_account_is_connected(account)) {
-		PurplePlugin				*prpl;
-		PurplePluginProtocolInfo  *prpl_info = ((prpl = purple_find_prpl(purple_account_get_protocol_id(account))) ?
-											  PURPLE_PLUGIN_PROTOCOL_INFO(prpl) :
-											  NULL);
+		PurplePluginProtocolInfo  *prpl_info = self.protocolInfo;
 		GList					*l, *ll;
 		PurpleBuddy				*buddy;
 		
@@ -2929,15 +2919,13 @@
  */
 - (NSAlert*)alertForAccountDeletion
 {
-	PurplePlugin *prpl;
-	PurplePluginProtocolInfo *prpl_info;
+	PurplePluginProtocolInfo *prpl_info = self.protocolInfo;
 
 	//Ensure libpurple has been loaded, since we need to know whether we can unregister this account
 	[self purpleAdapter];
 
-	if ((prpl = purple_find_prpl([self protocolPlugin])) &&
-		(prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl)) &&
-		(prpl_info->unregister_user) &&
+	if (prpl_info && 
+		prpl_info->unregister_user &&
 		[self allowAccountUnregistrationIfSupportedByLibpurple]) {
 		return [NSAlert alertWithMessageText:AILocalizedString(@"Delete Account",nil)
 							   defaultButton:AILocalizedString(@"Delete",nil)
@@ -2952,12 +2940,10 @@
 
 - (void)alertForAccountDeletion:(id<AIAccountControllerRemoveConfirmationDialog>)dialog didReturn:(int)returnCode
 {
-	PurplePlugin *prpl;
-	PurplePluginProtocolInfo *prpl_info;
+	PurplePluginProtocolInfo *prpl_info = self.protocolInfo;
 	
-	if ((prpl = purple_find_prpl([self protocolPlugin])) &&
-		(prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl)) &&
-		(prpl_info->unregister_user)) {
+	if (prpl_info && 
+		prpl_info->unregister_user) {
 		switch (returnCode) {
 			case NSAlertOtherReturn:
 				// delete & unregister




More information about the commits mailing list