Changeset 4272
- Timestamp:
- 06/09/06 19:37:09 (2 years ago)
- Files:
-
- WiredClient/trunk/English.lproj/ReleaseNotes.rtf (modified) (1 diff)
- WiredClient/trunk/WCTransfer.h (modified) (1 diff)
- WiredClient/trunk/WCTransfer.m (modified) (1 diff)
- WiredClient/trunk/WCTransfers.m (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
WiredClient/trunk/English.lproj/ReleaseNotes.rtf
r4237 r4272 40 40 - Fix a crash when receiving an error while writing to a server\ 41 41 - Fix disabled buttons in private chat topic dialog\ 42 - Fix a queueing problem where a second download transfer would be started when an upload transfer finished\ 42 43 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural 43 44 WiredClient/trunk/WCTransfer.h
r3598 r4272 142 142 - (NSProgressIndicator *)progressIndicator; 143 143 144 - (BOOL)isWorking; 144 145 - (NSString *)status; 145 146 WiredClient/trunk/WCTransfer.m
r3598 r4272 440 440 #pragma mark - 441 441 442 - (BOOL)isWorking { 443 return (_state == WCTransferListing || _state == WCTransferRunning || 444 _state == WCTransferStopping || _state == WCTransferStopped || 445 _state == WCTransferRemoving); 446 } 447 448 449 442 450 - (NSString *)status { 443 451 NSTimeInterval interval; WiredClient/trunk/WCTransfers.m
r4180 r4272 63 63 - (WCTransfer *)_transferWithPath:(NSString *)path; 64 64 - (WCTransfer *)_transferWithState:(WCTransferState)state; 65 - (unsigned int)_unfinishedTransferCount; 65 - (WCTransfer *)_transferWithState:(WCTransferState)state type:(WCTransferType)type; 66 - (unsigned int)_numberOfWorkingTransfersWithType:(WCTransferType)type; 66 67 - (NSString *)_checksumForPath:(NSString *)path; 67 68 69 - (void)_requestNextTransfer; 68 70 - (void)_requestTransfer:(WCTransfer *)transfer; 69 71 - (void)_requestDownload:(WCTransfer *)transfer first:(BOOL)first; … … 266 268 267 269 268 - (unsigned int)_unfinishedTransferCount { 270 - (WCTransfer *)_transferWithState:(WCTransferState)state type:(WCTransferType)type { 271 NSEnumerator *enumerator; 272 WCTransfer *eachTransfer, *transfer = NULL; 273 274 enumerator = [_transfers objectEnumerator]; 275 276 while((eachTransfer = [enumerator nextObject])) { 277 if([eachTransfer state] == state && [eachTransfer type] == type) { 278 transfer = eachTransfer; 279 280 break; 281 } 282 } 283 284 return transfer; 285 } 286 287 288 289 - (unsigned int)_numberOfWorkingTransfersWithType:(WCTransferType)type { 269 290 NSEnumerator *enumerator; 270 291 WCTransfer *transfer; … … 274 295 275 296 while((transfer = [enumerator nextObject])) { 276 if([transfer state] != WCTransferFinished)297 if([transfer type] == type && [transfer isWorking]) 277 298 count++; 278 299 } … … 297 318 298 319 #pragma mark - 320 321 - (void)_requestNextTransfer { 322 WCTransfer *transfer = NULL; 323 unsigned int downloads, uploads; 324 325 if(![WCSettings boolForKey:WCQueueTransfers]) { 326 transfer = [self _transferWithState:WCTransferLocallyQueued]; 327 } else { 328 downloads = [self _numberOfWorkingTransfersWithType:WCTransferDownload]; 329 uploads = [self _numberOfWorkingTransfersWithType:WCTransferUpload]; 330 331 if(downloads == 0 && uploads == 0) 332 transfer = [self _transferWithState:WCTransferLocallyQueued]; 333 else if(downloads == 0) 334 transfer = [self _transferWithState:WCTransferLocallyQueued type:WCTransferDownload]; 335 else if(uploads == 0) 336 transfer = [self _transferWithState:WCTransferLocallyQueued type:WCTransferUpload]; 337 338 } 339 340 if(transfer) 341 [self _requestTransfer:transfer]; 342 } 343 344 299 345 300 346 - (void)_requestTransfer:(WCTransfer *)transfer { … … 401 447 NSDictionary *dictionary; 402 448 NSTimeInterval interval; 403 WCTransfer *nextTransfer;404 449 WCFile *file; 405 450 WCPreview *preview; … … 486 531 } 487 532 488 if(next) { 489 nextTransfer = [self _transferWithState:WCTransferLocallyQueued]; 490 491 if(nextTransfer) 492 [self _requestTransfer:nextTransfer]; 493 } 533 if(next) 534 [self _requestNextTransfer]; 494 535 495 536 [file release]; … … 556 597 [_transfers addObject:transfer]; 557 598 558 count = [self _ unfinishedTransferCount];559 560 if(count == 1)599 count = [self _numberOfWorkingTransfersWithType:WCTransferDownload]; 600 601 if(count == 0) 561 602 [self showWindow:self]; 562 603 563 if(count > 1&& [WCSettings boolForKey:WCQueueTransfers])604 if(count > 0 && [WCSettings boolForKey:WCQueueTransfers]) 564 605 [transfer setState:WCTransferLocallyQueued]; 565 606 else … … 658 699 [_transfers addObject:transfer]; 659 700 660 count = [self _ unfinishedTransferCount];661 662 if(count == 1)701 count = [self _numberOfWorkingTransfersWithType:WCTransferUpload]; 702 703 if(count == 0) 663 704 [self showWindow:self]; 664 705 665 if(count > 1&& [WCSettings boolForKey:WCQueueTransfers])706 if(count > 0 && [WCSettings boolForKey:WCQueueTransfers]) 666 707 [transfer setState:WCTransferLocallyQueued]; 667 708 else … … 1257 1298 NSString *path, *free; 1258 1299 NSArray *fields; 1259 WCTransfer *transfer , *nextTransfer;1300 WCTransfer *transfer; 1260 1301 1261 1302 fields = [[notification userInfo] objectForKey:WCArgumentsKey]; … … 1282 1323 [_transfersTableView reloadData]; 1283 1324 1284 nextTransfer = [self _transferWithState:WCTransferLocallyQueued]; 1285 1286 if(nextTransfer) 1287 [self _requestTransfer:nextTransfer]; 1325 [self _requestNextTransfer]; 1288 1326 } 1289 1327 … … 1322 1360 NSString *path, *free; 1323 1361 NSArray *fields; 1324 WCTransfer *transfer , *nextTransfer;1362 WCTransfer *transfer; 1325 1363 1326 1364 fields = [[notification userInfo] objectForKey:WCArgumentsKey]; … … 1347 1385 [_transfersTableView reloadData]; 1348 1386 1349 nextTransfer = [self _transferWithState:WCTransferLocallyQueued]; 1350 1351 if(nextTransfer) 1352 [self _requestTransfer:nextTransfer]; 1387 [self _requestNextTransfer]; 1353 1388 } 1354 1389
