// // MPMathRules.m // MathPad // // Created by Kim Wittenburg on 14.09.14. // Copyright (c) 2014 Kim Wittenburg. All rights reserved. // #import "MPMathRules.h" NSString *MPMathRulesMaximumOperatorChainLengthKey = @"MPMathRulesMaximumOperatorChainLengthKey"; NSString *MPMathRulesMaximumOperatorChainLengthInMultiplicationKey = @"MPMathRulesMaximumOperatorChainLengthInMultiplicationKey"; NSString *MPMathRulesIsUsingDegreesKey = @"MPMathRulesIsUsingDegreesKey"; @implementation MPMathRules static MPMathRules *sharedRules; + (MPMathRules *)sharedRules { if (!sharedRules) { sharedRules = [[MPMathRules alloc] init]; } return sharedRules; } - (instancetype)init { if (sharedRules) { return sharedRules; } self = [super init]; if (self) { _usingUserDefaultValues = YES; NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSNumber *userDefaultsMaximumOperatorChainLength = [userDefaults objectForKey:MPMathRulesMaximumOperatorChainLengthKey]; NSNumber *userDefaultsMaximumOperatorChainLengthInMultiplication = [userDefaults objectForKey:MPMathRulesMaximumOperatorChainLengthInMultiplicationKey]; NSNumber *userDefaultsIsUsingDegrees = [userDefaults objectForKey:MPMathRulesIsUsingDegreesKey]; _maximumOperatorChainLength = userDefaultsMaximumOperatorChainLength != nil ? userDefaultsMaximumOperatorChainLength.unsignedIntegerValue : 2; _maximumOperatorChainLengthInMultiplication = userDefaultsMaximumOperatorChainLengthInMultiplication != nil ? userDefaultsMaximumOperatorChainLengthInMultiplication.unsignedIntegerValue : 1; _isUsingDegrees = userDefaultsIsUsingDegrees.boolValue; } return self; } - (void)setUsingUserDefaultValues:(BOOL)usingUserDefaultValues { _usingUserDefaultValues = usingUserDefaultValues; // Save the current values self.maximumOperatorChainLength = self.maximumOperatorChainLength; self.maximumOperatorChainLengthInMultiplication = self.maximumOperatorChainLengthInMultiplication; self.isUsingDegrees = self.isUsingDegrees; } - (void)setMaximumOperatorChainLength:(NSUInteger)maximumOperatorChainLength { _maximumOperatorChainLength = maximumOperatorChainLength; if (self.isUsingUserDefaultValues) { [[NSUserDefaults standardUserDefaults] setObject:@(maximumOperatorChainLength) forKey:MPMathRulesMaximumOperatorChainLengthKey]; } } - (void)setMaximumOperatorChainLengthInMultiplication:(NSUInteger)maximumOperatorChainLengthInMultiplication { _maximumOperatorChainLengthInMultiplication = maximumOperatorChainLengthInMultiplication; if (self.isUsingUserDefaultValues) { [[NSUserDefaults standardUserDefaults] setObject:@(maximumOperatorChainLengthInMultiplication) forKey:MPMathRulesMaximumOperatorChainLengthInMultiplicationKey]; } } - (void)setIsUsingDegrees:(BOOL)isUsingDegrees { _isUsingDegrees = isUsingDegrees; if (self.isUsingUserDefaultValues) { [[NSUserDefaults standardUserDefaults] setBool:isUsingDegrees forKey:MPMathRulesIsUsingDegreesKey]; } } @end