From ded80ae5a6ade1c1b1adc720326bad9062e755be Mon Sep 17 00:00:00 2001 From: ren7995 Date: Sun, 16 May 2021 16:38:00 -0400 Subject: [PATCH] rebrand --- LICENSE | 2 +- Layout/DEBIAN/control | 6 +- README.md | 3 +- kaiprefs/KAIRootListController.m | 444 ++++++++++++++++++------------- kaiprefs/Resources/Root.plist | 6 +- kaiprefs/Resources/burritoz.jpg | Bin 12903 -> 0 bytes kaiprefs/Resources/ren7995.jpg | Bin 0 -> 30585 bytes 7 files changed, 271 insertions(+), 190 deletions(-) delete mode 100644 kaiprefs/Resources/burritoz.jpg create mode 100644 kaiprefs/Resources/ren7995.jpg diff --git a/LICENSE b/LICENSE index d4f95e2..a0fc4a7 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 Burrit0z +Copyright (c) 2021 ren7995 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Layout/DEBIAN/control b/Layout/DEBIAN/control index 3823d7d..e0c9819 100644 --- a/Layout/DEBIAN/control +++ b/Layout/DEBIAN/control @@ -1,10 +1,10 @@ Package: com.burritoz.kai Name: Kai -Version: 1.5.0 +Version: 1.5.1 Architecture: iphoneos-arm Description: Device battery indicators on your lock screen! -Maintainer: burrit0z -Author: burrit0z +Maintainer: ren7995 +Author: ren7995 Section: Tweaks Depends: mobilesubstrate (>= 0.9.5000), preferenceloader, ws.hbang.common (>=1.14) Icon: https://chariz.com/cdn/icon/kai/icon@3x.png diff --git a/README.md b/README.md index 8dcb4d5..10869a7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # kai +Oh my gosh this code is so bad ## All Your Batteries, at a Glance kai will show any Bluetooth device that provides battery information, meaning you can check the battery of your iPhone, your Apple Watch, your AirPods, and your AirPods case, all from the lockscreen. Quickly and easily. @@ -47,4 +48,4 @@ kai offers two main options for displaying battery information. (a) Vertical mod Special thanks to my amazing beta testers in the server I co-own with Thomz. I could not have tested kai so extensively and brought it to where it is today without them. Thanks to Thomz (@Thomzi07 on Twitter) for making kai's icon, and depiction screenshots, and Thenatis (@thenatis1 on Twitter) for helping with design, and for making the banner for kai. Additionally, kai is inspired by LaughingQuoll's Maple tweak series and Apple's AirPower design. kai was built with inspiration from this. However, the main reason I made kai is because the Maple series does not work with notification grouping tweaks like Axon and Grupi. Additionally, kai features a wider range of customization options. ## Socials and Support -If you are encountering issues, or simply wish to reach out, you can contact me at my email (burrit0ztweaks@gmail.com) or join the discord server I co-own with Thomz to get support. Discord server invite link: https://discord.gg/NQ3uXtJ +If you are encountering issues, or simply wish to reach out, you can contact me at my email (lau7995ren@gmail.com) or join the discord server I co-own with Thomz to get support. Discord server invite link: https://discord.gg/NQ3uXtJ diff --git a/kaiprefs/KAIRootListController.m b/kaiprefs/KAIRootListController.m index 16a53e9..e673408 100644 --- a/kaiprefs/KAIRootListController.m +++ b/kaiprefs/KAIRootListController.m @@ -3,278 +3,358 @@ KAIRootListController *controller; NSBundle *tweakBundle; -//thank god for renai +// thank god for renai static inline NSString *getPackageVersion() { - NSString *packageVersion = [NSString stringWithFormat:@"${%@}", @"Version"]; - int status; + NSString *packageVersion = [NSString stringWithFormat:@"${%@}", @"Version"]; + int status; - NSMutableArray *argsv0 = [NSMutableArray array]; - for (NSString *string in @[ @"/usr/bin/dpkg-query", @"-Wf", packageVersion, @"com.burritoz.kai" ]) { - [argsv0 - addObject:[NSString stringWithFormat:@"'%@'", - [string stringByReplacingOccurrencesOfString:@"'" - withString:@"\\'" - options:NSRegularExpressionSearch - range:NSMakeRange( - 0, string.length)]]]; - } + NSMutableArray *argsv0 = [NSMutableArray array]; + for (NSString *string in @[ + @"/usr/bin/dpkg-query", @"-Wf", packageVersion, @"com.burritoz.kai" + ]) { + [argsv0 + addObject: + [NSString + stringWithFormat: + @"'%@'", + [string + stringByReplacingOccurrencesOfString:@"'" + withString:@"\\'" + options: + NSRegularExpressionSearch + range: + NSMakeRange( + 0, + string + .length)]]]; + } - NSString *argsv1 = [argsv0 componentsJoinedByString:@" "]; - FILE *file = popen(argsv1.UTF8String, "r"); - if (!file) { - return nil; - } + NSString *argsv1 = [argsv0 componentsJoinedByString:@" "]; + FILE *file = popen(argsv1.UTF8String, "r"); + if (!file) { + return nil; + } - char data[1024]; - NSMutableString *output = [NSMutableString string]; + char data[1024]; + NSMutableString *output = [NSMutableString string]; - while (fgets(data, 1024, file) != NULL) { - [output appendString:[NSString stringWithUTF8String:data]]; - } + while (fgets(data, 1024, file) != NULL) { + [output appendString:[NSString stringWithUTF8String:data]]; + } - int result = pclose(file); - status = result; + int result = pclose(file); + status = result; - if (status == 0) { - return output ?: @"🏴‍☠️ Pirated"; - } + if (status == 0) { + return output ?: @"🏴‍☠️ Pirated"; + } - return @"🏴‍☠️ Pirated"; + return @"🏴‍☠️ Pirated"; } //////// static void respringNeeded() { - UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Respring" - message:@"Changing this requires a respring for it to take effect. Would you like to respring now?" - preferredStyle:UIAlertControllerStyleActionSheet]; + UIAlertController *alert = [UIAlertController + alertControllerWithTitle:@"Respring" + message:@"Changing this requires a respring for it to " + @"take effect. Would you like to respring now?" + preferredStyle:UIAlertControllerStyleActionSheet]; - UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"No" - style:UIAlertActionStyleCancel - handler:^(UIAlertAction *action){ - }]; + UIAlertAction *defaultAction = + [UIAlertAction actionWithTitle:@"No" + style:UIAlertActionStyleCancel + handler:^(UIAlertAction *action){ + }]; - UIAlertAction *yes = [UIAlertAction actionWithTitle:@"Respring" - style:UIAlertActionStyleDestructive - handler:^(UIAlertAction *action) { - NSTask *t = [[NSTask alloc] init]; - [t setLaunchPath:@"usr/bin/killall"]; - [t setArguments:[NSArray arrayWithObjects:@"backboardd", nil]]; - [t launch]; - }]; + UIAlertAction *yes = [UIAlertAction + actionWithTitle:@"Respring" + style:UIAlertActionStyleDestructive + handler:^(UIAlertAction *action) { + NSTask *t = [[NSTask alloc] init]; + [t setLaunchPath:@"usr/bin/killall"]; + [t setArguments:[NSArray arrayWithObjects:@"backboardd", nil]]; + [t launch]; + }]; - [alert addAction:defaultAction]; - [alert addAction:yes]; - [controller presentViewController:alert animated:YES completion:nil]; + [alert addAction:defaultAction]; + [alert addAction:yes]; + [controller presentViewController:alert animated:YES completion:nil]; } static void applyPrefs() { - CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("com.burritoz.kaiprefs/reload"), nil, nil, true); + CFNotificationCenterPostNotification( + CFNotificationCenterGetDarwinNotifyCenter(), + CFSTR("com.burritoz.kaiprefs/reload"), nil, nil, true); } @implementation KAIRootListController - (NSArray *)specifiers { - if (!_specifiers) { - _specifiers = [self loadSpecifiersFromPlistName:@"Root" target:self]; - } + if (!_specifiers) { + _specifiers = [self loadSpecifiersFromPlistName:@"Root" target:self]; + } - return _specifiers; + return _specifiers; } - (void)viewWillAppear:(BOOL)arg1 { - [[UISegmentedControl appearanceWhenContainedInInstancesOfClasses:@[ self.class ]] setTintColor:[UIColor colorWithRed:0.00 green:0.82 blue:1.00 alpha:1.00]]; - [[UISwitch appearanceWhenContainedInInstancesOfClasses:@[ self.class ]] setOnTintColor:[UIColor colorWithRed:0.00 green:0.82 blue:1.00 alpha:1.00]]; - [[UISlider appearanceWhenContainedInInstancesOfClasses:@[ self.class ]] setTintColor:[UIColor colorWithRed:0.00 green:0.82 blue:1.00 alpha:1.00]]; + [[UISegmentedControl + appearanceWhenContainedInInstancesOfClasses:@[ self.class ]] + setTintColor:[UIColor colorWithRed:0.00 green:0.82 blue:1.00 alpha:1.00]]; + [[UISwitch appearanceWhenContainedInInstancesOfClasses:@[ self.class ]] + setOnTintColor:[UIColor colorWithRed:0.00 + green:0.82 + blue:1.00 + alpha:1.00]]; + [[UISlider appearanceWhenContainedInInstancesOfClasses:@[ self.class ]] + setTintColor:[UIColor colorWithRed:0.00 green:0.82 blue:1.00 alpha:1.00]]; } - (void)viewWillDisappear:(BOOL)arg1 { - [super viewWillDisappear:arg1]; + [super viewWillDisappear:arg1]; } - (void)viewDidLoad { - [super viewDidLoad]; + [super viewDidLoad]; - self.navigationItem.titleView = [UIView new]; - self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 10, 10)]; - self.titleLabel.font = [UIFont systemFontOfSize:17.5]; - self.titleLabel.translatesAutoresizingMaskIntoConstraints = NO; - self.titleLabel.text = @"kai"; - self.titleLabel.alpha = 0.0; - self.titleLabel.textAlignment = NSTextAlignmentCenter; - [self.navigationItem.titleView addSubview:self.titleLabel]; + self.navigationItem.titleView = [UIView new]; + self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 10, 10)]; + self.titleLabel.font = [UIFont systemFontOfSize:17.5]; + self.titleLabel.translatesAutoresizingMaskIntoConstraints = NO; + self.titleLabel.text = @"kai"; + self.titleLabel.alpha = 0.0; + self.titleLabel.textAlignment = NSTextAlignmentCenter; + [self.navigationItem.titleView addSubview:self.titleLabel]; - self.iconView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)]; - self.iconView.contentMode = UIViewContentModeScaleAspectFit; - self.iconView.image = [UIImage imageWithContentsOfFile:@"/Library/PreferenceBundles/kaiPrefs.bundle/icon.png"]; - self.iconView.translatesAutoresizingMaskIntoConstraints = NO; - self.iconView.alpha = 1.0; - [self.navigationItem.titleView addSubview:self.iconView]; + self.iconView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)]; + self.iconView.contentMode = UIViewContentModeScaleAspectFit; + self.iconView.image = + [UIImage imageWithContentsOfFile: + @"/Library/PreferenceBundles/kaiPrefs.bundle/icon.png"]; + self.iconView.translatesAutoresizingMaskIntoConstraints = NO; + self.iconView.alpha = 1.0; + [self.navigationItem.titleView addSubview:self.iconView]; - [NSLayoutConstraint activateConstraints:@[ - [self.titleLabel.topAnchor constraintEqualToAnchor:self.navigationItem.titleView.topAnchor], - [self.titleLabel.leadingAnchor constraintEqualToAnchor:self.navigationItem.titleView.leadingAnchor], - [self.titleLabel.trailingAnchor constraintEqualToAnchor:self.navigationItem.titleView.trailingAnchor], - [self.titleLabel.bottomAnchor constraintEqualToAnchor:self.navigationItem.titleView.bottomAnchor], - [self.iconView.topAnchor constraintEqualToAnchor:self.navigationItem.titleView.topAnchor], - [self.iconView.leadingAnchor constraintEqualToAnchor:self.navigationItem.titleView.leadingAnchor], - [self.iconView.trailingAnchor constraintEqualToAnchor:self.navigationItem.titleView.trailingAnchor], - [self.iconView.bottomAnchor constraintEqualToAnchor:self.navigationItem.titleView.bottomAnchor], - ]]; + [NSLayoutConstraint activateConstraints:@[ + [self.titleLabel.topAnchor + constraintEqualToAnchor:self.navigationItem.titleView.topAnchor], + [self.titleLabel.leadingAnchor + constraintEqualToAnchor:self.navigationItem.titleView.leadingAnchor], + [self.titleLabel.trailingAnchor + constraintEqualToAnchor:self.navigationItem.titleView.trailingAnchor], + [self.titleLabel.bottomAnchor + constraintEqualToAnchor:self.navigationItem.titleView.bottomAnchor], + [self.iconView.topAnchor + constraintEqualToAnchor:self.navigationItem.titleView.topAnchor], + [self.iconView.leadingAnchor + constraintEqualToAnchor:self.navigationItem.titleView.leadingAnchor], + [self.iconView.trailingAnchor + constraintEqualToAnchor:self.navigationItem.titleView.trailingAnchor], + [self.iconView.bottomAnchor + constraintEqualToAnchor:self.navigationItem.titleView.bottomAnchor], + ]]; - UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Pirated :(" - message:@"Please install kai from Chariz repository." - preferredStyle:UIAlertControllerStyleAlert]; + UIAlertController *alert = [UIAlertController + alertControllerWithTitle:@"Pirated :(" + message:@"Please install kai from Chariz repository." + preferredStyle:UIAlertControllerStyleAlert]; - if ([[NSFileManager defaultManager] fileExistsAtPath:@"/var/lib/dpkg/info/com.burritoz.kai.list"] && [[NSFileManager defaultManager] fileExistsAtPath:@"/var/lib/dpkg/info/com.burritoz.kai.md5sums"]) { - // nothing - } else { - [self presentViewController:alert animated:YES completion:nil]; - } + if ([[NSFileManager defaultManager] + fileExistsAtPath:@"/var/lib/dpkg/info/com.burritoz.kai.list"] && + [[NSFileManager defaultManager] + fileExistsAtPath:@"/var/lib/dpkg/info/com.burritoz.kai.md5sums"]) { + // nothing + } else { + [self presentViewController:alert animated:YES completion:nil]; + } - CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)respringNeeded, CFSTR("com.burritoz.kaiprefs.respringneeded"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately); + CFNotificationCenterAddObserver( + CFNotificationCenterGetDarwinNotifyCenter(), NULL, + (CFNotificationCallback)respringNeeded, + CFSTR("com.burritoz.kaiprefs.respringneeded"), NULL, + CFNotificationSuspensionBehaviorDeliverImmediately); - CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)applyPrefs, CFSTR("com.burritoz.kaiprefs.apply"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately); + CFNotificationCenterAddObserver( + CFNotificationCenterGetDarwinNotifyCenter(), NULL, + (CFNotificationCallback)applyPrefs, CFSTR("com.burritoz.kaiprefs.apply"), + NULL, CFNotificationSuspensionBehaviorDeliverImmediately); - controller = self; + controller = self; } - (void)resetPrefs:(id)sender { - UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Reset Preferences" - message:@"Are you sure you want to reset all of your preferences? This action CANNOT be undone! Your device will respring." - preferredStyle:UIAlertControllerStyleAlert]; + UIAlertController *alert = [UIAlertController + alertControllerWithTitle:@"Reset Preferences" + message:@"Are you sure you want to reset all of your " + @"preferences? This action CANNOT be undone! " + @"Your device will respring." + preferredStyle:UIAlertControllerStyleAlert]; - UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"No" - style:UIAlertActionStyleDefault - handler:^(UIAlertAction *action){ - }]; - UIAlertAction *yes = [UIAlertAction actionWithTitle:@"Yes" - style:UIAlertActionStyleDestructive - handler:^(UIAlertAction *action) { - NSUserDefaults *prefs = [[NSUserDefaults standardUserDefaults] init]; - [prefs removePersistentDomainForName:@"com.burritoz.kaiprefs"]; + UIAlertAction *defaultAction = + [UIAlertAction actionWithTitle:@"No" + style:UIAlertActionStyleDefault + handler:^(UIAlertAction *action){ + }]; + UIAlertAction *yes = [UIAlertAction + actionWithTitle:@"Yes" + style:UIAlertActionStyleDestructive + handler:^(UIAlertAction *action) { + NSUserDefaults *prefs = + [[NSUserDefaults standardUserDefaults] init]; + [prefs removePersistentDomainForName:@"com.burritoz.kaiprefs"]; - NSTask *f = [[NSTask alloc] init]; - [f setLaunchPath:@"/usr/bin/killall"]; - [f setArguments:[NSArray arrayWithObjects:@"backboardd", nil]]; - [f launch]; - }]; + NSTask *f = [[NSTask alloc] init]; + [f setLaunchPath:@"/usr/bin/killall"]; + [f setArguments:[NSArray arrayWithObjects:@"backboardd", nil]]; + [f launch]; + }]; - [alert addAction:defaultAction]; - [alert addAction:yes]; - [self presentViewController:alert animated:YES completion:nil]; + [alert addAction:defaultAction]; + [alert addAction:yes]; + [self presentViewController:alert animated:YES completion:nil]; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { - CGFloat offsetY = scrollView.contentOffset.y; + CGFloat offsetY = scrollView.contentOffset.y; - if (offsetY > 120) { - [UIView animateWithDuration:0.2 - animations:^{ - self.iconView.alpha = 1.0; - self.titleLabel.alpha = 0.0; - }]; - } else { - [UIView animateWithDuration:0.2 - animations:^{ - self.iconView.alpha = 0.0; - self.titleLabel.alpha = 1.0; - }]; - } + if (offsetY > 120) { + [UIView animateWithDuration:0.2 + animations:^{ + self.iconView.alpha = 1.0; + self.titleLabel.alpha = 0.0; + }]; + } else { + [UIView animateWithDuration:0.2 + animations:^{ + self.iconView.alpha = 0.0; + self.titleLabel.alpha = 1.0; + }]; + } } -- (void)followMeBurritoz { - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://twitter.com/burrit0ztweaks"]]; +- (void)followMeRen { + [[UIApplication sharedApplication] + openURL:[NSURL URLWithString:@"https://twitter.com/ren7995"]]; } - (void)followMeOnTwitterThomz { - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://twitter.com/thomzi07"]]; + [[UIApplication sharedApplication] + openURL:[NSURL URLWithString:@"https://twitter.com/thomzi07"]]; } @end @implementation KaiHeaderCell // Header Cell -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(id)reuseIdentifier specifier:(id)specifier { - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier specifier:specifier]; +- (instancetype)initWithStyle:(UITableViewCellStyle)style + reuseIdentifier:(id)reuseIdentifier + specifier:(id)specifier { + self = [super initWithStyle:style + reuseIdentifier:reuseIdentifier + specifier:specifier]; - if (self) { - UILabel *tweakLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 30, self.contentView.bounds.size.width + 30, 50)]; - [tweakLabel setTextAlignment:NSTextAlignmentLeft]; - [tweakLabel setFont:[UIFont systemFontOfSize:50 weight:UIFontWeightRegular]]; - tweakLabel.text = @"kai"; + if (self) { + UILabel *tweakLabel = [[UILabel alloc] + initWithFrame:CGRectMake(20, 30, + self.contentView.bounds.size.width + 30, 50)]; + [tweakLabel setTextAlignment:NSTextAlignmentLeft]; + [tweakLabel setFont:[UIFont systemFontOfSize:50 + weight:UIFontWeightRegular]]; + tweakLabel.text = @"kai"; - UILabel *devLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 70, self.contentView.bounds.size.width + 30, 50)]; - [devLabel setTextAlignment:NSTextAlignmentLeft]; - [devLabel setFont:[UIFont systemFontOfSize:20 weight:UIFontWeightMedium]]; - devLabel.alpha = 0.8; - devLabel.text = getPackageVersion(); + UILabel *devLabel = [[UILabel alloc] + initWithFrame:CGRectMake(20, 70, + self.contentView.bounds.size.width + 30, 50)]; + [devLabel setTextAlignment:NSTextAlignmentLeft]; + [devLabel setFont:[UIFont systemFontOfSize:20 weight:UIFontWeightMedium]]; + devLabel.alpha = 0.8; + devLabel.text = getPackageVersion(); - NSBundle *bundle = [[NSBundle alloc] initWithPath:@"/Library/PreferenceBundles/kaiPrefs.bundle"]; - UIImage *logo = [UIImage imageWithContentsOfFile:[bundle pathForResource:@"iconFullSize" ofType:@"png"]]; - UIImageView *icon = [[UIImageView alloc] initWithImage:logo]; - icon.frame = CGRectMake(self.contentView.bounds.size.width - 35, 35, 70, 70); - icon.translatesAutoresizingMaskIntoConstraints = NO; + NSBundle *bundle = [[NSBundle alloc] + initWithPath:@"/Library/PreferenceBundles/kaiPrefs.bundle"]; + UIImage *logo = + [UIImage imageWithContentsOfFile:[bundle pathForResource:@"iconFullSize" + ofType:@"png"]]; + UIImageView *icon = [[UIImageView alloc] initWithImage:logo]; + icon.frame = + CGRectMake(self.contentView.bounds.size.width - 35, 35, 70, 70); + icon.translatesAutoresizingMaskIntoConstraints = NO; - [self addSubview:tweakLabel]; - [self addSubview:devLabel]; - [self addSubview:icon]; + [self addSubview:tweakLabel]; + [self addSubview:devLabel]; + [self addSubview:icon]; - [icon.rightAnchor constraintEqualToAnchor:self.rightAnchor constant:-20].active = YES; - [icon.centerYAnchor constraintEqualToAnchor:self.centerYAnchor].active = YES; - [icon.widthAnchor constraintEqualToConstant:70].active = YES; - [icon.heightAnchor constraintEqualToConstant:70].active = YES; + [icon.rightAnchor constraintEqualToAnchor:self.rightAnchor constant:-20] + .active = YES; + [icon.centerYAnchor constraintEqualToAnchor:self.centerYAnchor].active = + YES; + [icon.widthAnchor constraintEqualToConstant:70].active = YES; + [icon.heightAnchor constraintEqualToConstant:70].active = YES; - icon.layer.masksToBounds = YES; - icon.layer.cornerRadius = 15; - } + icon.layer.masksToBounds = YES; + icon.layer.cornerRadius = 15; + } - return self; + return self; } - (instancetype)initWithSpecifier:(PSSpecifier *)specifier { - return [self initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"KaiHeaderCell" specifier:specifier]; + return [self initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:@"KaiHeaderCell" + specifier:specifier]; } - (void)setFrame:(CGRect)frame { - frame.origin.x = 0; - [super setFrame:frame]; + frame.origin.x = 0; + [super setFrame:frame]; } - (CGFloat)preferredHeightForWidth:(CGFloat)arg1 { - return 140.0f; + return 140.0f; } @end @implementation Thomz_TwitterCell // lil copy of HBTwitterCell from Cephei -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier specifier:(PSSpecifier *)specifier { - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier specifier:specifier]; +- (instancetype)initWithStyle:(UITableViewCellStyle)style + reuseIdentifier:(NSString *)reuseIdentifier + specifier:(PSSpecifier *)specifier { + self = [super initWithStyle:style + reuseIdentifier:reuseIdentifier + specifier:specifier]; - if (self) { - UILabel *User = [[UILabel alloc] initWithFrame:CGRectMake(70, 15, 200, 20)]; - [User setText:specifier.properties[@"user"]]; - [User setFont:[User.font fontWithSize:15]]; + if (self) { + UILabel *User = [[UILabel alloc] initWithFrame:CGRectMake(70, 15, 200, 20)]; + [User setText:specifier.properties[@"user"]]; + [User setFont:[User.font fontWithSize:15]]; - UILabel *Description = [[UILabel alloc] initWithFrame:CGRectMake(70, 35, 200, 20)]; - [Description setText:specifier.properties[@"description"]]; - [Description setFont:[Description.font fontWithSize:10]]; + UILabel *Description = + [[UILabel alloc] initWithFrame:CGRectMake(70, 35, 200, 20)]; + [Description setText:specifier.properties[@"description"]]; + [Description setFont:[Description.font fontWithSize:10]]; - NSBundle *bundle = [[NSBundle alloc] initWithPath:@"/Library/PreferenceBundles/kaiPrefs.bundle"]; + NSBundle *bundle = [[NSBundle alloc] + initWithPath:@"/Library/PreferenceBundles/kaiPrefs.bundle"]; - UIImage *profilePicture; - profilePicture = [UIImage imageWithContentsOfFile:[bundle pathForResource:specifier.properties[@"image"] ofType:@"jpg"]]; - UIImageView *profilePictureView = [[UIImageView alloc] initWithImage:profilePicture]; - [profilePictureView.layer setMasksToBounds:YES]; - [profilePictureView.layer setCornerRadius:20]; - [profilePictureView setFrame:CGRectMake(15, 15, 40, 40)]; + UIImage *profilePicture; + profilePicture = [UIImage + imageWithContentsOfFile:[bundle + pathForResource:specifier + .properties[@"image"] + ofType:@"jpg"]]; + UIImageView *profilePictureView = + [[UIImageView alloc] initWithImage:profilePicture]; + [profilePictureView.layer setMasksToBounds:YES]; + [profilePictureView.layer setCornerRadius:20]; + [profilePictureView setFrame:CGRectMake(15, 15, 40, 40)]; - [self addSubview:User]; - [self addSubview:Description]; - [self addSubview:profilePictureView]; - } + [self addSubview:User]; + [self addSubview:Description]; + [self addSubview:profilePictureView]; + } - return self; + return self; } @end \ No newline at end of file diff --git a/kaiprefs/Resources/Root.plist b/kaiprefs/Resources/Root.plist index ac63529..c38f77a 100644 --- a/kaiprefs/Resources/Root.plist +++ b/kaiprefs/Resources/Root.plist @@ -18,15 +18,15 @@ cellClass Thomz_TwitterCell user - Burrit0z + ren7995 description Developer height 70 image - burritoz + ren7995 action - followMeBurritoz + followMeRen cell diff --git a/kaiprefs/Resources/burritoz.jpg b/kaiprefs/Resources/burritoz.jpg deleted file mode 100644 index 0402e4906ca5bd17964955f84397e7a497bf634b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12903 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 diff --git a/kaiprefs/Resources/ren7995.jpg b/kaiprefs/Resources/ren7995.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72a37659fc36daf72747aa61b3e411a4e093a9ea GIT binary patch literal 30585 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