Changeset 2337


Ignore:
Timestamp:
Jul 13, 2007, 4:20:11 AM (15 years ago)
Author:
livings124
Message:

hopefully function for getting priorities is a bit faster

Location:
trunk/macosx
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/FileOutlineView.m

    r2335 r2337  
    106106        Torrent * torrent = [(InfoWindowController *)[[self window] windowController] selectedTorrent];
    107107       
    108         NSIndexSet * indexSet = [item objectForKey: @"Indexes"];
    109         if ([[item objectForKey: @"IsFolder"] boolValue] || ![torrent canChangeDownloadCheckForFiles: indexSet])
     108        if ([[item objectForKey: @"IsFolder"] boolValue])
    110109            [fNormalColor set];
    111110        else
    112111        {
    113             if ([torrent hasFilePriority: TR_PRI_HIGH forIndexes: indexSet])
    114                 [fHighPriorityColor set];
    115             else if ([torrent hasFilePriority: TR_PRI_LOW forIndexes: indexSet])
    116                 [fLowPriorityColor set];
     112            NSArray * priorities = [torrent filePrioritiesForIndexes: [item objectForKey: @"Indexes"]];
     113            if ([priorities count] == 0)
     114                [fNormalColor set];
    117115            else
    118                 [fNormalColor set];
     116            {
     117                int priority = [[priorities objectAtIndex: 0] intValue];
     118                if (priority == TR_PRI_LOW)
     119                    [fLowPriorityColor set];
     120                else if (priority == TR_PRI_HIGH)
     121                    [fHighPriorityColor set];
     122                else
     123                    [fNormalColor set];
     124            }
    119125        }
    120126       
     
    141147        {
    142148            item = [self itemAtRow: i];
    143             if ([[item objectForKey: @"IsFolder"] boolValue])
    144                 continue;
    145            
    146             indexSet = [item objectForKey: @"Indexes"];
    147             if ([torrent canChangeDownloadCheckForFiles: indexSet])
     149            if (![[item objectForKey: @"IsFolder"] boolValue])
    148150            {
    149                 if ([torrent hasFilePriority: TR_PRI_HIGH forIndexes: indexSet])
    150                     [fHighPriorityColor set];
    151                 else if ([torrent hasFilePriority: TR_PRI_LOW forIndexes: indexSet])
    152                     [fLowPriorityColor set];
    153                 else
    154                     continue;
     151                NSArray * priorities = [torrent filePrioritiesForIndexes: [item objectForKey: @"Indexes"]];
     152                if ([priorities count] == 1)
     153                {
     154                    int priority = [[priorities objectAtIndex: 0] intValue];
     155                    if (priority == TR_PRI_LOW)
     156                        [fLowPriorityColor set];
     157                    else if (priority == TR_PRI_HIGH)
     158                        [fHighPriorityColor set];
     159                    else
     160                        continue;
    155161               
    156                 NSRect rect = [self rectOfRow: i];
    157                 float width = 14.0;
    158                 rect.origin.y += (rect.size.height - width) * 0.5;
    159                 rect.origin.x += 3.0;
    160                 rect.size.width = width;
    161                 rect.size.height = width;
    162                
    163                 [[NSBezierPath bezierPathWithOvalInRect: rect] fill];
     162                    NSRect rect = [self rectOfRow: i];
     163                    float width = 14.0;
     164                    rect.origin.y += (rect.size.height - width) * 0.5;
     165                    rect.origin.x += 3.0;
     166                    rect.size.width = width;
     167                    rect.size.height = width;
     168                   
     169                    [[NSBezierPath bezierPathWithOvalInRect: rect] fill];
     170                }
    164171            }
    165172        }
  • trunk/macosx/InfoWindowController.m

    r2336 r2337  
    933933    else if ([ident isEqualToString: @"Priority"])
    934934    {
    935         Torrent * torrent = [fTorrents objectAtIndex: 0];
    936         NSIndexSet * indexSet = [item objectForKey: @"Indexes"];
    937        
    938         if (![torrent canChangeDownloadCheckForFiles: indexSet])
     935        NSArray * priorities = [[fTorrents objectAtIndex: 0] filePrioritiesForIndexes: [item objectForKey: @"Indexes"]];
     936       
     937        int count = [priorities count];
     938        if (count == 0)
    939939            return NSLocalizedString(@"Priority Not Available", "Inspector -> files tab -> tooltip");
    940        
    941         BOOL low = [torrent hasFilePriority: TR_PRI_LOW forIndexes: indexSet],
    942             normal = [torrent hasFilePriority: TR_PRI_NORMAL forIndexes: indexSet],
    943             high = [torrent hasFilePriority: TR_PRI_HIGH forIndexes: indexSet];
    944        
    945         if (low && !normal && !high)
    946             return NSLocalizedString(@"Low Priority", "Inspector -> files tab -> tooltip");
    947         else if (!low && normal && !high)
    948             return NSLocalizedString(@"Normal Priority", "Inspector -> files tab -> tooltip");
    949         else if (!low && !normal && high)
    950             return NSLocalizedString(@"High Priority", "Inspector -> files tab -> tooltip");
    951         else
     940        else if (count > 1)
    952941            return NSLocalizedString(@"Multiple Priorities", "Inspector -> files tab -> tooltip");
     942        else
     943        {
     944            int priority = [[priorities objectAtIndex: 0] intValue];
     945            if (priority == TR_PRI_LOW)
     946                return NSLocalizedString(@"Low Priority", "Inspector -> files tab -> tooltip");
     947            else if (priority == TR_PRI_HIGH)
     948                return NSLocalizedString(@"High Priority", "Inspector -> files tab -> tooltip");
     949            else
     950                return NSLocalizedString(@"Normal Priority", "Inspector -> files tab -> tooltip");
     951        }
    953952    }
    954953    else
  • trunk/macosx/Torrent.h

    r2318 r2337  
    207207- (void) setFilePriority: (int) priority forIndexes: (NSIndexSet *) indexSet;
    208208- (BOOL) hasFilePriority: (int) priority forIndexes: (NSIndexSet *) indexSet;
     209- (NSArray *) filePrioritiesForIndexes: (NSIndexSet *) indexSet;
    209210
    210211- (NSDate *) dateAdded;
  • trunk/macosx/Torrent.m

    r2335 r2337  
    13151315    int count = [indexSet count], i = 0, index;
    13161316    int * files = malloc(count * sizeof(int));
    1317    
    13181317    for (index = [indexSet firstIndex]; index != NSNotFound; index = [indexSet indexGreaterThanIndex: index])
    13191318    {
     
    13211320        i++;
    13221321    }
     1322   
    13231323    tr_torrentSetFileDLs(fHandle, files, count, state != NSOffState);
    13241324    free(files);
     
    13331333    int count = [indexSet count], i = 0, index;
    13341334    int * files = malloc(count * sizeof(int));
    1335    
    13361335    for (index = [indexSet firstIndex]; index != NSNotFound; index = [indexSet indexGreaterThanIndex: index])
    13371336    {
     
    13521351            return YES;
    13531352    return NO;
     1353}
     1354
     1355- (NSArray *) filePrioritiesForIndexes: (NSIndexSet *) indexSet
     1356{
     1357    BOOL low = NO, normal = NO, high = NO;
     1358    NSMutableArray * priorities = [NSMutableArray arrayWithCapacity: 3];
     1359   
     1360    int index, priority;
     1361    for (index = [indexSet firstIndex]; index != NSNotFound; index = [indexSet indexGreaterThanIndex: index])
     1362    {
     1363        if (![self canChangeDownloadCheckForFiles: [NSIndexSet indexSetWithIndex: index]])
     1364            continue;
     1365       
     1366        priority = tr_torrentGetFilePriority(fHandle, index);
     1367        if (priority == TR_PRI_LOW)
     1368        {
     1369            if (!low)
     1370                low = YES;
     1371            else
     1372                continue;
     1373        }
     1374        else if (priority == TR_PRI_HIGH)
     1375        {
     1376            if (!high)
     1377                high = YES;
     1378            else
     1379                continue;
     1380        }
     1381        else
     1382        {
     1383            if (!normal)
     1384                normal = YES;
     1385            else
     1386                continue;
     1387        }
     1388       
     1389        [priorities addObject: [NSNumber numberWithInt: priority]];
     1390       
     1391        if (low && normal && high)
     1392            break;
     1393    }
     1394    return priorities;
    13541395}
    13551396
Note: See TracChangeset for help on using the changeset viewer.