1
0
kopia lustrzana https://github.com/Burrit0z/kai synced 2025-06-30 22:26:48 +00:00
This commit is contained in:
Burrit0z
2020-05-23 21:17:22 -04:00
rodzic b8d14801b6
commit ef4eddb8b7
3 zmienionych plików z 78 dodań i 112 usunięć

Wyświetl plik

@ -31,6 +31,7 @@
@property (nonatomic, assign) BOOL batterySaverModeActive;
@property (nonatomic, strong) NSString *identifier;
-(id)glyph;
-(id)kaiCellForDevice;
@end
@interface KAIBatteryCell : UIView
@ -39,6 +40,8 @@
@property (nonatomic, strong) UILabel *percentLabel;
@property (nonatomic, strong) UIImageView *glyphView;
@property (nonatomic, strong) _UIBatteryView *battery;
@property (nonatomic, strong) NSLayoutConstraint *width;
@property (nonatomic, strong) NSLayoutConstraint *height;
-(instancetype)initWithFrame:(CGRect)arg1 device:(BCBatteryDevice *)device;
-(void)updateInfo;
+(instancetype)cellForDeviceIfExists:(BCBatteryDevice *)device frameToCreateNew:(CGRect)arg2;

Wyświetl plik

@ -25,7 +25,6 @@ long long batteryPercentage;
long long lastPercentage;
-(void)updateBattery {
/*
self.spacing = spacing;
dispatch_async(dispatch_get_main_queue(), ^{
//NSLog(@"kai: battery platter called to update");
@ -33,87 +32,72 @@ long long lastPercentage;
//NSLog(@"kai: IS Updating");
self.isUpdating = YES;
//self.number = 0;
float y = 0;
//float y = 0;
BCBatteryDeviceController *bcb = [BCBatteryDeviceController sharedInstance];
NSArray *devices = MSHookIvar<NSArray *>(bcb, "_sortedDevices");
if([devices count]!=0) {
//NSLog(@"kai: info is good, will proceed");
NSArray *devices = MSHookIvar<NSArray *>(bcb, "_sortedDevices");
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;
}
}
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];
}];
//});
}
}
//[self.heightAnchor constraintEqualToConstant:(self.number * 85)].active = YES;
self.number = [self.subviews count];
//[(CSAdjunctListView *)self.superview.superview KaiUpdate];
}
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];
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;
UIStackView *s = self;
s.frame = CGRectMake(s.frame.origin.x, s.frame.origin.y, s.frame.size.width, (s.frame.size.height - 1));
}
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.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];
}
@ -126,10 +110,6 @@ long long lastPercentage;
}
}
[KAIBatteryCell resetArray];
//self.displayingDevices = [[NSMutableArray alloc] init];
//addedCells = nil;
[self updateBattery];
}

41
Kai.xm
Wyświetl plik

@ -38,6 +38,7 @@
//add kai to the stack view
[arg1 addArrangedSubview:battery];
}
[battery updateBattery];
//send the adjusted stackview as arg1
%orig(arg1);
@ -61,9 +62,9 @@
} else {
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.active = YES; //forcing reactivation
//battery.heightConstraint.active = YES; //forcing reactivation
UIStackView *s = [self stackView];
s.frame = CGRectMake(s.frame.origin.x, s.frame.origin.y, s.frame.size.width, (s.frame.size.height - 1));
@ -110,41 +111,23 @@
}
-(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
[[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
-(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;
}
%end