Fixing bug that would require users to restart MenuTunes when they enter
[MenuTunes.git] / MainController.m
index 5f25c09..b695d80 100755 (executable)
@@ -41,6 +41,7 @@ static MainController *sharedController;
         menuController = [[MenuController alloc] init];
         df = [[NSUserDefaults standardUserDefaults] retain];
         timerUpdating = NO;
+        blinged = NO;
     }
     return self;
 }
@@ -159,7 +160,11 @@ static MainController *sharedController;
     NSMutableDictionary *globalPrefs;
     [df synchronize];
     globalPrefs = [[df persistentDomainForName:@".GlobalPreferences"] mutableCopy];
-    [globalPrefs setObject:date forKey:@"ITMTTrialStart"];
+    if (date) {
+        [globalPrefs setObject:date forKey:@"ITMTTrialStart"];
+    } else {
+        [globalPrefs removeObjectForKey:@"ITMTTrialStart"];
+    }
     [df setPersistentDomain:globalPrefs forName:@".GlobalPreferences"];
     [df synchronize];
     [globalPrefs release];
@@ -174,19 +179,34 @@ static MainController *sharedController;
 - (void)blingTime
 {
     NSDate *now = [NSDate date];
-    if ( (! [self getBlingTime] ) || ([now timeIntervalSinceDate:[self getBlingTime]] < 0) ) {
-        [self setBlingTime:now];
-    }
-    if ( ([now timeIntervalSinceDate:[self getBlingTime]] >= 604800) ) {
-        [statusItem setEnabled:NO];
-        [self clearHotKeys];
-        if ([refreshTimer isValid]) {
-        [refreshTimer invalidate];
+    if (![self blingBling]) {
+        if ( (! [self getBlingTime] ) || ([now timeIntervalSinceDate:[self getBlingTime]] < 0) ) {
+            [self setBlingTime:now];
         }
-        if ([registerTimer isValid]) {
-        [registerTimer invalidate];
+        if ( ([now timeIntervalSinceDate:[self getBlingTime]] >= 604800) && (blinged != YES) ) {
+            blinged = YES;
+            [statusItem setEnabled:NO];
+            [self clearHotKeys];
+            if ([refreshTimer isValid]) {
+                [refreshTimer invalidate];
+            }
+            [statusWindowController showRegistrationQueryWindow];
+        }
+    } else {
+        if (blinged) {
+            [statusItem setEnabled:YES];
+            [self setupHotKeys];
+            if (![refreshTimer isValid]) {
+                [refreshTimer release];
+                refreshTimer = refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:0.5
+                             target:self
+                             selector:@selector(timerUpdate)
+                             userInfo:nil
+                             repeats:YES] retain];
+            }
+            blinged = NO;
         }
-        [statusWindowController showRegistrationQueryWindow];
+        [self setBlingTime:nil];
     }
 }