]> granicus.if.org Git - transmission/commitdiff
#4109 Recycle: Show a confirmation dialog
authorMitchell Livingston <livings124@transmissionbt.com>
Thu, 17 Mar 2011 01:06:31 +0000 (01:06 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Thu, 17 Mar 2011 01:06:31 +0000 (01:06 +0000)
macosx/Controller.m
macosx/Defaults.plist
macosx/PrefsController.m

index 7ec112aeb546542b5ea20a220b7677299baee5e8..24643b1bb33f16f403279f1fcc1c5d84ebddf60f 100644 (file)
@@ -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;
index 7951ea525245fdf29f2a1fcb11bbfee50926124f..a0b89d00ed7ab69d442597fcadf09e13498bc2c1 100644 (file)
        <true/>
        <key>BindPort</key>
        <integer>51413</integer>
-       <key>BlocklistNew</key>
-       <false/>
        <key>BlocklistAutoUpdate</key>
        <false/>
+       <key>BlocklistNew</key>
+       <false/>
        <key>CheckDownload</key>
        <false/>
        <key>CheckQuit</key>
        <string>Constant</string>
        <key>NatTraversal</key>
        <true/>
-       <key>PEXGlobal</key>
-       <true/>
        <key>PeersTorrent</key>
        <integer>60</integer>
        <key>PeersTotal</key>
        <integer>200</integer>
+       <key>PEXGlobal</key>
+       <true/>
        <key>PiecesBar</key>
        <false/>
        <key>PiecesViewShowAvailability</key>
        <false/>
        <key>RPCAuthorize</key>
        <false/>
-       <key>RPCUseWhitelist</key>
-       <false/>
        <key>RPCPort</key>
        <integer>9091</integer>
        <key>RPCUsername</key>
        <string>admin</string>
+       <key>RPCUseWhitelist</key>
+       <false/>
        <key>RPCWebDiscovery</key>
        <false/>
-       <key>SUEnableAutomaticChecks</key>
-       <true/>
        <key>SeedingSound</key>
        <string>Submarine</string>
        <key>ShowInspector</key>
        <false/>
        <key>SpeedLimitAuto</key>
        <false/>
+       <key>SpeedLimitAutoDay</key>
+       <integer>127</integer>
        <key>SpeedLimitAutoOffDate</key>
        <date>2000-01-01T13:00:00Z</date>
        <key>SpeedLimitAutoOnDate</key>
        <date>2000-01-01T03:00:00Z</date>
-       <key>SpeedLimitAutoDay</key>
-       <integer>127</integer>
        <key>SpeedLimitDownloadLimit</key>
        <integer>10</integer>
        <key>SpeedLimitUploadLimit</key>
        <true/>
        <key>StatusLabel</key>
        <string>RatioTotal</string>
+       <key>SUEnableAutomaticChecks</key>
+       <true/>
        <key>UploadLimit</key>
        <integer>50</integer>
        <key>UseIncompleteDownloadFolder</key>
        <true/>
        <key>WarningRemainingSpace</key>
        <true/>
+       <key>WarningRemoveCompleted</key>
+       <true/>
        <key>WarningRemoveTrackers</key>
        <true/>
        <key>WarningResetStats</key>
index a94db8bfe6d4a8fb2afec3178db1fdefdfa1d404..89f0ae090b13b85d4644ddfc4fb0ac1b6855ce83 100644 (file)
@@ -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"];
 }