-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathNPSettings.xm
More file actions
119 lines (93 loc) · 3.18 KB
/
NPSettings.xm
File metadata and controls
119 lines (93 loc) · 3.18 KB
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
111
112
113
114
115
116
117
118
119
#import "Headers/Headers.h"
#import "Headers/NPSettings.h"
#import <CoreFoundation/CoreFoundation.h>
#define FILEPATH @"/var/mobile/Library/Preferences/com.dpkgdan.notificationprivacy.plist"
#define DEFAULT_TEXT @"New Notification"
@implementation NPSettings
static NPSettings *_sharedInstance;
-(void)loadSettings
{
_preferenceFile = [[NSMutableDictionary alloc] initWithContentsOfFile: FILEPATH];
if (_preferenceFile) {
id object = [_preferenceFile objectForKey: @"NotificationText"];
_notificationText = (object ? object : DEFAULT_TEXT);
object = [_preferenceFile objectForKey: @"isEnabled"];
_isEnabled = (object ? [object boolValue] : YES);
object = [_preferenceFile objectForKey: @"hiddenOnLockscreen"];
_hiddenOnLockscreen = (object ? [object boolValue] : YES);
object = [_preferenceFile objectForKey: @"hiddenOnHomescreen"];
_hiddenOnHomescreen = (object ? [object boolValue] : YES);
object = [_preferenceFile objectForKey: @"hiddenInNotifcenter"];
_hiddenInNotifcenter = (object ? [object boolValue] : NO);
object = [_preferenceFile objectForKey: @"titleHidden"];
_titleHidden = (object ? [object boolValue] : NO);
object = [_preferenceFile objectForKey: @"lockscreenOptions"];
_lockscreenOptions = (object ? (LOCKSCREEN_OPTIONS)[object intValue] : VISIBLE);
} else {
_isEnabled = NO;
}
}
-(BOOL)isHiddenIdentifier:(NSString*)identifier
{
if (_preferenceFile == Nil || identifier == Nil)
return NO;
if ([[_preferenceFile objectForKey: identifier] boolValue])
return YES;
else
return NO;
}
-(void)eventReceived
{
NSString *message = (self.isEnabled ? @"Enabled" : @"Disabled");
[_preferenceFile setObject: [NSNumber numberWithBool: self.isEnabled] forKey: @"isEnabled"];
id enabledBanner = [BBBulletinRequest new];
[enabledBanner setTitle: @"Notification Privacy"];
[enabledBanner setMessage: message];
[enabledBanner setSectionID: @"libactivator"];
[enabledBanner setDefaultAction: [BBAction action]];
id controller = [%c(SBBulletinBannerController) sharedInstance];
[[%c(SBBannerController) sharedInstance] _dismissIntervalElapsed];
[controller observer:nil addBulletin:enabledBanner forFeed:2];
[_preferenceFile writeToFile: FILEPATH atomically: YES];
}
-(void)activator:(LAActivator *)activator receiveEvent:(LAEvent *)event
{
_isEnabled = !_isEnabled;
[self eventReceived];
}
-(void)activator:(LAActivator *)activator abortEvent:(LAEvent *)event
{
_isEnabled = NO;
[self eventReceived];
}
static void update (
CFNotificationCenterRef center,
void *observer,
CFStringRef name,
const void *object,
CFDictionaryRef userInfo
)
{
[[NPSettings sharedInstance] loadSettings];
}
-(id)init
{
self = [super init];
if (self){
[self loadSettings];
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, update,
CFSTR("com.dpkgdan.notificationprivacy.settingsupdated"), NULL,
CFNotificationSuspensionBehaviorDeliverImmediately);
[[%c(LAActivator) sharedInstance] registerListener: self forName:@"com.dpkgdan.notificationprivacy"];
}
return self;
}
+(id)sharedInstance
{
if (!_sharedInstance){
_sharedInstance = [NPSettings new];
return _sharedInstance;
} else
return _sharedInstance;
}
@end