mirror of
https://github.com/Burrit0z/kai
synced 2025-07-01 22:26:47 +00:00
rebrand
This commit is contained in:
@ -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<NSString *> *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<NSString *> *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
|
@ -18,15 +18,15 @@
|
||||
<key>cellClass</key>
|
||||
<string>Thomz_TwitterCell</string>
|
||||
<key>user</key>
|
||||
<string>Burrit0z</string>
|
||||
<string>ren7995</string>
|
||||
<key>description</key>
|
||||
<string>Developer</string>
|
||||
<key>height</key>
|
||||
<integer>70</integer>
|
||||
<key>image</key>
|
||||
<string>burritoz</string>
|
||||
<string>ren7995</string>
|
||||
<key>action</key>
|
||||
<string>followMeBurritoz</string>
|
||||
<string>followMeRen</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>cell</key>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
BIN
kaiprefs/Resources/ren7995.jpg
Normal file
BIN
kaiprefs/Resources/ren7995.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
Reference in New Issue
Block a user