mirror of
https://github.com/transmission/transmission
synced 2025-03-15 16:29:34 +00:00
getting closer to re-adding "add tracker" functionality
This commit is contained in:
parent
8296112fae
commit
edefc9a10a
7 changed files with 55 additions and 50 deletions
|
@ -53,7 +53,7 @@
|
|||
IBOutlet NSTextView * fCommentView;
|
||||
IBOutlet NSButton * fRevealDataButton;
|
||||
|
||||
NSArray * fTrackers;
|
||||
NSMutableArray * fTrackers;
|
||||
IBOutlet TrackerTableView * fTrackerTable;
|
||||
TrackerCell * fTrackerCell;
|
||||
IBOutlet NSSegmentedControl * fTrackerAddRemoveControl;
|
||||
|
|
|
@ -90,9 +90,8 @@ typedef enum
|
|||
- (BOOL) canQuickLook;
|
||||
- (BOOL) canQuickLookFile: (FileListNode *) item;
|
||||
|
||||
#warning lookie
|
||||
/*- (void) addTrackers;
|
||||
- (void) removeTrackers;*/
|
||||
- (void) addTrackers;
|
||||
- (void) removeTrackers;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -382,8 +381,8 @@ typedef enum
|
|||
[fTrackers release];
|
||||
fTrackers = nil;
|
||||
|
||||
[fTrackerTable setTrackers: fTrackers];
|
||||
[fTrackerTable reloadData];
|
||||
[fTrackerTable setTrackers: nil];
|
||||
|
||||
[fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_ADD_TAG];
|
||||
[fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_REMOVE_TAG];
|
||||
|
@ -905,8 +904,8 @@ typedef enum
|
|||
{
|
||||
if (tableView == fTrackerTable)
|
||||
{
|
||||
const BOOL group = [[fTrackers objectAtIndex: row] isKindOfClass: [NSNumber class]];
|
||||
return group ? [tableColumn dataCellForRow: row] : fTrackerCell;
|
||||
const BOOL tracker = [[fTrackers objectAtIndex: row] isKindOfClass: [TrackerNode class]];
|
||||
return tracker ? fTrackerCell : [tableColumn dataCellForRow: row];
|
||||
}
|
||||
|
||||
return nil;
|
||||
|
@ -1072,44 +1071,39 @@ typedef enum
|
|||
return nil;
|
||||
}
|
||||
|
||||
#warning fix!
|
||||
#if 0
|
||||
- (void) tableView: (NSTableView *) tableView setObjectValue: (id) object forTableColumn: (NSTableColumn *) tableColumn
|
||||
row: (NSInteger) row
|
||||
{
|
||||
if (tableView != fTrackerTable)
|
||||
return;
|
||||
|
||||
[fTrackers replaceObjectAtIndex: row withObject: object];
|
||||
|
||||
Torrent * torrent= [fTorrents objectAtIndex: 0];
|
||||
if (![torrent updateAllTrackersForAdd: fTrackers])
|
||||
if (![torrent addTrackerToNewTier: object])
|
||||
NSBeep();
|
||||
|
||||
//reset table with either new or old value
|
||||
[fTrackers release];
|
||||
fTrackers = [[torrent allTrackers: YES] retain];
|
||||
[fTrackerTable deselectAll: self];
|
||||
fTrackers = [[torrent allTrackerStats] retain];
|
||||
|
||||
[fTrackerTable setTrackers: fTrackers];
|
||||
[fTrackerTable reloadData];
|
||||
[fTrackerTable deselectAll: self];
|
||||
}
|
||||
#endif
|
||||
|
||||
- (void) addRemoveTracker: (id) sender
|
||||
{
|
||||
/* //don't allow add/remove when currently adding - it leads to weird results
|
||||
//don't allow add/remove when currently adding - it leads to weird results
|
||||
if ([fTrackerTable editedRow] != -1)
|
||||
return;
|
||||
|
||||
if ([[sender cell] tagForSegment: [sender selectedSegment]] == TRACKER_REMOVE_TAG)
|
||||
[self removeTrackers];
|
||||
else
|
||||
[self addTrackers];*/
|
||||
[self addTrackers];
|
||||
}
|
||||
|
||||
#warning what?!
|
||||
- (BOOL) tableView: (NSTableView *) tableView shouldEditTableColumn: (NSTableColumn *) tableColumn row: (NSInteger) row
|
||||
/*- (BOOL) tableView: (NSTableView *) tableView shouldEditTableColumn: (NSTableColumn *) tableColumn row: (NSInteger) row
|
||||
{
|
||||
if (tableView != fTrackerTable)
|
||||
return NO;
|
||||
|
@ -1118,7 +1112,7 @@ typedef enum
|
|||
for (i = row-1; ![[fTrackers objectAtIndex: i] isKindOfClass: [NSNumber class]]; i--);
|
||||
|
||||
return [[fTrackers objectAtIndex: i] intValue] == 0;
|
||||
}
|
||||
}*/
|
||||
|
||||
- (BOOL) acceptsPreviewPanelControl: (QLPreviewPanel *) panel
|
||||
{
|
||||
|
@ -1444,12 +1438,16 @@ typedef enum
|
|||
return;
|
||||
Torrent * torrent = [fTorrents objectAtIndex: 0];
|
||||
|
||||
#warning still update unselected rows
|
||||
//get update tracker stats
|
||||
[fTrackers release];
|
||||
fTrackers = [[torrent allTrackerStats] retain];
|
||||
|
||||
[fTrackerTable setTrackers: fTrackers];
|
||||
[fTrackerTable reloadData];
|
||||
if ([fTrackerTable editedRow] == -1)
|
||||
{
|
||||
[fTrackers release];
|
||||
fTrackers = [[torrent allTrackerStats] retain];
|
||||
|
||||
[fTrackerTable setTrackers: fTrackers];
|
||||
[fTrackerTable reloadData];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) updateInfoPeers
|
||||
|
@ -1678,21 +1676,15 @@ typedef enum
|
|||
return [item isFolder] || [torrent fileProgress: item] == 1.0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
#warning doesn't like blank addresses
|
||||
- (void) addTrackers
|
||||
{
|
||||
[[self window] makeKeyWindow];
|
||||
|
||||
NSUInteger tierCount = 0;
|
||||
for (id trackerObject in fTrackers)
|
||||
if ([trackerObject isKindOfClass: [NSNumber class]])
|
||||
tierCount++;
|
||||
|
||||
[fTrackers addObject: [NSNumber numberWithInt: tierCount+1]];
|
||||
[fTrackers addObject: [NSNumber numberWithInt: [(TrackerNode *)[fTrackers lastObject] tier]+1]];
|
||||
[fTrackers addObject: @""];
|
||||
|
||||
[fTrackerTable setTrackers: fTrackers];
|
||||
[fTrackerTable reloadData];
|
||||
[fTrackerTable selectRowIndexes: [NSIndexSet indexSetWithIndex: [fTrackers count]-1] byExtendingSelection: NO];
|
||||
[fTrackerTable editColumn: [fTrackerTable columnWithIdentifier: @"Tracker"] row: [fTrackers count]-1 withEvent: nil select: YES];
|
||||
|
@ -1782,12 +1774,10 @@ typedef enum
|
|||
|
||||
//reset table with either new or old value
|
||||
[fTrackers release];
|
||||
fTrackers = [[torrent allTrackers: YES] retain];
|
||||
fTrackers = [[torrent allTrackerStats] retain];
|
||||
|
||||
[fTrackerTable setTrackers: fTrackers];
|
||||
[fTrackerTable reloadData];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
|
|
@ -132,10 +132,10 @@
|
|||
- (uint64_t) size;
|
||||
- (uint64_t) sizeLeft;
|
||||
|
||||
- (NSArray *) allTrackerStats;
|
||||
- (NSArray *) allTrackersFlat; //used by GroupRules
|
||||
/*- (BOOL) updateAllTrackersForAdd: (NSMutableArray *) trackers;
|
||||
- (void) updateAllTrackersForRemove: (NSMutableArray *) trackers;*/
|
||||
- (NSMutableArray *) allTrackerStats;
|
||||
- (NSMutableArray *) allTrackersFlat; //used by GroupRules
|
||||
- (BOOL) addTrackerToNewTier: (NSString *) tracker;
|
||||
- (void) updateAllTrackersForRemove: (NSMutableArray *) trackers;
|
||||
|
||||
- (NSString *) comment;
|
||||
- (NSString *) creator;
|
||||
|
|
|
@ -672,7 +672,7 @@ int trashDataFile(const char * filename)
|
|||
return fStat->leftUntilDone;
|
||||
}
|
||||
|
||||
- (NSArray *) allTrackerStats
|
||||
- (NSMutableArray *) allTrackerStats
|
||||
{
|
||||
int count;
|
||||
tr_tracker_stat * stats = tr_torrentTrackers(fHandle, &count);
|
||||
|
@ -697,7 +697,7 @@ int trashDataFile(const char * filename)
|
|||
return trackers;
|
||||
}
|
||||
|
||||
- (NSArray *) allTrackersFlat
|
||||
- (NSMutableArray *) allTrackersFlat
|
||||
{
|
||||
NSMutableArray * allTrackers = [NSMutableArray arrayWithCapacity: fInfo->trackerCount];
|
||||
|
||||
|
@ -707,29 +707,36 @@ int trashDataFile(const char * filename)
|
|||
return allTrackers;
|
||||
}
|
||||
|
||||
/*- (BOOL) updateAllTrackersForAdd: (NSMutableArray *) trackers
|
||||
- (BOOL) addTrackerToNewTier: (NSString *) tracker
|
||||
{
|
||||
NSString * tracker = [trackers lastObject];
|
||||
tracker = [tracker stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
||||
|
||||
if ([tracker rangeOfString: @"://"].location == NSNotFound)
|
||||
{
|
||||
tracker = [@"http://" stringByAppendingString: tracker];
|
||||
[trackers replaceObjectAtIndex: [trackers count]-1 withObject: tracker];
|
||||
}
|
||||
|
||||
if (!tr_httpIsValidURL([tracker UTF8String]))
|
||||
return NO;
|
||||
|
||||
[self updateAllTrackers: trackers];
|
||||
//recreate the tracker structure
|
||||
const int oldTrackerCount = fInfo->trackerCount;
|
||||
tr_tracker_info * trackerStructs = tr_new(tr_tracker_info, oldTrackerCount+1);
|
||||
for (NSInteger i=0; i < oldTrackerCount; ++i)
|
||||
trackerStructs[i] = fInfo->trackers[i];
|
||||
|
||||
trackerStructs[oldTrackerCount].announce = (char *)[tracker UTF8String];
|
||||
trackerStructs[oldTrackerCount].tier = trackerStructs[oldTrackerCount-1].tier + 1;
|
||||
|
||||
tr_torrentSetAnnounceList(fHandle, trackerStructs, oldTrackerCount+1);
|
||||
tr_free(trackerStructs);
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
#warning this doesn't work
|
||||
- (void) updateAllTrackersForRemove: (NSMutableArray *) trackers
|
||||
{
|
||||
[self updateAllTrackers: trackers];
|
||||
}*/
|
||||
}
|
||||
|
||||
- (NSString *) comment
|
||||
{
|
||||
|
@ -1799,6 +1806,7 @@ int trashDataFile(const char * filename)
|
|||
}
|
||||
}
|
||||
|
||||
#warning needs to be removed
|
||||
- (void) updateAllTrackers: (NSMutableArray *) trackers
|
||||
{
|
||||
//get count
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
- (NSString *) host;
|
||||
- (NSString *) fullAnnounceAddress;
|
||||
|
||||
- (NSInteger) tier;
|
||||
|
||||
- (NSInteger) totalSeeders;
|
||||
- (NSInteger) totalLeechers;
|
||||
- (NSInteger) totalDownloaded;
|
||||
|
|
|
@ -54,6 +54,11 @@
|
|||
return [NSString stringWithUTF8String: fStat.announce];
|
||||
}
|
||||
|
||||
- (NSInteger) tier
|
||||
{
|
||||
return fStat.tier;
|
||||
}
|
||||
|
||||
- (NSInteger) totalSeeders
|
||||
{
|
||||
return fStat.seederCount;
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
[addresses addObject: [(TrackerNode *)item fullAnnounceAddress]];
|
||||
}
|
||||
|
||||
NSString * text = [addresses componentsJoinedByString: @"\n"];;
|
||||
NSString * text = [addresses componentsJoinedByString: @"\n"];
|
||||
|
||||
NSPasteboard * pb = [NSPasteboard generalPasteboard];
|
||||
if ([NSApp isOnSnowLeopardOrBetter])
|
||||
|
@ -73,7 +73,7 @@
|
|||
|
||||
- (BOOL) validateMenuItem: (NSMenuItem *) menuItem
|
||||
{
|
||||
SEL action = [menuItem action];
|
||||
const SEL action = [menuItem action];
|
||||
|
||||
if (action == @selector(copy:))
|
||||
return [self numberOfSelectedRows] > 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue