Changeset 501


Ignore:
Timestamp:
Jul 2, 2006, 9:05:51 PM (16 years ago)
Author:
livings124
Message:

Allow torrent reordering for the queue (only when sorting by Custom Order).

Location:
trunk/macosx
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/Controller.m

    r500 r501  
    4141#define TOOLBAR_RESUME_SELECTED @"Toolbar Resume Selected"
    4242
     43#define TorrentTableViewDataType @"TorrentTableViewDataType"
     44
    4345#define WEBSITE_URL @"http://transmission.m0k.org/"
    4446#define FORUM_URL   @"http://transmission.m0k.org/forum/"
     
    139141    [[fTableView tableColumnWithIdentifier: @"Torrent"] setDataCell: [[TorrentCell alloc] init]];
    140142
    141     [fTableView registerForDraggedTypes: [NSArray arrayWithObject: NSFilenamesPboardType]];
     143    [fTableView registerForDraggedTypes: [NSArray arrayWithObjects: NSFilenamesPboardType,
     144                                                                TorrentTableViewDataType, nil]];
    142145
    143146    //register for sleep notifications
     
    11361139}
    11371140
    1138 - (BOOL) tableView: (NSTableView *) t acceptDrop:
    1139     (id <NSDraggingInfo>) info row: (int) row dropOperation:
    1140     (NSTableViewDropOperation) operation
    1141 {
    1142     [self application: NSApp openFiles: [[[info draggingPasteboard]
    1143         propertyListForType: NSFilenamesPboardType]
    1144         pathsMatchingExtensions: [NSArray arrayWithObject: @"torrent"]]];
     1141- (BOOL) tableView: (NSTableView *) tableView writeRowsWithIndexes: (NSIndexSet *) indexes
     1142    toPasteboard: (NSPasteboard *) pasteboard
     1143{
     1144    if ([fSortType isEqualToString: @"Order"])
     1145    {
     1146        [pasteboard declareTypes: [NSArray arrayWithObject: TorrentTableViewDataType] owner: self];
     1147        [pasteboard setData: [NSKeyedArchiver archivedDataWithRootObject: indexes] forType: TorrentTableViewDataType];
     1148        return YES;
     1149    }
     1150    return NO;
     1151}
     1152
     1153- (NSDragOperation) tableView: (NSTableView *) t validateDrop: (id <NSDraggingInfo>) info
     1154    proposedRow: (int) row proposedDropOperation: (NSTableViewDropOperation) operation
     1155{
     1156    NSPasteboard * pasteboard = [info draggingPasteboard];
     1157    if ([[pasteboard types] containsObject: NSFilenamesPboardType])
     1158    {
     1159        if ([[[pasteboard propertyListForType: NSFilenamesPboardType]
     1160            pathsMatchingExtensions: [NSArray arrayWithObject: @"torrent"]] count] > 0)
     1161        {
     1162            [fTableView setDropRow: -1 dropOperation: NSTableViewDropOn];
     1163            return NSDragOperationGeneric;
     1164        }
     1165    }
     1166    else if ([[pasteboard types] containsObject: TorrentTableViewDataType])
     1167    {
     1168        [fTableView setDropRow: row dropOperation: NSTableViewDropAbove];
     1169        return NSDragOperationGeneric;
     1170    }
     1171    else;
     1172   
     1173    return NSDragOperationNone;
     1174}
     1175
     1176- (BOOL) tableView: (NSTableView *) t acceptDrop: (id <NSDraggingInfo>) info
     1177    row: (int) newRow dropOperation: (NSTableViewDropOperation) operation
     1178{
     1179    NSPasteboard * pasteboard = [info draggingPasteboard];
     1180    if ([[pasteboard types] containsObject: NSFilenamesPboardType])
     1181        [self application: NSApp openFiles: [[[info draggingPasteboard] propertyListForType: NSFilenamesPboardType]
     1182            pathsMatchingExtensions: [NSArray arrayWithObject: @"torrent"]]];
     1183    else
     1184    {
     1185        NSIndexSet * indexes = [NSKeyedUnarchiver unarchiveObjectWithData:
     1186                                [pasteboard dataForType: TorrentTableViewDataType]];
     1187        int oldRow = [indexes firstIndex];
     1188       
     1189        //move torrent in array
     1190        if (newRow == oldRow)
     1191            return;
     1192       
     1193        Torrent * torrent = [[fTorrents objectAtIndex: oldRow] retain];
     1194       
     1195        int low, high;
     1196        if (newRow > oldRow)
     1197        {
     1198            newRow--;
     1199           
     1200            low = oldRow;
     1201            high = newRow;
     1202        }
     1203        else
     1204        {
     1205            low = newRow;
     1206            high = oldRow;
     1207        }
     1208       
     1209        [fTorrents removeObjectAtIndex: oldRow];
     1210        [fTorrents insertObject: torrent atIndex: newRow];
     1211        [torrent release];
     1212       
     1213        //redo order values
     1214        int i;
     1215        for (i = low; i <= high; i++)
     1216            [[fTorrents objectAtIndex: i] setOrderValue: i];
     1217       
     1218        [fTableView reloadData];
     1219    }
     1220   
    11451221    return YES;
    1146 }
    1147 
    1148 - (NSDragOperation) tableView: (NSTableView *) t validateDrop:
    1149     (id <NSDraggingInfo>) info proposedRow: (int) row
    1150     proposedDropOperation: (NSTableViewDropOperation) operation
    1151 {
    1152     NSPasteboard * pasteboard = [info draggingPasteboard];
    1153     if (![[pasteboard types] containsObject: NSFilenamesPboardType]
    1154             || [[[pasteboard propertyListForType: NSFilenamesPboardType]
    1155         pathsMatchingExtensions: [NSArray arrayWithObject: @"torrent"]] count] == 0)
    1156         return NSDragOperationNone;
    1157 
    1158     [fTableView setDropRow: [fTableView numberOfRows] dropOperation: NSTableViewDropAbove];
    1159     return NSDragOperationGeneric;
    11601222}
    11611223
  • trunk/macosx/TorrentCell.m

    r378 r501  
    325325    pen.x += extraNameShift;
    326326    pen.y += linePadding;
    327     NSAttributedString * statusString = [[fTorrent statusString]
     327    NSAttributedString * statusString = [[NSString stringWithFormat: @"%@ %@", [fTorrent statusString],
     328        [[fTorrent orderValue] stringValue]]
    328329        attributedStringFittingInWidth: mainWidth attributes: statusAttributes];
    329330    [statusString drawAtPoint: pen];
Note: See TracChangeset for help on using the changeset viewer.