mirror of
https://github.com/SoPat712/YTLitePlus.git
synced 2025-08-24 19:38:54 -04:00
added files via upload
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
//
|
||||
// FLEXDefaultsContentSection.m
|
||||
// FLEX
|
||||
//
|
||||
// Created by Tanner Bennett on 8/28/19.
|
||||
// Copyright © 2020 FLEX Team. All rights reserved.
|
||||
//
|
||||
|
||||
#import "FLEXDefaultsContentSection.h"
|
||||
#import "FLEXDefaultEditorViewController.h"
|
||||
#import "FLEXUtility.h"
|
||||
|
||||
@interface FLEXDefaultsContentSection ()
|
||||
@property (nonatomic) NSUserDefaults *defaults;
|
||||
@property (nonatomic) NSArray *keys;
|
||||
@property (nonatomic, readonly) NSDictionary *unexcludedDefaults;
|
||||
@end
|
||||
|
||||
@implementation FLEXDefaultsContentSection
|
||||
@synthesize keys = _keys;
|
||||
|
||||
#pragma mark Initialization
|
||||
|
||||
+ (instancetype)forObject:(id)object {
|
||||
return [self forDefaults:object];
|
||||
}
|
||||
|
||||
+ (instancetype)standard {
|
||||
return [self forDefaults:NSUserDefaults.standardUserDefaults];
|
||||
}
|
||||
|
||||
+ (instancetype)forDefaults:(NSUserDefaults *)userDefaults {
|
||||
FLEXDefaultsContentSection *section = [self forReusableFuture:^id(FLEXDefaultsContentSection *section) {
|
||||
section.defaults = userDefaults;
|
||||
section.onlyShowKeysForAppPrefs = YES;
|
||||
return section.unexcludedDefaults;
|
||||
}];
|
||||
return section;
|
||||
}
|
||||
|
||||
#pragma mark - Overrides
|
||||
|
||||
- (NSString *)title {
|
||||
return @"Defaults";
|
||||
}
|
||||
|
||||
- (void (^)(__kindof UIViewController *))didPressInfoButtonAction:(NSInteger)row {
|
||||
return ^(UIViewController *host) {
|
||||
if ([FLEXDefaultEditorViewController canEditDefaultWithValue:[self objectForRow:row]]) {
|
||||
// We use titleForRow: to get the key because self.keys is not
|
||||
// necessarily in the same order as the keys being displayed
|
||||
FLEXVariableEditorViewController *controller = [FLEXDefaultEditorViewController
|
||||
target:self.defaults key:[self titleForRow:row] commitHandler:^{
|
||||
[self reloadData:YES];
|
||||
}
|
||||
];
|
||||
[host.navigationController pushViewController:controller animated:YES];
|
||||
} else {
|
||||
[FLEXAlert showAlert:@"Oh No…" message:@"We can't edit this entry :(" from:host];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
- (UITableViewCellAccessoryType)accessoryTypeForRow:(NSInteger)row {
|
||||
return UITableViewCellAccessoryDetailDisclosureButton;
|
||||
}
|
||||
|
||||
#pragma mark - Private
|
||||
|
||||
- (NSArray *)keys {
|
||||
if (!_keys) {
|
||||
if (self.onlyShowKeysForAppPrefs) {
|
||||
// Read keys from preferences file
|
||||
NSString *bundle = NSBundle.mainBundle.bundleIdentifier;
|
||||
NSString *prefsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Preferences"];
|
||||
NSString *filePath = [NSString stringWithFormat:@"%@/%@.plist", prefsPath, bundle];
|
||||
self.keys = [NSDictionary dictionaryWithContentsOfFile:filePath].allKeys;
|
||||
} else {
|
||||
self.keys = self.defaults.dictionaryRepresentation.allKeys;
|
||||
}
|
||||
}
|
||||
|
||||
return _keys;
|
||||
}
|
||||
|
||||
- (void)setKeys:(NSArray *)keys {
|
||||
_keys = [keys sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
|
||||
}
|
||||
|
||||
- (NSDictionary *)unexcludedDefaults {
|
||||
// Case: no excluding
|
||||
if (!self.onlyShowKeysForAppPrefs) {
|
||||
return self.defaults.dictionaryRepresentation;
|
||||
}
|
||||
|
||||
// Always regenerate key allowlist when this method is called
|
||||
_keys = nil;
|
||||
|
||||
// Generate new dictionary from unexcluded keys
|
||||
NSArray *values = [self.defaults.dictionaryRepresentation
|
||||
objectsForKeys:self.keys notFoundMarker:NSNull.null
|
||||
];
|
||||
return [NSDictionary dictionaryWithObjects:values forKeys:self.keys];
|
||||
}
|
||||
|
||||
#pragma mark - Public
|
||||
|
||||
- (void)setOnlyShowKeysForAppPrefs:(BOOL)onlyShowKeysForAppPrefs {
|
||||
if (onlyShowKeysForAppPrefs) {
|
||||
// This property only applies if we're using standardUserDefaults
|
||||
if (self.defaults != NSUserDefaults.standardUserDefaults) return;
|
||||
}
|
||||
|
||||
_onlyShowKeysForAppPrefs = onlyShowKeysForAppPrefs;
|
||||
}
|
||||
|
||||
@end
|
Reference in New Issue
Block a user