Files
Xcode-Quick-Localization/QuickLocalization/OLSettingController.m
2015-12-05 21:50:55 -05:00

170 lines
7.1 KiB
Objective-C

//
// OLSettingController.m
// QuickLocalization
//
// Created by Zitao Xiong on 7/18/15.
// Copyright (c) 2015 nanaimostudio. All rights reserved.
//
#import "OLSettingController.h"
NSUInteger QL_CountOccurentOfStringWithSubString(NSString *str, NSString *subString) {
NSUInteger count = 0, length = [str length];
NSRange range = NSMakeRange(0, length);
while(range.location != NSNotFound)
{
range = [str rangeOfString:subString options:0 range:range];
if(range.location != NSNotFound)
{
range = NSMakeRange(range.location + range.length, length - (range.location + range.length));
count++;
}
}
return count;
}
@interface OLSettingController ()
@property (weak) IBOutlet NSTextField *commentTextField;
@property (weak) IBOutlet NSTextField *tableNameTextField;
@property (weak) IBOutlet NSTextField *bunldeTextField;
@property (weak) IBOutlet NSButton *swiftCheckButton;
@property (weak) IBOutlet NSButton *commentSameAsKeyCheckButton;
@property (weak) IBOutlet NSComboBox *comboBox;
@property (weak) IBOutlet NSTextField *previewLabel;
@property (weak) IBOutlet NSButton *commentAsKeyButton;
@property (weak) IBOutlet NSTextField *valueTextField;
@property (weak) IBOutlet NSButton *swiftLocalizationPreviewButton;
@end
@implementation OLSettingController
- (void)windowDidLoad {
[super windowDidLoad];
[self.comboBox selectItemAtIndex:0];
[self updatePreviewText];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{
kQLFormatStringCommentValueKey: @"<# comment #>",
kQLFormatStringTableNameValueKey: @"nil",
kQLFormatStringBundleValueKey: @"nil",
kQLFormatStringValueValueKey: @"<# value #>",
kQLFormatStringCommentSameKey: @YES,
kQLFormatStringSwiftSyntax: @NO,
}];
self.commentTextField.stringValue = [[NSUserDefaults standardUserDefaults] objectForKey:kQLFormatStringCommentValueKey];
self.tableNameTextField.stringValue = [[NSUserDefaults standardUserDefaults] objectForKey:kQLFormatStringTableNameValueKey];
self.bunldeTextField.stringValue = [[NSUserDefaults standardUserDefaults] objectForKey:kQLFormatStringBundleValueKey];
self.valueTextField.stringValue = [[NSUserDefaults standardUserDefaults] objectForKey:kQLFormatStringValueValueKey];
if ([[NSUserDefaults standardUserDefaults] boolForKey:kQLFormatStringSwiftSyntax]) {
self.swiftLocalizationPreviewButton.state = NSOnState;
}
else {
self.swiftLocalizationPreviewButton.state = NSOffState;
}
if ([[NSUserDefaults standardUserDefaults] boolForKey:kQLFormatStringCommentSameKey]) {
self.commentSameAsKeyCheckButton.state = NSOnState;
}
else {
self.commentSameAsKeyCheckButton.state = NSOffState;
}
}
- (IBAction)commentDidChange:(id)sender {
[[NSUserDefaults standardUserDefaults] setObject:self.commentTextField.stringValue forKey:kQLFormatStringCommentValueKey];
[self updatePreviewText];
}
- (IBAction)onTableNameChanged:(id)sender {
[[NSUserDefaults standardUserDefaults] setObject:self.tableNameTextField.stringValue forKey:kQLFormatStringTableNameValueKey];
[self updatePreviewText];
}
- (IBAction)onBunldeNameChanged:(id)sender {
[[NSUserDefaults standardUserDefaults] setObject:self.bunldeTextField.stringValue forKey:kQLFormatStringBundleValueKey];
[self updatePreviewText];
}
- (IBAction)onCommentAsKayButton:(id)sender {
if (self.commentAsKeyButton.state == NSOnState) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kQLFormatStringCommentSameKey];
}
else {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:kQLFormatStringCommentSameKey];
}
[self updatePreviewText];
}
- (IBAction)onValueTextField:(id)sender {
[[NSUserDefaults standardUserDefaults] setObject:self.valueTextField.stringValue forKey:kQLFormatStringValueValueKey];
[self updatePreviewText];
}
- (IBAction)onSwiftLocalizationPreviewChanged:(id)sender {
if (self.swiftLocalizationPreviewButton.state == NSOnState) {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kQLFormatStringSwiftSyntax];
}
else {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:kQLFormatStringSwiftSyntax];
}
[self updatePreviewText];
}
- (IBAction)onComboBoxChanged:(id)sender {
[self updatePreviewText];
}
- (NSString *)updatePreviewText {
NSString *formatString = [self.comboBox objectValueOfSelectedItem];
NSUInteger placeholderCount = QL_CountOccurentOfStringWithSubString(formatString, @"%@");
NSString *value = @"\"Hello World\"";
if (self.swiftLocalizationPreviewButton.state == NSOffState) {
value = [NSString stringWithFormat:@"@%@", value];
}
NSString *comment;
NSString *savedComment;
if ([self.commentAsKeyButton state] == NSOnState) {
comment = [value copy];
savedComment = @"%@";
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kQLFormatStringCommentSameKey];
}
else {
comment = self.commentTextField.stringValue;
savedComment = comment.copy;
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:kQLFormatStringCommentSameKey];
}
NSString *savedFormatString;
if (placeholderCount == 2) {
//swift or object-c
[self.previewLabel setStringValue:[NSString stringWithFormat:formatString, value, comment]];
savedFormatString = [NSString stringWithFormat:formatString, @"%@", savedComment];
}
else if (placeholderCount == 4) {
//object-c from bundle
[self.previewLabel setStringValue:[NSString stringWithFormat:formatString, value, comment, self.tableNameTextField.stringValue, self.bunldeTextField.stringValue]];
savedFormatString = [NSString stringWithFormat:formatString, @"%@", savedComment, self.tableNameTextField.stringValue, self.bunldeTextField.stringValue];
}
else if (placeholderCount == 5) {
[self.previewLabel setStringValue:[NSString stringWithFormat:formatString, value, self.tableNameTextField.stringValue, self.bunldeTextField.stringValue, self.valueTextField.stringValue, comment]];
savedFormatString = [NSString stringWithFormat:formatString, @"%@", self.tableNameTextField.stringValue, self.bunldeTextField.stringValue, self.valueTextField.stringValue, savedComment];
}
else {
[self.previewLabel setStringValue:@"%@ must be 2, 4, or 5"];
return @"";
}
[[NSUserDefaults standardUserDefaults] setObject:savedFormatString forKey:kQLFormatStringKey];
return savedFormatString;
}
+ (void)registerFormatStringDefaults {
[[NSUserDefaults standardUserDefaults] registerDefaults:@{kQLFormatStringKey: @"NSLocalizedString(%@, %@)"}];
}
@end