* Prevent timeouts in low bandwidth situations when upload size > 128KB
* Ignore first 128KB of upload progress in upload progress delegates, to prevent erroneous reporting of progress * Remove silly debug code that broke accurate progress on iPhone
Showing
13 changed files
with
255 additions
and
47 deletions
| @@ -10,7 +10,11 @@ | @@ -10,7 +10,11 @@ | ||
| 10 | // Portions are based on the ImageClient example from Apple: | 10 | // Portions are based on the ImageClient example from Apple: |
| 11 | // See: http://developer.apple.com/samplecode/ImageClient/listing37.html | 11 | // See: http://developer.apple.com/samplecode/ImageClient/listing37.html |
| 12 | 12 | ||
| 13 | -#import <CFNetwork/CFNetwork.h> | 13 | + |
| 14 | +// Dammit, importing frameworks when you are targetting two platforms is a PITA | ||
| 15 | +#if TARGET_OS_IPHONE | ||
| 16 | + #import <CFNetwork/CFNetwork.h> | ||
| 17 | +#endif | ||
| 14 | 18 | ||
| 15 | typedef enum _ASINetworkErrorType { | 19 | typedef enum _ASINetworkErrorType { |
| 16 | ASIConnectionFailureErrorType = 1, | 20 | ASIConnectionFailureErrorType = 1, |
| @@ -160,6 +164,8 @@ typedef enum _ASINetworkErrorType { | @@ -160,6 +164,8 @@ typedef enum _ASINetworkErrorType { | ||
| 160 | 164 | ||
| 161 | // Prevents the body of the post being built more than once (largely for subclasses) | 165 | // Prevents the body of the post being built more than once (largely for subclasses) |
| 162 | BOOL haveBuiltPostBody; | 166 | BOOL haveBuiltPostBody; |
| 167 | + | ||
| 168 | + unsigned long long uploadBufferSize; | ||
| 163 | } | 169 | } |
| 164 | 170 | ||
| 165 | #pragma mark init / dealloc | 171 | #pragma mark init / dealloc |
| @@ -298,4 +304,5 @@ typedef enum _ASINetworkErrorType { | @@ -298,4 +304,5 @@ typedef enum _ASINetworkErrorType { | ||
| 298 | @property (retain) ASIHTTPRequest *mainRequest; | 304 | @property (retain) ASIHTTPRequest *mainRequest; |
| 299 | @property (assign) BOOL showAccurateProgress; | 305 | @property (assign) BOOL showAccurateProgress; |
| 300 | @property (assign,readonly) unsigned long long totalBytesRead; | 306 | @property (assign,readonly) unsigned long long totalBytesRead; |
| 307 | +@property (assign) unsigned long long uploadBufferSize; | ||
| 301 | @end | 308 | @end |
| @@ -71,6 +71,7 @@ static NSError *ASIUnableToCreateRequestError; | @@ -71,6 +71,7 @@ static NSError *ASIUnableToCreateRequestError; | ||
| 71 | requestAuthentication = NULL; | 71 | requestAuthentication = NULL; |
| 72 | haveBuiltPostBody = NO; | 72 | haveBuiltPostBody = NO; |
| 73 | request = NULL; | 73 | request = NULL; |
| 74 | + [self setUploadBufferSize:0]; | ||
| 74 | [self setResponseHeaders:nil]; | 75 | [self setResponseHeaders:nil]; |
| 75 | [self setTimeOutSeconds:10]; | 76 | [self setTimeOutSeconds:10]; |
| 76 | [self setUseKeychainPersistance:NO]; | 77 | [self setUseKeychainPersistance:NO]; |
| @@ -184,6 +185,11 @@ static NSError *ASIUnableToCreateRequestError; | @@ -184,6 +185,11 @@ static NSError *ASIUnableToCreateRequestError; | ||
| 184 | 185 | ||
| 185 | complete = NO; | 186 | complete = NO; |
| 186 | 187 | ||
| 188 | + if (!url) { | ||
| 189 | + [self failWithError:ASIUnableToCreateRequestError]; | ||
| 190 | + return; | ||
| 191 | + } | ||
| 192 | + | ||
| 187 | // Create a new HTTP request. | 193 | // Create a new HTTP request. |
| 188 | request = CFHTTPMessageCreateRequest(kCFAllocatorDefault, (CFStringRef)requestMethod, (CFURLRef)url, kCFHTTPVersion1_1); | 194 | request = CFHTTPMessageCreateRequest(kCFAllocatorDefault, (CFStringRef)requestMethod, (CFURLRef)url, kCFHTTPVersion1_1); |
| 189 | if (!request) { | 195 | if (!request) { |
| @@ -346,8 +352,12 @@ static NSError *ASIUnableToCreateRequestError; | @@ -346,8 +352,12 @@ static NSError *ASIUnableToCreateRequestError; | ||
| 346 | NSDate *now = [NSDate date]; | 352 | NSDate *now = [NSDate date]; |
| 347 | 353 | ||
| 348 | // See if we need to timeout | 354 | // See if we need to timeout |
| 349 | - if (lastActivityTime && timeOutSeconds > 0) { | 355 | + if (lastActivityTime && timeOutSeconds > 0 && [now timeIntervalSinceDate:lastActivityTime] > timeOutSeconds) { |
| 350 | - if ([now timeIntervalSinceDate:lastActivityTime] > timeOutSeconds) { | 356 | + |
| 357 | + // Prevent timeouts before 128KB has been sent when the size of data to upload is greater than 128KB | ||
| 358 | + // This is to workaround the fact that kCFStreamPropertyHTTPRequestBytesWrittenCount is the amount written to the buffer, not the amount actually sent | ||
| 359 | + // This workaround prevents erroneous timeouts in low bandwidth situations (eg iPhone) | ||
| 360 | + if (contentLength <= uploadBufferSize || (uploadBufferSize > 0 && lastBytesSent > uploadBufferSize)) { | ||
| 351 | [self failWithError:ASIRequestTimedOutError]; | 361 | [self failWithError:ASIRequestTimedOutError]; |
| 352 | [self cancelLoad]; | 362 | [self cancelLoad]; |
| 353 | complete = YES; | 363 | complete = YES; |
| @@ -474,6 +484,25 @@ static NSError *ASIUnableToCreateRequestError; | @@ -474,6 +484,25 @@ static NSError *ASIUnableToCreateRequestError; | ||
| 474 | return; | 484 | return; |
| 475 | } | 485 | } |
| 476 | unsigned long long byteCount = [[(NSNumber *)CFReadStreamCopyProperty (readStream, kCFStreamPropertyHTTPRequestBytesWrittenCount) autorelease] unsignedLongLongValue]; | 486 | unsigned long long byteCount = [[(NSNumber *)CFReadStreamCopyProperty (readStream, kCFStreamPropertyHTTPRequestBytesWrittenCount) autorelease] unsignedLongLongValue]; |
| 487 | + | ||
| 488 | + // If this is the first time we've written to the buffer, byteCount will be the size of the buffer (currently seems to be 128KB on both Mac and iPhone) | ||
| 489 | + // We will remove this from any progress display, as kCFStreamPropertyHTTPRequestBytesWrittenCount does not tell us how much data has actually be written | ||
| 490 | + if (byteCount > 0 && uploadBufferSize == 0 && byteCount != postLength) { | ||
| 491 | + [self setUploadBufferSize:byteCount]; | ||
| 492 | + SEL selector = @selector(setUploadBufferSize:); | ||
| 493 | + if ([uploadProgressDelegate respondsToSelector:selector]) { | ||
| 494 | + NSMethodSignature *signature = nil; | ||
| 495 | + signature = [[uploadProgressDelegate class] instanceMethodSignatureForSelector:selector]; | ||
| 496 | + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; | ||
| 497 | + [invocation setTarget:uploadProgressDelegate]; | ||
| 498 | + [invocation setSelector:selector]; | ||
| 499 | + [invocation setArgument:&byteCount atIndex:2]; | ||
| 500 | + [invocation invoke]; | ||
| 501 | + } | ||
| 502 | + } | ||
| 503 | + | ||
| 504 | + | ||
| 505 | + | ||
| 477 | [cancelledLock unlock]; | 506 | [cancelledLock unlock]; |
| 478 | if (byteCount > lastBytesSent) { | 507 | if (byteCount > lastBytesSent) { |
| 479 | [self setLastActivityTime:[NSDate date]]; | 508 | [self setLastActivityTime:[NSDate date]]; |
| @@ -485,7 +514,13 @@ static NSError *ASIUnableToCreateRequestError; | @@ -485,7 +514,13 @@ static NSError *ASIUnableToCreateRequestError; | ||
| 485 | if ([uploadProgressDelegate respondsToSelector:@selector(incrementUploadProgressBy:)]) { | 514 | if ([uploadProgressDelegate respondsToSelector:@selector(incrementUploadProgressBy:)]) { |
| 486 | unsigned long long value = 0; | 515 | unsigned long long value = 0; |
| 487 | if (showAccurateProgress) { | 516 | if (showAccurateProgress) { |
| 488 | - value = byteCount-lastBytesSent; | 517 | + if (byteCount == postLength) { |
| 518 | + value = byteCount+uploadBufferSize; | ||
| 519 | + } else if (lastBytesSent > 0) { | ||
| 520 | + value = ((byteCount-uploadBufferSize)-(lastBytesSent-uploadBufferSize)); | ||
| 521 | + } else { | ||
| 522 | + value = 0; | ||
| 523 | + } | ||
| 489 | } else { | 524 | } else { |
| 490 | value = 1; | 525 | value = 1; |
| 491 | updatedProgress = YES; | 526 | updatedProgress = YES; |
| @@ -501,7 +536,7 @@ static NSError *ASIUnableToCreateRequestError; | @@ -501,7 +536,7 @@ static NSError *ASIUnableToCreateRequestError; | ||
| 501 | 536 | ||
| 502 | // We aren't using a queue, we should just set progress of the indicator | 537 | // We aren't using a queue, we should just set progress of the indicator |
| 503 | } else { | 538 | } else { |
| 504 | - [ASIHTTPRequest setProgress:(double)(1.0*byteCount/postLength) forProgressIndicator:uploadProgressDelegate]; | 539 | + [ASIHTTPRequest setProgress:(double)(1.0*(byteCount-uploadBufferSize)/(postLength-uploadBufferSize)) forProgressIndicator:uploadProgressDelegate]; |
| 505 | } | 540 | } |
| 506 | 541 | ||
| 507 | } | 542 | } |
| @@ -614,7 +649,6 @@ static NSError *ASIUnableToCreateRequestError; | @@ -614,7 +649,6 @@ static NSError *ASIUnableToCreateRequestError; | ||
| 614 | [invocation setSelector:selector]; | 649 | [invocation setSelector:selector]; |
| 615 | float progressFloat = (float)progress; // UIProgressView wants a float for the progress parameter | 650 | float progressFloat = (float)progress; // UIProgressView wants a float for the progress parameter |
| 616 | [invocation setArgument:&progressFloat atIndex:2]; | 651 | [invocation setArgument:&progressFloat atIndex:2]; |
| 617 | - [invocation invokeWithTarget:indicator]; | ||
| 618 | 652 | ||
| 619 | // If we're running in the main thread, update the progress straight away. Otherwise, it's not that urgent | 653 | // If we're running in the main thread, update the progress straight away. Otherwise, it's not that urgent |
| 620 | [invocation performSelectorOnMainThread:@selector(invokeWithTarget:) withObject:indicator waitUntilDone:[NSThread isMainThread]]; | 654 | [invocation performSelectorOnMainThread:@selector(invokeWithTarget:) withObject:indicator waitUntilDone:[NSThread isMainThread]]; |
| @@ -1146,4 +1180,5 @@ static NSError *ASIUnableToCreateRequestError; | @@ -1146,4 +1180,5 @@ static NSError *ASIUnableToCreateRequestError; | ||
| 1146 | @synthesize totalBytesRead; | 1180 | @synthesize totalBytesRead; |
| 1147 | @synthesize showAccurateProgress; | 1181 | @synthesize showAccurateProgress; |
| 1148 | @synthesize totalBytesRead; | 1182 | @synthesize totalBytesRead; |
| 1183 | +@synthesize uploadBufferSize; | ||
| 1149 | @end | 1184 | @end |
| @@ -74,6 +74,11 @@ | @@ -74,6 +74,11 @@ | ||
| 74 | // Called during a request when authorisation fails to cancel any progress so far | 74 | // Called during a request when authorisation fails to cancel any progress so far |
| 75 | - (void)decrementUploadProgressBy:(unsigned long long)bytes; | 75 | - (void)decrementUploadProgressBy:(unsigned long long)bytes; |
| 76 | 76 | ||
| 77 | +// Called when the first chunk of data is written to the upload buffer | ||
| 78 | +// We ignore the first part chunk when tracking upload progress, as kCFStreamPropertyHTTPRequestBytesWrittenCount reports the amount of data written to the buffer, not the amount sent | ||
| 79 | +// This is to workaround the first 128KB of data appearing in an upload progress delegate immediately | ||
| 80 | +- (void)setUploadBufferSize:(unsigned long long)bytes; | ||
| 81 | + | ||
| 77 | // All ASINetworkQueues are paused when created so that total size can be calculated before the queue starts | 82 | // All ASINetworkQueues are paused when created so that total size can be calculated before the queue starts |
| 78 | // This method will start the queue | 83 | // This method will start the queue |
| 79 | - (void)go; | 84 | - (void)go; |
| @@ -193,6 +193,16 @@ | @@ -193,6 +193,16 @@ | ||
| 193 | } | 193 | } |
| 194 | } | 194 | } |
| 195 | 195 | ||
| 196 | + | ||
| 197 | +- (void)setUploadBufferSize:(unsigned long long)bytes | ||
| 198 | +{ | ||
| 199 | + if (!uploadProgressDelegate) { | ||
| 200 | + return; | ||
| 201 | + } | ||
| 202 | + uploadProgressTotalBytes -= bytes; | ||
| 203 | + [self incrementUploadProgressBy:0]; | ||
| 204 | +} | ||
| 205 | + | ||
| 196 | - (void)incrementUploadSizeBy:(unsigned long long)bytes | 206 | - (void)incrementUploadSizeBy:(unsigned long long)bytes |
| 197 | { | 207 | { |
| 198 | if (!uploadProgressDelegate) { | 208 | if (!uploadProgressDelegate) { |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | -<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.02"> | 2 | +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> |
| 3 | <data> | 3 | <data> |
| 4 | <int key="IBDocument.SystemTarget">1050</int> | 4 | <int key="IBDocument.SystemTarget">1050</int> |
| 5 | - <string key="IBDocument.SystemVersion">9F33</string> | 5 | + <string key="IBDocument.SystemVersion">9G55</string> |
| 6 | - <string key="IBDocument.InterfaceBuilderVersion">672</string> | 6 | + <string key="IBDocument.InterfaceBuilderVersion">677</string> |
| 7 | - <string key="IBDocument.AppKitVersion">949.34</string> | 7 | + <string key="IBDocument.AppKitVersion">949.43</string> |
| 8 | - <string key="IBDocument.HIToolboxVersion">352.00</string> | 8 | + <string key="IBDocument.HIToolboxVersion">353.00</string> |
| 9 | <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> | 9 | <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> |
| 10 | <bool key="EncodedWithXMLCoder">YES</bool> | 10 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 11 | - <integer value="440"/> | 11 | + <integer value="444"/> |
| 12 | </object> | 12 | </object> |
| 13 | <object class="NSArray" key="IBDocument.PluginDependencies"> | 13 | <object class="NSArray" key="IBDocument.PluginDependencies"> |
| 14 | <bool key="EncodedWithXMLCoder">YES</bool> | 14 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 15 | <string>com.apple.InterfaceBuilderKit</string> | 15 | <string>com.apple.InterfaceBuilderKit</string> |
| 16 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | 16 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> |
| 17 | </object> | 17 | </object> |
| 18 | + <object class="NSMutableDictionary" key="IBDocument.Metadata"> | ||
| 19 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 20 | + <object class="NSArray" key="dict.sortedKeys"> | ||
| 21 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 22 | + </object> | ||
| 23 | + <object class="NSMutableArray" key="dict.values"> | ||
| 24 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 25 | + </object> | ||
| 26 | + </object> | ||
| 18 | <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> | 27 | <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> |
| 19 | <bool key="EncodedWithXMLCoder">YES</bool> | 28 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 20 | <object class="NSCustomObject" id="1021"> | 29 | <object class="NSCustomObject" id="1021"> |
| @@ -1055,7 +1064,7 @@ cmVhZC4</string> | @@ -1055,7 +1064,7 @@ cmVhZC4</string> | ||
| 1055 | <object class="NSTabViewItem" id="725395930"> | 1064 | <object class="NSTabViewItem" id="725395930"> |
| 1056 | <string key="NSIdentifier">Item 2</string> | 1065 | <string key="NSIdentifier">Item 2</string> |
| 1057 | <object class="NSView" key="NSView" id="624078948"> | 1066 | <object class="NSView" key="NSView" id="624078948"> |
| 1058 | - <reference key="NSNextResponder" ref="495298985"/> | 1067 | + <nil key="NSNextResponder"/> |
| 1059 | <int key="NSvFlags">256</int> | 1068 | <int key="NSvFlags">256</int> |
| 1060 | <object class="NSMutableArray" key="NSSubviews"> | 1069 | <object class="NSMutableArray" key="NSSubviews"> |
| 1061 | <bool key="EncodedWithXMLCoder">YES</bool> | 1070 | <bool key="EncodedWithXMLCoder">YES</bool> |
| @@ -1208,7 +1217,6 @@ cmVhZC4</string> | @@ -1208,7 +1217,6 @@ cmVhZC4</string> | ||
| 1208 | </object> | 1217 | </object> |
| 1209 | </object> | 1218 | </object> |
| 1210 | <string key="NSFrame">{{10, 33}, {441, 243}}</string> | 1219 | <string key="NSFrame">{{10, 33}, {441, 243}}</string> |
| 1211 | - <reference key="NSSuperview" ref="495298985"/> | ||
| 1212 | </object> | 1220 | </object> |
| 1213 | <string key="NSLabel">Queue</string> | 1221 | <string key="NSLabel">Queue</string> |
| 1214 | <reference key="NSColor" ref="482475293"/> | 1222 | <reference key="NSColor" ref="482475293"/> |
| @@ -1323,7 +1331,7 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | @@ -1323,7 +1331,7 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | ||
| 1323 | <object class="NSTabViewItem" id="409502867"> | 1331 | <object class="NSTabViewItem" id="409502867"> |
| 1324 | <string key="NSIdentifier">Item 4</string> | 1332 | <string key="NSIdentifier">Item 4</string> |
| 1325 | <object class="NSView" key="NSView" id="408528501"> | 1333 | <object class="NSView" key="NSView" id="408528501"> |
| 1326 | - <nil key="NSNextResponder"/> | 1334 | + <reference key="NSNextResponder" ref="495298985"/> |
| 1327 | <int key="NSvFlags">256</int> | 1335 | <int key="NSvFlags">256</int> |
| 1328 | <object class="NSMutableArray" key="NSSubviews"> | 1336 | <object class="NSMutableArray" key="NSSubviews"> |
| 1329 | <bool key="EncodedWithXMLCoder">YES</bool> | 1337 | <bool key="EncodedWithXMLCoder">YES</bool> |
| @@ -1365,20 +1373,21 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | @@ -1365,20 +1373,21 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | ||
| 1365 | </object> | 1373 | </object> |
| 1366 | </object> | 1374 | </object> |
| 1367 | <string key="NSFrame">{{10, 33}, {441, 243}}</string> | 1375 | <string key="NSFrame">{{10, 33}, {441, 243}}</string> |
| 1376 | + <reference key="NSSuperview" ref="495298985"/> | ||
| 1368 | </object> | 1377 | </object> |
| 1369 | <string key="NSLabel">Upload</string> | 1378 | <string key="NSLabel">Upload</string> |
| 1370 | <reference key="NSColor" ref="482475293"/> | 1379 | <reference key="NSColor" ref="482475293"/> |
| 1371 | <reference key="NSTabView" ref="495298985"/> | 1380 | <reference key="NSTabView" ref="495298985"/> |
| 1372 | </object> | 1381 | </object> |
| 1373 | </object> | 1382 | </object> |
| 1374 | - <reference key="NSSelectedTabViewItem" ref="725395930"/> | 1383 | + <reference key="NSSelectedTabViewItem" ref="409502867"/> |
| 1375 | <reference key="NSFont" ref="584670792"/> | 1384 | <reference key="NSFont" ref="584670792"/> |
| 1376 | <int key="NSTvFlags">0</int> | 1385 | <int key="NSTvFlags">0</int> |
| 1377 | <bool key="NSAllowTruncatedLabels">YES</bool> | 1386 | <bool key="NSAllowTruncatedLabels">YES</bool> |
| 1378 | <bool key="NSDrawsBackground">YES</bool> | 1387 | <bool key="NSDrawsBackground">YES</bool> |
| 1379 | <object class="NSMutableArray" key="NSSubviews"> | 1388 | <object class="NSMutableArray" key="NSSubviews"> |
| 1380 | <bool key="EncodedWithXMLCoder">YES</bool> | 1389 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 1381 | - <reference ref="624078948"/> | 1390 | + <reference ref="408528501"/> |
| 1382 | </object> | 1391 | </object> |
| 1383 | </object> | 1392 | </object> |
| 1384 | </object> | 1393 | </object> |
| @@ -3420,7 +3429,6 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | @@ -3420,7 +3429,6 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | ||
| 3420 | <string>354.IBPluginDependency</string> | 3429 | <string>354.IBPluginDependency</string> |
| 3421 | <string>354.ImportedFromIB2</string> | 3430 | <string>354.ImportedFromIB2</string> |
| 3422 | <string>371.IBEditorWindowLastContentRect</string> | 3431 | <string>371.IBEditorWindowLastContentRect</string> |
| 3423 | - <string>371.IBPluginDependency</string> | ||
| 3424 | <string>371.IBWindowTemplateEditedContentRect</string> | 3432 | <string>371.IBWindowTemplateEditedContentRect</string> |
| 3425 | <string>371.NSWindowTemplate.visibleAtLaunch</string> | 3433 | <string>371.NSWindowTemplate.visibleAtLaunch</string> |
| 3426 | <string>371.editorWindowContentRectSynchronizationRect</string> | 3434 | <string>371.editorWindowContentRectSynchronizationRect</string> |
| @@ -3428,7 +3436,6 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | @@ -3428,7 +3436,6 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | ||
| 3428 | <string>381.IBPluginDependency</string> | 3436 | <string>381.IBPluginDependency</string> |
| 3429 | <string>384.IBPluginDependency</string> | 3437 | <string>384.IBPluginDependency</string> |
| 3430 | <string>390.IBEditorWindowLastContentRect</string> | 3438 | <string>390.IBEditorWindowLastContentRect</string> |
| 3431 | - <string>390.IBPluginDependency</string> | ||
| 3432 | <string>390.IBWindowTemplateEditedContentRect</string> | 3439 | <string>390.IBWindowTemplateEditedContentRect</string> |
| 3433 | <string>390.NSWindowTemplate.visibleAtLaunch</string> | 3440 | <string>390.NSWindowTemplate.visibleAtLaunch</string> |
| 3434 | <string>390.editorWindowContentRectSynchronizationRect</string> | 3441 | <string>390.editorWindowContentRectSynchronizationRect</string> |
| @@ -3458,6 +3465,12 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | @@ -3458,6 +3465,12 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | ||
| 3458 | <string>436.IBPluginDependency</string> | 3465 | <string>436.IBPluginDependency</string> |
| 3459 | <string>437.IBPluginDependency</string> | 3466 | <string>437.IBPluginDependency</string> |
| 3460 | <string>438.IBPluginDependency</string> | 3467 | <string>438.IBPluginDependency</string> |
| 3468 | + <string>439.IBPluginDependency</string> | ||
| 3469 | + <string>440.IBPluginDependency</string> | ||
| 3470 | + <string>441.IBPluginDependency</string> | ||
| 3471 | + <string>442.IBPluginDependency</string> | ||
| 3472 | + <string>443.IBPluginDependency</string> | ||
| 3473 | + <string>444.IBPluginDependency</string> | ||
| 3461 | <string>451.IBPluginDependency</string> | 3474 | <string>451.IBPluginDependency</string> |
| 3462 | <string>452.IBPluginDependency</string> | 3475 | <string>452.IBPluginDependency</string> |
| 3463 | <string>453.IBPluginDependency</string> | 3476 | <string>453.IBPluginDependency</string> |
| @@ -3673,7 +3686,6 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | @@ -3673,7 +3686,6 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | ||
| 3673 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | 3686 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> |
| 3674 | <reference ref="9"/> | 3687 | <reference ref="9"/> |
| 3675 | <string>{{267, 307}, {480, 337}}</string> | 3688 | <string>{{267, 307}, {480, 337}}</string> |
| 3676 | - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | ||
| 3677 | <string>{{267, 307}, {480, 337}}</string> | 3689 | <string>{{267, 307}, {480, 337}}</string> |
| 3678 | <reference ref="9"/> | 3690 | <reference ref="9"/> |
| 3679 | <string>{{235, -51}, {480, 337}}</string> | 3691 | <string>{{235, -51}, {480, 337}}</string> |
| @@ -3681,7 +3693,6 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | @@ -3681,7 +3693,6 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | ||
| 3681 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | 3693 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> |
| 3682 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | 3694 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> |
| 3683 | <string>{{21, 629}, {279, 182}}</string> | 3695 | <string>{{21, 629}, {279, 182}}</string> |
| 3684 | - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | ||
| 3685 | <string>{{21, 629}, {279, 182}}</string> | 3696 | <string>{{21, 629}, {279, 182}}</string> |
| 3686 | <integer value="0"/> | 3697 | <integer value="0"/> |
| 3687 | <string>{{793, -129}, {279, 182}}</string> | 3698 | <string>{{793, -129}, {279, 182}}</string> |
| @@ -3746,6 +3757,12 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | @@ -3746,6 +3757,12 @@ c3N3b3JkLCBlbnRlciAndG9wc2VjcmV0JyBmb3IgYm90aC4</string> | ||
| 3746 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | 3757 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> |
| 3747 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | 3758 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> |
| 3748 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | 3759 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> |
| 3760 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | ||
| 3761 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | ||
| 3762 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | ||
| 3763 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | ||
| 3764 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | ||
| 3765 | + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | ||
| 3749 | <reference ref="9"/> | 3766 | <reference ref="9"/> |
| 3750 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | 3767 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> |
| 3751 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> | 3768 | <string>com.apple.InterfaceBuilder.CocoaPlugin</string> |
| @@ -9,7 +9,7 @@ It provides: | @@ -9,7 +9,7 @@ It provides: | ||
| 9 | * Easy access to request and response HTTP headers | 9 | * Easy access to request and response HTTP headers |
| 10 | * Progress delegates (NSProgressIndicators and UIProgressViews) to show information about download AND upload progress | 10 | * Progress delegates (NSProgressIndicators and UIProgressViews) to show information about download AND upload progress |
| 11 | * Auto-magic management of upload and download progress indicators for operation queues | 11 | * Auto-magic management of upload and download progress indicators for operation queues |
| 12 | -* Basic + Digest authentication support, credentials are automatically for the duration of a session, and can be stored for later in the Keychain. | 12 | +* Basic + Digest authentication support, credentials are automatically re-used for the duration of a session, and can be stored for later in the Keychain. |
| 13 | * Cookie support | 13 | * Cookie support |
| 14 | * Based on NSOperation to make queuing requests and background operation easy | 14 | * Based on NSOperation to make queuing requests and background operation easy |
| 15 | * Basic unit tests (more to come!) | 15 | * Basic unit tests (more to come!) |
UploadViewController.h
0 → 100644
| 1 | +// | ||
| 2 | +// UploadViewController.h | ||
| 3 | +// asi-http-request | ||
| 4 | +// | ||
| 5 | +// Created by Ben Copsey on 31/12/2008. | ||
| 6 | +// Copyright 2008 All-Seeing Interactive. All rights reserved. | ||
| 7 | +// | ||
| 8 | + | ||
| 9 | +#import <UIKit/UIKit.h> | ||
| 10 | + | ||
| 11 | +@class ASINetworkQueue; | ||
| 12 | + | ||
| 13 | +@interface UploadViewController : UIViewController { | ||
| 14 | + ASINetworkQueue *networkQueue; | ||
| 15 | + IBOutlet UIProgressView *progressIndicator; | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +- (IBAction)performLargeUpload:(id)sender; | ||
| 19 | + | ||
| 20 | +@end |
UploadViewController.m
0 → 100644
| 1 | +// | ||
| 2 | +// UploadViewController.m | ||
| 3 | +// asi-http-request | ||
| 4 | +// | ||
| 5 | +// Created by Ben Copsey on 31/12/2008. | ||
| 6 | +// Copyright 2008 All-Seeing Interactive. All rights reserved. | ||
| 7 | +// | ||
| 8 | + | ||
| 9 | +#import "UploadViewController.h" | ||
| 10 | +#import "ASIFormDataRequest.h" | ||
| 11 | +#import "ASINetworkQueue.h" | ||
| 12 | + | ||
| 13 | +@implementation UploadViewController | ||
| 14 | + | ||
| 15 | + | ||
| 16 | +- (void)awakeFromNib | ||
| 17 | +{ | ||
| 18 | + networkQueue = [[ASINetworkQueue alloc] init]; | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +- (IBAction)performLargeUpload:(id)sender | ||
| 22 | +{ | ||
| 23 | + [networkQueue cancelAllOperations]; | ||
| 24 | + [networkQueue setShowAccurateProgress:YES]; | ||
| 25 | + [networkQueue setUploadProgressDelegate:progressIndicator]; | ||
| 26 | + [networkQueue setDelegate:self]; | ||
| 27 | + | ||
| 28 | + ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ignore"]] autorelease]; | ||
| 29 | + [request setPostValue:@"test" forKey:@"value1"]; | ||
| 30 | + [request setPostValue:@"test" forKey:@"value2"]; | ||
| 31 | + [request setPostValue:@"test" forKey:@"value3"]; | ||
| 32 | + [request setTimeOutSeconds:20]; | ||
| 33 | + [request setData:[NSMutableData dataWithLength:1024*1024] forKey:@"1mb-of-crap"]; | ||
| 34 | + | ||
| 35 | + [networkQueue addOperation:request]; | ||
| 36 | + [networkQueue go]; | ||
| 37 | +} | ||
| 38 | + | ||
| 39 | +- (void)dealloc { | ||
| 40 | + [networkQueue release]; | ||
| 41 | + [super dealloc]; | ||
| 42 | +} | ||
| 43 | + | ||
| 44 | +@end |
This diff was suppressed by a .gitattributes entry.
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.02"> | 2 | +<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.03"> |
| 3 | <data> | 3 | <data> |
| 4 | <int key="IBDocument.SystemTarget">528</int> | 4 | <int key="IBDocument.SystemTarget">528</int> |
| 5 | - <string key="IBDocument.SystemVersion">9F33</string> | 5 | + <string key="IBDocument.SystemVersion">9G55</string> |
| 6 | - <string key="IBDocument.InterfaceBuilderVersion">672</string> | 6 | + <string key="IBDocument.InterfaceBuilderVersion">677</string> |
| 7 | - <string key="IBDocument.AppKitVersion">949.34</string> | 7 | + <string key="IBDocument.AppKitVersion">949.43</string> |
| 8 | - <string key="IBDocument.HIToolboxVersion">352.00</string> | 8 | + <string key="IBDocument.HIToolboxVersion">353.00</string> |
| 9 | <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> | 9 | <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> |
| 10 | <bool key="EncodedWithXMLCoder">YES</bool> | 10 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 11 | <integer value="106"/> | 11 | <integer value="106"/> |
| @@ -14,6 +14,15 @@ | @@ -14,6 +14,15 @@ | ||
| 14 | <bool key="EncodedWithXMLCoder">YES</bool> | 14 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 15 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 15 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 16 | </object> | 16 | </object> |
| 17 | + <object class="NSMutableDictionary" key="IBDocument.Metadata"> | ||
| 18 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 19 | + <object class="NSArray" key="dict.sortedKeys"> | ||
| 20 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 21 | + </object> | ||
| 22 | + <object class="NSMutableArray" key="dict.values"> | ||
| 23 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 24 | + </object> | ||
| 25 | + </object> | ||
| 17 | <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> | 26 | <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> |
| 18 | <bool key="EncodedWithXMLCoder">YES</bool> | 27 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 19 | <object class="IBProxyObject" id="841351856"> | 28 | <object class="IBProxyObject" id="841351856"> |
| @@ -40,13 +49,13 @@ | @@ -40,13 +49,13 @@ | ||
| 40 | <object class="IBUITabBarController" id="1034742383"> | 49 | <object class="IBUITabBarController" id="1034742383"> |
| 41 | <object class="IBUISimulatedTabBarMetrics" key="IBUISimulatedBottomBarMetrics"/> | 50 | <object class="IBUISimulatedTabBarMetrics" key="IBUISimulatedBottomBarMetrics"/> |
| 42 | <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/> | 51 | <object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/> |
| 43 | - <object class="IBUIViewController" key="IBUISelectedViewController" id="268481961"> | 52 | + <object class="IBUIViewController" key="IBUISelectedViewController" id="629097222"> |
| 44 | - <object class="IBUITabBarItem" key="IBUITabBarItem" id="807309489"> | 53 | + <object class="IBUITabBarItem" key="IBUITabBarItem" id="859844916"> |
| 45 | - <string key="IBUITitle">Queue</string> | 54 | + <string key="IBUITitle">Upload</string> |
| 46 | <reference key="IBUITabBar"/> | 55 | <reference key="IBUITabBar"/> |
| 47 | </object> | 56 | </object> |
| 48 | <reference key="IBUIParentViewController" ref="1034742383"/> | 57 | <reference key="IBUIParentViewController" ref="1034742383"/> |
| 49 | - <string key="IBUINibName">Queue</string> | 58 | + <string key="IBUINibName">UploadProgress</string> |
| 50 | </object> | 59 | </object> |
| 51 | <object class="NSMutableArray" key="IBUIViewControllers"> | 60 | <object class="NSMutableArray" key="IBUIViewControllers"> |
| 52 | <bool key="EncodedWithXMLCoder">YES</bool> | 61 | <bool key="EncodedWithXMLCoder">YES</bool> |
| @@ -58,7 +67,15 @@ | @@ -58,7 +67,15 @@ | ||
| 58 | <reference key="IBUIParentViewController" ref="1034742383"/> | 67 | <reference key="IBUIParentViewController" ref="1034742383"/> |
| 59 | <string key="IBUINibName">Synchronous</string> | 68 | <string key="IBUINibName">Synchronous</string> |
| 60 | </object> | 69 | </object> |
| 61 | - <reference ref="268481961"/> | 70 | + <object class="IBUIViewController" id="268481961"> |
| 71 | + <object class="IBUITabBarItem" key="IBUITabBarItem" id="807309489"> | ||
| 72 | + <string key="IBUITitle">Queue</string> | ||
| 73 | + <reference key="IBUITabBar"/> | ||
| 74 | + </object> | ||
| 75 | + <reference key="IBUIParentViewController" ref="1034742383"/> | ||
| 76 | + <string key="IBUINibName">Queue</string> | ||
| 77 | + </object> | ||
| 78 | + <reference ref="629097222"/> | ||
| 62 | </object> | 79 | </object> |
| 63 | <object class="IBUITabBar" key="IBUITabBar" id="795333663"> | 80 | <object class="IBUITabBar" key="IBUITabBar" id="795333663"> |
| 64 | <nil key="NSNextResponder"/> | 81 | <nil key="NSNextResponder"/> |
| @@ -138,6 +155,7 @@ | @@ -138,6 +155,7 @@ | ||
| 138 | <reference ref="795333663"/> | 155 | <reference ref="795333663"/> |
| 139 | <reference ref="1024858337"/> | 156 | <reference ref="1024858337"/> |
| 140 | <reference ref="268481961"/> | 157 | <reference ref="268481961"/> |
| 158 | + <reference ref="629097222"/> | ||
| 141 | </object> | 159 | </object> |
| 142 | <reference key="parent" ref="957960031"/> | 160 | <reference key="parent" ref="957960031"/> |
| 143 | </object> | 161 | </object> |
| @@ -179,6 +197,20 @@ | @@ -179,6 +197,20 @@ | ||
| 179 | <reference key="object" ref="532797962"/> | 197 | <reference key="object" ref="532797962"/> |
| 180 | <reference key="parent" ref="957960031"/> | 198 | <reference key="parent" ref="957960031"/> |
| 181 | </object> | 199 | </object> |
| 200 | + <object class="IBObjectRecord"> | ||
| 201 | + <int key="objectID">124</int> | ||
| 202 | + <reference key="object" ref="629097222"/> | ||
| 203 | + <object class="NSMutableArray" key="children"> | ||
| 204 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 205 | + <reference ref="859844916"/> | ||
| 206 | + </object> | ||
| 207 | + <reference key="parent" ref="1034742383"/> | ||
| 208 | + </object> | ||
| 209 | + <object class="IBObjectRecord"> | ||
| 210 | + <int key="objectID">125</int> | ||
| 211 | + <reference key="object" ref="859844916"/> | ||
| 212 | + <reference key="parent" ref="629097222"/> | ||
| 213 | + </object> | ||
| 182 | </object> | 214 | </object> |
| 183 | </object> | 215 | </object> |
| 184 | <object class="NSMutableDictionary" key="flattenedProperties"> | 216 | <object class="NSMutableDictionary" key="flattenedProperties"> |
| @@ -196,6 +228,7 @@ | @@ -196,6 +228,7 @@ | ||
| 196 | <string>109.IBPluginDependency</string> | 228 | <string>109.IBPluginDependency</string> |
| 197 | <string>110.IBPluginDependency</string> | 229 | <string>110.IBPluginDependency</string> |
| 198 | <string>111.IBPluginDependency</string> | 230 | <string>111.IBPluginDependency</string> |
| 231 | + <string>124.CustomClassName</string> | ||
| 199 | <string>2.IBAttributePlaceholdersKey</string> | 232 | <string>2.IBAttributePlaceholdersKey</string> |
| 200 | <string>2.IBEditorWindowLastContentRect</string> | 233 | <string>2.IBEditorWindowLastContentRect</string> |
| 201 | <string>2.IBPluginDependency</string> | 234 | <string>2.IBPluginDependency</string> |
| @@ -215,6 +248,7 @@ | @@ -215,6 +248,7 @@ | ||
| 215 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 248 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 216 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 249 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 217 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 250 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 251 | + <string>UploadViewController</string> | ||
| 218 | <object class="NSMutableDictionary"> | 252 | <object class="NSMutableDictionary"> |
| 219 | <bool key="EncodedWithXMLCoder">YES</bool> | 253 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 220 | <object class="NSArray" key="dict.sortedKeys"> | 254 | <object class="NSArray" key="dict.sortedKeys"> |
| @@ -250,7 +284,7 @@ | @@ -250,7 +284,7 @@ | ||
| 250 | </object> | 284 | </object> |
| 251 | </object> | 285 | </object> |
| 252 | <nil key="sourceID"/> | 286 | <nil key="sourceID"/> |
| 253 | - <int key="maxID">123</int> | 287 | + <int key="maxID">125</int> |
| 254 | </object> | 288 | </object> |
| 255 | <object class="IBClassDescriber" key="IBDocument.Classes"> | 289 | <object class="IBClassDescriber" key="IBDocument.Classes"> |
| 256 | <object class="NSMutableArray" key="referencedPartialClassDescriptions"> | 290 | <object class="NSMutableArray" key="referencedPartialClassDescriptions"> |
| @@ -266,6 +300,7 @@ | @@ -266,6 +300,7 @@ | ||
| 266 | <bool key="EncodedWithXMLCoder">YES</bool> | 300 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 267 | <object class="NSMutableArray" key="dict.sortedKeys"> | 301 | <object class="NSMutableArray" key="dict.sortedKeys"> |
| 268 | <bool key="EncodedWithXMLCoder">YES</bool> | 302 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 303 | + <string>accurateProgress</string> | ||
| 269 | <string>imageView1</string> | 304 | <string>imageView1</string> |
| 270 | <string>imageView2</string> | 305 | <string>imageView2</string> |
| 271 | <string>imageView3</string> | 306 | <string>imageView3</string> |
| @@ -273,6 +308,7 @@ | @@ -273,6 +308,7 @@ | ||
| 273 | </object> | 308 | </object> |
| 274 | <object class="NSMutableArray" key="dict.values"> | 309 | <object class="NSMutableArray" key="dict.values"> |
| 275 | <bool key="EncodedWithXMLCoder">YES</bool> | 310 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 311 | + <string>UISwitch</string> | ||
| 276 | <string>UIImageView</string> | 312 | <string>UIImageView</string> |
| 277 | <string>UIImageView</string> | 313 | <string>UIImageView</string> |
| 278 | <string>UIImageView</string> | 314 | <string>UIImageView</string> |
| @@ -301,6 +337,22 @@ | @@ -301,6 +337,22 @@ | ||
| 301 | </object> | 337 | </object> |
| 302 | </object> | 338 | </object> |
| 303 | <object class="IBPartialClassDescription"> | 339 | <object class="IBPartialClassDescription"> |
| 340 | + <string key="className">UploadViewController</string> | ||
| 341 | + <string key="superclassName">UIViewController</string> | ||
| 342 | + <object class="NSMutableDictionary" key="actions"> | ||
| 343 | + <string key="NS.key.0">performLargeUpload:</string> | ||
| 344 | + <string key="NS.object.0">id</string> | ||
| 345 | + </object> | ||
| 346 | + <object class="NSMutableDictionary" key="outlets"> | ||
| 347 | + <string key="NS.key.0">progressIndicator</string> | ||
| 348 | + <string key="NS.object.0">UIProgressView</string> | ||
| 349 | + </object> | ||
| 350 | + <object class="IBClassDescriptionSource" key="sourceIdentifier"> | ||
| 351 | + <string key="majorKey">IBProjectSource</string> | ||
| 352 | + <string key="minorKey">UploadViewController.h</string> | ||
| 353 | + </object> | ||
| 354 | + </object> | ||
| 355 | + <object class="IBPartialClassDescription"> | ||
| 304 | <string key="className">iPhoneSampleAppDelegate</string> | 356 | <string key="className">iPhoneSampleAppDelegate</string> |
| 305 | <string key="superclassName">NSObject</string> | 357 | <string key="superclassName">NSObject</string> |
| 306 | <object class="NSMutableDictionary" key="outlets"> | 358 | <object class="NSMutableDictionary" key="outlets"> |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.02"> | 2 | +<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.03"> |
| 3 | <data> | 3 | <data> |
| 4 | <int key="IBDocument.SystemTarget">528</int> | 4 | <int key="IBDocument.SystemTarget">528</int> |
| 5 | - <string key="IBDocument.SystemVersion">9F33</string> | 5 | + <string key="IBDocument.SystemVersion">9G55</string> |
| 6 | - <string key="IBDocument.InterfaceBuilderVersion">672</string> | 6 | + <string key="IBDocument.InterfaceBuilderVersion">677</string> |
| 7 | - <string key="IBDocument.AppKitVersion">949.34</string> | 7 | + <string key="IBDocument.AppKitVersion">949.43</string> |
| 8 | - <string key="IBDocument.HIToolboxVersion">352.00</string> | 8 | + <string key="IBDocument.HIToolboxVersion">353.00</string> |
| 9 | <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> | 9 | <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> |
| 10 | <bool key="EncodedWithXMLCoder">YES</bool> | 10 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 11 | <integer value="1"/> | 11 | <integer value="1"/> |
| @@ -14,6 +14,15 @@ | @@ -14,6 +14,15 @@ | ||
| 14 | <bool key="EncodedWithXMLCoder">YES</bool> | 14 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 15 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 15 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 16 | </object> | 16 | </object> |
| 17 | + <object class="NSMutableDictionary" key="IBDocument.Metadata"> | ||
| 18 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 19 | + <object class="NSArray" key="dict.sortedKeys"> | ||
| 20 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 21 | + </object> | ||
| 22 | + <object class="NSMutableArray" key="dict.values"> | ||
| 23 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 24 | + </object> | ||
| 25 | + </object> | ||
| 17 | <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> | 26 | <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> |
| 18 | <bool key="EncodedWithXMLCoder">YES</bool> | 27 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 19 | <object class="IBProxyObject" id="372490531"> | 28 | <object class="IBProxyObject" id="372490531"> |
| @@ -237,9 +246,9 @@ | @@ -237,9 +246,9 @@ | ||
| 237 | <reference ref="138477738"/> | 246 | <reference ref="138477738"/> |
| 238 | <reference ref="496427125"/> | 247 | <reference ref="496427125"/> |
| 239 | <reference ref="602749642"/> | 248 | <reference ref="602749642"/> |
| 240 | - <reference ref="963091686"/> | ||
| 241 | <reference ref="365204290"/> | 249 | <reference ref="365204290"/> |
| 242 | <reference ref="104706742"/> | 250 | <reference ref="104706742"/> |
| 251 | + <reference ref="963091686"/> | ||
| 243 | </object> | 252 | </object> |
| 244 | <reference key="parent" ref="360949347"/> | 253 | <reference key="parent" ref="360949347"/> |
| 245 | </object> | 254 | </object> |
| @@ -317,7 +326,7 @@ | @@ -317,7 +326,7 @@ | ||
| 317 | <bool key="EncodedWithXMLCoder">YES</bool> | 326 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 318 | <string>QueueViewController</string> | 327 | <string>QueueViewController</string> |
| 319 | <string>UIResponder</string> | 328 | <string>UIResponder</string> |
| 320 | - <string>{{901, 368}, {320, 480}}</string> | 329 | + <string>{{639, 368}, {320, 480}}</string> |
| 321 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 330 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 322 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 331 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 323 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 332 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | -<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.02"> | 2 | +<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.03"> |
| 3 | <data> | 3 | <data> |
| 4 | <int key="IBDocument.SystemTarget">528</int> | 4 | <int key="IBDocument.SystemTarget">528</int> |
| 5 | - <string key="IBDocument.SystemVersion">9F33</string> | 5 | + <string key="IBDocument.SystemVersion">9G55</string> |
| 6 | - <string key="IBDocument.InterfaceBuilderVersion">672</string> | 6 | + <string key="IBDocument.InterfaceBuilderVersion">677</string> |
| 7 | - <string key="IBDocument.AppKitVersion">949.34</string> | 7 | + <string key="IBDocument.AppKitVersion">949.43</string> |
| 8 | - <string key="IBDocument.HIToolboxVersion">352.00</string> | 8 | + <string key="IBDocument.HIToolboxVersion">353.00</string> |
| 9 | <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> | 9 | <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> |
| 10 | <bool key="EncodedWithXMLCoder">YES</bool> | 10 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 11 | <integer value="1"/> | 11 | <integer value="1"/> |
| @@ -14,6 +14,15 @@ | @@ -14,6 +14,15 @@ | ||
| 14 | <bool key="EncodedWithXMLCoder">YES</bool> | 14 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 15 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 15 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 16 | </object> | 16 | </object> |
| 17 | + <object class="NSMutableDictionary" key="IBDocument.Metadata"> | ||
| 18 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 19 | + <object class="NSArray" key="dict.sortedKeys"> | ||
| 20 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 21 | + </object> | ||
| 22 | + <object class="NSMutableArray" key="dict.values"> | ||
| 23 | + <bool key="EncodedWithXMLCoder">YES</bool> | ||
| 24 | + </object> | ||
| 25 | + </object> | ||
| 17 | <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> | 26 | <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> |
| 18 | <bool key="EncodedWithXMLCoder">YES</bool> | 27 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 19 | <object class="IBProxyObject" id="372490531"> | 28 | <object class="IBProxyObject" id="372490531"> |
| @@ -97,7 +106,7 @@ YSB0aHJlYWQuA</string> | @@ -97,7 +106,7 @@ YSB0aHJlYWQuA</string> | ||
| 97 | <bool key="IBUICanCancelContentTouches">NO</bool> | 106 | <bool key="IBUICanCancelContentTouches">NO</bool> |
| 98 | <bool key="IBUIBouncesZoom">NO</bool> | 107 | <bool key="IBUIBouncesZoom">NO</bool> |
| 99 | <bool key="IBUIEditable">NO</bool> | 108 | <bool key="IBUIEditable">NO</bool> |
| 100 | - <string key="IBUIText"/> | 109 | + <string key="IBUIText">HTML source will be here</string> |
| 101 | <reference key="IBUIFont" ref="467718481"/> | 110 | <reference key="IBUIFont" ref="467718481"/> |
| 102 | </object> | 111 | </object> |
| 103 | </object> | 112 | </object> |
| @@ -208,7 +217,7 @@ YSB0aHJlYWQuA</string> | @@ -208,7 +217,7 @@ YSB0aHJlYWQuA</string> | ||
| 208 | <bool key="EncodedWithXMLCoder">YES</bool> | 217 | <bool key="EncodedWithXMLCoder">YES</bool> |
| 209 | <string>SynchronousViewController</string> | 218 | <string>SynchronousViewController</string> |
| 210 | <string>UIResponder</string> | 219 | <string>UIResponder</string> |
| 211 | - <string>{{714, 372}, {320, 480}}</string> | 220 | + <string>{{639, 372}, {320, 480}}</string> |
| 212 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 221 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 213 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 222 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
| 214 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> | 223 | <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string> |
iphone-xibs/UploadProgress.xib
0 → 100644
This diff is collapsed. Click to expand it.
-
Please register or login to post a comment