FLEXDefaultEditorViewController.m 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //
  2. // FLEXDefaultEditorViewController.m
  3. // Flipboard
  4. //
  5. // Created by Ryan Olson on 5/23/14.
  6. // Copyright (c) 2014 Flipboard. All rights reserved.
  7. //
  8. #import "FLEXDefaultEditorViewController.h"
  9. #import "FLEXFieldEditorView.h"
  10. #import "FLEXRuntimeUtility.h"
  11. #import "FLEXArgumentInputView.h"
  12. @interface FLEXDefaultEditorViewController ()
  13. @property (nonatomic, readonly) NSUserDefaults *defaults;
  14. @property (nonatomic, strong) NSString *key;
  15. @end
  16. @implementation FLEXDefaultEditorViewController
  17. - (id)initWithDefaults:(NSUserDefaults *)defaults key:(NSString *)key
  18. {
  19. self = [super initWithTarget:defaults];
  20. if (self) {
  21. self.key = key;
  22. self.title = @"Edit Default";
  23. }
  24. return self;
  25. }
  26. - (NSUserDefaults *)defaults
  27. {
  28. return [self.target isKindOfClass:[NSUserDefaults class]] ? self.target : nil;
  29. }
  30. - (void)viewDidLoad
  31. {
  32. [super viewDidLoad];
  33. self.fieldEditorView.fieldDescription = self.key;
  34. [self updateTextFieldString];
  35. }
  36. - (void)actionButtonPressed:(id)sender
  37. {
  38. [super actionButtonPressed:sender];
  39. id value = [FLEXRuntimeUtility objectValueFromEditableString:self.firstInputView.inputOutput];
  40. if (value) {
  41. [self.defaults setObject:value forKey:self.key];
  42. } else {
  43. [self.defaults removeObjectForKey:self.key];
  44. }
  45. [self.defaults synchronize];
  46. [self updateTextFieldString];
  47. }
  48. - (void)updateTextFieldString
  49. {
  50. id defaultsValue = [self.defaults objectForKey:self.key];
  51. self.firstInputView.inputOutput = [FLEXRuntimeUtility editiableDescriptionForObject:defaultsValue];
  52. }
  53. + (BOOL)canEditDefaultWithValue:(id)currentValue
  54. {
  55. return !currentValue || [FLEXRuntimeUtility editiableDescriptionForObject:currentValue] != nil;
  56. }
  57. @end