// 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