|
- #include <CoreFoundation/CoreFoundation.h>
- #import <Foundation/Foundation.h>
- #include <stdio.h>
- #import <objc/runtime.h>
- #import <UIKit/UIKit.h>
-
- #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;
- batteryWidgetController.translatesAutoresizingMaskIntoConstraints = NO;*/
-
- 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
|