Changeset 14039 for trunk/macosx/Controller.m
- Timestamp:
- Mar 4, 2013, 4:01:38 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/macosx/Controller.m
r13988 r14039 4744 4744 if (torrentStruct != NULL && (type != TR_RPC_TORRENT_ADDED && type != TR_RPC_SESSION_CHANGED && type != TR_RPC_SESSION_CLOSE)) 4745 4745 { 4746 for (torrent in fTorrents) 4747 if (torrentStruct == [torrent torrentStruct]) 4748 { 4749 [torrent retain]; 4750 break; 4751 } 4752 4753 if (!torrent) 4746 const NSUInteger index = [fTorrents indexOfObjectWithOptions:NSEnumerationConcurrent passingTest: ^BOOL(Torrent * checkTorrent, NSUInteger idx, BOOL * stop) { 4747 return torrentStruct == [checkTorrent torrentStruct]; 4748 }]; 4749 4750 if (index == NSNotFound) 4754 4751 { 4755 4752 NSLog(@"No torrent found matching the given torrent struct from the RPC callback!"); 4756 4753 return; 4757 4754 } 4758 } 4759 4760 switch (type) 4761 { 4762 case TR_RPC_TORRENT_ADDED: 4763 [self performSelectorOnMainThread: @selector(rpcAddTorrentStruct:) withObject: 4764 [[NSValue valueWithPointer: torrentStruct] retain] waitUntilDone: NO]; 4765 break; 4766 4767 case TR_RPC_TORRENT_STARTED: 4768 case TR_RPC_TORRENT_STOPPED: 4769 [self performSelectorOnMainThread: @selector(rpcStartedStoppedTorrent:) withObject: torrent waitUntilDone: NO]; 4770 break; 4771 4772 case TR_RPC_TORRENT_REMOVING: 4773 [self performSelectorOnMainThread: @selector(rpcRemoveTorrent:) withObject: torrent waitUntilDone: NO]; 4774 break; 4775 4776 case TR_RPC_TORRENT_TRASHING: 4777 [self performSelectorOnMainThread: @selector(rpcRemoveTorrentDeleteData:) withObject: torrent waitUntilDone: NO]; 4778 break; 4779 4780 case TR_RPC_TORRENT_CHANGED: 4781 [self performSelectorOnMainThread: @selector(rpcChangedTorrent:) withObject: torrent waitUntilDone: NO]; 4782 break; 4783 4784 case TR_RPC_TORRENT_MOVED: 4785 [self performSelectorOnMainThread: @selector(rpcMovedTorrent:) withObject: torrent waitUntilDone: NO]; 4786 break; 4787 4788 case TR_RPC_SESSION_QUEUE_POSITIONS_CHANGED: 4789 [self performSelectorOnMainThread: @selector(rpcUpdateQueue) withObject: nil waitUntilDone: NO]; 4790 break; 4791 4792 case TR_RPC_SESSION_CHANGED: 4793 [fPrefsController performSelectorOnMainThread: @selector(rpcUpdatePrefs) withObject: nil waitUntilDone: NO]; 4794 break; 4795 4796 case TR_RPC_SESSION_CLOSE: 4797 fQuitRequested = YES; 4798 [NSApp performSelectorOnMainThread: @selector(terminate:) withObject: self waitUntilDone: NO]; 4799 break; 4800 4801 default: 4802 NSAssert1(NO, @"Unknown RPC command received: %d", type); 4803 [torrent release]; 4804 } 4805 } 4806 } 4807 4808 - (void) rpcAddTorrentStruct: (NSValue *) torrentStructPtr 4809 { 4810 tr_torrent * torrentStruct = (tr_torrent *)[torrentStructPtr pointerValue]; 4811 [torrentStructPtr release]; 4812 4755 torrent = [fTorrents objectAtIndex: index]; 4756 } 4757 4758 dispatch_async(dispatch_get_main_queue(), ^{ 4759 switch (type) 4760 { 4761 case TR_RPC_TORRENT_ADDED: 4762 [self rpcAddTorrentStruct: torrentStruct]; 4763 break; 4764 4765 case TR_RPC_TORRENT_STARTED: 4766 case TR_RPC_TORRENT_STOPPED: 4767 [self rpcStartedStoppedTorrent: torrent]; 4768 break; 4769 4770 case TR_RPC_TORRENT_REMOVING: 4771 [self rpcRemoveTorrent: torrent]; 4772 break; 4773 4774 case TR_RPC_TORRENT_TRASHING: 4775 [self rpcRemoveTorrentDeleteData: torrent]; 4776 break; 4777 4778 case TR_RPC_TORRENT_CHANGED: 4779 [self rpcChangedTorrent: torrent]; 4780 break; 4781 4782 case TR_RPC_TORRENT_MOVED: 4783 [self rpcMovedTorrent: torrent]; 4784 break; 4785 4786 case TR_RPC_SESSION_QUEUE_POSITIONS_CHANGED: 4787 [self rpcUpdateQueue]; 4788 break; 4789 4790 case TR_RPC_SESSION_CHANGED: 4791 [fPrefsController rpcUpdatePrefs]; 4792 break; 4793 4794 case TR_RPC_SESSION_CLOSE: 4795 fQuitRequested = YES; 4796 [NSApp terminate: self]; 4797 break; 4798 4799 default: 4800 NSAssert1(NO, @"Unknown RPC command received: %d", type); 4801 } 4802 }); 4803 } 4804 } 4805 4806 - (void) rpcAddTorrentStruct: (struct tr_torrent *) torrentStruct 4807 { 4813 4808 NSString * location = nil; 4814 4809 if (tr_torrentGetDownloadDir(torrentStruct) != NULL) … … 4838 4833 { 4839 4834 [self confirmRemoveTorrents: @[ torrent ] deleteData: NO]; 4840 [torrent release];4841 4835 } 4842 4836 … … 4844 4838 { 4845 4839 [self confirmRemoveTorrents: @[ torrent ] deleteData: YES]; 4846 [torrent release];4847 4840 } 4848 4841 … … 4850 4843 { 4851 4844 [torrent update]; 4852 [torrent release];4853 4845 4854 4846 [self updateUI]; … … 4866 4858 [fInfoController updateOptions]; 4867 4859 } 4868 4869 [torrent release];4870 4860 } 4871 4861 … … 4877 4867 if ([[fTableView selectedTorrents] containsObject: torrent]) 4878 4868 [fInfoController updateInfoStats]; 4879 4880 [torrent release];4881 4869 } 4882 4870 … … 4886 4874 [torrent update]; 4887 4875 4888 NSArray * selectedValues = [fTableView selectedValues];4889 4890 4876 NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey: @"queuePosition" ascending: YES]; 4891 4877 NSArray * descriptors = [NSArray arrayWithObject: descriptor]; 4892 4893 4878 [fTorrents sortUsingDescriptors: descriptors]; 4894 4879 4895 [self fullUpdateUI]; 4896 4897 [fTableView selectValues: selectedValues]; 4880 [self sortTorrents: YES]; 4898 4881 } 4899 4882
Note: See TracChangeset
for help on using the changeset viewer.