Files
YTLitePlus/Tweaks/Alderis/lcpshim/PFLiteColorCell.m
2023-06-27 09:54:41 +02:00

72 lines
2.7 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@import Alderis;
#import "libcolorpicker.h"
#import "HBColorPickerTableCell+Private.h"
#import <Preferences/PSSpecifier.h>
@implementation PFLiteColorCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier specifier:(PSSpecifier *)specifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier specifier:specifier];
if (self) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSLog(@"Alderis: %@: Using libcolorpicker compatibility class. Please consider switching to HBColorPickerTableCell. This warning will only be logged once.", self.class);
});
}
return self;
}
#pragma mark - Properties
- (NSString *)_hbcp_defaults {
return self.specifier.properties[@"libcolorpicker"][@"defaults"];
}
- (NSString *)_hbcp_key {
return self.specifier.properties[@"libcolorpicker"][@"key"];
}
- (NSString *)_hbcp_default {
return self.specifier.properties[@"libcolorpicker"][@"fallback"];
}
- (NSString *)_hbcp_postNotification {
return self.specifier.properties[@"libcolorpicker"][@"PostNotification"];
}
- (BOOL)_hbcp_supportsAlpha {
return self.specifier.properties[@"libcolorpicker"][@"alpha"] ? ((NSNumber *)self.specifier.properties[@"libcolorpicker"][@"alpha"]).boolValue : NO;
}
#pragma mark - Getters/setters
- (UIColor *)_colorValue {
if (self._hbcp_defaults != nil && self._hbcp_key != nil) {
// libcolorpicker compatibility
NSString *path = [NSString stringWithFormat:@"/var/mobile/Library/Preferences/%@.plist", self._hbcp_defaults];
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:path];
return LCPParseColorString(dictionary[self._hbcp_key], self._hbcp_default);
}
return [super _colorValue];
}
- (void)_setColorValue:(UIColor *)color {
// libcolorpicker compatibility
if (self._hbcp_defaults != nil && self._hbcp_key != nil) {
NSLog(@"Alderis: %@: Writing directly to plist file (libcolorpicker compatibility). Im going to do it since it seems to be somewhat common, but you should be ashamed of yourself. https://hbang.github.io/Alderis/preference-bundles.html", self.class);
NSString *path = [NSString stringWithFormat:@"/var/mobile/Library/Preferences/%@.plist", self._hbcp_defaults];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:path] ?: [NSMutableDictionary dictionary];
dictionary[self._hbcp_key] = color.hbcp_propertyListValue;
[dictionary writeToFile:path atomically:YES];
if (self._hbcp_postNotification != nil) {
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), (CFStringRef)self._hbcp_postNotification, nil, nil, YES);
}
[self _updateValue];
} else {
[super _setColorValue:color];
}
}
@end