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"];
}