Show
Ignore:
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Trunk/AILogSizeSort.m

    r19 r28  
    2020 */ 
    2121 
    22 #import "AILogSizeSort.h" 
    23 #import "AILoggerPlugin.h" 
    24  
     22#import <Adium/AIPlugin.h> 
    2523#import <Adium/AISharedAdium.h> 
    2624 
    27 #import <AIUtilities/AITigerCompatibility.h>  
    2825#import <AIUtilities/AIStringUtilities.h> 
    2926 
     
    3835#import <Adium/AIContentMessage.h> 
    3936 
     37#import "AILogSizeSort.h" 
     38#import "AILoggerPlugin.h" 
     39 
    4040@implementation AILogSizeSort 
    4141 
     
    5252         
    5353        // Listen for content addition notifications 
    54         [[adium notificationCenter] addObserver:self  
    55                                                                   selector:@selector(contentObjectAdded:)  
    56                                                                           name:Content_ContentObjectAdded  
    57                                                                         object:nil]; 
     54        [[NSNotificationCenter defaultCenter] addObserver:self  
     55                                                                                        selector:@selector(contentObjectAdded:)  
     56                                                                                                name:Content_ContentObjectAdded  
     57                                                                                          object:nil]; 
    5858} 
    5959 
     
    160160                id contact; 
    161161                 
    162                 NSEnumerator *contactEnumerator = [[(AIMetaContact *)listContact listContacts] objectEnumerator]; 
     162                NSEnumerator *contactEnumerator = [[(AIMetaContact *)listContact uniqueContainedObjects] objectEnumerator]; 
    163163                 
    164164                while(contact = [contactEnumerator nextObject]) 
     
    229229                unsigned long long size = 0; 
    230230                 
    231                 NSEnumerator *contactEnumerator = [[(AIMetaContact *)listContact listContacts] objectEnumerator]; 
     231                NSEnumerator *contactEnumerator = [[(AIMetaContact *)listContact uniqueContainedObjects] objectEnumerator]; 
    232232 
    233233                while(contact = [contactEnumerator nextObject]) 
     
    272272 * @brief Sort by log size 
    273273 */ 
    274 int logSizeSort(id objectA, id objectB, BOOL groups) 
    275 { 
    276         if(groups) 
     274NSComparisonResult logSizeSort(id objectA, id objectB, BOOL groups, id<AIContainingObject> container) 
     275{ 
     276        // Borrowed from AISortController.m 
     277        BOOL objectAIsGroup = [objectA isKindOfClass:[AIListGroup class]]; 
     278        BOOL objectBIsGroup = [objectB isKindOfClass:[AIListGroup class]]; 
     279         
     280        if(groups || (objectAIsGroup && objectBIsGroup)) 
    277281        { 
    278282                // Keep groups in manual order (borrowed from ESStatusSort) 
    279                 if ([objectA orderIndex] > [objectB orderIndex]) 
     283                if ([container orderIndexForObject:objectA] > [container orderIndexForObject:objectB]) 
    280284                { 
    281285                        return NSOrderedDescending; 
     
    285289                        return NSOrderedAscending; 
    286290                } 
     291        } 
     292         
     293        // Catch cases where only one of the objects is a group 
     294        if(objectAIsGroup && !objectBIsGroup) 
     295        { 
     296                return NSOrderedAscending; 
     297        } 
     298        else if(!objectAIsGroup && objectBIsGroup) 
     299        { 
     300                return NSOrderedDescending; 
    287301        } 
    288302         
    289303        // Get a reference to one and only AILogSizeSort instance.  If this sorting method is being 
    290304        // called, it should always be the case that AILogSizeSort is the active sort controller. 
    291         AISortController *sortController = [[adium contactController] activeSortController]; 
     305        AISortController *sortController = [AISortController activeSortController]; 
    292306         
    293307        unsigned long long sizeA = 0;