Browse Source

soon

pull/1/head
Burrit0z 4 years ago
parent
commit
ef4eddb8b7
3 changed files with 74 additions and 108 deletions
  1. +3
    -0
      KAIBatteryCell.h
  2. +59
    -79
      KAIBatteryStack.mm
  3. +12
    -29
      Kai.xm

+ 3
- 0
KAIBatteryCell.h View File

@property (nonatomic, assign) BOOL batterySaverModeActive; @property (nonatomic, assign) BOOL batterySaverModeActive;
@property (nonatomic, strong) NSString *identifier; @property (nonatomic, strong) NSString *identifier;
-(id)glyph; -(id)glyph;
-(id)kaiCellForDevice;
@end @end


@interface KAIBatteryCell : UIView @interface KAIBatteryCell : UIView
@property (nonatomic, strong) UILabel *percentLabel; @property (nonatomic, strong) UILabel *percentLabel;
@property (nonatomic, strong) UIImageView *glyphView; @property (nonatomic, strong) UIImageView *glyphView;
@property (nonatomic, strong) _UIBatteryView *battery; @property (nonatomic, strong) _UIBatteryView *battery;
@property (nonatomic, strong) NSLayoutConstraint *width;
@property (nonatomic, strong) NSLayoutConstraint *height;
-(instancetype)initWithFrame:(CGRect)arg1 device:(BCBatteryDevice *)device; -(instancetype)initWithFrame:(CGRect)arg1 device:(BCBatteryDevice *)device;
-(void)updateInfo; -(void)updateInfo;
+(instancetype)cellForDeviceIfExists:(BCBatteryDevice *)device frameToCreateNew:(CGRect)arg2; +(instancetype)cellForDeviceIfExists:(BCBatteryDevice *)device frameToCreateNew:(CGRect)arg2;

+ 59
- 79
KAIBatteryStack.mm View File

long long lastPercentage; long long lastPercentage;


-(void)updateBattery { -(void)updateBattery {
/*
self.spacing = spacing; self.spacing = spacing;
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
//NSLog(@"kai: battery platter called to update"); //NSLog(@"kai: battery platter called to update");
//NSLog(@"kai: IS Updating"); //NSLog(@"kai: IS Updating");
self.isUpdating = YES; self.isUpdating = YES;
//self.number = 0; //self.number = 0;
float y = 0;
//float y = 0;
BCBatteryDeviceController *bcb = [BCBatteryDeviceController sharedInstance]; BCBatteryDeviceController *bcb = [BCBatteryDeviceController sharedInstance];
NSArray *devices = MSHookIvar<NSArray *>(bcb, "_sortedDevices");
if([devices count]!=0) {
//NSLog(@"kai: info is good, will proceed");

float ytwo = 0;

for(KAIBatteryCell *cell in self.subviews) {
if([cell respondsToSelector:@selector(updateInfo)] && ![devices containsObject:cell.device]) { //to confirm is a cell and battery device does not exist
//dispatch_async(dispatch_get_main_queue(), ^{
[UIView animateWithDuration:0.2 animations:^{
cell.alpha = 0;
} completion:^(BOOL finished){
[cell removeFromSuperview];
}];
//});
} else if([cell respondsToSelector:@selector(updateInfo)]) {
cell.frame = CGRectMake(0, y, self.frame.size.width, bannerHeight);
[cell updateInfo];
ytwo+= bannerHeight + spacing;
}
NSArray *devices = MSHookIvar<NSArray *>(bcb, "_sortedDevices");

NSLog(@"kai: devices are %@", devices);
for(KAIBatteryCell *cell in self.subviews) {
//BCBatteryDevice *device = cell.device;
[cell updateInfo];
}
for (BCBatteryDevice *device in devices) {
KAIBatteryCell *cell = [device kaiCellForDevice];

[cell updateInfo];
BOOL shouldAdd = NO;

if(showAll) {
shouldAdd = YES;
} else if(!showAll && device.charging) {
shouldAdd = YES;
} }


if(![self.subviews containsObject:cell] && shouldAdd && [devices containsObject:device]) {
[cell setFrame:CGRectMake(0,0,self.frame.size.width, bannerHeight + spacing)];
[self addArrangedSubview:cell];
} else {
[self removeArrangedSubview:cell];
}

if(!cell.height) {
cell.height.active = NO;
cell.height = [cell.heightAnchor constraintEqualToConstant:(bannerHeight + spacing)];
cell.height.active = YES;

} else {
int height = (bannerHeight + spacing);
cell.height.constant = height;


for (BCBatteryDevice *device in devices) {
NSString *deviceName = MSHookIvar<NSString *>(device, "_name");
//double batteryPercentage = MSHookIvar<long long>(device, "_percentCharge");
BOOL charging = MSHookIvar<long long>(device, "_charging");
//BOOL LPM = MSHookIvar<BOOL>(device, "_batterySaverModeActive");

BOOL shouldAdd = NO;

if(showAll) {
shouldAdd = YES;
//NSLog(@"Kai: SHOULD ADD");
} else if(!showAll && charging) {
shouldAdd = YES;
//NSLog(@"Kai: SHOULD ADD");
}

KAIBatteryCell *cell = [KAIBatteryCell cellForDeviceIfExists:device frameToCreateNew:CGRectMake(0, y, self.frame.size.width, bannerHeight)];
cell.frame = CGRectMake(0, y, self.frame.size.width, bannerHeight);

if(cell) {
cell.device = device;
//cell.frame = cell.frame = CGRectMake(0, y, self.frame.size.width, bannerHeight); //bro im like creating my own stack view
//[cell updateInfo];
}

if(shouldAdd && [deviceName length]!=0) {
if(![self.subviews containsObject:cell]) {
cell.frame = CGRectMake(0, y, self.frame.size.width, bannerHeight);
cell.alpha = 0;
[self addSubview:cell];
[UIView animateWithDuration:0.3 animations:^{
cell.alpha = 1;
}];
}
y+=bannerHeight + spacing;

} else if(!shouldAdd) {
//dispatch_async(dispatch_get_main_queue(), ^{
[UIView animateWithDuration:0.2 animations:^{
cell.alpha = 0;
} completion:^(BOOL finished){
[cell removeFromSuperview];
}];
//});
}
UIStackView *s = self;
s.frame = CGRectMake(s.frame.origin.x, s.frame.origin.y, s.frame.size.width, (s.frame.size.height - 1));
} }
//[self.heightAnchor constraintEqualToConstant:(self.number * 85)].active = YES;
self.number = [self.subviews count];
//[(CSAdjunctListView *)self.superview.superview KaiUpdate];

if(!cell.width) {
cell.width.active = NO;
cell.width = [cell.widthAnchor constraintEqualToConstant:(self.frame.size.width)];
cell.width.active = YES;

} else {
int width = self.frame.size.width;
cell.width.constant = width;

UIStackView *s = self;
s.frame = CGRectMake(s.frame.origin.x, s.frame.origin.y, s.frame.size.width, (s.frame.size.height - 1));
} }
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];
}
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]; self.number = [self.subviews count];
} }


} }
} }
[KAIBatteryCell resetArray]; [KAIBatteryCell resetArray];

//self.displayingDevices = [[NSMutableArray alloc] init];

//addedCells = nil;
[self updateBattery]; [self updateBattery];
} }



+ 12
- 29
Kai.xm View File

//add kai to the stack view //add kai to the stack view
[arg1 addArrangedSubview:battery]; [arg1 addArrangedSubview:battery];
} }
[battery updateBattery];


//send the adjusted stackview as arg1 //send the adjusted stackview as arg1
%orig(arg1); %orig(arg1);


} else { } else {
int height = (battery.number * (bannerHeight + spacing)); //big brain math int height = (battery.number * (bannerHeight + spacing)); //big brain math
battery.heightConstraint.active = NO; //deactivation
//battery.heightConstraint.active = NO; //deactivation
battery.heightConstraint.constant = height; battery.heightConstraint.constant = height;
battery.heightConstraint.active = YES; //forcing reactivation
//battery.heightConstraint.active = YES; //forcing reactivation


UIStackView *s = [self stackView]; UIStackView *s = [self stackView];
s.frame = CGRectMake(s.frame.origin.x, s.frame.origin.y, s.frame.size.width, (s.frame.size.height - 1)); s.frame = CGRectMake(s.frame.origin.x, s.frame.origin.y, s.frame.size.width, (s.frame.size.height - 1));
} }


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
@try {
if([self isMemberOfClass:[objc_getClass("BCBatteryDevice") class]] && [self respondsToSelector:@selector(_kaiCell)]) {
dispatch_async(dispatch_get_main_queue(), ^{

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 + spacing].active = YES;
if([self isMemberOfClass:[objc_getClass("BCBatteryDevice") class]] && [self respondsToSelector:@selector(_kaiCell)] && object == self && ([keyPath isEqualToString:@"charging"] || [keyPath isEqualToString:@"percentCharge"] || [keyPath isEqualToString:@"batterySaverModeActive"])) {


//sends the noti to update battery info //sends the noti to update battery info
[[NSNotificationCenter defaultCenter] postNotificationName:@"KaiInfoChanged" object:nil userInfo:nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"KaiInfoChanged" object:nil userInfo:nil];
[(KAIBatteryCell *)self.kaiCell updateInfo];

BOOL shouldAdd = NO;

if(showAll) {
shouldAdd = YES;
} else if(!showAll && self.charging) {
shouldAdd = YES;
}

if(![[KAIBatteryStack sharedInstance].subviews containsObject:self.kaiCell] && shouldAdd) {
[[KAIBatteryStack sharedInstance] addArrangedSubview:self.kaiCell];
} else if([[KAIBatteryStack sharedInstance].subviews containsObject:self.kaiCell] && !shouldAdd) {
[[KAIBatteryStack sharedInstance] removeArrangedSubview:self.kaiCell];
}

});
} }
} @catch (NSException *exc) {}
} }


%new %new
-(id)_kaiCell {
-(id)kaiCellForDevice {
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 + spacing].active = YES;

[(KAIBatteryCell *)self.kaiCell updateInfo];

return self.kaiCell; return self.kaiCell;
} }
%end %end

Loading…
Cancel
Save