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:
parent
3831b66375
commit
4524029ab4
5 changed files with 39 additions and 11 deletions
|
@ -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];
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
@class FileListNode;
|
||||
|
||||
#warning uncomment
|
||||
@interface Torrent : NSObject //<QLPreviewItem>
|
||||
@interface Torrent : NSObject <NSCopying>//, QLPreviewItem>
|
||||
{
|
||||
tr_torrent * fHandle;
|
||||
const tr_info * fInfo;
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue