SKGeneralPreferences.swift 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. //
  2. // SKGeneralPreferences.swift
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2023/11/6.
  6. //
  7. import Cocoa
  8. class SKGeneralPreferences: NSViewController {
  9. /*
  10. #define @""
  11. #define AUTOMATICALLYCHECKSFORUPDATES_KEY @"automaticallyChecksForUpdates"
  12. #define UPDATECHECKINTERVAL_KEY @"updateCheckInterval"
  13. #define SUScheduledCheckIntervalKey @"SUScheduledCheckInterval"
  14. */
  15. private let UPDATEINTERVAL_KEY = "updateInterval"
  16. @IBOutlet var updateIntervalPopUpButton: NSPopUpButton!
  17. @IBOutlet var openFilesLabelField: NSTextField!
  18. @IBOutlet var openFilesMatrix: NSMatrix!
  19. @IBOutlet var updateIntervalLabelField: NSTextField!
  20. @IBOutlet var savePasswordsMatrix: NSMatrix!
  21. @IBOutlet var authorLabel: NSTextField!
  22. @IBOutlet var authorTextField: NSTextField!
  23. @IBOutlet var defaultOpenButton: NSButton!
  24. @IBOutlet var openTabLabel: NSTextField!
  25. @IBOutlet var openTabButton: NSPopUpButton!
  26. @IBOutlet var showConvertMenuButton: NSButton!
  27. @IBOutlet var autoSaveInfoBtn: NSButton!
  28. @IBOutlet var autoSaveSlider: NSSlider!
  29. @IBOutlet var autoSaveLbl: NSTextField!
  30. var updateInterval: Int = 0 {
  31. didSet {
  32. }
  33. // set {
  34. //
  35. // }
  36. // get {
  37. //
  38. // }
  39. }
  40. /*
  41. @interface SKGeneralPreferences : NSViewController <SKPreferencePane> {
  42. NSArray *revertPDFSettingsButtons;
  43. NSInteger updateInterval;
  44. }
  45. @property (nonatomic, retain) IBOutlet NSArray *revertPDFSettingsButtons;
  46. @property (nonatomic) NSInteger ;
  47. - (IBAction)revertPDFViewSettings:(id)sender;
  48. - (IBAction)revertFullScreenPDFViewSettings:(id)sender;
  49. */
  50. /*
  51. static char SKGeneralPreferencesDefaultsObservationContext;
  52. static char SKGeneralPreferencesUpdaterObservationContext;
  53. @interface SKGeneralPreferences (Private)
  54. - (void)synchronizeUpdateInterval;
  55. - (void)updateRevertButtons;
  56. @end
  57. */
  58. override var nibName: NSNib.Name? {
  59. return "GeneralPreferences"
  60. }
  61. override func loadView() {
  62. super.loadView()
  63. let userName = UserDefaults.standard.string(forKey: "SKUserName")
  64. self.authorTextField.stringValue = userName != nil ? userName! : NSFullUserName()
  65. // self.defaultOpenButton.state = [[KMHomeWindowController homeWindow] isDefaultOpenForPDF] ? NSControlStateValueOn : NSControlStateValueOff;
  66. self.authorLabel.stringValue = KMLocalizedString("Author:", nil)
  67. self.defaultOpenButton.title = KMLocalizedString("Set PDF Reader Pro as the default PDF viewer", nil)
  68. self.openTabLabel.stringValue = String(format: "%@:", KMLocalizedString("Open a document in", nil))
  69. for item in self.openTabButton.itemArray {
  70. item.title = KMLocalizedString(item.title, nil)
  71. }
  72. self.showConvertMenuButton.title = KMLocalizedString("Show PDF Reader Pro in menu bar", nil)
  73. // self.showConvertMenuButton.state = [KMStatusBar systemStatusBar].isShow ? NSControlStateValueOn : NSControlStateValueOff;
  74. self.authorLabel.sizeToFit()
  75. var frame = self.authorTextField.frame
  76. frame.origin.x = CGRectGetMaxX(self.authorLabel.frame)+5
  77. self.authorTextField.frame = frame
  78. self.openTabLabel.sizeToFit()
  79. frame = self.openTabButton.frame
  80. frame.origin.x = CGRectGetMaxX(self.openTabLabel.frame)+5
  81. self.openTabButton.frame = frame
  82. self.openTabButton.isEnabled = true
  83. #if VERSION_FREE
  84. // if (![IAPProductsManager defaultManager].isAvailableAllFunction) {
  85. // [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"KMOpenDocumentInTab"];
  86. // }
  87. #endif
  88. // SKAutoSizeButtons(revertPDFSettingsButtons, NO);
  89. // SKAutoSizeLabelField(openFilesLabelField, openFilesMatrix, NO);
  90. // CGFloat dw = SKAutoSizeLabelField(updateIntervalLabelField, updateIntervalPopUpButton, NO);
  91. // [openFilesMatrix sizeToFit];
  92. // [savePasswordsMatrix sizeToFit];
  93. // SKShiftAndResizeView([self view], 0.0, dw);
  94. self._synchronizeUpdateInterval()
  95. self._updateRevertButtons()
  96. // [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeys:[NSArray arrayWithObjects:SKStringConstants.defaultPDFDisplaySettingsKey, SKStringConstants.defaultFullScreenPDFDisplaySettingsKey, nil] context:&SKGeneralPreferencesDefaultsObservationContext];
  97. // [NSUserDefaultsController sharedUserDefaultsController]
  98. #if VERSION_DMG
  99. // [[SUUpdater sharedUpdater] addObserver:self forKeyPath:AUTOMATICALLYCHECKSFORUPDATES_KEY options:0 context:&SKGeneralPreferencesUpdaterObservationContext];
  100. // [[SUUpdater sharedUpdater] addObserver:self forKeyPath:UPDATECHECKINTERVAL_KEY options:0 context:&SKGeneralPreferencesUpdaterObservationContext];
  101. #endif
  102. self.autoSaveInfoBtn.title = KMLocalizedString("Autosave Documents", nil)
  103. // self.autoSaveInfoBtn.state = [AutoSaveManager manager].autoSaveEnabled ? NSControlStateValueOn : NSControlStateValueOff;
  104. // self.autoSaveSlider.enabled = [AutoSaveManager manager].autoSaveEnabled;
  105. // if ([AutoSaveManager manager].timeInterval > 1) {
  106. // self.autoSaveSlider.floatValue = ([AutoSaveManager manager].timeInterval - 1)/19;
  107. // } else {
  108. self.autoSaveSlider.floatValue = 0;
  109. // }
  110. // self.autoSaveLbl.stringValue = [NSString stringWithFormat:@"%.0f %@", [AutoSaveManager manager].timeInterval, NSLocalizedString(@"minute(s)", nil)];
  111. }
  112. override func viewDidLoad() {
  113. super.viewDidLoad()
  114. // Do view setup here.
  115. }
  116. @IBAction func revertPDFViewSettings(_ sender: AnyObject?) {
  117. // [[NSUserDefaultsController sharedUserDefaultsController] revertToInitialValueForKey:SKStringConstants.defaultPDFDisplaySettingsKey];
  118. }
  119. @IBAction func revertFullScreenPDFViewSettings(_ sender: AnyObject?) {
  120. // [[NSUserDefaultsController sharedUserDefaultsController] revertToInitialValueForKey:SKStringConstants.defaultFullScreenPDFDisplaySettingsKey];
  121. }
  122. @IBAction func authorTextFieldAction(_ sender: AnyObject?) {
  123. // NSString *userName = self.authorTextField.stringValue.length > 0 ? self.authorTextField.stringValue : @"";
  124. // [[NSUserDefaults standardUserDefaults] setObject:userName forKey:@"SKUserName"];
  125. // [[NSUserDefaults standardUserDefaults] synchronize];
  126. }
  127. @IBAction func defaultOpenButtonAction(_ sender: AnyObject?) {
  128. // if ([self.defaultOpenButton state]) {
  129. // [[KMHomeWindowController homeWindow] setDefaultOpenForPDF:YES];
  130. // } else {
  131. // [[KMHomeWindowController homeWindow] setDefaultOpenForPDF:NO];
  132. // }
  133. }
  134. @IBAction func openTabButtonAction(_ sender: AnyObject?) {
  135. // if (@available(macOS 10.12, *)) {
  136. // NSWindowTabbingMode tabbingMode = NSWindowTabbingModeAutomatic;
  137. // if (self.openTabButton.indexOfSelectedItem == 0) {
  138. // #if VERSION_FREE
  139. // // if (![IAPProductsManager defaultManager].isAvailableAllFunction) {
  140. // // [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"KMOpenDocumentInTab"];
  141. // // [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil];
  142. // // return;
  143. // // }
  144. // #endif
  145. // tabbingMode = NSWindowTabbingModePreferred;
  146. // } else if (self.openTabButton.indexOfSelectedItem == 1) {
  147. // tabbingMode = NSWindowTabbingModeDisallowed;
  148. // }
  149. // for (NSDocument *document in [[NSDocumentController sharedDocumentController] documents]) {
  150. // // if ([document isKindOfClass:[SKMainDocument class]]) {
  151. // // for (NSWindowController *windowController in document.windowControllers) {
  152. // // windowController.window.tabbingMode = tabbingMode;
  153. // // }
  154. // // }
  155. // }
  156. // }
  157. }
  158. @IBAction func showConvertMenuButtonAction(_ sender: AnyObject?) {
  159. // if ([self.showConvertMenuButton state]) {
  160. // // [KMStatusBar systemStatusBar].isShow = YES;
  161. // } else {
  162. // // [KMStatusBar systemStatusBar].isShow = NO;
  163. // }
  164. }
  165. @IBAction func autoSaveButtonAction(_ sender: AnyObject?) {
  166. // [AutoSaveManager manager].autoSaveEnabled = self.autoSaveInfoBtn.state == NSControlStateValueOn;
  167. // self.autoSaveSlider.enabled = [AutoSaveManager manager].autoSaveEnabled;
  168. }
  169. @IBAction func autoSaveSliderAction(_ sender: AnyObject?) {
  170. // CGFloat value = 1 + 19 * self.autoSaveSlider.floatValue;
  171. // [AutoSaveManager manager].timeInterval = value;
  172. // self.autoSaveLbl.stringValue = [NSString stringWithFormat:@"%.0f %@", [AutoSaveManager manager].timeInterval, NSLocalizedString(@"minute(s)", nil)];
  173. // [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(autoSaveSliderFinish) object:nil];
  174. // [self performSelector:@selector(autoSaveSliderFinish) withObject:nil afterDelay:1];
  175. }
  176. /*
  177. - (void)autoSaveSliderFinish {
  178. // [[NSNotificationCenter defaultCenter] postNotificationName:KAutoSaveTimeValueChangedNoti object:nil];
  179. }
  180. */
  181. /*
  182. @synthesize updateIntervalPopUpButton, revertPDFSettingsButtons, openFilesLabelField, openFilesMatrix, updateIntervalLabelField, savePasswordsMatrix, updateInterval, authorLabel, authorTextField, defaultOpenButton, showConvertMenuButton;
  183. - (void)dealloc {
  184. @try {
  185. [[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeys:[NSArray arrayWithObjects:SKStringConstants.defaultPDFDisplaySettingsKey, SKStringConstants.defaultFullScreenPDFDisplaySettingsKey, nil]];
  186. #if VERSION_DMG
  187. [[SUUpdater sharedUpdater] removeObserver:self forKeyPath:AUTOMATICALLYCHECKSFORUPDATES_KEY];
  188. [[SUUpdater sharedUpdater] removeObserver:self forKeyPath:UPDATECHECKINTERVAL_KEY];
  189. #endif
  190. }
  191. @catch(id e) {}
  192. // SKDESTROY(updateIntervalPopUpButton);
  193. // SKDESTROY(revertPDFSettingsButtons);
  194. // SKDESTROY(openFilesLabelField);
  195. // SKDESTROY(openFilesMatrix);
  196. // SKDESTROY(updateIntervalLabelField);
  197. // SKDESTROY(savePasswordsMatrix);
  198. // SKDESTROY(authorLabel);
  199. // SKDESTROY(authorTextField);
  200. // SKDESTROY(defaultOpenButton);
  201. // SKDESTROY(showConvertMenuButton);
  202. // [super dealloc];
  203. }
  204. #pragma mark Accessors
  205. - (void)setUpdateInterval:(NSInteger)interval {
  206. #if VERSION_DMG
  207. if (interval > 0)
  208. [[SUUpdater sharedUpdater] setUpdateCheckInterval:interval];
  209. [[SUUpdater sharedUpdater] setAutomaticallyChecksForUpdates:interval > 0];
  210. #endif
  211. updateInterval = interval;
  212. }
  213. #pragma mark Actions
  214. #pragma mark KVO
  215. - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
  216. if (context == &SKGeneralPreferencesDefaultsObservationContext)
  217. [self updateRevertButtons];
  218. else if (context == &SKGeneralPreferencesUpdaterObservationContext)
  219. [self synchronizeUpdateInterval];
  220. else
  221. [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
  222. }
  223. #pragma mark Hooks
  224. - (void)defaultsDidRevert {
  225. NSTimeInterval interval = [[[NSBundle mainBundle] objectForInfoDictionaryKey:SUScheduledCheckIntervalKey] doubleValue];
  226. #if VERSION_DMG
  227. [[SUUpdater sharedUpdater] setUpdateCheckInterval:interval];
  228. [[SUUpdater sharedUpdater] setAutomaticallyChecksForUpdates:interval > 0.0];
  229. #endif
  230. }
  231. @end
  232. */
  233. override var title: String? {
  234. set {
  235. super.title = newValue
  236. }
  237. get {
  238. return KMLocalizedString("General", "Preference pane label")
  239. }
  240. }
  241. override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
  242. super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
  243. }
  244. }
  245. // MARK: - Private Methods
  246. extension SKGeneralPreferences {
  247. private func _synchronizeUpdateInterval() {
  248. // self.willChangeValue(forKey: UPDATEINTERVAL_KEY)
  249. #if VERSION_DMG
  250. // updateInterval = [[SUUpdater sharedUpdater] automaticallyChecksForUpdates] ? [[SUUpdater sharedUpdater] updateCheckInterval] : 0;
  251. #endif
  252. // self.didChangeValue(forKey: UPDATEINTERVAL_KEY)
  253. }
  254. private func _updateRevertButtons() {
  255. let initialValues = NSUserDefaultsController.shared.initialValues
  256. let sud = UserDefaults.standard
  257. // [[revertPDFSettingsButtons objectAtIndex:0] setEnabled:[[initialValues objectForKey:SKStringConstants.defaultPDFDisplaySettingsKey] isEqual:[sud dictionaryForKey:SKStringConstants.defaultPDFDisplaySettingsKey]] == NO];
  258. // [[revertPDFSettingsButtons objectAtIndex:1] setEnabled:[[initialValues objectForKey:SKStringConstants.defaultFullScreenPDFDisplaySettingsKey] isEqual:[sud dictionaryForKey:SKStringConstants.defaultFullScreenPDFDisplaySettingsKey]] == NO];
  259. }
  260. /*
  261. */
  262. }