-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNSUserDefaults+PDDefaultsAdditions.m
110 lines (77 loc) · 3.48 KB
/
NSUserDefaults+PDDefaultsAdditions.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//
// NSUserDefaults+PDDefaultsAdditions.m
// SproutedUtilities
//
// Created by Philip Dow on 5/26/06.
// CopyrightSprouted. All rights reserved.
// All inquiries should be directed to [email protected]
//
#import <SproutedUtilities/NSUserDefaults+PDDefaultsAdditions.h>
@implementation NSUserDefaults (PDDefaultsAdditions)
- (NSDictionary*) defaultEntryAttributes {
//
// the default font - archive this!
NSFont *defaultFont = [NSFont systemFontOfSize:15.0];
NSData *defaultFontData = [[NSUserDefaults standardUserDefaults] dataForKey:@"DefaultEntryFont"];
if ( defaultFontData != nil )
defaultFont = [NSUnarchiver unarchiveObjectWithData:defaultFontData];
if ( defaultFont == nil || ![defaultFont isKindOfClass:[NSFont class]] ) {
NSString *fontFamName = [[NSUserDefaults standardUserDefaults] objectForKey:@"Journler Default Font"];
NSString *fontSize = [[NSUserDefaults standardUserDefaults] objectForKey:@"Text Font Size"];
if ( fontFamName && fontSize ) {
defaultFont = [[NSFontManager sharedFontManager] convertFont:defaultFont toFace:fontFamName];
defaultFont = [[NSFontManager sharedFontManager] convertFont:defaultFont toSize:[fontSize floatValue]];
}
}
//
// the default color
NSColor *defaultColor = nil;
NSData *defaultColorData = [[NSUserDefaults standardUserDefaults] dataForKey:@"Entry Text Color"];
if ( defaultColorData != nil )
defaultColor = [NSUnarchiver unarchiveObjectWithData:defaultColorData];
else
defaultColor = [NSColor blackColor];
//
// the default paragraph style
NSParagraphStyle *defaultParagraph;
NSData *paragraphData = [[NSUserDefaults standardUserDefaults] dataForKey:@"DefaultEntryParagraphStyle"];
if ( paragraphData != nil )
defaultParagraph = [NSUnarchiver unarchiveObjectWithData:paragraphData];
else
defaultParagraph = [NSParagraphStyle defaultParagraphStyle];
//
// put it all together
NSDictionary *attr = [[NSDictionary alloc] initWithObjectsAndKeys:
defaultFont, NSFontAttributeName,
defaultColor, NSForegroundColorAttributeName,
defaultParagraph, NSParagraphStyleAttributeName, nil];
return [attr autorelease];
}
#pragma mark -
- (NSFont*) fontForKey:(NSString*)aKey {
if ( aKey == nil ) [NSException raise:NSInvalidArgumentException format:@""];
NSData *data = [[NSUserDefaults standardUserDefaults] dataForKey:aKey];
if ( data == nil ) return nil;
id font = [NSUnarchiver unarchiveObjectWithData:data];
if ( font == nil || ![font isKindOfClass:[NSFont class]] ) return nil;
else return font;
}
- (void) setFont:(NSFont*)aFont forKey:(NSString*)aKey {
if (aFont == nil || aKey == nil) [NSException raise:NSInvalidArgumentException format:@""];
NSData *data = [NSArchiver archivedDataWithRootObject:aFont];
if ( data ) [[NSUserDefaults standardUserDefaults] setObject:data forKey:aKey];
}
- (NSColor*) colorForKey:(NSString*)aKey {
if ( aKey == nil ) [NSException raise:NSInvalidArgumentException format:@""];
NSData *data = [[NSUserDefaults standardUserDefaults] dataForKey:aKey];
if ( data == nil ) return nil;
id color = [NSUnarchiver unarchiveObjectWithData:data];
if ( color == nil || ![color isKindOfClass:[NSColor class]] ) return nil;
else return color;
}
- (void) setColor:(NSColor*)aColor forKey:(NSString*)aKey {
if (aColor == nil || aColor == nil) [NSException raise:NSInvalidArgumentException format:@""];
NSData *data = [NSArchiver archivedDataWithRootObject:aColor];
if ( data ) [[NSUserDefaults standardUserDefaults] setObject:data forKey:aKey];
}
@end