|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- #import "ZenithDark.h"
- #import <Cephei/HBPreferences.h>
- #import <CepheiPrefs/HBRootListController.h>
- #import <CepheiPrefs/HBAppearanceSettings.h>
-
- /*
-
- Dark Mode for Zenith's Grabber view!
- Copyright 2020 J.K. Hayslip (@iKilledAppl3) & ToxicAppl3 INSDC/iKilledAppl3 LLC.
- All code was written for learning purposes and credit must be given to the original author.
-
- Written for Cooper Hull, @mac-user669.
-
-
- */
-
- %group Adaptive
- // We then hook the class in this case Zenith's grabber view is called “ZNGrabberAccessoryView”
- %hook ZNGrabberAccessoryView
-
- // this is called when iOS 13's dark mode is enabled!
- -(void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
- %orig(previousTraitCollection);
- if (kEnabled) {
- // if the tweak is enabled and the version is iOS 13 or later run our code
- if (@available(iOS 13, *)) {
- if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
- [self setBackgroundColor:kDarkColor];
- }
-
- else {
- [self setBackgroundColor:kLightColor];
- }
- }
- }
-
- else {
- %orig(previousTraitCollection);
- }
-
- }
-
-
-
- // the method we 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 {
- %orig;
- if (kEnabled) {
- // by default have our tweak overide this.
- if (@available(iOS 13, *)) {
- if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
- %orig(kDarkColor);
- }
- }
-
- else {
- %orig;
- }
- }
- }
-
- %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
-
-
- %group justDark
-
- //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(kDarkColor);
- }
-
- // 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
-
- %group OLEDadaptive
- // We then hook the class in this case Zenith's grabber view is called “ZNGrabberAccessoryView”
- %hook ZNGrabberAccessoryView
-
- // this is called when iOS 13's dark mode is enabled!
- -(void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
- %orig(previousTraitCollection);
- if (kEnabled) {
- // if the tweak is enabled and the version is iOS 13 or later run our code
- if (@available(iOS 13, *)) {
- if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
- [self setBackgroundColor:kOLEDColor];
- }
-
- else {
- [self setBackgroundColor:kLightColor];
- }
- }
- }
-
- else {
- %orig(previousTraitCollection);
- }
-
- }
-
-
-
- // the method we 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 {
- %orig;
- if (kEnabled) {
- // by default have our tweak overide this.
- if (@available(iOS 13, *)) {
- if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
- %orig(kOLEDColor);
- }
- }
-
- else {
- %orig;
- }
- }
- }
-
- %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
-
- %group OLEDgroup
-
- //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(kOLEDColor);
- }
-
- // 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 void loadPrefs() { // Load preferences to make sure changes are written to the plist
-
- // Thanks to skittyblock!
- CFArrayRef keyList = CFPreferencesCopyKeyList(CFSTR("com.mac-user669.zenithdark"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
- if(keyList) {
- prefs = (NSMutableDictionary *)CFPreferencesCopyMultiple(keyList, CFSTR("com.mac-user669.zenithdark"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
- CFRelease(keyList);
- } else {
- prefs = nil;
- }
-
- if (!prefs) {
- prefs = [NSMutableDictionary dictionaryWithContentsOfFile:PLIST_PATH];
-
- }
- kEnabled = [([prefs objectForKey:@"kEnabled"] ?: @(YES)) boolValue]; //our preference values that write to a plist file when a user selects somethings
- sortType = [([prefs objectForKey:@"sortingType"] ? [prefs objectForKey:@"sortingType"] : @"0") integerValue];
-
- }
-
-
- // Thanks to skittyblock!
- static void PreferencesChangedCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
- loadPrefs();
- }
-
- %ctor { // Our constructor
-
- loadPrefs(); // Load our prefs
-
- if (kEnabled) { // If enabled
- if (sortType == ZNDarkSortTypeAdaptive) {
- %init(Adaptive); // Enable the group "Adaptive"
- }
-
- else if (sortType == ZNDarkSortTypeDark) {
- %init(justDark); // Enable the group "Adaptive"
- }
-
- else if (sortType == ZNDarkSortTypeOLEDAdaptive) {
- %init(OLEDadaptive); // Enable the group "OLEDgroup"
- }
-
- else if (sortType == ZNDarkSortTypeOLED) {
- %init(OLEDgroup); // Enable the group "OLEDgroup"
- }
- }
-
- CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback) PreferencesChangedCallback, CFSTR("com.mac-user669.zenithdark.prefschanged"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
-
- 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.
-
- }
|