OSDN Git Service

遠征終了の通知が出続けてしまう問題を修正
authormasakih <masakih@users.sourceforge.jp>
Fri, 28 Feb 2014 11:22:56 +0000 (20:22 +0900)
committermasakih <masakih@users.sourceforge.jp>
Fri, 28 Feb 2014 11:22:56 +0000 (20:22 +0900)
KCD/HMDocksViewController.m

index f2061c5..dbd6c82 100644 (file)
        NSArray *fleetNameKeys = @[@"deck2.selection.name", @"deck3.selection.name", @"deck4.selection.name"];
        
        NSTimeInterval time = [[self valueForKey:timeKeys[number - 2]] doubleValue];
-       BOOL didNotified = [[self valueForKey:notifiedKeys[number - 2]] boolValue];
        
-       if(!didNotified && time < 1 * 60 - [[NSTimeZone systemTimeZone] secondsFromGMT]) {
-               NSString *missionName = [self valueForKey:nameKeys[number - 2]];
-               NSString *fleetName = [self valueForKeyPath:fleetNameKeys[number - 2]];
-               
-               NSUserNotification * notification = [NSUserNotification new];
-               NSString *format = NSLocalizedString(@"%@ Will Return From Mission.", @"%@ Will Return From Mission.");
-               notification.title = [NSString stringWithFormat:format, fleetName];
-               format = NSLocalizedString(@"%@ Will Return From %@.", @"%@ Will Return From %@.");
-               notification.informativeText = [NSString stringWithFormat:format, fleetName, missionName];
-               [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
-               
-               [self setValue:@YES forKey:notifiedKeys[number - 2]];
+       if(time < 1 * 60 - [[NSTimeZone systemTimeZone] secondsFromGMT]) {
+               BOOL didNotified = [[self valueForKey:notifiedKeys[number - 2]] boolValue];
+               if(!didNotified) {
+                       NSString *missionName = [self valueForKey:nameKeys[number - 2]];
+                       NSString *fleetName = [self valueForKeyPath:fleetNameKeys[number - 2]];
+                       
+                       NSUserNotification * notification = [NSUserNotification new];
+                       NSString *format = NSLocalizedString(@"%@ Will Return From Mission.", @"%@ Will Return From Mission.");
+                       notification.title = [NSString stringWithFormat:format, fleetName];
+                       format = NSLocalizedString(@"%@ Will Return From %@.", @"%@ Will Return From %@.");
+                       notification.informativeText = [NSString stringWithFormat:format, fleetName, missionName];
+                       [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
+                       
+                       [self setValue:@YES forKey:notifiedKeys[number - 2]];
+               }
+       } else {
+               [self setValue:@NO forKey:notifiedKeys[number - 2]];
        }
 }
 
 - (NSString *)missionNameForDeckNumber:(NSUInteger)number
 {
        NSArray *areaIdKeys = @[@"deck2.selection.mission_1", @"deck3.selection.mission_1", @"deck4.selection.mission_1"];
-       NSArray *notifiedKeys = @[@"deck2Notified", @"deck3Notified", @"deck4Notified"];
        NSArray *flagKeys = @[@"deck2Flag", @"deck3Flag", @"deck4Flag"];
 
        NSNumber *areaId = [self valueForKeyPath:areaIdKeys[number - 2]];
-       if(![areaId isKindOfClass:[NSNumber class]]) {
-               [self setValue:@NO forKey:notifiedKeys[number - 2]];
-               [self setValue:@NO forKey:flagKeys[number - 2]]; 
+       if(![areaId isKindOfClass:[NSNumber class]] || [areaId integerValue] == 0) {
+               [self setValue:@NO forKey:flagKeys[number - 2]];
                return nil;
        }
        
        
        NSArray *array = [self.managedObjectContext executeFetchRequest:request error:NULL];
        if([array count] == 0) {
-               [self setValue:@NO forKey:notifiedKeys[number - 2]];
                [self setValue:@NO forKey:flagKeys[number - 2]];
-               return nil;
+               return @"Unknown";
        }
        
        NSString *name = [array[0] valueForKey:@"name"];
        [request setPredicate:predicate];
        
        NSArray *array = [self.managedObjectContext executeFetchRequest:request error:NULL];
-       if([array count] == 0) return nil;
+       if([array count] == 0) return @"Unknown";
        
        NSString *name = [array[0] valueForKeyPath:@"master_ship.name"];
        return name;