Changeset 5 for Trunk/AILogSizeSort.m

Show
Ignore:
Timestamp:
09/28/08 22:32:51 (16 years ago)
Author:
jon
Message:

We now get actual log sizes when the plugin is activated for the first time.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Trunk/AILogSizeSort.m

    r3 r5  
    88 
    99#import "AILogSizeSort.h" 
     10#import "AILoggerPlugin.h" 
    1011 
    1112#import <AIUtilities/AITigerCompatibility.h>  
    1213#import <AIUtilities/AIStringUtilities.h> 
     14 
     15#import <Adium/AISharedAdium.h> 
     16#import <Adium/ESDebugAILog.h> 
     17 
    1318#import <Adium/AIContactControllerProtocol.h> 
    1419#import <Adium/AIPreferenceControllerProtocol.h> 
    15 #import <AIUtilities/AIDictionaryAdditions.h> 
    1620#import <Adium/AIListObject.h> 
     21#import <Adium/AIMetaContact.h> 
    1722 
    1823@implementation AILogSizeSort 
     
    2530- (void)didBecomeActiveFirstTime 
    2631{ 
     32        NSEnumerator *groupEnumerator = [[[[adium contactController] contactList] listContacts] objectEnumerator]; 
     33         
     34        id group, contact; 
     35         
     36    while(group = [groupEnumerator nextObject]) 
     37        { 
     38                AILog(@"%@", group); 
     39                 
     40                NSEnumerator *contactEnumerator = [[group listContacts] objectEnumerator]; 
     41                 
     42                while(contact = [contactEnumerator nextObject]) 
     43                { 
     44                        AILog(@"\t%@: %lld", contact, [AILogSizeSort getContactLogSize:contact]); 
     45                } 
     46    } 
    2747} 
    2848 
     
    92112 * @brief Alphabetical sort 
    93113 */ 
    94 int alphabeticalSort(id objectA, id objectB, BOOL groups) 
     114int logSizeSort(id objectA, id objectB, BOOL groups) 
    95115{ 
     116        // Not real excited about doing this with an implicit definition, but seems to be 
     117        // the only option for now. 
     118        //AILog([objectA formattedUID]); 
    96119        return NSOrderedAscending; 
    97120} 
     
    101124 */ 
    102125- (sortfunc)sortFunction{ 
    103         return &alphabeticalSort; 
     126        return &logSizeSort; 
     127} 
     128 
     129+(unsigned long long)getContactLogSize:(AIListContact *)listObject 
     130{ 
     131        NSFileManager *fileManager = [NSFileManager defaultManager]; 
     132 
     133        if([listObject isMemberOfClass:[AIMetaContact class]]) 
     134        { 
     135                unsigned long long size = 0; 
     136                 
     137                NSEnumerator *contactEnumerator = [[listObject listContacts] objectEnumerator]; 
     138                 
     139                id contact; 
     140                 
     141                while(contact = [contactEnumerator nextObject]) 
     142                { 
     143                        size += [AILogSizeSort getContactLogSize:contact]; 
     144                } 
     145                 
     146                return size; 
     147        } 
     148        else 
     149        { 
     150                NSString *path = [[AILoggerPlugin logBasePath] stringByAppendingPathComponent:[AILoggerPlugin relativePathForLogWithObject:[listObject UID] onAccount: [listObject account]]]; 
     151 
     152                NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:path]; 
     153                NSString *file; 
     154                 
     155                unsigned long long size = 0; 
     156                 
     157                while(file = [dirEnum nextObject]) 
     158                { 
     159                        NSDictionary *fileAttributes = [fileManager fileAttributesAtPath:[path stringByAppendingPathComponent:file] traverseLink:YES]; 
     160 
     161                        if (fileAttributes != nil) 
     162                        { 
     163                                NSNumber *fileSize; 
     164                                if(fileSize = [fileAttributes objectForKey:NSFileSize]) 
     165                                { 
     166                                        size += [fileSize unsignedLongLongValue]; 
     167                                } 
     168                        } 
     169                } 
     170                 
     171                return size; 
     172        } 
    104173} 
    105174