// // LFApp.m // LetterFix2 // // Created by kuri on 10/02/26. // Copyright 2010-2017 kuri. All rights reserved. // #import "LFApp.h" @implementation LFApp - (id) init { self = [super init]; if (self != nil) { userDefaults = [NSUserDefaults standardUserDefaults]; infodict = [[NSBundle mainBundle] infoDictionary]; mailversion = [infodict objectForKey:@"CFBundleVersion"]; lastknow = [userDefaults stringForKey:@"LetterFixLastKnownBundleVersion"]; verm = [[infodict valueForKey:@"CFBundleVersion"] integerValue]; if (lastknow && [mailversion compare:lastknow] != NSOrderedSame) { NSAlert *alert = [[NSAlert alloc] init]; [alert setMessageText:@"LetterFix plug-in"]; [alert setInformativeText:@"Mail.app が変更されました。\n" @"Mail.app のアップデート等により,プラグインの動作に問題が発生する場合は,アンインストールしてください。\n" @"このプラグインは通常 ~/Library/Mail/Bundles/ にインストールされています。"]; [alert setAlertStyle:NSInformationalAlertStyle]; [alert runModal]; [alert release]; } 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; } if (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 setOperationAtOpen:[userDefaults integerForKey:@"LetterFixOperationAtOpen"]]; if (ver == LF_HighSierra) [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; } - (BOOL) isActive { return isActive; } - (void) setIsActive:(BOOL)active { [userDefaults setBool:!active forKey:@"LetterFixDisabled"]; isActive = active; } - (BOOL) isOsDependentFix { return isOsDependentFix; } - (void) setIsOsDependentFix:(BOOL)active { [userDefaults setBool:!active forKey:@"LetterFixOsDependentFixDisabled"]; isOsDependentFix = active; } - (BOOL) parenSymbolFix { return parenSymbolFix; } - (void) setParenSymbolFix:(BOOL)active { [userDefaults setBool:!active forKey:@"LetterFixParenSymbolFixDisabled"]; parenSymbolFix = active; } - (BOOL) someParenSymbolNotFix { return someParenSymbolNotFix; } - (void) setSomeParenSymbolNotFix:(BOOL)active { [userDefaults setBool:active forKey:@"LetterFixSomeParenSymbolFixEnabled"]; someParenSymbolNotFix = active; } - (BOOL) isAllLetterFix { return isAllLetterFix; } - (void) setIsAllLetterFix:(BOOL)active { [userDefaults setBool:!active forKey:@"LetterFixAllLetterFixDisabled"]; isAllLetterFix = active; } - (int) operationAtOpen { return operationAtOpen; } - (void) setOperationAtOpen:(int)value { [userDefaults setInteger:value forKey:@"LetterFixOperationAtOpen"]; operationAtOpen = value; } - (BOOL) isCheckSubject { return isCheckSubject; } - (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; @end