Adium

Changeset 22680

Show
Ignore:
Timestamp:
02/24/2008 09:59:17 PM (9 months ago)
Author:
evands
Message:

Only set the Address Book image when overriding AB images with Adium-specified images if there has been a change. Fixes #9122

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Source/ESAddressBookIntegrationPlugin.m

    r22252 r22680  
    3131#import <AIUtilities/OWAddressBookAdditions.h> 
    3232#import <AIUtilities/AIFileManagerAdditions.h> 
     33#import <AIUtilities/AIImageAdditions.h> 
    3334 
    3435#import "AIAddressBookUserIconSource.h" 
     
    346347                        ABPerson *person = [[self class] personForListObject:inObject]; 
    347348                         
    348                         if (person && (person != [sharedAddressBook me])) {                              
    349                                 [person setImageData:[inObject userIconData]]; 
    350  
    351                                 [[sharedAddressBook class] cancelPreviousPerformRequestsWithTarget:sharedAddressBook 
    352                                                                                                                                                   selector:@selector(save) 
    353                                                                                                                                                         object:nil]; 
    354                                 [sharedAddressBook performSelector:@selector(save) 
    355                                                                                 withObject:nil 
    356                                                                                 afterDelay:5.0]; 
     349                        if (person && (person != [sharedAddressBook me])) { 
     350                                if (person) { 
     351                                        NSData  *existingABImageData = [person imageData]; 
     352                                        NSImage *existingABImage = (existingABImageData ? [[NSImage alloc] initWithData:[person imageData]] : nil); 
     353                                        NSImage *objectUserIcon = [inObject userIcon]; 
     354                                        NSData  *objectUserIconData = nil; 
     355 
     356                                        if (!existingABImage || 
     357                                                (objectUserIcon && [(objectUserIconData = [objectUserIcon PNGRepresentation]) isEqualToData:[existingABImage PNGRepresentation]])) { 
     358                                                [person setImageData:objectUserIconData]; 
     359                                                 
     360                                                 
     361                                                [[sharedAddressBook class] cancelPreviousPerformRequestsWithTarget:sharedAddressBook 
     362                                                                                                                                                                  selector:@selector(save) 
     363                                                                                                                                                                        object:nil]; 
     364                                                [sharedAddressBook performSelector:@selector(save) 
     365                                                                                                withObject:nil 
     366                                                                                                afterDelay:5.0];                                                 
     367                                        } 
     368                                } 
    357369                        } 
    358370                } 
     
    506518                //Set an icon to the address book 
    507519                ABPerson *person = [[self class] personForListObject:object]; 
    508                  
    509                 if (person) {                    
    510                         [person setImageData:[object userIconData]]; 
     520                if (person) { 
     521                        NSData  *existingABImageData = [person imageData]; 
     522                        NSImage *existingABImage = (existingABImageData ? [[NSImage alloc] initWithData:[person imageData]] : nil); 
     523                        NSImage *objectUserIcon = [object userIcon]; 
     524                        NSData  *objectUserIconData = nil; 
     525 
     526                        if (!existingABImage || 
     527                                (objectUserIcon && [(objectUserIconData = [objectUserIcon PNGRepresentation]) isEqualToData:[existingABImage PNGRepresentation]])) { 
     528                                [person setImageData:objectUserIconData]; 
     529                        } 
    511530                } 
    512531        } 
     
    11811200                        [multiValue release]; 
    11821201                } 
    1183                  
    1184                  
     1202 
    11851203                //Set the image 
    11861204                [person setImageData:[contact userIconData]];