getting closer to re-adding "add tracker" functionality

This commit is contained in:
Mitchell Livingston 2009-09-29 03:02:44 +00:00
parent 8296112fae
commit edefc9a10a
7 changed files with 55 additions and 50 deletions

View File

@ -53,7 +53,7 @@
IBOutlet NSTextView * fCommentView;
IBOutlet NSButton * fRevealDataButton;
NSArray * fTrackers;
NSMutableArray * fTrackers;
IBOutlet TrackerTableView * fTrackerTable;
TrackerCell * fTrackerCell;
IBOutlet NSSegmentedControl * fTrackerAddRemoveControl;

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -35,6 +35,8 @@
- (NSString *) host;
- (NSString *) fullAnnounceAddress;
- (NSInteger) tier;
- (NSInteger) totalSeeders;
- (NSInteger) totalLeechers;
- (NSInteger) totalDownloaded;

View File

@ -54,6 +54,11 @@
return [NSString stringWithUTF8String: fStat.announce];
}
- (NSInteger) tier
{
return fStat.tier;
}
- (NSInteger) totalSeeders
{
return fStat.seederCount;

View File

@ -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;