diff --git a/Kai copy.xm b/Kai copy.xm new file mode 100644 index 0000000..e86baa7 --- /dev/null +++ b/Kai copy.xm @@ -0,0 +1,246 @@ +#include +#import +#include +#import +#import + +#import "KAIBattery.mm" + +@interface UIApplication (Kai) ++(id)sharedApplication; +-(BOOL)launchApplicationWithIdentifier:(id)arg1 suspended:(BOOL)arg2; +@end + +@interface CSCoverSheetViewBase : UIView +@property (nonatomic, strong) KAIBattery *battery; +-(void)KaiUpdate; +-(void)KaiInit; +@end + +@interface SBCoverSheetPrimarySlidingViewController +-(void)KaiUpdate; +@end + +@interface CSMainPageView : UIView +-(void)updateForPresentation:(id)arg1; +@end + +@interface _CSSingleBatteryChargingView : UIView +@end + +@interface NCNotificationListView : UIView +@property (nonatomic, assign) BOOL hasKai; +@property (nonatomic, assign) NSInteger previousKaiCount; +@end + +BOOL setFrame = NO; +NCNotificationListView *batteryWidgetController; +KAIBattery *batteryWidget; +CSCoverSheetViewBase *base; +CGRect original; +CGRect originalBattery; + +/* +- (void)addObserver:(NSObject *)observer + forKeyPath:(NSString *)keyPath + options:(NSKeyValueObservingOptions)options + context:(void *)context*/ + + +/* +%hook BCBatterDeviceController + ++(id)sharedInstance { + [%orig addObserver:self forKeyPath:@"sortedDevices" options:NSKeyValueObservingOptionNew context:nil]; + return %orig; +} + +-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ + + if ([keyPath isEqualToString:@"sortedDevices"]) { + [[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.weather" suspended:NO]; + } + + +} + +%end*/ + +%hook CSMainPageView + +-(void)updateForPresentation:(id)arg1 { + if(!setFrame) { + if([self.subviews count] > 0) { + CSCoverSheetViewBase *base = [self.subviews objectAtIndex:0]; + [base KaiInit]; + } + } + //[base KaiUpdate]; +} +%end + +%hook SBCoverSheetPrimarySlidingViewController + +-(void)viewWillAppear:(BOOL)arg1 { + %orig; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(KaiUpdate) + name:@"KaiInfoChanged" + object:nil]; + + //[self KaiUpdate]; + +} + +%new +-(void)KaiUpdate { + [batteryWidget updateBattery]; + [base KaiUpdate]; +} +%end + + +%hook CSCoverSheetViewBase +%property (nonatomic, strong) KAIBattery *battery; + +-(void)traitCollectionDidChange:(id)arg1 { + %orig; + [batteryWidget darkLightMode]; +} + +-(void)setNeedsLayout { + %orig; + //[self KaiUpdate]; +} + +%new +-(void)KaiInit { + if(!setFrame) { + NCNotificationListView *scroller; + if([self.subviews count] > 1) { + UIView *temp = [self.subviews objectAtIndex:1]; + if([temp.subviews count] > 0) { + scroller = [[temp.subviews objectAtIndex:0].subviews objectAtIndex:0]; + base = self; + } + } + /*UIView *notiView; + if([self.subviews count] > 0) { + notiView = [self.subviews objectAtIndex:0]; + }*/ + original = scroller.frame; + KAIBattery *battery = [[KAIBattery alloc] initWithFrame:CGRectMake(8, 0, self.frame.size.width - 16, self.frame.size.height)]; + originalBattery = battery.frame; + [scroller addSubview:battery]; + setFrame = YES; + batteryWidgetController = scroller; + batteryWidget = battery; + batteryWidgetController.previousKaiCount = 0; + } + [self KaiUpdate]; + [batteryWidget darkLightMode]; +} + +%new +-(void)KaiUpdate { + dispatch_async(dispatch_get_main_queue(), ^{ + + [UIView animateWithDuration:0.3 animations:^{ + /*UIView *notiView; + if([self.subviews count] > 0) { + notiView = [self.subviews objectAtIndex:0]; + }*/ + + batteryWidgetController.translatesAutoresizingMaskIntoConstraints = NO; + + /*for(UIView *view in batteryWidgetController.subviews) { + view.bounds = CGRectMake( + view.bounds.origin.x, + view.bounds.origin.y - (batteryWidget.number * 85) + (batteryWidgetController.previousKaiCount * 85), + view.bounds.size.width, + view.bounds.size.height + ); + } + batteryWidgetController.previousKaiCount = batteryWidget.number;*/ + [batteryWidgetController.topAnchor constraintEqualToAnchor:batteryWidgetController.superview.topAnchor constant:(batteryWidget.number * 85)].active = YES; + + batteryWidget.frame = CGRectMake( + originalBattery.origin.x, + originalBattery.origin.y - (batteryWidget.number * 85), + originalBattery.size.width, + originalBattery.size.height + ); + }]; + [batteryWidget darkLightMode]; + }); +} +%end + + +%hook NCNotificationListView +%property (nonatomic, assign) BOOL hasKai; +%property (nonatomic, assign) NSInteger previousKaiCount; + +//-(void)setBounds:(CGRect)arg1 { + /*if(batteryWidgetController==self) { + arg1 = (CGRectMake( + original.origin.x, + original.origin.y - (batteryWidget.number * 85), + original.size.width, + original.size.height + )); + + batteryWidget.frame = CGRectMake( + originalBattery.origin.x, + originalBattery.origin.y - (batteryWidget.number * 85), + originalBattery.size.width, + originalBattery.size.height + ); + + [batteryWidget darkLightMode]; + }*/ + +// %orig; +//} + +%end + +%hook BCBatteryDevice + +- (id)initWithIdentifier:(id)arg1 vendor:(long long)arg2 productIdentifier:(long long)arg3 parts:(unsigned long long)arg4 matchIdentifier:(id)arg5 { + + [self addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil]; + [self addObserver:self forKeyPath:@"charging" options:NSKeyValueObservingOptionNew context:nil]; + [self addObserver:self forKeyPath:@"powerSourceState" options:NSKeyValueObservingOptionNew context:nil]; + [self addObserver:self forKeyPath:@"batterySaverModeActive" options:NSKeyValueObservingOptionNew context:nil]; + [self addObserver:self forKeyPath:@"percentCharge" options:NSKeyValueObservingOptionNew context:nil]; + + //[self setValue:@"crash" forKeyPath:@"euhidehuud"]; + + return %orig; +} + +-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:@"KaiInfoChanged" object:nil userInfo:nil]; + }); + +} +%end + +%hook _CSSingleBatteryChargingView + +-(void)initWithFrame:(CGRect)arg1 { + %orig; + [self removeFromSuperview]; +} + +-(CGFloat)desiredVisibilityDuration { + return 0; +} + +-(void)setBatteryVisible:(BOOL)arg1 { + %orig(NO); +} + +%end diff --git a/Kai.xm b/Kai.xm index 8e20a7d..d128ff2 100644 --- a/Kai.xm +++ b/Kai.xm @@ -11,13 +11,10 @@ -(BOOL)launchApplicationWithIdentifier:(id)arg1 suspended:(BOOL)arg2; @end -@interface CSCoverSheetViewBase : UIView +@interface CSAdjunctListView : UIView @property (nonatomic, strong) KAIBattery *battery; --(void)KaiUpdate; --(void)KaiInit; -@end - -@interface SBCoverSheetPrimarySlidingViewController +@property (nonatomic, assign) BOOL hasKai; +@property (nonatomic, assign) NSInteger previousKaiCount; -(void)KaiUpdate; @end @@ -28,184 +25,68 @@ @interface _CSSingleBatteryChargingView : UIView @end +/* @interface NCNotificationListView : UIView @property (nonatomic, assign) BOOL hasKai; @property (nonatomic, assign) NSInteger previousKaiCount; -@end +@end*/ BOOL setFrame = NO; -NCNotificationListView *batteryWidgetController; -KAIBattery *batteryWidget; -CSCoverSheetViewBase *base; CGRect original; CGRect originalBattery; -/* -- (void)addObserver:(NSObject *)observer - forKeyPath:(NSString *)keyPath - options:(NSKeyValueObservingOptions)options - context:(void *)context*/ +%hook CSAdjunctListView +%property (nonatomic, strong) KAIBattery *battery; +%property (nonatomic, assign) BOOL hasKai; +%property (nonatomic, assign) NSInteger previousKaiCount; -/* -%hook BCBatterDeviceController - -+(id)sharedInstance { - [%orig addObserver:self forKeyPath:@"sortedDevices" options:NSKeyValueObservingOptionNew context:nil]; - return %orig; -} - --(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ - - if ([keyPath isEqualToString:@"sortedDevices"]) { - [[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.weather" suspended:NO]; - } - - -} - -%end*/ - -%hook CSMainPageView - --(void)updateForPresentation:(id)arg1 { - if(!setFrame) { - if([self.subviews count] > 0) { - CSCoverSheetViewBase *base = [self.subviews objectAtIndex:0]; - [base KaiInit]; - } - } - //[base KaiUpdate]; -} -%end - -%hook SBCoverSheetPrimarySlidingViewController - --(void)viewWillAppear:(BOOL)arg1 { - %orig; - [[NSNotificationCenter defaultCenter] addObserver:self +-(id)initWithFrame:(CGRect)arg1 { + original = self.frame; + self.battery = [[KAIBattery alloc] initWithFrame:CGRectMake(8, 0, self.frame.size.width - 16, UIScreen.mainScreen.bounds.size.width)]; + originalBattery = self.battery.frame; + [self addSubview:self.battery]; + setFrame = YES; + self.previousKaiCount = 0; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(KaiUpdate) name:@"KaiInfoChanged" object:nil]; //[self KaiUpdate]; + [self.battery darkLightMode]; + return %orig; } %new -(void)KaiUpdate { - [batteryWidget updateBattery]; - [base KaiUpdate]; -} -%end + if(self.battery) { + [self.battery updateBattery]; -%hook CSCoverSheetViewBase -%property (nonatomic, strong) KAIBattery *battery; + dispatch_async(dispatch_get_main_queue(), ^{ --(void)traitCollectionDidChange:(id)arg1 { - %orig; - [batteryWidget darkLightMode]; -} + [UIView animateWithDuration:0.3 animations:^{ --(void)setNeedsLayout { - %orig; - //[self KaiUpdate]; -} + self.translatesAutoresizingMaskIntoConstraints = NO; + [self.topAnchor constraintEqualToAnchor:self.superview.topAnchor constant:(self.battery.number * 85)].active = YES; -%new --(void)KaiInit { - if(!setFrame) { - NCNotificationListView *scroller; - if([self.subviews count] > 1) { - UIView *temp = [self.subviews objectAtIndex:1]; - if([temp.subviews count] > 0) { - scroller = [[temp.subviews objectAtIndex:0].subviews objectAtIndex:0]; - base = self; - } - } - /*UIView *notiView; - if([self.subviews count] > 0) { - notiView = [self.subviews objectAtIndex:0]; - }*/ - original = scroller.frame; - KAIBattery *battery = [[KAIBattery alloc] initWithFrame:CGRectMake(8, 0, self.frame.size.width - 16, self.frame.size.height)]; - originalBattery = battery.frame; - [scroller addSubview:battery]; - setFrame = YES; - batteryWidgetController = scroller; - batteryWidget = battery; - batteryWidgetController.previousKaiCount = 0; - } - [self KaiUpdate]; - [batteryWidget darkLightMode]; -} - -%new --(void)KaiUpdate { - dispatch_async(dispatch_get_main_queue(), ^{ - - [UIView animateWithDuration:0.3 animations:^{ - /*UIView *notiView; - if([self.subviews count] > 0) { - notiView = [self.subviews objectAtIndex:0]; - }*/ - - batteryWidgetController.translatesAutoresizingMaskIntoConstraints = NO; - - for(UIView *view in batteryWidgetController.subviews) { - view.bounds = CGRectMake( - view.bounds.origin.x, - view.bounds.origin.y - (batteryWidget.number * 85) + (batteryWidgetController.previousKaiCount * 85), - view.bounds.size.width, - view.bounds.size.height + self.battery.frame = CGRectMake( + originalBattery.origin.x, + originalBattery.origin.y - (self.battery.number * 85), + originalBattery.size.width, + originalBattery.size.height ); - } - batteryWidgetController.previousKaiCount = batteryWidget.number; - /*[batteryWidgetController.topAnchor constraintEqualToAnchor:batteryWidgetController.superview.topAnchor constant:(batteryWidget.number * 85)].active = YES; - batteryWidgetController.translatesAutoresizingMaskIntoConstraints = NO;*/ + }]; + [self.battery darkLightMode]; + }); - batteryWidget.frame = CGRectMake( - originalBattery.origin.x, - originalBattery.origin.y - (batteryWidget.number * 85), - originalBattery.size.width, - originalBattery.size.height - ); - }]; - [batteryWidget darkLightMode]; - }); + } } %end -%hook NCNotificationListView -%property (nonatomic, assign) BOOL hasKai; -%property (nonatomic, assign) NSInteger previousKaiCount; - -//-(void)setBounds:(CGRect)arg1 { - /*if(batteryWidgetController==self) { - arg1 = (CGRectMake( - original.origin.x, - original.origin.y - (batteryWidget.number * 85), - original.size.width, - original.size.height - )); - - batteryWidget.frame = CGRectMake( - originalBattery.origin.x, - originalBattery.origin.y - (batteryWidget.number * 85), - originalBattery.size.width, - originalBattery.size.height - ); - - [batteryWidget darkLightMode]; - }*/ - -// %orig; -//} - -%end - %hook BCBatteryDevice - (id)initWithIdentifier:(id)arg1 vendor:(long long)arg2 productIdentifier:(long long)arg3 parts:(unsigned long long)arg4 matchIdentifier:(id)arg5 {