From dee1f483b3ce5401d5fcc4db5fb6b96c1eb54340 Mon Sep 17 00:00:00 2001 From: Artur Petrov Date: Mon, 29 Sep 2014 04:52:27 +0400 Subject: [PATCH] Enhance UX of revision downloading progress Revisions are already spread across almost 30 XML files 1000 builds each. Although it may take a considerable amount of time to download the list, the progress bar doesn't reflect this process. Because the downloading isn't deterministic, we try to update the progress after each received file. 0.02 rate should be OK for user and enough for around 2 years of Chromium builds before hitting bar's 90% limit. --- Classes/MGMController.m | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Classes/MGMController.m b/Classes/MGMController.m index ef9876c..b108f23 100644 --- a/Classes/MGMController.m +++ b/Classes/MGMController.m @@ -157,7 +157,7 @@ NSString * const MGMUBCancel = @"Cancel"; handler = [MGMURLBasicHandler handlerWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:self]; [handler setFailWithError:@selector(revisions:didFailWithError:)]; [handler setFinish:@selector(revisionsFinished:)]; - [statusField setStringValue:@"Loading Revisions"]; + [statusField setStringValue:@"Loading revisions..."]; [connectionManager addHandler:handler]; } @@ -209,7 +209,7 @@ NSString * const MGMUBCancel = @"Cancel"; [progress setIndeterminate:NO]; [progress startAnimation:self]; - [progress setDoubleValue:0.25]; + [progress setDoubleValue:0.1]; } - (void)revisions:(MGMURLBasicHandler *)theHandler didFailWithError:(NSError *)theError { NSLog(@"%@", theError); @@ -235,8 +235,9 @@ NSString * const MGMUBCancel = @"Cancel"; - (void)revisionsFinished:(MGMURLBasicHandler *)theHandler { NSError *error = nil; NSXMLDocument *xml = [[NSXMLDocument alloc] initWithData:[theHandler data] options:NSXMLDocumentTidyXML error:&error]; - [progress setDoubleValue:0.50]; - + if ([progress doubleValue] < 0.9) { + [progress incrementBy:0.02]; + } if (error!=nil) { NSLog(@"%@", error); NSAlert *alert = [[NSAlert new] autorelease]; @@ -331,7 +332,7 @@ NSString * const MGMUBCancel = @"Cancel"; } [buildPopUp selectItemAtIndex:itemIndex]; if (startingUp) - [progress setDoubleValue:0.75]; + [progress setDoubleValue:0.9]; [self buildSelect:self]; } - (IBAction)buildSelect:(id)sender { @@ -561,7 +562,7 @@ NSString * const MGMUBCancel = @"Cancel"; [updateButton setEnabled:NO]; [progress setIndeterminate:YES]; [progress startAnimation:self]; - [statusField setStringValue:@"Uncompressing and installing update."]; + [statusField setStringValue:@"Uncompressing and installing update..."]; unzipTask = [NSTask new]; [unzipTask setLaunchPath:@"/usr/bin/ditto"];