]> granicus.if.org Git - transmission/commitdiff
handle removing with rpc
authorMitchell Livingston <livings124@transmissionbt.com>
Tue, 27 May 2008 19:05:48 +0000 (19:05 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Tue, 27 May 2008 19:05:48 +0000 (19:05 +0000)
macosx/Controller.h
macosx/Controller.m
macosx/Torrent.h
macosx/Torrent.m
macosx/TorrentCell.m

index 1ad14a7f2a26456fb851b8c1c9dfab0fe17a3e0f..59001c2cfff7cd5fefe8a2a1773db30d41f5c92c 100644 (file)
@@ -151,8 +151,8 @@ typedef enum
         deleteData: (BOOL) deleteData deleteTorrent: (BOOL) deleteData;
 - (void) removeSheetDidEnd: (NSWindow *) sheet returnCode: (int) returnCode
                         contextInfo: (NSDictionary *) dict;
-- (void) confirmRemoveTorrents: (NSArray *) torrents
-        deleteData: (BOOL) deleteData deleteTorrent: (BOOL) deleteTorrent;
+- (void) confirmRemoveTorrents: (NSArray *) torrents deleteData: (BOOL) deleteData deleteTorrent: (BOOL) deleteTorrent
+        fromRPC: (BOOL) rpc;
 - (void) removeNoDelete:                (id) sender;
 - (void) removeDeleteData:              (id) sender;
 - (void) removeDeleteTorrent:           (id) sender;
index a69abcd7843f6001be8c3454f0fca5061cbe82bb..02c79c51d4150810d50ca84e9142d6ebccdadb99 100644 (file)
@@ -1176,7 +1176,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
         }
     }
     
-    [self confirmRemoveTorrents: torrents deleteData: deleteData deleteTorrent: deleteTorrent];
+    [self confirmRemoveTorrents: torrents deleteData: deleteData deleteTorrent: deleteTorrent fromRPC: NO];
 }
 
 - (void) removeSheetDidEnd: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (NSDictionary *) dict
@@ -1184,7 +1184,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
     NSArray * torrents = [dict objectForKey: @"Torrents"];
     if (returnCode == NSAlertDefaultReturn)
         [self confirmRemoveTorrents: torrents deleteData: [[dict objectForKey: @"DeleteData"] boolValue]
-                                                deleteTorrent: [[dict objectForKey: @"DeleteTorrent"] boolValue]];
+                deleteTorrent: [[dict objectForKey: @"DeleteTorrent"] boolValue] fromRPC: NO];
     else
         [torrents release];
     
@@ -1192,6 +1192,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
 }
 
 - (void) confirmRemoveTorrents: (NSArray *) torrents deleteData: (BOOL) deleteData deleteTorrent: (BOOL) deleteTorrent
+        fromRPC: (BOOL) rpc
 {
     //don't want any of these starting then stopping
     NSEnumerator * enumerator = [torrents objectEnumerator];
@@ -1215,7 +1216,10 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
         
         lowestOrderValue = MIN(lowestOrderValue, [torrent orderValue]);
         
-        [torrent closeRemoveTorrent];
+        if (rpc)
+            [torrent closeRemoveTorrentInterface];
+        else
+            [torrent closeRemoveTorrent];
     }
     
     [torrents release];
@@ -4151,10 +4155,10 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
     
     //get the torrent
+    Torrent * torrent;
     if (torrentStruct != NULL && (type != TR_RPC_TORRENT_ADDED && type != TR_RPC_SESSION_CHANGED))
     {
         NSEnumerator * enumerator = [fTorrents objectEnumerator];
-        Torrent * torrent;
         while ((torrent = [enumerator nextObject]))
             if (torrentStruct == [torrent torrentStruct])
                 break;
@@ -4164,6 +4168,8 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
             NSLog(@"No torrent found matching the given torrent struct from the RPC callback!");
             return;
         }
+        
+        [torrent retain];
     }
     
     switch (type)
@@ -4177,6 +4183,7 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
         case TR_RPC_TORRENT_STOPPED:
             break;
         case TR_RPC_TORRENT_REMOVING:
+            [self performSelectorOnMainThread: @selector(rpcRemoveTorrent:) withObject: torrent waitUntilDone: NO];
             break;
         case TR_RPC_TORRENT_CHANGED:
             break;
@@ -4207,4 +4214,10 @@ static void sleepCallback(void * controller, io_service_t y, natural_t messageTy
     [self updateTorrentsInQueue];
 }
 
+- (void) rpcRemoveTorrent: (Torrent *) torrent
+{
+    [self confirmRemoveTorrents: [[NSArray arrayWithObject: torrent] retain] deleteData: NO deleteTorrent: NO fromRPC: YES];
+    [torrent release];
+}
+
 @end
index 8933443ef90026a6f562db2cd1edc847744a5d41..b5847686da30369530737b8f37516ccf7ae87258 100644 (file)
@@ -77,6 +77,7 @@ typedef enum
 
 - (NSDictionary *) history;
 
+- (void) closeRemoveTorrentInterface;
 - (void) closeRemoveTorrent;
 
 - (void) changeIncompleteDownloadFolder: (NSString *) folder;
index e116f3a0373f19c62d120c4173555da713660220..5c1e890a960d290672a735a6c0e286baab9add8f 100644 (file)
@@ -200,10 +200,15 @@ void completenessChangeCallback(tr_torrent * torrent, cp_status_t status, void *
     return [@"Torrent: " stringByAppendingString: [self name]];
 }
 
-- (void) closeRemoveTorrent
+- (void) closeRemoveTorrentInterface
 {
     //allow the file to be index by Time Machine
     [self setTimeMachineExclude: NO forPath: [[self downloadFolder] stringByAppendingPathComponent: [self name]]];
+}
+
+- (void) closeRemoveTorrent
+{
+    [self closeRemoveTorrentInterface];
     
     tr_torrentRemove(fHandle);
 }
index 192efcdfef2ae72c927c3925bbff22dcf756c75c..0c92c405873deda75fe9b1a64efeeebcdc71afb5 100644 (file)
         //border
         NSBezierPath * bp = [NSBezierPath bezierPathWithRoundedRect: groupRect radius: radius];
         [darkGroupColor set];
-        [bp setLineWidth: 1.5];
+        [bp setLineWidth: 2.0];
         [bp stroke];
         
         //inside