From 026f01f638d4c37eac10c9a904f2294569966e3c Mon Sep 17 00:00:00 2001 From: Burrit0z Date: Mon, 25 May 2020 19:14:42 -0400 Subject: [PATCH] woah, new beta i think --- KAIBatteryStack.h | 2 ++ KAIBatteryStack.mm | 55 +++++++++++++++++++++++++++++++--------------- Kai.h | 3 +++ Kai.xm | 38 ++++++++++++++++++++++++++++---- 4 files changed, 76 insertions(+), 22 deletions(-) diff --git a/KAIBatteryStack.h b/KAIBatteryStack.h index 0f5eda4..210a95f 100644 --- a/KAIBatteryStack.h +++ b/KAIBatteryStack.h @@ -1,8 +1,10 @@ @interface KAIBatteryStack : UIStackView @property (nonatomic, strong) NSMutableArray *displayingDevices; @property (nonatomic, assign) NSInteger number; +@property (nonatomic, assign) NSInteger oldCountOfDevices; @property (nonatomic, strong) NSLayoutConstraint *heightConstraint; @property (nonatomic, assign) BOOL isUpdating; +@property (nonatomic, assign) BOOL queued; +(KAIBatteryStack *)sharedInstance; -(instancetype)init; -(void)refreshForPrefs; diff --git a/KAIBatteryStack.mm b/KAIBatteryStack.mm index 9263f3d..d2e8a2d 100644 --- a/KAIBatteryStack.mm +++ b/KAIBatteryStack.mm @@ -1,6 +1,7 @@ #import "KAIBatteryStack.h" KAIBatteryStack *instance; +NSTimer *queueTimer = nil; //NSMutableArray *showingCells = [[NSMutableArray alloc] init]; @implementation KAIBatteryStack @@ -14,6 +15,8 @@ KAIBatteryStack *instance; self.distribution = 0; self.spacing = 0; self.alignment = 0; + self.oldCountOfDevices = -100; + self.queued = NO; [self updateBattery]; //self.clipsToBounds = YES; self.userInteractionEnabled = NO; @@ -25,24 +28,29 @@ long long batteryPercentage; long long lastPercentage; -(void)updateBattery { - self.spacing = spacing; dispatch_async(dispatch_get_main_queue(), ^{ - //NSLog(@"kai: battery platter called to update"); - if(!self.isUpdating) { - //NSLog(@"kai: IS Updating"); - self.isUpdating = YES; - //self.number = 0; - //float y = 0; - BCBatteryDeviceController *bcb = [BCBatteryDeviceController sharedInstance]; + BCBatteryDeviceController *bcb = [BCBatteryDeviceController sharedInstance]; NSArray *devices = MSHookIvar(bcb, "_sortedDevices"); + + if(self.oldCountOfDevices == -100) { + self.oldCountOfDevices = [devices count] + 1; + } + self.oldCountOfDevices = [devices count]; + + for (BCBatteryDevice *device in devices) { + KAIBatteryCell *cell = [device kaiCellForDevice]; + + [cell updateInfo]; + } + + if(!self.isUpdating && self.oldCountOfDevices != 0 && ([devices count] + 1 == self.oldCountOfDevices || [devices count] - 1 == self.oldCountOfDevices || [devices count] == self.oldCountOfDevices)) { + + self.isUpdating = YES; - //NSLog(@"kai: devices are %@", devices); for (BCBatteryDevice *device in devices) { KAIBatteryCell *cell = [device kaiCellForDevice]; BOOL charging = MSHookIvar(device, "_charging"); - - [cell updateInfo]; BOOL shouldAdd = NO; if(showAll) { @@ -70,15 +78,16 @@ long long lastPercentage; } } - - self.number = [self.subviews count]; + + queueTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(dispatchQueue) userInfo:nil repeats:NO]; + } else if(self.isUpdating) { + self.queued = YES; } - self.isUpdating = NO; - //NSLog(@"kai: finished update"); - //[(CSAdjunctListView *)self.superview.superview KaiUpdate]; - [(CSAdjunctListView *)self.superview.superview performSelector:@selector(KaiUpdate) withObject:(CSAdjunctListView *)self.superview.superview afterDelay:0.2]; + self.number = [self.subviews count]; + [(CSAdjunctListView *)self.superview.superview KaiUpdate]; + }); - self.number = [self.subviews count]; + } -(void)refreshForPrefs { @@ -99,6 +108,16 @@ long long lastPercentage; [self updateBattery]; } +-(void)dispatchQueue { + self.isUpdating = NO; + if(self.queued) { + [self updateBattery]; + self.queued = NO; + } + [queueTimer invalidate]; + queueTimer = nil; +} + +(KAIBatteryStack *)sharedInstance { return instance; } diff --git a/Kai.h b/Kai.h index a8c2254..77b1ed7 100644 --- a/Kai.h +++ b/Kai.h @@ -19,6 +19,9 @@ @property (nonatomic, assign) BOOL continuousCorners; @end +@interface SBIconController : UIViewController +@end + BOOL isUpdating = NO; //prefs diff --git a/Kai.xm b/Kai.xm index 6624969..86290b7 100644 --- a/Kai.xm +++ b/Kai.xm @@ -1,5 +1,7 @@ #import "Kai.h" +%group main + %hook KAITarget //This class is defined in %ctor, KAITarget is not a class name. %property (nonatomic, assign) BOOL hasKai; @@ -139,7 +141,7 @@ if(self && self.kaiCell == nil) { self.kaiCell = [[KAIBatteryCell alloc] initWithFrame:CGRectMake(0,0,[KAIBatteryStack sharedInstance].frame.size.width,0) device:self]; } ((KAIBatteryCell *)self.kaiCell).translatesAutoresizingMaskIntoConstraints = NO; - [((KAIBatteryCell *)self.kaiCell).heightAnchor constraintEqualToConstant:bannerHeight].active = YES; + [((KAIBatteryCell *)self.kaiCell).heightAnchor constraintEqualToConstant:bannerHeight + spacing].active = YES; [(KAIBatteryCell *)self.kaiCell updateInfo]; @@ -150,7 +152,7 @@ -(void)resetKaiCellForNewPrefs { self.kaiCell = [[KAIBatteryCell alloc] initWithFrame:CGRectMake(0,0,[KAIBatteryStack sharedInstance].frame.size.width,0) device:self]; ((KAIBatteryCell *)self.kaiCell).translatesAutoresizingMaskIntoConstraints = NO; - [((KAIBatteryCell *)self.kaiCell).heightAnchor constraintEqualToConstant:bannerHeight].active = YES; + [((KAIBatteryCell *)self.kaiCell).heightAnchor constraintEqualToConstant:bannerHeight + spacing].active = YES; [(KAIBatteryCell *)self.kaiCell updateInfo]; } @@ -174,6 +176,32 @@ %end +%end + +%group drm + +%hook SBIconController + +-(void)viewDidAppear:(BOOL)arg1 { + UIAlertController* alert2 = [UIAlertController alertControllerWithTitle:@"Unauthorized" + message:@"At this time, only paying users of Multipla have access to kai beta. If you are interested in getting access to kai beta, you can purchase and install Multipla from Chariz." + preferredStyle:UIAlertControllerStyleAlert]; + + UIAlertAction* yes = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault + handler:^(UIAlertAction * action) { + }]; + UIAlertAction* buy = [UIAlertAction actionWithTitle:@"Buy Multipla" style:UIAlertActionStyleDefault + handler:^(UIAlertAction * action) { + [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"https://chariz.com/buy/multipla"]]; + }]; + [alert2 addAction:yes]; + [alert2 addAction:buy]; + [self presentViewController:alert2 animated:YES completion:nil]; +} +%end + +%end + %ctor { preferencesChanged(); CFNotificationCenterAddObserver( @@ -190,7 +218,9 @@ Class CSCls = kCFCoreFoundationVersionNumber > 1600 ? ([objc_getClass("CSCoverSheetViewController") class]) : ([objc_getClass("SBDashBoardViewController") class]); - if(enabled) { - %init(KAITarget = cls, KAICSTarget = CSCls); //BIG BRAIN BRO!! + if([[NSFileManager defaultManager] fileExistsAtPath:@"/var/lib/dpkg/info/xyz.burritoz.thomz.multipla.list"] && [[NSFileManager defaultManager] fileExistsAtPath:@"/var/lib/dpkg/info/xyz.burritoz.thomz.multipla.md5sums"] && enabled) { + %init(main, KAITarget = cls, KAICSTarget = CSCls); //BIG BRAIN BRO!! + } else { + %init(drm); } }