|
|
|
|
|
|
|
|
|
|
|
#import "ZenithDark.h" |
|
|
|
|
|
|
|
|
/* |
|
|
/* |
|
|
|
|
|
|
|
|
Dark Mode for Zenith's Grabber view! |
|
|
Dark Mode for Zenith's Grabber view! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
#import "ZenithDark.h" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%group Tweak13 |
|
|
// We then hook the class in this case Zenith's grabber view is called “ZNGrabberAccessoryView” |
|
|
// We then hook the class in this case Zenith's grabber view is called “ZNGrabberAccessoryView” |
|
|
%hook ZNGrabberAccessoryView |
|
|
%hook ZNGrabberAccessoryView |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// we need to make sure we tell theos that we are finished hooking this class not doing so with cause the end of the world :P |
|
|
|
|
|
|
|
|
%end // We need to make sure we tell theos that we are finished hooking this class not doing so with cause the end of the world :P |
|
|
%end |
|
|
%end |
|
|
|
|
|
|
|
|
|
|
|
static BOOL ios13; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
%group Tweak12 |
|
|
|
|
|
|
|
|
|
|
|
//We then hook the class in this case Zenith's grabber view is called “ZNGrabberAccessoryView” |
|
|
|
|
|
%hook ZNGrabberAccessoryView |
|
|
|
|
|
// The method we then modify is this method that is called from UIImageView to set the backgroundColor of the image view. |
|
|
|
|
|
// Since the grabber view is of type UIImageView we can modify this method :) |
|
|
|
|
|
|
|
|
|
|
|
-(void)setBackgroundColor:(UIColor *)backgroundColor { |
|
|
|
|
|
//call the original function then pass our custom argument to the backgroundColor argument as shown below. |
|
|
|
|
|
%orig(kDarkModeColor); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// We need to make sure we tell theos that we are finished hooking this class not doing so with cause the end of the world :P |
|
|
|
|
|
%end |
|
|
|
|
|
%end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Load preferences to make sure changes are written to the plist |
|
|
|
|
|
static void loadPrefs() { |
|
|
|
|
|
|
|
|
static void loadPrefs() { // Load preferences to make sure changes are written to the plist |
|
|
|
|
|
|
|
|
// Thanks to skittyblock! |
|
|
// Thanks to skittyblock! |
|
|
CFArrayRef keyList = CFPreferencesCopyKeyList(CFSTR("com.mac-user669.zenithdark"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost); |
|
|
CFArrayRef keyList = CFPreferencesCopyKeyList(CFSTR("com.mac-user669.zenithdark"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost); |
|
|
|
|
|
|
|
|
prefs = [NSMutableDictionary dictionaryWithContentsOfFile:PLIST_PATH]; |
|
|
prefs = [NSMutableDictionary dictionaryWithContentsOfFile:PLIST_PATH]; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
//our preference values that write to a plist file when a user selects somethings |
|
|
|
|
|
kEnabled = [([prefs objectForKey:@"kEnabled"] ?: @(YES)) boolValue]; |
|
|
|
|
|
|
|
|
kEnabled = [([prefs objectForKey:@"kEnabled"] ?: @(YES)) boolValue]; //our preference values that write to a plist file when a user selects somethings |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// thanks to skittyblock! |
|
|
|
|
|
|
|
|
// Thanks to skittyblock! |
|
|
static void PreferencesChangedCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) { |
|
|
static void PreferencesChangedCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) { |
|
|
loadPrefs(); |
|
|
loadPrefs(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// our constructor |
|
|
|
|
|
%ctor { |
|
|
|
|
|
// load our prefs |
|
|
|
|
|
loadPrefs(); |
|
|
|
|
|
|
|
|
%ctor { // Our constructor |
|
|
|
|
|
|
|
|
|
|
|
loadPrefs(); // Load our prefs |
|
|
|
|
|
|
|
|
|
|
|
if (kEnabled) { // If enabled |
|
|
|
|
|
if (@available(iOS 13, *)) { // If the device is running iOS 13 |
|
|
|
|
|
ios13 = YES; // Set "iOS13" to "YES" |
|
|
|
|
|
%init(Tweak13); // Enable the group "Tweak13" |
|
|
|
|
|
} else { |
|
|
|
|
|
ios13 = NO; // Set "iOS13" to "NO" |
|
|
|
|
|
%init(Tweak12); // Enable the group "Tweak12" |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback) PreferencesChangedCallback, CFSTR("com.mac-user669.zenithdark.prefschanged"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately); |
|
|
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback) PreferencesChangedCallback, CFSTR("com.mac-user669.zenithdark.prefschanged"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately); |
|
|
// We use this to make sure we load Zenith's dynamic library at runtime so we can modify it with our tweak. |
|
|
|
|
|
dlopen ("/Library/MobileSubstrate/DynamicLibraries/Zenith.dylib", RTLD_NOW); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
dlopen ("/Library/MobileSubstrate/DynamicLibraries/Zenith.dylib", RTLD_NOW); // We use this to make sure we load Zenith's dynamic library at runtime so we can modify it with our tweak. |
|
|
|
|
|
|
|
|
|
|
|
} |