OSDN Git Service

Bug fix
[letter-fix/LetterFix.git] / LFApp.m
diff --git a/LFApp.m b/LFApp.m
index c88f064..7a06510 100644 (file)
--- a/LFApp.m
+++ b/LFApp.m
@@ -3,7 +3,7 @@
 //  LetterFix2
 //
 //  Created by kuri on 10/02/26.
-//  Copyright 2010-2011 kuri. All rights reserved.
+//  Copyright 2010-2017 kuri. All rights reserved.
 //
 
 #import "LFApp.h"
            [alert release];
        }
        
-        SInt32 systemVersion;
-        if (Gestalt(gestaltSystemVersion, &systemVersion) == noErr) {
-            if ((systemVersion & 0xfff0) == 0x1090) {
-                ver = LF_Mavericks;
-            } else {
-                ver = LF_Unknown;
-            }
+        SInt32 systemVersionMajor, systemVersionMinor;
+        if ((Gestalt(gestaltSystemVersionMajor, &systemVersionMajor) == noErr) &&
+           (Gestalt(gestaltSystemVersionMinor, &systemVersionMinor) == noErr)) {
+            if (systemVersionMajor == 10) {
+                switch (systemVersionMinor) {
+                    case 9:
+                        ver = LF_Mavericks;
+                        break;
+                    case 10:
+                        ver = LF_Yosemite;
+                        break;
+                    case 11:
+                        ver = LF_ElCapitan;
+                        break;
+                    case 12:
+                        ver = LF_Sierra;
+                        break;
+                    case 13:
+                        ver = LF_HighSierra;
+                        break;
+                    case 14:
+                        ver = LF_Mojave;
+                        break;
+                    default:
+                        ver = LF_Unknown;
+                        break;
+                }
+           } else {
+               ver = LF_Unknown;
+           }
         } else {
             ver = LF_Unknown;
         }
-
-       [userDefaults setObject:mailversion forKey:@"LetterFixLastKnownBundleVersion"];
-       
-       [self setIsActive:![userDefaults boolForKey:@"LetterFixDisabled"]];
-       [self setIsOsDependentFix:![userDefaults boolForKey:@"LetterFixOsDependentFixDisabled"]];
-        [self setParenSymbolFix:![userDefaults boolForKey:@"LetterFixParenSymbolFixDisabled"]];
-        [self setSomeParenSymbolNotFix:[userDefaults boolForKey:@"LetterFixSomeParenSymbolFixEnabled"]];
-       [self setIsAllLetterFix:![userDefaults boolForKey:@"LetterFixAllLetterFixDisabled"]];
-       [self setChangeEncode:![userDefaults boolForKey:@"LetterFixChangeEncodeDisabled"]];
-       [self setOperationAtOpen:[userDefaults integerForKey:@"LetterFixOperationAtOpen"]];
-       [self setIsCheckSubject:![userDefaults integerForKey:@"LetterFixCheckSubjectDisabled"]];
-       menu = [[LFMenu alloc] initWithApp:self];
-       [menu inject];
+        
+        if (ver != LF_Unknown) {
+            [userDefaults setObject:mailversion forKey:@"LetterFixLastKnownBundleVersion"];
        
-       if (![[NSLocale preferredLanguages] containsObject:@"ja"]) {
-           NSAlert *alert = [[NSAlert alloc] init];
-           [alert setMessageText:@"LetterFix plug-in"];
-           [alert setInformativeText:@"システム環境設定>言語とテキスト(Language & Text)内の言語リストに"
-            @"「日本語」が存在しません。そのため Letter-fix は動作せず、すべての日本語メールはUTF-8で送信されます。"
-            @"言語リストに日本語を加えてください。なお順序は問いません。"];
-           [alert setAlertStyle:NSInformationalAlertStyle];
-           [alert runModal];
-           [alert release];
-           isActive = FALSE;
-           [[menu onoffMenuItem] setState:FALSE];
-       }
+            [self setIsActive:![userDefaults boolForKey:@"LetterFixDisabled"]];
+            [self setIsOsDependentFix:![userDefaults boolForKey:@"LetterFixOsDependentFixDisabled"]];
+            [self setParenSymbolFix:![userDefaults boolForKey:@"LetterFixParenSymbolFixDisabled"]];
+            [self setSomeParenSymbolNotFix:[userDefaults boolForKey:@"LetterFixSomeParenSymbolFixEnabled"]];
+            [self setIsAllLetterFix:![userDefaults boolForKey:@"LetterFixAllLetterFixDisabled"]];
+            [self setOperationAtOpen:[userDefaults integerForKey:@"LetterFixOperationAtOpen"]];
+            if (ver == LF_HighSierra || ver == LF_Mojave)
+                [self setIsCheckSubject:[userDefaults integerForKey:@"LetterFixCheckSubjectEnabled"]];
+            else
+                [self setIsCheckSubject:![userDefaults integerForKey:@"LetterFixCheckSubjectDisabled"]];
+            [self setWillCheckOnSave:[userDefaults integerForKey:@"LetterFixCheckOnSaveEnabled"]];
+            menu = [[LFMenu alloc] initWithApp:self];
+            [menu inject];
+
+            if (^{
+                for (NSString *lang in [NSLocale preferredLanguages])
+                    if ([lang hasPrefix:@"ja"]) return NO;
+                return YES;
+            }()) {
+                NSAlert *alert = [[NSAlert alloc] init];
+                [alert setMessageText:@"LetterFix plug-in"];
+                [alert setInformativeText:@"システム環境設定>言語とテキスト(Language & Text)内の言語リストに"
+                 @"「日本語」が存在しません。この状態では Letter-fix は動作せず、すべての日本語メールはUTF-8で送信されます。"
+                 @"言語リストに日本語を加えてください。なお順序は問いません。"];
+                [alert setAlertStyle:NSInformationalAlertStyle];
+                [alert runModal];
+                [alert release];
+                isActive = FALSE;
+                [[menu onoffMenuItem] setState:FALSE];
+            }
+        } else {
+            NSAlert *alert = [[NSAlert alloc] init];
+            [alert setMessageText:@"LetterFix plug-in"];
+            [alert setInformativeText:@"このバージョンのmacOSには対応していません。アンインストールしてください。"];
+            [alert setAlertStyle:NSInformationalAlertStyle];
+            [alert runModal];
+            [alert release];
+        }
     }
     return self;
 }
     isAllLetterFix = active;
 }
 
-- (BOOL) changeEncode
-{
-    return changeEncode;
-}
-
-- (void) setChangeEncode:(BOOL)active
-{
-    [userDefaults setBool:!active forKey:@"LetterFixChangeEncodeDisabled"];
-    changeEncode = active;
-}
-
 - (int) operationAtOpen
 {
     return operationAtOpen;
 
 - (void) setIsCheckSubject:(BOOL)active
 {
+    [userDefaults setBool:active forKey:@"LetterFixCheckSubjectEnabled"];
     [userDefaults setBool:!active forKey:@"LetterFixCheckSubjectDisabled"];
     isCheckSubject = active;
 }
 
+- (BOOL) willCheckOnSave
+{
+    return willCheckOnSave;
+}
+
+- (void) setWillCheckOnSave:(BOOL)active
+{
+    [userDefaults setBool:active forKey:@"LetterFixCheckOnSaveEnabled"];
+    willCheckOnSave = active;
+}
+
 @synthesize ver;
 @synthesize verm;