diff --git a/macosx/Controller.m b/macosx/Controller.m index 7ec112aeb..24643b1bb 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -1233,13 +1233,13 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy if ([fDefaults boolForKey: @"CheckRemove"]) { - NSInteger active = 0, downloading = 0; + NSUInteger active = 0, downloading = 0; for (Torrent * torrent in torrents) if ([torrent isActive]) { - active++; + ++active; if (![torrent isSeeding]) - downloading++; + ++downloading; } if ([fDefaults boolForKey: @"CheckRemoveDownloading"] ? downloading > 0 : active > 0) @@ -1272,19 +1272,19 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy { if (deleteData) title = [NSString stringWithFormat: - NSLocalizedString(@"Are you sure you want to remove %d transfers from the transfer list" - " and trash the data files?", "Removal confirm panel -> title"), selected]; + NSLocalizedString(@"Are you sure you want to remove %@ transfers from the transfer list" + " and trash the data files?", "Removal confirm panel -> title"), [NSString formattedUInteger: selected]]; else title = [NSString stringWithFormat: - NSLocalizedString(@"Are you sure you want to remove %d transfers from the transfer list?", - "Removal confirm panel -> title"), selected]; + NSLocalizedString(@"Are you sure you want to remove %@ transfers from the transfer list?", + "Removal confirm panel -> title"), [NSString formattedUInteger: selected]]; if (selected == active) - message = [NSString stringWithFormat: NSLocalizedString(@"There are %d active transfers.", - "Removal confirm panel -> message part 1"), active]; + message = [NSString stringWithFormat: NSLocalizedString(@"There are %@ active transfers.", + "Removal confirm panel -> message part 1"), [NSString formattedUInteger: active]]; else - message = [NSString stringWithFormat: NSLocalizedString(@"There are %d transfers (%d active).", - "Removal confirm panel -> message part 1"), selected, active]; + message = [NSString stringWithFormat: NSLocalizedString(@"There are %@ transfers (%@ active).", + "Removal confirm panel -> message part 1"), [NSString formattedUInteger: selected], [NSString formattedUInteger: active]]; message = [message stringByAppendingFormat: @" %@", NSLocalizedString(@"Once removed, continuing the transfers will require the torrent files or magnet links.", "Removal confirm panel -> message part 2")]; @@ -1368,6 +1368,43 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy if ([torrent isFinishedSeeding]) [torrents addObject: torrent]; + if ([fDefaults boolForKey: @"WarningRemoveCompleted"]) + { + NSString * message, * info; + if ([torrents count] == 1) + { + NSString * torrentName = [[torrents objectAtIndex: 0] name]; + message = [NSString stringWithFormat: NSLocalizedString(@"Are you sure you want to remove \"%@\" from the transfer list?", + "Remove completed confirm panel -> title"), torrentName]; + + info = NSLocalizedString(@"Once removed, continuing the transfer will require the torrent file or magnet link.", + "Remove completed confirm panel -> message"); + } + else + { + message = [NSString stringWithFormat: NSLocalizedString(@"Are you sure you want to remove %@ completed transfers from the transfer list?", + "Remove completed confirm panel -> title"), [NSString formattedUInteger: [torrents count]]]; + + info = NSLocalizedString(@"Once removed, continuing the transfers will require the torrent files or magnet links.", + "Remove completed confirm panel -> message"); + } + + NSAlert * alert = [[[NSAlert alloc] init] autorelease]; + [alert setMessageText: message]; + [alert setInformativeText: info]; + [alert setAlertStyle: NSWarningAlertStyle]; + [alert addButtonWithTitle: NSLocalizedString(@"Remove", "Remove completed confirm panel -> button")]; + [alert addButtonWithTitle: NSLocalizedString(@"Cancel", "Remove completed confirm panel -> button")]; + [alert setShowsSuppressionButton: YES]; + + const NSInteger returnCode = [alert runModal]; + if ([[alert suppressionButton] state]) + [fDefaults setBool: NO forKey: @"WarningRemoveCompleted"]; + + if (returnCode != NSAlertFirstButtonReturn) + return; + } + [self confirmRemoveTorrents: torrents deleteData: NO]; } @@ -3604,6 +3641,19 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy //remove all completed transfers item if (action == @selector(clearCompleted:)) { + //append or remove ellipsis when needed + NSString * title = [menuItem title], * ellipsis = [NSString ellipsis]; + if ([fDefaults boolForKey: @"WarningRemoveCompleted"]) + { + if (![title hasSuffix: ellipsis]) + [menuItem setTitle: [title stringByAppendingEllipsis]]; + } + else + { + if ([title hasSuffix: ellipsis]) + [menuItem setTitle: [title substringToIndex: [title rangeOfString: ellipsis].location]]; + } + for (Torrent * torrent in fTorrents) if ([torrent isFinishedSeeding]) return YES; diff --git a/macosx/Defaults.plist b/macosx/Defaults.plist index 7951ea525..a0b89d00e 100644 --- a/macosx/Defaults.plist +++ b/macosx/Defaults.plist @@ -16,10 +16,10 @@ BindPort 51413 - BlocklistNew - BlocklistAutoUpdate + BlocklistNew + CheckDownload CheckQuit @@ -98,12 +98,12 @@ Constant NatTraversal - PEXGlobal - PeersTorrent 60 PeersTotal 200 + PEXGlobal + PiecesBar PiecesViewShowAvailability @@ -132,16 +132,14 @@ RPCAuthorize - RPCUseWhitelist - RPCPort 9091 RPCUsername admin + RPCUseWhitelist + RPCWebDiscovery - SUEnableAutomaticChecks - SeedingSound Submarine ShowInspector @@ -160,12 +158,12 @@ SpeedLimitAuto + SpeedLimitAutoDay + 127 SpeedLimitAutoOffDate 2000-01-01T13:00:00Z SpeedLimitAutoOnDate 2000-01-01T03:00:00Z - SpeedLimitAutoDay - 127 SpeedLimitDownloadLimit 10 SpeedLimitUploadLimit @@ -176,6 +174,8 @@ StatusLabel RatioTotal + SUEnableAutomaticChecks + UploadLimit 50 UseIncompleteDownloadFolder @@ -198,6 +198,8 @@ WarningRemainingSpace + WarningRemoveCompleted + WarningRemoveTrackers WarningResetStats diff --git a/macosx/PrefsController.m b/macosx/PrefsController.m index a94db8bfe..89f0ae090 100644 --- a/macosx/PrefsController.m +++ b/macosx/PrefsController.m @@ -727,6 +727,7 @@ tr_session * fHandle; [fDefaults removeObjectForKey: @"WarningCreatorPrivateBlankAddress"]; [fDefaults removeObjectForKey: @"WarningRemoveTrackers"]; [fDefaults removeObjectForKey: @"WarningInvalidOpen"]; + [fDefaults removeObjectForKey: @"WarningRemoveCompleted"]; [fDefaults removeObjectForKey: @"WarningDonate"]; //[fDefaults removeObjectForKey: @"WarningLegal"]; }