From: Joseph Spiros Date: Wed, 1 Oct 2003 21:09:20 +0000 (+0000) Subject: Implementing Registration checks and final touches. X-Git-Tag: v1.0~17 X-Git-Url: http://git.ithinksw.org/MenuTunes.git/commitdiff_plain/875d1362ed16bfa0f85054fc7df31a4f08b9b29f Implementing Registration checks and final touches. --- diff --git a/MTShizzleWindow.m b/MTShizzleWindow.m index ede4cd2..a0903a5 100755 --- a/MTShizzleWindow.m +++ b/MTShizzleWindow.m @@ -1,4 +1,5 @@ #import "MTShizzleWindow.h" +#import "MainController.h" @interface MTShizzleWindow (Private) - (void)setBling:(id)bling; @@ -37,6 +38,15 @@ static MTShizzleWindow *_privateSharedWindow = nil; return self; } +- (void)makeKeyAndOrderFront:(id)sender { + if ( ( [[NSDate date] timeIntervalSinceDate:[[MainController sharedController] getBlingTime]] >= 604800 ) && ([[regLater title] isEqualToString:@"Register Later"]) ) { + [regLater setTitle:@"Quit"]; + [regLater setTarget:[NSApplication sharedApplication]]; + [regLater setAction:@selector(terminate:)]; + } + [super makeKeyAndOrderFront:sender]; +} + - (void)dealloc { [regMessage release]; diff --git a/MainController.h b/MainController.h index 1245103..5675471 100755 --- a/MainController.h +++ b/MainController.h @@ -33,13 +33,13 @@ //Used in updating the menu automatically NSTimer *refreshTimer; NSString *_latestSongIdentifier; - + StatusWindowController *statusWindowController; //Shows status windows MenuController *menuController; NSUserDefaults *df; - NSDate *blingDate; MTBlingController *bling; + NSTimer *registerTimer; BOOL timerUpdating; } + (MainController *)sharedController; diff --git a/MainController.m b/MainController.m index edd1e78..09443c2 100755 --- a/MainController.m +++ b/MainController.m @@ -4,6 +4,7 @@ #import #import #import +#import "StatusWindow.h" #import "StatusWindowController.h" #import "StatusItemHack.h" @@ -51,9 +52,6 @@ static MainController *sharedController; SetITDebugMode(YES); } - bling = [[MTBlingController alloc] init]; - blingDate = nil; - currentRemote = [self loadRemote]; [currentRemote begin]; @@ -79,6 +77,14 @@ static MainController *sharedController; initWithStatusBar:[NSStatusBar systemStatusBar] withLength:NSSquareStatusItemLength]; + bling = [[MTBlingController alloc] init]; + [self blingTime]; + registerTimer = [[NSTimer scheduledTimerWithTimeInterval:10.0 + target:self + selector:@selector(blingTime) + userInfo:nil + repeats:YES] retain]; + if ([currentRemote playerRunningState] == ITMTRemotePlayerRunning) { [self applicationLaunched:nil]; } else { @@ -148,21 +154,45 @@ static MainController *sharedController; [pool release]; }*/ +- (void)setBlingTime:(NSDate*)date +{ + NSMutableDictionary *globalPrefs; + [df synchronize]; + globalPrefs = [[df persistentDomainForName:@".GlobalPreferences"] mutableCopy]; + [globalPrefs setObject:date forKey:@"ITMTTrialStart"]; + [df setPersistentDomain:globalPrefs forName:@".GlobalPreferences"]; + [df synchronize]; + [globalPrefs release]; +} + +- (NSDate*)getBlingTime +{ + [df synchronize]; + return [[df persistentDomainForName:@".GlobalPreferences"] objectForKey:@"ITMTTrialStart"]; +} + - (void)blingTime { NSDate *now = [NSDate date]; - if ( (! blingDate) || ([now timeIntervalSinceDate:blingDate] >= 86400) ) { - [bling showPanelIfNeeded]; - [blingDate autorelease]; - blingDate = [now retain]; + if ( (! [self getBlingTime] ) ) { + [self setBlingTime:now]; + } + if ( ([now timeIntervalSinceDate:[self getBlingTime]] >= 604800) ) { + [statusItem setEnabled:NO]; + [self clearHotKeys]; + if ([refreshTimer isValid]) { + [refreshTimer invalidate]; + } + if ([registerTimer isValid]) { + [registerTimer invalidate]; + } + [statusWindowController showRegistrationQueryWindow]; } } - (void)blingNow { [bling showPanel]; - [blingDate autorelease]; - blingDate = [[NSDate date] retain]; } - (BOOL)blingBling @@ -710,7 +740,7 @@ static MainController *sharedController; [[StatusWindow sharedWindow] vanish:self]; [[StatusWindow sharedWindow] setIgnoresMouseEvents:YES]; - [NSApp terminate]; + [NSApp terminate:self]; } @@ -745,6 +775,9 @@ static MainController *sharedController; [refreshTimer invalidate]; [refreshTimer release]; refreshTimer = nil; + [registerTimer invalidate]; + [registerTimer release]; + registerTimer = nil; [self clearHotKeys]; playerRunningState = ITMTRemotePlayerNotRunning; } diff --git a/StatusWindowController.m b/StatusWindowController.m index b64bb76..573aac8 100755 --- a/StatusWindowController.m +++ b/StatusWindowController.m @@ -233,7 +233,7 @@ static StatusWindowController *sharedController; [_window setImage:[NSImage imageNamed:@"Register"]]; [_window buildDialogWindowWithMessage:message defaultButton:@"Register Now" - alternateButton:@"Quit MenuPrefs" + alternateButton:@"Quit MenuTunes" target:[MainController sharedController] defaultAction:@selector(registerNowOK) alternateAction:@selector(registerNowCancel)];