From 4fb7db8348b782b5468faaf124f3d97a2c9f57c5 Mon Sep 17 00:00:00 2001 From: Mitchell Livingston Date: Fri, 14 Sep 2007 13:49:37 +0000 Subject: [PATCH] get inspector ready for encryption --- Transmission.xcodeproj/project.pbxproj | 4 + macosx/Controller.m | 10 +-- .../InfoWindow.nib/keyedobjects.nib | Bin 50305 -> 50639 bytes macosx/Images/Lock.tiff | Bin 0 -> 382 bytes macosx/InfoWindowController.h | 2 +- macosx/InfoWindowController.m | 73 +++++++++++------- macosx/Torrent.m | 2 + 7 files changed, 55 insertions(+), 36 deletions(-) create mode 100644 macosx/Images/Lock.tiff diff --git a/Transmission.xcodeproj/project.pbxproj b/Transmission.xcodeproj/project.pbxproj index ea4a28f6d..7d82330b0 100644 --- a/Transmission.xcodeproj/project.pbxproj +++ b/Transmission.xcodeproj/project.pbxproj @@ -51,6 +51,7 @@ 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; A200B9200A22798F007BBB1E /* InfoWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = A200B83A0A2263BA007BBB1E /* InfoWindowController.m */; }; A200B9B60A22893D007BBB1E /* InfoWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = A200B9620A227FD0007BBB1E /* InfoWindow.nib */; }; + A2041D530C9AC523000ACFFB /* Lock.tiff in Resources */ = {isa = PBXBuildFile; fileRef = A2041D520C9AC523000ACFFB /* Lock.tiff */; }; A2085DDC0C53BC74000BC3B7 /* AboutWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = A2085DDA0C53BC74000BC3B7 /* AboutWindowController.m */; }; A2085E020C53C16F000BC3B7 /* AboutWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = A2085E000C53C16F000BC3B7 /* AboutWindow.nib */; }; A2085E3F0C53C949000BC3B7 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = A2085E2F0C53C833000BC3B7 /* LICENSE */; }; @@ -342,6 +343,7 @@ A200B8390A2263BA007BBB1E /* InfoWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InfoWindowController.h; path = macosx/InfoWindowController.h; sourceTree = ""; }; A200B83A0A2263BA007BBB1E /* InfoWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = InfoWindowController.m; path = macosx/InfoWindowController.m; sourceTree = ""; }; A200B9630A227FD0007BBB1E /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = macosx/English.lproj/InfoWindow.nib; sourceTree = ""; }; + A2041D520C9AC523000ACFFB /* Lock.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Lock.tiff; path = macosx/Images/Lock.tiff; sourceTree = ""; }; A204310F0C5EAF490081E5CC /* Russian */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Russian; path = macosx/Russian.lproj/AboutWindow.nib; sourceTree = ""; }; A20431100C5EAF490081E5CC /* Russian */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = Russian; path = macosx/Russian.lproj/InfoPlist.strings; sourceTree = ""; }; A20431110C5EAF490081E5CC /* Russian */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = Russian; path = macosx/Russian.lproj/InfoWindow.nib; sourceTree = ""; }; @@ -758,6 +760,7 @@ A20B6FAD0C4D9B040034AB1D /* PriorityNormal.png */, A20B6F6A0C4D842B0034AB1D /* PriorityLow.png */, A20B6F820C4D8A610034AB1D /* PriorityHigh.png */, + A2041D520C9AC523000ACFFB /* Lock.tiff */, A2FB06950BFF484A0095564D /* Globe.png */, A261A8250C6A0D68003BAFDA /* Error.png */, A29C8B320ACC6E93000ED9F9 /* YellowDot.tiff */, @@ -1336,6 +1339,7 @@ A277DA0C0C693D9C00DA2CD4 /* ActionOff.png in Resources */, A261A8260C6A0D68003BAFDA /* Error.png in Resources */, A2EF7DEC0C96297400FA9811 /* PurpleDot.png in Resources */, + A2041D530C9AC523000ACFFB /* Lock.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/macosx/Controller.m b/macosx/Controller.m index fa70de3dc..dba7b32e6 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -92,10 +92,9 @@ #define FORUM_URL @"http://transmission.m0k.org/forum/" #define DONATE_URL @"http://transmission.m0k.org/donate.php" -static void sleepCallBack(void * controller, io_service_t y, natural_t messageType, void * messageArgument) +void sleepCallBack(void * controller, io_service_t y, natural_t messageType, void * messageArgument) { - Controller * c = controller; - [c sleepCallBack: messageType argument: messageArgument]; + [(Controller *)controller sleepCallBack: messageType argument: messageArgument]; } @implementation Controller @@ -302,11 +301,11 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy //register for sleep notifications IONotificationPortRef notify; io_object_t iterator; - if (fRootPort = IORegisterForSystemPower(self, & notify, sleepCallBack, & iterator)) + if ((fRootPort = IORegisterForSystemPower(self, & notify, sleepCallBack, & iterator)) != 0) CFRunLoopAddSource(CFRunLoopGetCurrent(), IONotificationPortGetRunLoopSource(notify), kCFRunLoopCommonModes); else NSLog(@"Could not IORegisterForSystemPower"); - + //load previous transfers NSArray * history = [[NSArray alloc] initWithContentsOfFile: [[self applicationSupportFolder] stringByAppendingPathComponent: @"Transfers.plist"]]; @@ -3083,7 +3082,6 @@ static void sleepCallBack(void * controller, io_service_t y, natural_t messageTy break; case kIOMessageCanSystemSleep: - allowSleep = YES; if ([fDefaults boolForKey: @"SleepPrevent"]) { diff --git a/macosx/English.lproj/InfoWindow.nib/keyedobjects.nib b/macosx/English.lproj/InfoWindow.nib/keyedobjects.nib index dee2d1cca7658263c361a97e1ecfcaad9bdedc8f..c63b4cfe8aa8892eb009cb1407c29abe4163315f 100644 GIT binary patch delta 26898 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 GSN;pWx}2&2 delta 26502 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 literal 0 HcmV?d00001 diff --git a/macosx/InfoWindowController.h b/macosx/InfoWindowController.h index a70d0f981..fb8fae468 100644 --- a/macosx/InfoWindowController.h +++ b/macosx/InfoWindowController.h @@ -31,7 +31,7 @@ @interface InfoWindowController : NSWindowController { NSArray * fTorrents, * fPeers, * fFiles; - NSImage * fAppIcon, * fDotGreen, * fDotRed; + NSImage * fAppIcon, * fDotGreen, * fDotRed, * fLockImage; BOOL fCanResizeVertical; diff --git a/macosx/InfoWindowController.m b/macosx/InfoWindowController.m index 553ac6925..059e0b44b 100644 --- a/macosx/InfoWindowController.m +++ b/macosx/InfoWindowController.m @@ -808,6 +808,17 @@ if ([ident isEqualToString: @"Connected"]) return [[peer objectForKey: @"Connected"] boolValue] ? fDotGreen : fDotRed; + else if ([ident isEqualToString: @"Encryption"]) + { + /*if ([[peer objectForKey: @"Encryption"] boolValue]) + { + if (!fLockImage) + fLockImage = [NSImage imageNamed: @"Lock.tiff"]; + return fLockImage; + } + else*/ + return nil; + } else if ([ident isEqualToString: @"Client"]) return [peer objectForKey: @"Client"]; else if ([ident isEqualToString: @"Progress"]) @@ -862,10 +873,11 @@ if (tableView == fPeerTable) { NSDictionary * peer = [fPeers objectAtIndex: row]; + BOOL connected = [[peer objectForKey: @"Connected"] boolValue]; - NSMutableArray * components = [NSMutableArray arrayWithCapacity: 3]; + NSMutableArray * components = [NSMutableArray arrayWithCapacity: connected ? 4 : 2]; - if ([[peer objectForKey: @"Connected"] boolValue]) + if (connected) [components addObject: [NSString stringWithFormat: NSLocalizedString(@"Progress: %.1f%%", "Inspector -> Peers tab -> table row tooltip"), [[peer objectForKey: @"Progress"] floatValue] * 100.0]]; @@ -887,11 +899,41 @@ else [components addObject: NSLocalizedString(@"From: tracker", "Inspector -> Peers tab -> table row tooltip")]; + /*if (connected && [[peer objectForKey: @"Encryption"] boolValue]) + [components addObject: @"Encrypted Connection"];*/ + return [components componentsJoinedByString: @"\n"]; } return nil; } +- (NSArray *) peerSortDescriptors +{ + NSMutableArray * descriptors = [NSMutableArray array]; + + NSArray * oldDescriptors = [fPeerTable sortDescriptors]; + BOOL useSecond = YES, asc = YES; + if ([oldDescriptors count] > 0) + { + NSSortDescriptor * descriptor = [oldDescriptors objectAtIndex: 0]; + [descriptors addObject: descriptor]; + + if ((useSecond = ![[descriptor key] isEqualToString: @"IP"])) + asc = [descriptor ascending]; + } + + //sort by IP after primary sort + if (useSecond) + { + NSSortDescriptor * secondDescriptor = [[NSSortDescriptor alloc] initWithKey: @"IP" ascending: asc + selector: @selector(compareIP:)]; + [descriptors addObject: secondDescriptor]; + [secondDescriptor release]; + } + + return descriptors; +} + - (int) outlineView: (NSOutlineView *) outlineView numberOfChildrenOfItem: (id) item { if (!item) @@ -1002,33 +1044,6 @@ ? event : nil]; } -- (NSArray *) peerSortDescriptors -{ - NSMutableArray * descriptors = [NSMutableArray array]; - - NSArray * oldDescriptors = [fPeerTable sortDescriptors]; - BOOL useSecond = YES, asc = YES; - if ([oldDescriptors count] > 0) - { - NSSortDescriptor * descriptor = [oldDescriptors objectAtIndex: 0]; - [descriptors addObject: descriptor]; - - if ((useSecond = ![[descriptor key] isEqualToString: @"IP"])) - asc = [descriptor ascending]; - } - - //sort by IP after primary sort - if (useSecond) - { - NSSortDescriptor * secondDescriptor = [[NSSortDescriptor alloc] initWithKey: @"IP" ascending: asc - selector: @selector(compareIP:)]; - [descriptors addObject: secondDescriptor]; - [secondDescriptor release]; - } - - return descriptors; -} - - (void) setPiecesView: (id) sender { [self setPiecesViewForAvailable: [sender selectedSegment] == PIECES_CONTROL_AVAILABLE]; diff --git a/macosx/Torrent.m b/macosx/Torrent.m index 55847bb7f..feb8387b5 100644 --- a/macosx/Torrent.m +++ b/macosx/Torrent.m @@ -1039,6 +1039,8 @@ static int static_lastid = 0; if (peer->isUploading) [dic setObject: [NSNumber numberWithFloat: peer->downloadFromRate] forKey: @"DL From Rate"]; + //[dic setObject: [NSNumber numberWithBool: peer->isEncrypted] forKey: @"Encryption"]; + [dic setObject: [NSString stringWithCString: (char *) peer->client encoding: NSUTF8StringEncoding] forKey: @"Client"]; } else