1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-03-03 18:25:35 +00:00

add the ability to remove trackers when multiple torrents are selected

This commit is contained in:
Mitchell Livingston 2010-02-13 04:30:47 +00:00
parent 3831b66375
commit 4524029ab4
5 changed files with 39 additions and 11 deletions

View file

@ -761,8 +761,7 @@ typedef enum
- (void) tableViewSelectionDidChange: (NSNotification *) notification
{
if ([notification object] == fTrackerTable)
[fTrackerAddRemoveControl setEnabled: [fTorrents count] == 1 && [fTrackerTable numberOfSelectedRows] > 0
forSegment: TRACKER_REMOVE_TAG];
[fTrackerAddRemoveControl setEnabled: [fTrackerTable numberOfSelectedRows] > 0 forSegment: TRACKER_REMOVE_TAG];
}
- (BOOL) tableView: (NSTableView *) tableView isGroupRow: (NSInteger) row
@ -1794,7 +1793,7 @@ typedef enum
- (void) removeTrackers
{
NSMutableIndexSet * removeIdentifiers = [NSMutableIndexSet indexSet];
NSMutableDictionary * removeIdentifiers = [NSMutableDictionary dictionary];
NSIndexSet * selectedIndexes = [fTrackerTable selectedRowIndexes];
BOOL groupSelected = NO;
@ -1804,7 +1803,17 @@ typedef enum
if ([object isKindOfClass: [TrackerNode class]])
{
if (groupSelected || [selectedIndexes containsIndex: i])
[removeIdentifiers addIndex: [(TrackerNode *)object identifier]];
{
Torrent * torrent = [(TrackerNode *)object torrent];
NSMutableIndexSet * removeIndexSet;
if (!(removeIndexSet = [removeIdentifiers objectForKey: torrent]))
{
removeIndexSet = [NSMutableIndexSet indexSet];
[removeIdentifiers setObject: removeIndexSet forKey: torrent];
}
[removeIndexSet addIndex: [(TrackerNode *)object identifier]];
}
}
else
{
@ -1848,12 +1857,14 @@ typedef enum
return;
}
Torrent * torrent = [fTorrents objectAtIndex: 0];
[torrent removeTrackersWithIdentifiers: removeIdentifiers];
for (Torrent * torrent in removeIdentifiers)
[torrent removeTrackersWithIdentifiers: [removeIdentifiers objectForKey: torrent]];
//reset table with either new or old value
[fTrackers release];
fTrackers = [[torrent allTrackerStats] retain];
fTrackers = [[NSMutableArray alloc] init];
for (Torrent * torrent in fTorrents)
[fTrackers addObjectsFromArray: [torrent allTrackerStats]];
[fTrackerTable setTrackers: fTrackers];
[fTrackerTable reloadData];

View file

@ -29,7 +29,7 @@
@class FileListNode;
#warning uncomment
@interface Torrent : NSObject //<QLPreviewItem>
@interface Torrent : NSObject <NSCopying>//, QLPreviewItem>
{
tr_torrent * fHandle;
const tr_info * fInfo;

View file

@ -197,6 +197,11 @@ int trashDataFile(const char * filename)
return [@"Torrent: " stringByAppendingString: [self name]];
}
- (id) copyWithZone: (NSZone *) zone
{
return [self retain];
}
- (void) closeRemoveTorrent
{
//allow the file to be index by Time Machine
@ -600,7 +605,7 @@ int trashDataFile(const char * filename)
prevTier = stats[i].tier;
}
TrackerNode * tracker = [[TrackerNode alloc] initWithTrackerStat: &stats[i]];
TrackerNode * tracker = [[TrackerNode alloc] initWithTrackerStat: &stats[i] torrent: self];
[trackers addObject: tracker];
[tracker release];
}

View file

@ -25,12 +25,16 @@
#import <Cocoa/Cocoa.h>
#import <transmission.h>
@class Torrent;
@interface TrackerNode : NSObject
{
tr_tracker_stat fStat;
Torrent * fTorrent; //weak reference
}
- (id) initWithTrackerStat: (tr_tracker_stat *) stat;
- (id) initWithTrackerStat: (tr_tracker_stat *) stat torrent: (Torrent *) torrent;
- (NSString *) host;
- (NSString *) fullAnnounceAddress;
@ -39,6 +43,8 @@
- (NSUInteger) identifier;
- (Torrent *) torrent;
- (NSInteger) totalSeeders;
- (NSInteger) totalLeechers;
- (NSInteger) totalDownloaded;

View file

@ -28,11 +28,12 @@
@implementation TrackerNode
- (id) initWithTrackerStat: (tr_tracker_stat *) stat
- (id) initWithTrackerStat: (tr_tracker_stat *) stat torrent: (Torrent *) torrent
{
if ((self = [super init]))
{
fStat = *stat;
fTorrent = torrent;
}
return self;
@ -69,6 +70,11 @@
return fStat.id;
}
- (Torrent *) torrent
{
return fTorrent;
}
- (NSInteger) totalSeeders
{
return fStat.seederCount;