Changeset 3205 for trunk/macosx/Torrent.m
- Timestamp:
- Sep 27, 2007, 8:42:20 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/macosx/Torrent.m
r3202 r3205 158 158 [fIcon release]; 159 159 160 [fProgressString release];161 [fStatusString release];162 [fShortStatusString release];163 [fRemainingTimeString release];164 165 160 [fFileList release]; 166 161 [fFlatFileList release]; … … 272 267 [[NSNotificationCenter defaultCenter] postNotificationName: @"TorrentStoppedForRatio" object: self]; 273 268 } 274 275 NSMutableString * progressString = [[NSMutableString alloc] init],276 * remainingTimeString = [[NSMutableString alloc] init],277 * statusString = [[NSMutableString alloc] init],278 * shortStatusString = [[NSMutableString alloc] init];279 280 if (![self allDownloaded])281 {282 if ([fDefaults boolForKey: @"DisplayStatusProgressSelected"])283 {284 uint64_t have = [self haveTotal];285 [progressString appendFormat: NSLocalizedString(@"%@ of %@ selected (%.2f%%)", "Torrent -> progress string"),286 [NSString stringForFileSize: have], [NSString stringForFileSize: have + fStat->leftUntilDone],287 100.0 * [self progressDone]];288 }289 else290 [progressString appendFormat: NSLocalizedString(@"%@ of %@ (%.2f%%)", "Torrent -> progress string"),291 [NSString stringForFileSize: [self haveTotal]],292 [NSString stringForFileSize: [self size]], 100.0 * [self progress]];293 }294 else if (![self isComplete])295 {296 if ([fDefaults boolForKey: @"DisplayStatusProgressSelected"])297 [progressString appendFormat: NSLocalizedString(@"%@ selected, uploaded %@ (Ratio: %@)",298 "Torrent -> progress string"), [NSString stringForFileSize: [self haveTotal]],299 [NSString stringForFileSize: [self uploadedTotal]], [NSString stringForRatio: [self ratio]]];300 else301 [progressString appendFormat: NSLocalizedString(@"%@ of %@ (%.2f%%), uploaded %@ (Ratio: %@)",302 "Torrent -> progress string"), [NSString stringForFileSize: [self haveTotal]],303 [NSString stringForFileSize: [self size]], 100.0 * [self progress],304 [NSString stringForFileSize: [self uploadedTotal]], [NSString stringForRatio: [self ratio]]];305 }306 else307 [progressString appendFormat: NSLocalizedString(@"%@, uploaded %@ (Ratio: %@)", "Torrent -> progress string"),308 [NSString stringForFileSize: [self size]], [NSString stringForFileSize: [self uploadedTotal]],309 [NSString stringForRatio: [self ratio]]];310 269 311 270 BOOL wasChecking = fChecking; 312 fChecking = NO; 313 switch (fStat->status) 314 { 315 NSString * tempString; 316 317 case TR_STATUS_STOPPED: 318 if (fWaitToStart) 319 { 320 tempString = ![self allDownloaded] 321 ? [NSLocalizedString(@"Waiting to download", "Torrent -> status string") stringByAppendingEllipsis] 322 : [NSLocalizedString(@"Waiting to seed", "Torrent -> status string") stringByAppendingEllipsis]; 323 } 324 else if (fFinishedSeeding) 325 tempString = NSLocalizedString(@"Seeding complete", "Torrent -> status string"); 326 else 327 tempString = NSLocalizedString(@"Paused", "Torrent -> status string"); 328 329 [statusString setString: tempString]; 330 [shortStatusString setString: tempString]; 331 332 break; 333 334 case TR_STATUS_CHECK_WAIT: 335 tempString = [NSLocalizedString(@"Waiting to check existing data", "Torrent -> status string") stringByAppendingEllipsis]; 336 337 [statusString setString: tempString]; 338 [shortStatusString setString: tempString]; 339 [remainingTimeString setString: tempString]; 340 341 fChecking = YES; 342 343 break; 344 345 case TR_STATUS_CHECK: 346 tempString = [NSString stringWithFormat: NSLocalizedString(@"Checking existing data (%.2f%%)", 347 "Torrent -> status string"), 100.0 * fStat->recheckProgress]; 348 349 [statusString setString: tempString]; 350 [shortStatusString setString: tempString]; 351 [remainingTimeString setString: tempString]; 352 353 fChecking = YES; 354 355 break; 356 357 case TR_STATUS_DOWNLOAD: 358 [statusString setString: @""]; 359 if ([self totalPeersConnected] != 1) 360 [statusString appendFormat: NSLocalizedString(@"Downloading from %d of %d peers", 361 "Torrent -> status string"), [self peersSendingToUs], [self totalPeersConnected]]; 362 else 363 [statusString appendFormat: NSLocalizedString(@"Downloading from %d of 1 peer", 364 "Torrent -> status string"), [self peersSendingToUs]]; 365 366 int eta = [self eta]; 367 if (eta < 0) 368 { 369 [remainingTimeString setString: NSLocalizedString(@"Unknown", "Torrent -> remaining time")]; 370 [progressString appendString: NSLocalizedString(@" - remaining time unknown", "Torrent -> progress string")]; 371 } 372 else 373 { 374 if (eta < 60) 375 [remainingTimeString appendFormat: NSLocalizedString(@"%d sec", "Torrent -> remaining time"), eta]; 376 else if (eta < 3600) //60 * 60 377 [remainingTimeString appendFormat: NSLocalizedString(@"%d min %d sec", "Torrent -> remaining time"), 378 eta / 60, eta % 60]; 379 else if (eta < 86400) //24 * 60 * 60 380 [remainingTimeString appendFormat: NSLocalizedString(@"%d hr %d min", "Torrent -> remaining time"), 381 eta / 3600, (eta / 60) % 60]; 382 else 383 { 384 int days = eta / 86400; 385 if (days > 1) 386 [remainingTimeString appendFormat: NSLocalizedString(@"%d days %d hr", "Torrent -> remaining time"), 387 days, (eta / 3600) % 24]; 388 else 389 [remainingTimeString appendFormat: NSLocalizedString(@"1 day %d hr", "Torrent -> remaining time"), 390 (eta / 3600) % 24]; 391 } 392 393 [progressString appendFormat: NSLocalizedString(@" - %@ remaining", "Torrent -> progress string"), 394 remainingTimeString]; 395 } 396 397 break; 398 399 case TR_STATUS_SEED: 400 case TR_STATUS_DONE: 401 [statusString setString: @""]; 402 if ([self totalPeersConnected] != 1) 403 [statusString appendFormat: NSLocalizedString(@"Seeding to %d of %d peers", "Torrent -> status string"), 404 [self peersGettingFromUs], [self totalPeersConnected]]; 405 else 406 [statusString appendFormat: NSLocalizedString(@"Seeding to %d of 1 peer", "Torrent -> status string"), 407 [self peersGettingFromUs]]; 408 409 break; 410 411 case TR_STATUS_STOPPING: 412 tempString = [NSLocalizedString(@"Stopping", "Torrent -> status string") stringByAppendingEllipsis]; 413 414 [statusString setString: tempString]; 415 [shortStatusString setString: tempString]; 416 417 break; 418 } 271 fChecking = fStat->status == TR_STATUS_CHECK || fStat->status == TR_STATUS_CHECK_WAIT; 419 272 420 273 //check for error … … 427 280 && [fDefaults integerForKey: @"StalledMinutes"] < [self stalledMinutes]; 428 281 429 //create strings for error or stalled430 if (fError)431 {432 NSString * errorString = [self errorMessage];433 if (!errorString || [errorString isEqualToString: @""])434 [statusString setString: NSLocalizedString(@"Error", "Torrent -> status string")];435 else436 [statusString setString: [NSLocalizedString(@"Error: ", "Torrent -> status string")437 stringByAppendingString: errorString]];438 }439 else if (fStalled)440 [statusString insertString: NSLocalizedString(@"Stalled, ", "Torrent -> status string") atIndex: 0];441 else;442 443 282 //update queue for checking (from downloading to seeding), stalled, or error 444 283 if ((wasChecking && !fChecking) || (!wasStalled && fStalled) || (!wasError && fError && [self isActive])) 445 284 [[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateQueue" object: self]; 446 447 if ([self isActive] && ![self isChecking])448 {449 NSString * stringToAppend = @"";450 if (![self allDownloaded])451 {452 stringToAppend = [NSString stringWithFormat: NSLocalizedString(@"DL: %@, ", "Torrent -> status string"),453 [NSString stringForSpeed: [self downloadRate]]];454 [shortStatusString setString: @""];455 }456 else457 {458 NSString * ratioString = [NSString stringForRatio: [self ratio]];459 460 [shortStatusString setString: [NSString stringWithFormat: NSLocalizedString(@"Ratio: %@, ",461 "Torrent -> status string"), ratioString]];462 [remainingTimeString setString: [NSLocalizedString(@"Ratio: ", "Torrent -> status string")463 stringByAppendingString: ratioString]];464 }465 466 stringToAppend = [stringToAppend stringByAppendingString: [NSLocalizedString(@"UL: ", "Torrent -> status string")467 stringByAppendingString: [NSString stringForSpeed: [self uploadRate]]]];468 469 [statusString appendFormat: @" - %@", stringToAppend];470 [shortStatusString appendString: stringToAppend];471 }472 473 //retain the strings474 [fProgressString release];475 fProgressString = progressString;476 477 [fStatusString release];478 fStatusString = statusString;479 480 [fShortStatusString release];481 fShortStatusString = shortStatusString;482 483 [fRemainingTimeString release];484 fRemainingTimeString = remainingTimeString;485 285 } 486 286 … … 980 780 } 981 781 982 /*- (float) notAvailableDesired983 { NSLog(@"not available %f", (float)(fStat->desiredSize - fStat->desiredAvailable) / [self size]);782 - (float) notAvailableDesired 783 {//NSLog(@"not available %f", (float)(fStat->desiredSize - fStat->desiredAvailable) / [self size]); 984 784 return (float)(fStat->desiredSize - fStat->desiredAvailable) / [self size]; 985 } */785 } 986 786 987 787 - (BOOL) isActive … … 1080 880 - (NSString *) progressString 1081 881 { 1082 return fProgressString; 882 NSString * string; 883 884 if (![self allDownloaded]) 885 { 886 if ([fDefaults boolForKey: @"DisplayStatusProgressSelected"]) 887 { 888 uint64_t have = [self haveTotal]; 889 string = [NSString stringWithFormat: NSLocalizedString(@"%@ of %@ selected (%.2f%%)", "Torrent -> progress string"), 890 [NSString stringForFileSize: have], [NSString stringForFileSize: have + fStat->leftUntilDone], 891 100.0 * [self progressDone]]; 892 } 893 else 894 string = [NSString stringWithFormat: NSLocalizedString(@"%@ of %@ (%.2f%%)", "Torrent -> progress string"), 895 [NSString stringForFileSize: [self haveTotal]], 896 [NSString stringForFileSize: [self size]], 100.0 * [self progress]]; 897 } 898 else if (![self isComplete]) 899 { 900 if ([fDefaults boolForKey: @"DisplayStatusProgressSelected"]) 901 string = [NSString stringWithFormat: NSLocalizedString(@"%@ selected, uploaded %@ (Ratio: %@)", 902 "Torrent -> progress string"), [NSString stringForFileSize: [self haveTotal]], 903 [NSString stringForFileSize: [self uploadedTotal]], [NSString stringForRatio: [self ratio]]]; 904 else 905 string = [NSString stringWithFormat: NSLocalizedString(@"%@ of %@ (%.2f%%), uploaded %@ (Ratio: %@)", 906 "Torrent -> progress string"), [NSString stringForFileSize: [self haveTotal]], 907 [NSString stringForFileSize: [self size]], 100.0 * [self progress], 908 [NSString stringForFileSize: [self uploadedTotal]], [NSString stringForRatio: [self ratio]]]; 909 } 910 else 911 string = [NSString stringWithFormat: NSLocalizedString(@"%@, uploaded %@ (Ratio: %@)", "Torrent -> progress string"), 912 [NSString stringForFileSize: [self size]], [NSString stringForFileSize: [self uploadedTotal]], 913 [NSString stringForRatio: [self ratio]]]; 914 915 //add time when downloading 916 if (fStat->status == TR_STATUS_DOWNLOAD) 917 { 918 #warning combine 919 int eta = [self eta]; 920 if (eta < 0) 921 string = [string stringByAppendingString: NSLocalizedString(@" - remaining time unknown", "Torrent -> progress string")]; 922 else 923 { 924 NSString * timeString; 925 if (eta < 60) 926 timeString = [NSString stringWithFormat: NSLocalizedString(@"%d sec", "Torrent -> remaining time"), eta]; 927 else if (eta < 3600) //60 * 60 928 timeString = [NSString stringWithFormat: NSLocalizedString(@"%d min %d sec", "Torrent -> remaining time"), 929 eta / 60, eta % 60]; 930 else if (eta < 86400) //24 * 60 * 60 931 timeString = [NSString stringWithFormat: NSLocalizedString(@"%d hr %d min", "Torrent -> remaining time"), 932 eta / 3600, (eta / 60) % 60]; 933 else 934 { 935 int days = eta / 86400; 936 if (days > 1) 937 timeString = [NSString stringWithFormat: NSLocalizedString(@"%d days %d hr", "Torrent -> remaining time"), 938 days, (eta / 3600) % 24]; 939 else 940 timeString = [NSString stringWithFormat: NSLocalizedString(@"1 day %d hr", "Torrent -> remaining time"), 941 (eta / 3600) % 24]; 942 } 943 944 string = [string stringByAppendingFormat: NSLocalizedString(@" - %@ remaining", "Torrent -> progress string"), timeString]; 945 } 946 } 947 948 return string; 1083 949 } 1084 950 1085 951 - (NSString *) statusString 1086 952 { 1087 return fStatusString; 953 NSString * string = @""; 954 955 switch (fStat->status) 956 { 957 case TR_STATUS_STOPPED: 958 if (fWaitToStart) 959 { 960 string = ![self allDownloaded] 961 ? [NSLocalizedString(@"Waiting to download", "Torrent -> status string") stringByAppendingEllipsis] 962 : [NSLocalizedString(@"Waiting to seed", "Torrent -> status string") stringByAppendingEllipsis]; 963 } 964 else if (fFinishedSeeding) 965 string = NSLocalizedString(@"Seeding complete", "Torrent -> status string"); 966 else 967 string = NSLocalizedString(@"Paused", "Torrent -> status string"); 968 969 break; 970 971 case TR_STATUS_CHECK_WAIT: 972 string = [NSLocalizedString(@"Waiting to check existing data", "Torrent -> status string") stringByAppendingEllipsis]; 973 974 break; 975 976 case TR_STATUS_CHECK: 977 string = [NSString stringWithFormat: NSLocalizedString(@"Checking existing data (%.2f%%)", 978 "Torrent -> status string"), 100.0 * fStat->recheckProgress]; 979 980 break; 981 982 case TR_STATUS_DOWNLOAD: 983 if ([self totalPeersConnected] != 1) 984 string = [NSString stringWithFormat: NSLocalizedString(@"Downloading from %d of %d peers", 985 "Torrent -> status string"), [self peersSendingToUs], [self totalPeersConnected]]; 986 else 987 string = [NSString stringWithFormat: NSLocalizedString(@"Downloading from %d of 1 peer", 988 "Torrent -> status string"), [self peersSendingToUs]]; 989 990 break; 991 992 case TR_STATUS_SEED: 993 case TR_STATUS_DONE: 994 if ([self totalPeersConnected] != 1) 995 string = [NSString stringWithFormat: NSLocalizedString(@"Seeding to %d of %d peers", "Torrent -> status string"), 996 [self peersGettingFromUs], [self totalPeersConnected]]; 997 else 998 string = [NSString stringWithFormat: NSLocalizedString(@"Seeding to %d of 1 peer", "Torrent -> status string"), 999 [self peersGettingFromUs]]; 1000 1001 break; 1002 1003 case TR_STATUS_STOPPING: 1004 string = [NSLocalizedString(@"Stopping", "Torrent -> status string") stringByAppendingEllipsis]; 1005 1006 break; 1007 } 1008 1009 //create strings for error or stalled 1010 #warning why fError 1011 if (fError) 1012 { 1013 NSString * errorString = [self errorMessage]; 1014 if (!errorString || [errorString isEqualToString: @""]) 1015 string = NSLocalizedString(@"Error", "Torrent -> status string"); 1016 else 1017 string = [NSLocalizedString(@"Error: ", "Torrent -> status string") stringByAppendingString: errorString]; 1018 } 1019 else if (fStalled) 1020 string = [NSLocalizedString(@"Stalled, ", "Torrent -> status string") stringByAppendingString: string]; 1021 else; 1022 1023 if ([self isActive] && ![self isChecking]) 1024 { 1025 NSString * stringToAppend = @""; 1026 if (![self allDownloaded]) 1027 { 1028 stringToAppend = [NSString stringWithFormat: NSLocalizedString(@"DL: %@, ", "Torrent -> status string"), 1029 [NSString stringForSpeed: [self downloadRate]]]; 1030 } 1031 1032 stringToAppend = [stringToAppend stringByAppendingString: [NSLocalizedString(@"UL: ", "Torrent -> status string") 1033 stringByAppendingString: [NSString stringForSpeed: [self uploadRate]]]]; 1034 1035 string = [string stringByAppendingString: [NSString stringWithFormat: @" - %@", stringToAppend]]; 1036 } 1037 1038 return string; 1088 1039 } 1089 1040 1090 1041 - (NSString *) shortStatusString 1091 1042 { 1092 return fShortStatusString; 1043 NSString * string = @""; 1044 1045 switch (fStat->status) 1046 { 1047 case TR_STATUS_STOPPED: 1048 if (fWaitToStart) 1049 { 1050 string = ![self allDownloaded] 1051 ? [NSLocalizedString(@"Waiting to download", "Torrent -> status string") stringByAppendingEllipsis] 1052 : [NSLocalizedString(@"Waiting to seed", "Torrent -> status string") stringByAppendingEllipsis]; 1053 } 1054 else if (fFinishedSeeding) 1055 string = NSLocalizedString(@"Seeding complete", "Torrent -> status string"); 1056 else 1057 string = NSLocalizedString(@"Paused", "Torrent -> status string"); 1058 1059 break; 1060 1061 case TR_STATUS_CHECK_WAIT: 1062 string = [NSLocalizedString(@"Waiting to check existing data", "Torrent -> status string") stringByAppendingEllipsis]; 1063 1064 break; 1065 1066 case TR_STATUS_CHECK: 1067 string = [NSString stringWithFormat: NSLocalizedString(@"Checking existing data (%.2f%%)", 1068 "Torrent -> status string"), 100.0 * fStat->recheckProgress]; 1069 1070 fChecking = YES; 1071 1072 break; 1073 1074 case TR_STATUS_STOPPING: 1075 string = [NSLocalizedString(@"Stopping", "Torrent -> status string") stringByAppendingEllipsis]; 1076 1077 break; 1078 } 1079 1080 #warning make "default" 1081 if ([self isActive] && ![self isChecking]) 1082 { 1083 NSString * stringToAppend = @""; 1084 if (![self allDownloaded]) 1085 { 1086 stringToAppend = [NSString stringWithFormat: NSLocalizedString(@"DL: %@, ", "Torrent -> status string"), 1087 [NSString stringForSpeed: [self downloadRate]]]; 1088 string = @""; 1089 } 1090 else 1091 { 1092 NSString * ratioString = [NSString stringForRatio: [self ratio]]; 1093 1094 string = [NSString stringWithFormat: NSLocalizedString(@"Ratio: %@, ", "Torrent -> status string"), ratioString]; 1095 } 1096 1097 stringToAppend = [stringToAppend stringByAppendingString: [NSLocalizedString(@"UL: ", "Torrent -> status string") 1098 stringByAppendingString: [NSString stringForSpeed: [self uploadRate]]]]; 1099 1100 string = [string stringByAppendingString: stringToAppend]; 1101 } 1102 1103 return string; 1093 1104 } 1094 1105 1095 1106 - (NSString *) remainingTimeString 1096 1107 { 1097 return fRemainingTimeString; 1108 int eta, days; 1109 1110 NSString * string = @""; 1111 switch (fStat->status) 1112 { 1113 case TR_STATUS_CHECK_WAIT: 1114 string = [NSLocalizedString(@"Waiting to check existing data", "Torrent -> status string") stringByAppendingEllipsis]; 1115 1116 break; 1117 1118 case TR_STATUS_CHECK: 1119 string = [NSString stringWithFormat: NSLocalizedString(@"Checking existing data (%.2f%%)", 1120 "Torrent -> status string"), 100.0 * fStat->recheckProgress]; 1121 1122 break; 1123 1124 case TR_STATUS_DOWNLOAD: 1125 1126 eta = [self eta]; 1127 if (eta < 0) 1128 string = NSLocalizedString(@"Unknown", "Torrent -> remaining time"); 1129 else 1130 { 1131 if (eta < 60) 1132 string = [NSString stringWithFormat: NSLocalizedString(@"%d sec", "Torrent -> remaining time"), eta]; 1133 else if (eta < 3600) //60 * 60 1134 string = [NSString stringWithFormat: NSLocalizedString(@"%d min %d sec", "Torrent -> remaining time"), 1135 eta / 60, eta % 60]; 1136 else if (eta < 86400) //24 * 60 * 60 1137 string = [NSString stringWithFormat: NSLocalizedString(@"%d hr %d min", "Torrent -> remaining time"), 1138 eta / 3600, (eta / 60) % 60]; 1139 else 1140 { 1141 days = eta / 86400; 1142 if (days > 1) 1143 string = [NSString stringWithFormat: NSLocalizedString(@"%d days %d hr", "Torrent -> remaining time"), 1144 days, (eta / 3600) % 24]; 1145 else 1146 string = [NSString stringWithFormat: NSLocalizedString(@"1 day %d hr", "Torrent -> remaining time"), 1147 (eta / 3600) % 24]; 1148 } 1149 } 1150 1151 break; 1152 } 1153 1154 #warning merge 1155 if ([self isActive] && ![self isChecking] && [self allDownloaded]) 1156 string = [NSLocalizedString(@"Ratio: ", "Torrent -> status string") stringByAppendingString: 1157 [NSString stringForRatio: [self ratio]]]; 1158 1159 return string; 1098 1160 } 1099 1161
Note: See TracChangeset
for help on using the changeset viewer.