Changeset 5808


Ignore:
Timestamp:
May 11, 2008, 9:38:40 PM (14 years ago)
Author:
livings124
Message:

allow reordering while groups are shown (and sorting by queue)

Location:
trunk/macosx
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/Controller.m

    r5804 r5808  
    17131713            sortType = SORT_ORDER;
    17141714            [fDefaults setBool: NO forKey: @"SortReverse"];
    1715            
    1716             [fDefaults setBool: NO forKey: @"SortByGroup"];
    1717             [fTableView removeAllCollapsedGroups];
    1718            
    1719             [self applyFilter: nil]; //ensure groups are removed
    17201715            break;
    17211716        case SORT_DATE_TAG:
     
    25262521- (BOOL) outlineView: (NSOutlineView *) outlineView isItemExpandable: (id) item
    25272522{
     2523
    25282524    return ![item isKindOfClass: [Torrent class]];
    25292525}
     
    25892585    if ([[fDefaults stringForKey: @"Sort"] isEqualToString: SORT_ORDER])
    25902586    {
    2591         [pasteboard declareTypes: [NSArray arrayWithObject: TORRENT_TABLE_VIEW_DATA_TYPE] owner: self];
    2592        
    25932587        NSMutableIndexSet * indexSet = [NSMutableIndexSet indexSet];
    25942588        NSEnumerator * enumerator = [items objectEnumerator];
    2595         Torrent * torrent;
     2589        id torrent;
    25962590        while ((torrent = [enumerator nextObject]))
     2591        {
     2592            if (![torrent isKindOfClass: [Torrent class]])
     2593                return NO;
     2594           
    25972595            [indexSet addIndex: [fTableView rowForItem: torrent]];
    2598        
     2596        }
     2597       
     2598        [pasteboard declareTypes: [NSArray arrayWithObject: TORRENT_TABLE_VIEW_DATA_TYPE] owner: self];
    25992599        [pasteboard setData: [NSKeyedArchiver archivedDataWithRootObject: indexSet] forType: TORRENT_TABLE_VIEW_DATA_TYPE];
    26002600        return YES;
     
    26092609    if ([[pasteboard types] containsObject: TORRENT_TABLE_VIEW_DATA_TYPE])
    26102610    {
    2611         if (item)
    2612             index = [fTableView rowForItem: item] + 1;
    2613        
    2614         [fTableView setDropItem: nil dropChildIndex: index];
     2611        if ([fDefaults boolForKey: @"SortByGroup"])
     2612        {
     2613            if (!item)
     2614                return NSDragOperationNone;
     2615            else if ([item isKindOfClass: [Torrent class]])
     2616            {
     2617                NSDictionary * group = [fTableView parentForItem: item];
     2618                index = [[group objectForKey: @"Torrents"] indexOfObject: item] + 1;
     2619                item = group;
     2620            }
     2621            else;
     2622        }
     2623        else
     2624        {
     2625            if (item)
     2626            {
     2627                index = [fTableView rowForItem: item] + 1;
     2628                item = nil;
     2629            }
     2630        }
     2631       
     2632        [fTableView setDropItem: item dropChildIndex: index];
    26152633        return NSDragOperationGeneric;
    26162634    }
     
    26282646        NSArray * selectedValues = [fTableView selectedValues];
    26292647   
    2630         NSIndexSet * indexes = [NSKeyedUnarchiver unarchiveObjectWithData:
    2631                                 [pasteboard dataForType: TORRENT_TABLE_VIEW_DATA_TYPE]];
    2632        
    2633         //determine where to move them
    2634         int i, originalRow = newRow;
    2635         for (i = [indexes firstIndex]; i < originalRow && i != NSNotFound; i = [indexes indexGreaterThanIndex: i])
    2636             newRow--;
    2637        
    2638         //reinsert into array
    2639         int insertIndex = newRow > 0 ? [[fDisplayedTorrents objectAtIndex: newRow-1] orderValue] + 1 : 0;
     2648        NSIndexSet * indexes = [NSKeyedUnarchiver unarchiveObjectWithData: [pasteboard dataForType: TORRENT_TABLE_VIEW_DATA_TYPE]];
     2649       
     2650        //get the torrents to move
     2651        NSMutableArray * movingTorrents = [NSMutableArray arrayWithCapacity: [indexes count]];
     2652        int i;
     2653        for (i = [indexes firstIndex]; i != NSNotFound; i = [indexes indexGreaterThanIndex: i])
     2654            [movingTorrents addObject: [fTableView itemAtRow: i]];
     2655       
     2656        //find torrent to place under
     2657        Torrent * topTorrent = nil;
     2658        if (item) //sorting by group
     2659        {
     2660            #warning get working
     2661            //change groups
     2662            /*int groupValue = [[item objectForKey: @"Group"] intValue];
     2663            NSEnumerator * enumerator = [movingTorrents objectEnumerator];
     2664            Torrent * torrent;
     2665            while ((torrent = [enumerator nextObject]))
     2666                [torrent setGroupValue: groupValue];*/
     2667           
     2668           
     2669            NSArray * groupTorrents = [item objectForKey: @"Torrents"];
     2670            while (newRow > 0 && [movingTorrents containsObject: [groupTorrents objectAtIndex: newRow-1]])
     2671                newRow--;
     2672           
     2673            if (newRow > 0)
     2674                topTorrent = [groupTorrents objectAtIndex: newRow-1];
     2675        }
     2676        else
     2677        {
     2678            while (newRow > 0 && [movingTorrents containsObject: [fDisplayedTorrents objectAtIndex: newRow-1]])
     2679                newRow--;
     2680           
     2681            if (newRow > 0)
     2682                topTorrent = [fDisplayedTorrents objectAtIndex: newRow-1];
     2683        }
    26402684       
    26412685        //get all torrents to reorder
    2642         NSSortDescriptor * orderDescriptor = [[[NSSortDescriptor alloc] initWithKey:
    2643                                                 @"orderValue" ascending: YES] autorelease];
    2644        
     2686        NSSortDescriptor * orderDescriptor = [[[NSSortDescriptor alloc] initWithKey: @"orderValue" ascending: YES] autorelease];
    26452687        NSMutableArray * sortedTorrents = [[fTorrents sortedArrayUsingDescriptors:
    26462688                                            [NSArray arrayWithObject: orderDescriptor]] mutableCopy];
    26472689       
    26482690        //remove objects to reinsert
    2649         NSArray * movingTorrents = [[fDisplayedTorrents objectsAtIndexes: indexes] retain];
    26502691        [sortedTorrents removeObjectsInArray: movingTorrents];
    26512692       
    26522693        //insert objects at new location
     2694        int insertIndex = topTorrent ? [sortedTorrents indexOfObject: topTorrent] + 1 : 0;
    26532695        for (i = 0; i < [movingTorrents count]; i++)
    26542696            [sortedTorrents insertObject: [movingTorrents objectAtIndex: i] atIndex: insertIndex + i];
    26552697       
    2656         [movingTorrents release];
    2657        
    26582698        //redo order values
    2659         i = 0;
    2660         for (i = 0; i < [sortedTorrents count]; i++)
     2699        for (i = insertIndex; i < [sortedTorrents count]; i++)
    26612700            [[sortedTorrents objectAtIndex: i] setOrderValue: i];
    26622701       
     
    36913730    {
    36923731        [menuItem setState: [fDefaults boolForKey: @"SortByGroup"] ? NSOnState : NSOffState];
    3693         return ![[fDefaults stringForKey: @"Sort"] isEqualToString: SORT_ORDER];
     3732        return YES;
    36943733    }
    36953734   
  • trunk/macosx/TorrentTableView.m

    r5804 r5808  
    140140}
    141141
     142- (BOOL)shouldCollapseAutoExpandedItemsForDeposited:(BOOL)deposited
     143{
     144    return NO;
     145}
     146
    142147- (void) removeAllCollapsedGroups
    143148{
     
    356361{
    357362    int value = [[[[notification userInfo] objectForKey: @"NSObject"] objectForKey: @"Group"] intValue];
    358     [fCollapsedGroups removeIndex: value >= 0 ? value : MAX_GROUP];
    359    
    360     [[NSNotificationCenter defaultCenter] postNotificationName: @"OutlineExpandCollapse" object: self];
     363    if (value < 0)
     364        value = MAX_GROUP;
     365   
     366    if ([fCollapsedGroups containsIndex: value])
     367    {
     368        [fCollapsedGroups removeIndex: value];
     369        [[NSNotificationCenter defaultCenter] postNotificationName: @"OutlineExpandCollapse" object: self];
     370    }
    361371}
    362372
     
    364374{
    365375    int value = [[[[notification userInfo] objectForKey: @"NSObject"] objectForKey: @"Group"] intValue];
    366     [fCollapsedGroups addIndex: value >= 0 ? value : MAX_GROUP];
     376    if (value < 0)
     377        value = MAX_GROUP;
     378   
     379    [fCollapsedGroups addIndex: value];
    367380   
    368381    [[NSNotificationCenter defaultCenter] postNotificationName: @"OutlineExpandCollapse" object: self];
Note: See TracChangeset for help on using the changeset viewer.