OSDN Git Service

For macOS Big Sur 11.0 Developer Beta 5
[letter-fix/LetterFix.git] / LFApp.m
diff --git a/LFApp.m b/LFApp.m
index 7f4bbff..803e586 100644 (file)
--- a/LFApp.m
+++ b/LFApp.m
@@ -3,25 +3,26 @@
 //  LetterFix2
 //
 //  Created by kuri on 10/02/26.
-//  Copyright 2010-2011 kuri. All rights reserved.
+//  Copyright 2010-2020 kuri. All rights reserved.
 //
 
 #import "LFApp.h"
+#import "LFMenu.h"
 
 @implementation LFApp
 
-- (id) init
+- (instancetype) init
 {
     self = [super init];
     
     if (self != nil) {
        userDefaults = [NSUserDefaults standardUserDefaults];
        
-       infodict     = [[NSBundle mainBundle] infoDictionary];
-       mailversion  = [infodict objectForKey:@"CFBundleVersion"];
-       lastknow     = [userDefaults stringForKey:@"LetterFixLastKnownBundleVersion"];
-       
-       if (lastknow && [mailversion compare:lastknow] != NSOrderedSame) {
+        infodict       = [NSBundle mainBundle].infoDictionary;
+        mailVersion    = infodict[@"CFBundleVersion"];
+        lastknow       = [userDefaults stringForKey:@"LetterFixLastKnownBundleVersion"];
+        
+       if (lastknow && [mailVersion compare:lastknow] != NSOrderedSame) {
            NSAlert *alert = [[NSAlert alloc] init];
            [alert setMessageText:@"LetterFix plug-in"];
            [alert setInformativeText:@"Mail.app が変更されました。\n"
            [alert release];
        }
        
-        SInt32 systemVersion;
-        if (Gestalt(gestaltSystemVersion, &systemVersion) == noErr) {
-            if ((systemVersion & 0xfff0) == 0x1050) {
-                ver = LF_Leopard;
-            } else if ((systemVersion & 0xfff0) == 0x1060) {
-                ver = LF_SnowLeopard;
-            } else if ((systemVersion & 0xfff0) == 0x1070) {
-                ver = LF_Lion;
-            } else if ((systemVersion & 0xfff0) == 0x1080) {
-                ver = LF_MountainLion;
-            } else if ((systemVersion & 0xfff0) == 0x1090) {
-                ver = LF_Mavericks;
+        SInt32 systemVersionMajor, systemVersionMinor;
+        if ((Gestalt(gestaltSystemVersionMajor, &systemVersionMajor) == noErr) &&
+           (Gestalt(gestaltSystemVersionMinor, &systemVersionMinor) == noErr)) {
+            if (systemVersionMajor == 10) {
+                switch (systemVersionMinor) {
+                    case 9:
+                        version = LF_Mavericks;
+                        break;
+                    case 10:
+                        version = LF_Yosemite;
+                        break;
+                    case 11:
+                        version = LF_ElCapitan;
+                        break;
+                    case 12:
+                        version = LF_Sierra;
+                        break;
+                    case 13:
+                        version = LF_HighSierra;
+                        break;
+                    case 14:
+                        version = LF_Mojave;
+                        break;
+                    case 15:
+                        version = LF_Catalina;
+                        break;
+                    default:
+                        version = LF_Unknown;
+                        break;
+                }
+            } else if (systemVersionMajor == 11) {
+                switch (systemVersionMinor) {
+                    case 0:
+                        version = LF_BigSur;
+                        break;
+                    default:
+                        version = LF_Unknown;
+                        break;
+                }
             } else {
-                ver = LF_Unknown;
+                version = LF_Unknown;
             }
         } else {
-            ver = LF_Unknown;
+            version = 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 (version != 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.isActive = ![userDefaults boolForKey:@"LetterFixDisabled"];
+            self.shouldFixOsDependents = ![userDefaults boolForKey:@"LetterFixOsDependentFixDisabled"];
+            self.shouldFixParenSymbols = ![userDefaults boolForKey:@"LetterFixParenSymbolFixDisabled"];
+            self.shouldNotFixSomeParenSymbols = [userDefaults boolForKey:@"LetterFixSomeParenSymbolFixEnabled"];
+            self.shouldFixAllLetters = ![userDefaults boolForKey:@"LetterFixAllLetterFixDisabled"];
+            self.shouldAppendCodeInfo = [userDefaults boolForKey:@"LetterFixDoAppendCodeInfo"];
+            self.operationModeOnLoad = (int)[userDefaults integerForKey:@"LetterFixOperationAtOpen"];
+            if (version == LF_HighSierra || version == LF_Mojave || version == LF_Catalina || version == LF_BigSur )
+                self.shouldCheckSubject = [userDefaults integerForKey:@"LetterFixCheckSubjectEnabled"];
+            else
+                self.shouldCheckSubject = ![userDefaults integerForKey:@"LetterFixCheckSubjectDisabled"];
+            self.shouldCheckOnSave = [userDefaults integerForKey:@"LetterFixCheckOnSaveEnabled"];
+            self.shouldIgnoreZeroWidthSpace = [userDefaults boolForKey:@"LetterFixIgnoreZeroWidthSpace"];
+            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;
 }
 
 - (BOOL) isActive
 {
-    return isActive;
+    return (isActive);
 }
 
 - (void) setIsActive:(BOOL)active
     isActive = active;
 }
 
-- (BOOL) isOsDependentFix
+- (BOOL) shouldFixOsDependents
 {
-    return isOsDependentFix;
+    return (flagFixOsDependents);
 }
 
-- (void) setIsOsDependentFix:(BOOL)active
+- (void) setShouldFixOsDependents:(BOOL)active
 {
     [userDefaults setBool:!active forKey:@"LetterFixOsDependentFixDisabled"];
-    isOsDependentFix = active;
+    flagFixOsDependents = active;
 }
 
-- (BOOL) parenSymbolFix
+- (BOOL) shouldFixParenSymbols
 {
-    return parenSymbolFix;
+    return (flagFixParenSymbols);
 }
 
-- (void) setParenSymbolFix:(BOOL)active
+- (void) setShouldFixParenSymbols:(BOOL)active
 {
     [userDefaults setBool:!active forKey:@"LetterFixParenSymbolFixDisabled"];
-    parenSymbolFix = active;
+    flagFixParenSymbols = active;
 }
 
-- (BOOL) someParenSymbolNotFix
+- (BOOL) shouldNotFixSomeParenSymbols
 {
-    return someParenSymbolNotFix;
+    return (flagNotFixSomeParenSymbols);
 }
 
-- (void) setSomeParenSymbolNotFix:(BOOL)active
+- (void) setShouldNotFixSomeParenSymbols:(BOOL)active
 {
     [userDefaults setBool:active forKey:@"LetterFixSomeParenSymbolFixEnabled"];
-    someParenSymbolNotFix = active;
+    flagNotFixSomeParenSymbols = active;
 }
 
-- (BOOL) isAllLetterFix
+- (BOOL) shouldFixAllLetters
 {
-    return isAllLetterFix;
+    return (flagFixAllLetters);
 }
 
-- (void) setIsAllLetterFix:(BOOL)active
+- (void) setShouldFixAllLetters:(BOOL)active
 {
     [userDefaults setBool:!active forKey:@"LetterFixAllLetterFixDisabled"];
-    isAllLetterFix = active;
+    flagFixAllLetters = active;
 }
 
-- (BOOL) changeEncode
+- (BOOL) shouldAppendCodeInfo
 {
-    return changeEncode;
+    return (flagAppendCodeInfo);
 }
 
-- (void) setChangeEncode:(BOOL)active
+- (void) setShouldAppendCodeInfo:(BOOL)active
 {
-    [userDefaults setBool:!active forKey:@"LetterFixChangeEncodeDisabled"];
-    changeEncode = active;
+    [userDefaults setBool:active forKey:@"LetterFixDoAppendCodeInfo"];
+    flagAppendCodeInfo = active;
 }
 
-- (int) operationAtOpen
+- (int) operationModeOnLoad
 {
-    return operationAtOpen;
+    return (operationModeOnLoad);
 }
 
-- (void) setOperationAtOpen:(int)value
+- (void) setOperationModeOnLoad:(int)value
 {
     [userDefaults setInteger:value forKey:@"LetterFixOperationAtOpen"];
-    operationAtOpen = value;
+    operationModeOnLoad = value;
 }
 
-- (BOOL) isCheckSubject
+- (BOOL) shouldCheckSubject
 {
-    return isCheckSubject;
+    return (flagCheckSubject);
 }
 
-- (void) setIsCheckSubject:(BOOL)active
+- (void) setShouldCheckSubject:(BOOL)active
 {
+    [userDefaults setBool:active forKey:@"LetterFixCheckSubjectEnabled"];
     [userDefaults setBool:!active forKey:@"LetterFixCheckSubjectDisabled"];
-    isCheckSubject = active;
+    flagCheckSubject = active;
+}
+
+- (BOOL) shouldCheckOnSave
+{
+    return (flagCheckOnSave);
+}
+
+- (void) setShouldCheckOnSave:(BOOL)active
+{
+    [userDefaults setBool:active forKey:@"LetterFixCheckOnSaveEnabled"];
+    flagCheckOnSave = active;
+}
+
+- (BOOL) shouldIgnoreZeroWidthSpace
+{
+    return (flagIgnoreZeroWidthSpace);
+}
+
+- (void) setShouldIgnoreZeroWidthSpace:(BOOL)active
+{
+    [userDefaults setBool:active forKey:@"LetterFixIgnoreZeroWidthSpace"];
+    flagIgnoreZeroWidthSpace = active;
 }
 
-@synthesize ver;
+@synthesize version;
+@synthesize mailVersion;
 
 @end