OSDN Git Service

For El Capitan Beta
[letter-fix/LetterFix.git] / LFApp.m
1 //
2 //  LFApp.m
3 //  LetterFix2
4 //
5 //  Created by kuri on 10/02/26.
6 //  Copyright 2010-2015 kuri. All rights reserved.
7 //
8
9 #import "LFApp.h"
10
11 @implementation LFApp
12
13 - (id) init
14 {
15     self = [super init];
16     
17     if (self != nil) {
18         userDefaults = [NSUserDefaults standardUserDefaults];
19         
20         infodict     = [[NSBundle mainBundle] infoDictionary];
21         mailversion  = [infodict objectForKey:@"CFBundleVersion"];
22         lastknow     = [userDefaults stringForKey:@"LetterFixLastKnownBundleVersion"];
23         verm         = [[infodict valueForKey:@"CFBundleVersion"] integerValue];
24         
25         if (lastknow && [mailversion compare:lastknow] != NSOrderedSame) {
26             NSAlert *alert = [[NSAlert alloc] init];
27             [alert setMessageText:@"LetterFix plug-in"];
28             [alert setInformativeText:@"Mail.app が変更されました。\n"
29              @"Mail.app のアップデート等により,プラグインの動作に問題が発生する場合は,アンインストールしてください。\n"
30              @"このプラグインは通常 ~/Library/Mail/Bundles/ にインストールされています。"];
31             [alert setAlertStyle:NSInformationalAlertStyle];
32             [alert runModal];
33             [alert release];
34         }
35         
36         SInt32 systemVersionMajor, systemVersionMinor;
37         if ((Gestalt(gestaltSystemVersionMajor, &systemVersionMajor) == noErr)&&
38             (Gestalt(gestaltSystemVersionMinor, &systemVersionMinor) == noErr)) {
39             if (systemVersionMajor == 10) {
40                 if (systemVersionMinor == 9) {
41                     ver = LF_Mavericks;
42                 } else if (systemVersionMinor == 10) {
43                     ver = LF_Yosemite;
44                 } else if (systemVersionMinor == 11) {
45                     ver = LF_ElCapitan;
46                 } else {
47                     ver = LF_Unknown;
48                 }
49             } else {
50                 ver = LF_Unknown;
51             }
52         } else {
53             ver = LF_Unknown;
54         }
55
56         [userDefaults setObject:mailversion forKey:@"LetterFixLastKnownBundleVersion"];
57         
58         [self setIsActive:![userDefaults boolForKey:@"LetterFixDisabled"]];
59         [self setIsOsDependentFix:![userDefaults boolForKey:@"LetterFixOsDependentFixDisabled"]];
60         [self setParenSymbolFix:![userDefaults boolForKey:@"LetterFixParenSymbolFixDisabled"]];
61         [self setSomeParenSymbolNotFix:[userDefaults boolForKey:@"LetterFixSomeParenSymbolFixEnabled"]];
62         [self setIsAllLetterFix:![userDefaults boolForKey:@"LetterFixAllLetterFixDisabled"]];
63         [self setOperationAtOpen:[userDefaults integerForKey:@"LetterFixOperationAtOpen"]];
64         [self setIsCheckSubject:![userDefaults integerForKey:@"LetterFixCheckSubjectDisabled"]];
65         [self setWillCheckOnSave:[userDefaults integerForKey:@"LetterFixCheckOnSaveEnabled"]];
66         menu = [[LFMenu alloc] initWithApp:self];
67         [menu inject];
68         
69         if (![[NSLocale preferredLanguages] containsObject:@"ja"]) {
70             NSAlert *alert = [[NSAlert alloc] init];
71             [alert setMessageText:@"LetterFix plug-in"];
72             [alert setInformativeText:@"システム環境設定>言語とテキスト(Language & Text)内の言語リストに"
73              @"「日本語」が存在しません。そのため Letter-fix は動作せず、すべての日本語メールはUTF-8で送信されます。"
74              @"言語リストに日本語を加えてください。なお順序は問いません。"];
75             [alert setAlertStyle:NSInformationalAlertStyle];
76             [alert runModal];
77             [alert release];
78             isActive = FALSE;
79             [[menu onoffMenuItem] setState:FALSE];
80         }
81     }
82     return self;
83 }
84
85 - (BOOL) isActive
86 {
87     return isActive;
88 }
89
90 - (void) setIsActive:(BOOL)active
91 {
92     [userDefaults setBool:!active forKey:@"LetterFixDisabled"];
93     isActive = active;
94 }
95
96 - (BOOL) isOsDependentFix
97 {
98     return isOsDependentFix;
99 }
100
101 - (void) setIsOsDependentFix:(BOOL)active
102 {
103     [userDefaults setBool:!active forKey:@"LetterFixOsDependentFixDisabled"];
104     isOsDependentFix = active;
105 }
106
107 - (BOOL) parenSymbolFix
108 {
109     return parenSymbolFix;
110 }
111
112 - (void) setParenSymbolFix:(BOOL)active
113 {
114     [userDefaults setBool:!active forKey:@"LetterFixParenSymbolFixDisabled"];
115     parenSymbolFix = active;
116 }
117
118 - (BOOL) someParenSymbolNotFix
119 {
120     return someParenSymbolNotFix;
121 }
122
123 - (void) setSomeParenSymbolNotFix:(BOOL)active
124 {
125     [userDefaults setBool:active forKey:@"LetterFixSomeParenSymbolFixEnabled"];
126     someParenSymbolNotFix = active;
127 }
128
129 - (BOOL) isAllLetterFix
130 {
131     return isAllLetterFix;
132 }
133
134 - (void) setIsAllLetterFix:(BOOL)active
135 {
136     [userDefaults setBool:!active forKey:@"LetterFixAllLetterFixDisabled"];
137     isAllLetterFix = active;
138 }
139
140 - (int) operationAtOpen
141 {
142     return operationAtOpen;
143 }
144
145 - (void) setOperationAtOpen:(int)value
146 {
147     [userDefaults setInteger:value forKey:@"LetterFixOperationAtOpen"];
148     operationAtOpen = value;
149 }
150
151 - (BOOL) isCheckSubject
152 {
153     return isCheckSubject;
154 }
155
156 - (void) setIsCheckSubject:(BOOL)active
157 {
158     [userDefaults setBool:!active forKey:@"LetterFixCheckSubjectDisabled"];
159     isCheckSubject = active;
160 }
161
162 - (BOOL) willCheckOnSave
163 {
164     return willCheckOnSave;
165 }
166
167 - (void) setWillCheckOnSave:(BOOL)active
168 {
169     [userDefaults setBool:active forKey:@"LetterFixCheckOnSaveEnabled"];
170     willCheckOnSave = active;
171 }
172
173 @synthesize ver;
174 @synthesize verm;
175
176 @end