From 98bdd62ca51d60069165442fc6bd3adb81cf32ea Mon Sep 17 00:00:00 2001 From: Burrit0z Date: Wed, 20 May 2020 20:47:24 -0400 Subject: [PATCH] comments for you bro :) --- Kai.h | 29 +++++------------------------ Kai.xm | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/Kai.h b/Kai.h index 76cd870..cd3f939 100644 --- a/Kai.h +++ b/Kai.h @@ -4,12 +4,8 @@ #import #import -#define KAISelf ((CSAdjunctListView *)self) - -@interface UIApplication (Kai) -+(id)sharedApplication; --(BOOL)launchApplicationWithIdentifier:(id)arg1 suspended:(BOOL)arg2; -@end +#define KAISelf ((CSAdjunctListView *)self) //for use when calling self in KAITarget +#define KAIBattery UHDUEIHGCEBCHYDEICVKEVSAGJKBCXAHJGKVXHAS //lmao @interface CSAdjunctListView : UIView @property (nonatomic, assign) BOOL hasKai; @@ -18,24 +14,6 @@ -(void)KaiUpdate; @end -@interface SBDashBoardAdjunctListView : UIView -@property (nonatomic, assign) BOOL hasKai; --(UIStackView *)stackView; --(void)setStackView:(UIStackView *)arg1; --(void)KaiUpdate; -@end - -@interface CSMainPageView : UIView --(void)updateForPresentation:(id)arg1; -@end - -@interface _CSSingleBatteryChargingView : UIView -@end - -@interface NSLayoutConstraint (Kai) -+(id)constraintWithAnchor:(id)arg1 relatedBy:(long long)arg2 toAnchor:(id)arg3 multiplier:(double)arg4 constant:(double)arg5 ; -@end - @interface CALayer (kai) @property (nonatomic, assign) BOOL continuousCorners; @end @@ -59,6 +37,7 @@ double cornerRadius; double bannerWidthFactor; double horizontalOffset; +//by importing here, I can use vars in the .mm of KAIBattery #import "KAIBattery.mm" #define PLIST_PATH @"/User/Library/Preferences/com.burritoz.kaiprefs.plist" @@ -131,6 +110,8 @@ static void preferencesChanged() static void applyPrefs() { preferencesChanged(); + + //here I remotely refresh the KAIView. isUpdating = YES; [UIView animateWithDuration:0.3 animations:^{ [KAIBattery sharedInstance].alpha = 0; diff --git a/Kai.xm b/Kai.xm index 9e3b730..d2b532b 100644 --- a/Kai.xm +++ b/Kai.xm @@ -1,16 +1,21 @@ #import "Kai.h" -%hook KAITarget +%hook KAITarget //This class is defined in %ctor, KAITarget is not a class name. + %property (nonatomic, assign) BOOL hasKai; -(void)_layoutStackView { NSInteger lastSlot = [[self stackView].subviews count] -1; + //this code is used to determine if kai is at the bottom of the stack view if([[self stackView].subviews objectAtIndex:lastSlot] != [KAIBattery sharedInstance] && belowMusic) { + //if it is not, but the option to have kai below music is on, i simply remove from it's current pos. + //and insert into last slot. [[self stackView] removeArrangedSubview:[KAIBattery sharedInstance]]; [[self stackView] insertArrangedSubview:[KAIBattery sharedInstance] atIndex:lastSlot]; } + //makes kai lay itself out when the stack does [self KaiUpdate]; %orig; @@ -20,19 +25,21 @@ if(!KAISelf.hasKai) { KAIBattery *battery = [[KAIBattery alloc] init]; + + //Add noti observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(KaiInfo) name:@"KaiInfoChanged" object:nil]; KAISelf.hasKai = YES; - UIStackView *newView = arg1; - - if(![arg1.subviews containsObject:battery]) { - [newView addArrangedSubview:battery]; + if(![arg1.subviews containsObject:battery]) { //if not added + //add kai to the stack view + [arg1 addArrangedSubview:battery]; } - %orig(newView); + //send the adjusted stackview as arg1 + %orig(arg1); } } @@ -47,16 +54,18 @@ battery.heightConstraint.active = NO; battery.heightConstraint = [battery.heightAnchor constraintEqualToConstant:85]; + //set an initial constraint battery.heightConstraint.active = YES; } else { - int height = ((battery.number * (bannerHeight + spacing)) - spacing + 5); + int height = ((battery.number * (bannerHeight + spacing)) - spacing + 5); //big brain math battery.heightConstraint.active = NO; battery.heightConstraint.constant = height; battery.heightConstraint.active = YES; UIStackView *s = [self stackView]; s.frame = CGRectMake(s.frame.origin.x, s.frame.origin.y, s.frame.size.width, (s.frame.size.height - 1)); + //literally does nothing but makes the stack view lay itself out (doesnt adjust frame because translatesAutoreszingMaskIntoConstraints = NO on stack views) } }]; @@ -65,20 +74,30 @@ %new -(void)KaiInfo { + if(!isUpdating) { + isUpdating = YES; [UIView animateWithDuration:0.3 animations:^{ + + //nice fade out [KAIBattery sharedInstance].alpha = 0; + } completion:^(BOOL finished){ + [[KAIBattery sharedInstance] updateBattery]; [self KaiUpdate]; [UIView animateWithDuration:0.35 animations:^{ + //fade back in [KAIBattery sharedInstance].alpha = 1; } completion:^(BOOL finished){ isUpdating = NO; }]; + }]; + } + } %end @@ -87,8 +106,8 @@ - (id)initWithIdentifier:(id)arg1 vendor:(long long)arg2 productIdentifier:(long long)arg3 parts:(unsigned long long)arg4 matchIdentifier:(id)arg5 { + //Posts a notification to self when these keys change [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]; @@ -97,7 +116,8 @@ -(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]; + //sends the noti to update battery info + [[NSNotificationCenter defaultCenter] postNotificationName:@"KaiInfoChanged" object:nil userInfo:nil]; }); } @@ -107,6 +127,7 @@ -(void)_transitionChargingViewToVisible:(BOOL)arg1 showBattery:(BOOL)arg2 animated:(BOOL)arg3 { if(hideChargingAnimation) { + //Yeah bro this just makes the method never call to show the charging thing %orig(NO,NO,NO); } } @@ -123,6 +144,8 @@ NULL, CFNotificationSuspensionBehaviorDeliverImmediately ); + + //Bro Muirey helped me figure out a logical way to do this because iOS 12-13 classes have changed Class cls = kCFCoreFoundationVersionNumber > 1600 ? ([objc_getClass("CSAdjunctListView") class]) : ([objc_getClass("SBDashBoardAdjunctListView") class]); if(enabled) { %init(KAITarget = cls);