From 949af390415133b4710cd11f946747a65b219e6e Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Wed, 24 Apr 2013 18:41:26 -0400 Subject: [PATCH] New: the highest first launch version is saved. The effect is that each minor point release (3.1 -> 3.2) will cause the help to display the first time it is launched, so that the user is encouraged to find out what is new. --- Tools/XcodeCapp/XcodeCapp/AppController.m | 17 ++++++++++++++--- Tools/XcodeCapp/XcodeCapp/UserDefaults.h | 1 + Tools/XcodeCapp/XcodeCapp/UserDefaults.m | 1 + 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Tools/XcodeCapp/XcodeCapp/AppController.m b/Tools/XcodeCapp/XcodeCapp/AppController.m index 570325dae..044079217 100644 --- a/Tools/XcodeCapp/XcodeCapp/AppController.m +++ b/Tools/XcodeCapp/XcodeCapp/AppController.m @@ -66,9 +66,19 @@ AppController *SharedAppControllerInstance = nil; self.statusMenu.delegate = self; self.helpTextView.textContainerInset = NSMakeSize(10.0, 10.0); - if ([[NSUserDefaults standardUserDefaults] boolForKey:kDefaultFirstLaunch]) + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + double firstLaunchVersion = [defaults doubleForKey:kDefaultFirstLaunchVersion]; + + // Note: the scanner will only get the major.minor version numbers, which is what we want. + NSScanner *scanner = [NSScanner scannerWithString:[self bundleVersion]]; + double appVersion = 0.0; + [scanner scanDouble:&appVersion]; + + if ([defaults boolForKey:kDefaultFirstLaunch] || appVersion > firstLaunchVersion) { - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:kDefaultFirstLaunch]; + [defaults setBool:NO forKey:kDefaultFirstLaunch]; + [defaults setDouble:appVersion forKey:kDefaultFirstLaunchVersion]; [self openHelp:self]; } @@ -96,6 +106,7 @@ AppController *SharedAppControllerInstance = nil; NSDictionary *appDefaults = @{ kDefaultLastEventId: [NSNumber numberWithUnsignedLongLong:kFSEventStreamEventIdSinceNow], kDefaultFirstLaunch: @YES, + kDefaultFirstLaunchVersion: @2.0, kDefaultXCCAPIMode: [NSNumber numberWithInt:kXCCAPIModeAuto], kDefaultXCCReactMode: @YES, kDefaultXCCReopenLastProject: @YES, @@ -348,7 +359,7 @@ AppController *SharedAppControllerInstance = nil; - (NSString *)bundleVersion { - return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; + return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; } @end diff --git a/Tools/XcodeCapp/XcodeCapp/UserDefaults.h b/Tools/XcodeCapp/XcodeCapp/UserDefaults.h index c299e8163..3e25d9797 100644 --- a/Tools/XcodeCapp/XcodeCapp/UserDefaults.h +++ b/Tools/XcodeCapp/XcodeCapp/UserDefaults.h @@ -13,6 +13,7 @@ extern NSString * const kDefaultLastEventId; extern NSString * const kDefaultFirstLaunch; +extern NSString * const kDefaultFirstLaunchVersion; extern NSString * const kDefaultXCCAPIMode; extern NSString * const kDefaultXCCReactMode; extern NSString * const kDefaultXCCReopenLastProject; diff --git a/Tools/XcodeCapp/XcodeCapp/UserDefaults.m b/Tools/XcodeCapp/XcodeCapp/UserDefaults.m index a78ac65cc..3a3bc34ff 100644 --- a/Tools/XcodeCapp/XcodeCapp/UserDefaults.m +++ b/Tools/XcodeCapp/XcodeCapp/UserDefaults.m @@ -11,6 +11,7 @@ NSString * const kDefaultLastEventId = @"lastEventId"; NSString * const kDefaultFirstLaunch = @"FirstLaunch"; +NSString * const kDefaultFirstLaunchVersion = @"firstLaunchVersion"; NSString * const kDefaultXCCAPIMode = @"XCCAPIMode"; NSString * const kDefaultXCCReactMode = @"XCCReactMode"; NSString * const kDefaultXCCReopenLastProject = @"XCCReopenLastProject";