-
Notifications
You must be signed in to change notification settings - Fork 180
/
ScreenSaverPasswordAction.m
86 lines (70 loc) · 2.23 KB
/
ScreenSaverPasswordAction.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
//
// ScreenSaverPasswordAction.m
// ControlPlane
//
// Created by David Symonds on 7/06/07.
//
#import "ScreenSaverPasswordAction.h"
@implementation ScreenSaverPasswordAction
- (NSString *)description
{
if (turnOn)
return NSLocalizedString(@"Enabling screen saver password.", @"");
else
return NSLocalizedString(@"Disabling screen saver password.", @"");
}
- (BOOL)execute:(NSString **)errorString
{
BOOL success;
NSNumber *val = [NSNumber numberWithBool:turnOn];
CFPreferencesSetValue(CFSTR("askForPassword"), (CFPropertyListRef) val,
CFSTR("com.apple.screensaver"),
kCFPreferencesCurrentUser, kCFPreferencesCurrentHost);
success = CFPreferencesSynchronize(CFSTR("com.apple.screensaver"),
kCFPreferencesCurrentUser, kCFPreferencesCurrentHost);
// Notify login process
// not sure this does or why it must be called...anyone? (DBR)
if (success) {
CFMessagePortRef port = CFMessagePortCreateRemote(NULL, CFSTR("com.apple.loginwindow.notify"));
success = (CFMessagePortSendRequest(port, 500, 0, 0, 0, 0, 0) == kCFMessagePortSuccess);
CFRelease(port);
}
if (!success) {
*errorString = NSLocalizedString(@"Failed toggling screen saver password!", @"");
return NO;
}
return YES;
}
+ (NSString *)helpText
{
return NSLocalizedString(@"The parameter for ScreenSaverPasswordAction actions is either \"1\" "
"or \"0\", depending on whether you want your screen saver password "
"enabled or disabled.", @"");
}
+ (NSString *)creationHelpText
{
// FIXME: is there some useful text we could use?
return @"";
}
+ (NSArray *)limitedOptions
{
return [NSArray arrayWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"option",
NSLocalizedString(@"Enable screen saver password", @""), @"description", nil],
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], @"option",
NSLocalizedString(@"Disable screen saver password", @""), @"description", nil],
nil];
}
+ (NSString *) friendlyName {
return NSLocalizedString(@"Screen Saver Password", @"");
}
+ (NSString *)menuCategory {
return NSLocalizedString(@"System Preferences", @"");
}
+ (BOOL) shouldWaitForScreensaverExit {
return YES;
}
+ (BOOL) shouldWaitForScreenUnlock {
return YES;
}
@end