Changeset 5824


Ignore:
Timestamp:
May 12, 2008, 9:57:37 PM (14 years ago)
Author:
livings124
Message:

allow changing groups by dragging (regardless of sort)

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEWS

    r5809 r5824  
    44http://trac.transmissionbt.com/query?group=component&milestone=1.30
    55- Mac
     6   + Torrents can be dragged to different groups
    67   + Status strings are toggled from the action button (they are no longer clickable)
    78
  • trunk/macosx/Controller.m

    r5823 r5824  
    25792579{
    25802580    //only allow reordering of rows if sorting by order
    2581     if ([[fDefaults stringForKey: @"Sort"] isEqualToString: SORT_ORDER])
     2581    if (([fDefaults boolForKey: @"SortByGroup"] && [NSApp isOnLeopardOrBetter])
     2582        || [[fDefaults stringForKey: @"Sort"] isEqualToString: SORT_ORDER])
    25822583    {
    25832584        NSMutableIndexSet * indexSet = [NSMutableIndexSet indexSet];
     
    26122613            {
    26132614                NSDictionary * group = [fTableView parentForItem: item];
    2614                 index = [[group objectForKey: @"Torrents"] indexOfObject: item] + 1;
     2615                if ([[fDefaults stringForKey: @"Sort"] isEqualToString: SORT_ORDER])
     2616                    index = [[group objectForKey: @"Torrents"] indexOfObject: item] + 1;
     2617                else
     2618                    index = NSOutlineViewDropOnItemIndex;
    26152619                item = group;
    26162620            }
    2617             else;
     2621            else
     2622            {
     2623                if (![[fDefaults stringForKey: @"Sort"] isEqualToString: SORT_ORDER])
     2624                    index = NSOutlineViewDropOnItemIndex;
     2625            }
    26182626        }
    26192627        else
     
    26492657        for (i = [indexes firstIndex]; i != NSNotFound; i = [indexes indexGreaterThanIndex: i])
    26502658            [movingTorrents addObject: [fTableView itemAtRow: i]];
    2651        
    2652         //find torrent to place under
    2653         NSArray * groupTorrents = item ? [item objectForKey: @"Torrents"] : fDisplayedTorrents;
    2654         Torrent * topTorrent = nil;
    2655         for (i = newRow-1; i >= 0; i--)
    2656         {
    2657             Torrent * tempTorrent = [groupTorrents objectAtIndex: i];
    2658             if (![movingTorrents containsObject: tempTorrent])
    2659             {
    2660                 topTorrent = tempTorrent;
    2661                 break;
    2662             }
    2663         }
    26642659       
    26652660        //reset groups
     
    26782673                [torrent setGroupValue: groupValue];
    26792674            }
    2680             //part 1 of avoiding weird crash
     2675            //part 2 of avoiding weird crash
    26812676            [fTableView reloadItem: nil reloadChildren: YES];
    26822677        }
    26832678       
    2684         //remove objects to reinsert
    2685         [fTorrents removeObjectsInArray: movingTorrents];
    2686        
    2687         //get all torrents to reorder
    2688         NSSortDescriptor * orderDescriptor = [[[NSSortDescriptor alloc] initWithKey: @"orderValue" ascending: YES] autorelease];
    2689         [fTorrents sortUsingDescriptors: [NSArray arrayWithObject: orderDescriptor]];
    2690        
    2691         //insert objects at new location
    2692         int insertIndex = topTorrent ? [fTorrents indexOfObject: topTorrent] + 1 : 0;
    2693         for (i = 0; i < [movingTorrents count]; i++)
    2694             [fTorrents insertObject: [movingTorrents objectAtIndex: i] atIndex: insertIndex + i];
    2695        
    2696         //redo order values
    2697         for (i = 0; i < [fTorrents count]; i++)
    2698             [[fTorrents objectAtIndex: i] setOrderValue: i];
     2679        //reorder queue order
     2680        if ([[fDefaults stringForKey: @"Sort"] isEqualToString: SORT_ORDER])
     2681        {
     2682            //find torrent to place under
     2683            NSArray * groupTorrents = item ? [item objectForKey: @"Torrents"] : fDisplayedTorrents;
     2684            Torrent * topTorrent = nil;
     2685            for (i = newRow-1; i >= 0; i--)
     2686            {
     2687                Torrent * tempTorrent = [groupTorrents objectAtIndex: i];
     2688                if (![movingTorrents containsObject: tempTorrent])
     2689                {
     2690                    topTorrent = tempTorrent;
     2691                    break;
     2692                }
     2693            }
     2694           
     2695            //remove objects to reinsert
     2696            [fTorrents removeObjectsInArray: movingTorrents];
     2697           
     2698            //get all torrents to reorder
     2699            NSSortDescriptor * orderDescriptor = [[[NSSortDescriptor alloc] initWithKey: @"orderValue" ascending: YES] autorelease];
     2700            [fTorrents sortUsingDescriptors: [NSArray arrayWithObject: orderDescriptor]];
     2701           
     2702            //insert objects at new location
     2703            int insertIndex = topTorrent ? [fTorrents indexOfObject: topTorrent] + 1 : 0;
     2704            for (i = 0; i < [movingTorrents count]; i++)
     2705                [fTorrents insertObject: [movingTorrents objectAtIndex: i] atIndex: insertIndex + i];
     2706           
     2707            //redo order values
     2708            for (i = 0; i < [fTorrents count]; i++)
     2709                [[fTorrents objectAtIndex: i] setOrderValue: i];
     2710        }
    26992711       
    27002712        [self applyFilter: nil];
Note: See TracChangeset for help on using the changeset viewer.