mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-30 20:34:03 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| //
 | |
| //  FLEXDefaultEditorViewController.m
 | |
| //  Flipboard
 | |
| //
 | |
| //  Created by Ryan Olson on 5/23/14.
 | |
| //  Copyright (c) 2020 FLEX Team. All rights reserved.
 | |
| //
 | |
| 
 | |
| #import "FLEXDefaultEditorViewController.h"
 | |
| #import "FLEXFieldEditorView.h"
 | |
| #import "FLEXRuntimeUtility.h"
 | |
| #import "FLEXArgumentInputView.h"
 | |
| #import "FLEXArgumentInputViewFactory.h"
 | |
| 
 | |
| @interface FLEXDefaultEditorViewController ()
 | |
| 
 | |
| @property (nonatomic, readonly) NSUserDefaults *defaults;
 | |
| @property (nonatomic, readonly) NSString *key;
 | |
| 
 | |
| @end
 | |
| 
 | |
| @implementation FLEXDefaultEditorViewController
 | |
| 
 | |
| + (instancetype)target:(NSUserDefaults *)defaults key:(NSString *)key commitHandler:(void(^_Nullable)(void))onCommit {
 | |
|     FLEXDefaultEditorViewController *editor = [self target:defaults data:key commitHandler:onCommit];
 | |
|     editor.title = @"Edit Default";
 | |
|     return editor;
 | |
| }
 | |
| 
 | |
| - (NSUserDefaults *)defaults {
 | |
|     return [_target isKindOfClass:[NSUserDefaults class]] ? _target : nil;
 | |
| }
 | |
| 
 | |
| - (NSString *)key {
 | |
|     return _data;
 | |
| }
 | |
| 
 | |
| - (void)viewDidLoad {
 | |
|     [super viewDidLoad];
 | |
|     
 | |
|     self.fieldEditorView.fieldDescription = self.key;
 | |
| 
 | |
|     id currentValue = [self.defaults objectForKey:self.key];
 | |
|     FLEXArgumentInputView *inputView = [FLEXArgumentInputViewFactory
 | |
|         argumentInputViewForTypeEncoding:FLEXEncodeObject(currentValue)
 | |
|         currentValue:currentValue
 | |
|     ];
 | |
|     inputView.backgroundColor = self.view.backgroundColor;
 | |
|     inputView.inputValue = currentValue;
 | |
|     self.fieldEditorView.argumentInputViews = @[inputView];
 | |
| }
 | |
| 
 | |
| - (void)actionButtonPressed:(id)sender {
 | |
|     id value = self.firstInputView.inputValue;
 | |
|     if (value) {
 | |
|         [self.defaults setObject:value forKey:self.key];
 | |
|     } else {
 | |
|         [self.defaults removeObjectForKey:self.key];
 | |
|     }
 | |
|     [self.defaults synchronize];
 | |
|     
 | |
|     // Dismiss keyboard and handle committed changes
 | |
|     [super actionButtonPressed:sender];
 | |
|     
 | |
|     // Go back after setting, but not for switches.
 | |
|     if (sender) {
 | |
|         [self.navigationController popViewControllerAnimated:YES];
 | |
|     } else {
 | |
|         self.firstInputView.inputValue = [self.defaults objectForKey:self.key];
 | |
|     }
 | |
| }
 | |
| 
 | |
| + (BOOL)canEditDefaultWithValue:(id)currentValue {
 | |
|     return [FLEXArgumentInputViewFactory
 | |
|         canEditFieldWithTypeEncoding:FLEXEncodeObject(currentValue)
 | |
|         currentValue:currentValue
 | |
|     ];
 | |
| }
 | |
| 
 | |
| @end
 | 
