Skip to content

Commit cca1010

Browse files
authored
Merge pull request #446 from demosdemon/AppleShowScrollBars
add Show Scroll Bars action
2 parents 2137ca8 + 01f8572 commit cca1010

File tree

4 files changed

+125
-0
lines changed

4 files changed

+125
-0
lines changed

Diff for: ControlPlane.xcodeproj/project.pbxproj

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
5DCCE0BB1CA4870100FACF9F /* ScrollBarsAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DCCE0BA1CA4870100FACF9F /* ScrollBarsAction.m */; };
1011
640E7DC01C1C983400045672 /* ScreenLockEvidenceSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 640E7DBF1C1C983400045672 /* ScreenLockEvidenceSource.m */; };
1112
732A58DF1484300A0011019C /* ShellScriptEvidenceSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 732A58DE1484300A0011019C /* ShellScriptEvidenceSource.m */; };
1213
739492E2146B8018003C94DE /* DisplaySleepTimeAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 739492E1146B8018003C94DE /* DisplaySleepTimeAction.m */; };
@@ -308,6 +309,8 @@
308309
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
309310
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
310311
32CA4F630368D1EE00C91783 /* ControlPlane_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ControlPlane_Prefix.pch; path = Source/ControlPlane_Prefix.pch; sourceTree = "<group>"; };
312+
5DCCE0B91CA4870100FACF9F /* ScrollBarsAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScrollBarsAction.h; path = Source/ScrollBarsAction.h; sourceTree = "<group>"; };
313+
5DCCE0BA1CA4870100FACF9F /* ScrollBarsAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ScrollBarsAction.m; path = Source/ScrollBarsAction.m; sourceTree = "<group>"; };
311314
640E7DBE1C1C983400045672 /* ScreenLockEvidenceSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScreenLockEvidenceSource.h; path = Source/ScreenLockEvidenceSource.h; sourceTree = "<group>"; };
312315
640E7DBF1C1C983400045672 /* ScreenLockEvidenceSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ScreenLockEvidenceSource.m; path = Source/ScreenLockEvidenceSource.m; sourceTree = "<group>"; };
313316
732A58DD1484300A0011019C /* ShellScriptEvidenceSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ShellScriptEvidenceSource.h; path = Source/ShellScriptEvidenceSource.h; sourceTree = "<group>"; };
@@ -1174,6 +1177,8 @@
11741177
8D3C85130CDD8546009DBCD9 /* ScreenSaverStartAction.m */,
11751178
8DE4EE440C4B2A6F00A5B559 /* ScreenSaverTimeAction.h */,
11761179
8DE4EE450C4B2A6F00A5B559 /* ScreenSaverTimeAction.m */,
1180+
5DCCE0B91CA4870100FACF9F /* ScrollBarsAction.h */,
1181+
5DCCE0BA1CA4870100FACF9F /* ScrollBarsAction.m */,
11771182
DD8274F114115EE40098FA6E /* StartTimeMachineAction.h */,
11781183
DD8274F214115EE40098FA6E /* StartTimeMachineAction.m */,
11791184
8D75A61D0BE6F68B0069DF3F /* ToggleBluetoothAction.h */,
@@ -1502,6 +1507,7 @@
15021507
8D82F0A30AA81411009ADA44 /* PrefsWindowController.m in Sources */,
15031508
8D90E51F0B71C4C9007D39FD /* CPController.m in Sources */,
15041509
8D8C9CA60BBB74E70074D5B3 /* EvidenceSource.m in Sources */,
1510+
5DCCE0BB1CA4870100FACF9F /* ScrollBarsAction.m in Sources */,
15051511
8D8C9CE70BBB7BE00074D5B3 /* BluetoothEvidenceSource.m in Sources */,
15061512
DA7A0C171AE3F5A90063CDDC /* RemoteDesktopEvidenceSource.m in Sources */,
15071513
8D8C9E350BBB89320074D5B3 /* DB.m in Sources */,

Diff for: Source/Action.m

+3
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ - (void) handleURL:(NSString *)url {
251251
#import "ScreenSaverPasswordAction.h"
252252
#import "ScreenSaverStartAction.h"
253253
#import "ScreenSaverTimeAction.h"
254+
#import "ScrollBarsAction.h"
254255
#import "ShellScriptAction.h"
255256
#import "SpeakAction.h"
256257
#import "StartTimeMachineAction.h"
@@ -315,6 +316,7 @@ - (id)init
315316
[ScreenSaverPasswordAction class],
316317
[ScreenSaverStartAction class],
317318
[ScreenSaverTimeAction class],
319+
[ScrollBarsAction class],
318320
[ShellScriptAction class],
319321
[SpeakAction class],
320322
[StartTimeMachineAction class],
@@ -398,6 +400,7 @@ - (id)init
398400
NSLocalizedString(@"ScreenSaverPassword", @"Action type");
399401
NSLocalizedString(@"ScreenSaverStart", @"Action type");
400402
NSLocalizedString(@"ScreenSaverTime", @"Action type");
403+
NSLocalizedString(@"ScrollBars", @"Action type");
401404
NSLocalizedString(@"ShellScript", @"Action type");
402405
NSLocalizedString(@"Speak", @"Action type");
403406
NSLocalizedString(@"StartTimeMachine", @"Action type");

Diff for: Source/ScrollBarsAction.h

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// ScrollBarsAction.h
3+
// ControlPlane
4+
//
5+
// Created by Brandon LeBlanc on 3/24/16.
6+
//
7+
//
8+
9+
@class ScrollBarsAction;
10+
11+
#import "Action.h"
12+
13+
@interface ScrollBarsAction : Action<ActionWithLimitedOptions>
14+
15+
@end

Diff for: Source/ScrollBarsAction.m

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
//
2+
// ScrollBarsAction.m
3+
// ControlPlane
4+
//
5+
// Created by Brandon LeBlanc on 3/24/16.
6+
//
7+
//
8+
9+
#import "ScrollBarsAction.h"
10+
11+
@interface ScrollBarsAction ()
12+
13+
@property(copy) NSString *setting;
14+
15+
@end
16+
17+
@implementation ScrollBarsAction
18+
19+
- (instancetype)initWithOption:(NSString *)option {
20+
self = [super init];
21+
if (self) {
22+
self.setting = option;
23+
}
24+
25+
return self;
26+
}
27+
28+
- (instancetype)init {
29+
return [self initWithOption:@""];
30+
}
31+
32+
- (instancetype)initWithDictionary:(NSDictionary *)dict {
33+
return [self initWithOption:dict[@"parameter"]];
34+
}
35+
36+
- (void)dealloc {
37+
self.setting = nil;
38+
[super dealloc];
39+
}
40+
41+
- (NSMutableDictionary *)dictionary {
42+
NSMutableDictionary *dict = [super dictionary];
43+
dict[@"parameter"] = self.setting;
44+
return dict;
45+
}
46+
47+
- (NSString *)description {
48+
NSString *format = NSLocalizedString(@"Show Scroll Bars: %@", @"");
49+
return [NSString stringWithFormat:format, self.setting];
50+
}
51+
52+
- (BOOL)execute:(NSString **)errorString {
53+
CFPreferencesSetValue(CFSTR("AppleShowScrollBars"), (CFStringRef)self.setting,
54+
kCFPreferencesAnyApplication, kCFPreferencesCurrentUser,
55+
kCFPreferencesAnyHost);
56+
57+
CFPreferencesSynchronize(kCFPreferencesAnyApplication, kCFPreferencesCurrentUser,
58+
kCFPreferencesAnyHost);
59+
60+
[[NSDistributedNotificationCenter defaultCenter]
61+
postNotificationName:@"AppleShowScrollBarsSettingChanged"
62+
object:NULL];
63+
64+
return YES;
65+
}
66+
67+
+ (NSString *)helpText {
68+
return NSLocalizedString(@"Show scroll bars setting correlates to the option in"
69+
@" System Preferences.app.",
70+
@"");
71+
}
72+
73+
+ (NSString *)creationHelpText {
74+
return NSLocalizedString(@"Show Scroll Bars", @"");
75+
}
76+
77+
+ (NSArray *)limitedOptions {
78+
return @[
79+
@{ @"option" : @"Always",
80+
@"description" : NSLocalizedString(@"Always", @"") },
81+
@{
82+
@"option" : @"WhenScrolling",
83+
@"description" : NSLocalizedString(@"When scrolling", @"")
84+
},
85+
@{
86+
@"option" : @"Automatic",
87+
@"description" :
88+
NSLocalizedString(@"Automatically based on mouse or trackpad", @"")
89+
},
90+
];
91+
}
92+
93+
+ (NSString *)friendlyName {
94+
return NSLocalizedString(@"Show Scroll Bars", @"");
95+
}
96+
97+
+ (NSString *)menuCategory {
98+
return NSLocalizedString(@"System Preferences", @"");
99+
}
100+
101+
@end

0 commit comments

Comments
 (0)