// // SKGeneralPreferences.swift // PDF Master // // Created by tangchao on 2023/11/6. // import Cocoa class SKGeneralPreferences: NSViewController { /* #define @"" #define AUTOMATICALLYCHECKSFORUPDATES_KEY @"automaticallyChecksForUpdates" #define UPDATECHECKINTERVAL_KEY @"updateCheckInterval" #define SUScheduledCheckIntervalKey @"SUScheduledCheckInterval" */ private let UPDATEINTERVAL_KEY = "updateInterval" @IBOutlet var updateIntervalPopUpButton: NSPopUpButton! @IBOutlet var openFilesLabelField: NSTextField! @IBOutlet var openFilesMatrix: NSMatrix! @IBOutlet var updateIntervalLabelField: NSTextField! @IBOutlet var savePasswordsMatrix: NSMatrix! @IBOutlet var authorLabel: NSTextField! @IBOutlet var authorTextField: NSTextField! @IBOutlet var defaultOpenButton: NSButton! @IBOutlet var openTabLabel: NSTextField! @IBOutlet var openTabButton: NSPopUpButton! @IBOutlet var showConvertMenuButton: NSButton! @IBOutlet var autoSaveInfoBtn: NSButton! @IBOutlet var autoSaveSlider: NSSlider! @IBOutlet var autoSaveLbl: NSTextField! var updateInterval: Int = 0 { didSet { } // set { // // } // get { // // } } /* @interface SKGeneralPreferences : NSViewController { NSArray *revertPDFSettingsButtons; NSInteger updateInterval; } @property (nonatomic, retain) IBOutlet NSArray *revertPDFSettingsButtons; @property (nonatomic) NSInteger ; - (IBAction)revertPDFViewSettings:(id)sender; - (IBAction)revertFullScreenPDFViewSettings:(id)sender; */ /* static char SKGeneralPreferencesDefaultsObservationContext; static char SKGeneralPreferencesUpdaterObservationContext; @interface SKGeneralPreferences (Private) - (void)synchronizeUpdateInterval; - (void)updateRevertButtons; @end */ override var nibName: NSNib.Name? { return "GeneralPreferences" } override func loadView() { super.loadView() let userName = UserDefaults.standard.string(forKey: "SKUserName") self.authorTextField.stringValue = userName != nil ? userName! : NSFullUserName() // self.defaultOpenButton.state = [[KMHomeWindowController homeWindow] isDefaultOpenForPDF] ? NSControlStateValueOn : NSControlStateValueOff; self.authorLabel.stringValue = KMLocalizedString("Author:", nil) self.defaultOpenButton.title = KMLocalizedString("Set PDF Reader Pro as the default PDF viewer", nil) self.openTabLabel.stringValue = String(format: "%@:", KMLocalizedString("Open a document in", nil)) for item in self.openTabButton.itemArray { item.title = KMLocalizedString(item.title, nil) } self.showConvertMenuButton.title = KMLocalizedString("Show PDF Reader Pro in menu bar", nil) // self.showConvertMenuButton.state = [KMStatusBar systemStatusBar].isShow ? NSControlStateValueOn : NSControlStateValueOff; self.authorLabel.sizeToFit() var frame = self.authorTextField.frame frame.origin.x = CGRectGetMaxX(self.authorLabel.frame)+5 self.authorTextField.frame = frame self.openTabLabel.sizeToFit() frame = self.openTabButton.frame frame.origin.x = CGRectGetMaxX(self.openTabLabel.frame)+5 self.openTabButton.frame = frame self.openTabButton.isEnabled = true #if VERSION_FREE // if (![IAPProductsManager defaultManager].isAvailableAllFunction) { // [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"KMOpenDocumentInTab"]; // } #endif // SKAutoSizeButtons(revertPDFSettingsButtons, NO); // SKAutoSizeLabelField(openFilesLabelField, openFilesMatrix, NO); // CGFloat dw = SKAutoSizeLabelField(updateIntervalLabelField, updateIntervalPopUpButton, NO); // [openFilesMatrix sizeToFit]; // [savePasswordsMatrix sizeToFit]; // SKShiftAndResizeView([self view], 0.0, dw); self._synchronizeUpdateInterval() self._updateRevertButtons() // [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeys:[NSArray arrayWithObjects:SKStringConstants.defaultPDFDisplaySettingsKey, SKStringConstants.defaultFullScreenPDFDisplaySettingsKey, nil] context:&SKGeneralPreferencesDefaultsObservationContext]; // [NSUserDefaultsController sharedUserDefaultsController] #if VERSION_DMG // [[SUUpdater sharedUpdater] addObserver:self forKeyPath:AUTOMATICALLYCHECKSFORUPDATES_KEY options:0 context:&SKGeneralPreferencesUpdaterObservationContext]; // [[SUUpdater sharedUpdater] addObserver:self forKeyPath:UPDATECHECKINTERVAL_KEY options:0 context:&SKGeneralPreferencesUpdaterObservationContext]; #endif self.autoSaveInfoBtn.title = KMLocalizedString("Autosave Documents", nil) // self.autoSaveInfoBtn.state = [AutoSaveManager manager].autoSaveEnabled ? NSControlStateValueOn : NSControlStateValueOff; // self.autoSaveSlider.enabled = [AutoSaveManager manager].autoSaveEnabled; // if ([AutoSaveManager manager].timeInterval > 1) { // self.autoSaveSlider.floatValue = ([AutoSaveManager manager].timeInterval - 1)/19; // } else { self.autoSaveSlider.floatValue = 0; // } // self.autoSaveLbl.stringValue = [NSString stringWithFormat:@"%.0f %@", [AutoSaveManager manager].timeInterval, NSLocalizedString(@"minute(s)", nil)]; } override func viewDidLoad() { super.viewDidLoad() // Do view setup here. } @IBAction func revertPDFViewSettings(_ sender: AnyObject?) { // [[NSUserDefaultsController sharedUserDefaultsController] revertToInitialValueForKey:SKStringConstants.defaultPDFDisplaySettingsKey]; } @IBAction func revertFullScreenPDFViewSettings(_ sender: AnyObject?) { // [[NSUserDefaultsController sharedUserDefaultsController] revertToInitialValueForKey:SKStringConstants.defaultFullScreenPDFDisplaySettingsKey]; } @IBAction func authorTextFieldAction(_ sender: AnyObject?) { // NSString *userName = self.authorTextField.stringValue.length > 0 ? self.authorTextField.stringValue : @""; // [[NSUserDefaults standardUserDefaults] setObject:userName forKey:@"SKUserName"]; // [[NSUserDefaults standardUserDefaults] synchronize]; } @IBAction func defaultOpenButtonAction(_ sender: AnyObject?) { // if ([self.defaultOpenButton state]) { // [[KMHomeWindowController homeWindow] setDefaultOpenForPDF:YES]; // } else { // [[KMHomeWindowController homeWindow] setDefaultOpenForPDF:NO]; // } } @IBAction func openTabButtonAction(_ sender: AnyObject?) { // if (@available(macOS 10.12, *)) { // NSWindowTabbingMode tabbingMode = NSWindowTabbingModeAutomatic; // if (self.openTabButton.indexOfSelectedItem == 0) { // #if VERSION_FREE // // if (![IAPProductsManager defaultManager].isAvailableAllFunction) { // // [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"KMOpenDocumentInTab"]; // // [[KMPurchaseCompareWindowController sharedInstance] showWindow:nil]; // // return; // // } // #endif // tabbingMode = NSWindowTabbingModePreferred; // } else if (self.openTabButton.indexOfSelectedItem == 1) { // tabbingMode = NSWindowTabbingModeDisallowed; // } // for (NSDocument *document in [[NSDocumentController sharedDocumentController] documents]) { // // if ([document isKindOfClass:[SKMainDocument class]]) { // // for (NSWindowController *windowController in document.windowControllers) { // // windowController.window.tabbingMode = tabbingMode; // // } // // } // } // } } @IBAction func showConvertMenuButtonAction(_ sender: AnyObject?) { // if ([self.showConvertMenuButton state]) { // // [KMStatusBar systemStatusBar].isShow = YES; // } else { // // [KMStatusBar systemStatusBar].isShow = NO; // } } @IBAction func autoSaveButtonAction(_ sender: AnyObject?) { // [AutoSaveManager manager].autoSaveEnabled = self.autoSaveInfoBtn.state == NSControlStateValueOn; // self.autoSaveSlider.enabled = [AutoSaveManager manager].autoSaveEnabled; } @IBAction func autoSaveSliderAction(_ sender: AnyObject?) { // CGFloat value = 1 + 19 * self.autoSaveSlider.floatValue; // [AutoSaveManager manager].timeInterval = value; // self.autoSaveLbl.stringValue = [NSString stringWithFormat:@"%.0f %@", [AutoSaveManager manager].timeInterval, NSLocalizedString(@"minute(s)", nil)]; // [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(autoSaveSliderFinish) object:nil]; // [self performSelector:@selector(autoSaveSliderFinish) withObject:nil afterDelay:1]; } /* - (void)autoSaveSliderFinish { // [[NSNotificationCenter defaultCenter] postNotificationName:KAutoSaveTimeValueChangedNoti object:nil]; } */ /* @synthesize updateIntervalPopUpButton, revertPDFSettingsButtons, openFilesLabelField, openFilesMatrix, updateIntervalLabelField, savePasswordsMatrix, updateInterval, authorLabel, authorTextField, defaultOpenButton, showConvertMenuButton; - (void)dealloc { @try { [[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeys:[NSArray arrayWithObjects:SKStringConstants.defaultPDFDisplaySettingsKey, SKStringConstants.defaultFullScreenPDFDisplaySettingsKey, nil]]; #if VERSION_DMG [[SUUpdater sharedUpdater] removeObserver:self forKeyPath:AUTOMATICALLYCHECKSFORUPDATES_KEY]; [[SUUpdater sharedUpdater] removeObserver:self forKeyPath:UPDATECHECKINTERVAL_KEY]; #endif } @catch(id e) {} // SKDESTROY(updateIntervalPopUpButton); // SKDESTROY(revertPDFSettingsButtons); // SKDESTROY(openFilesLabelField); // SKDESTROY(openFilesMatrix); // SKDESTROY(updateIntervalLabelField); // SKDESTROY(savePasswordsMatrix); // SKDESTROY(authorLabel); // SKDESTROY(authorTextField); // SKDESTROY(defaultOpenButton); // SKDESTROY(showConvertMenuButton); // [super dealloc]; } #pragma mark Accessors - (void)setUpdateInterval:(NSInteger)interval { #if VERSION_DMG if (interval > 0) [[SUUpdater sharedUpdater] setUpdateCheckInterval:interval]; [[SUUpdater sharedUpdater] setAutomaticallyChecksForUpdates:interval > 0]; #endif updateInterval = interval; } #pragma mark Actions #pragma mark KVO - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if (context == &SKGeneralPreferencesDefaultsObservationContext) [self updateRevertButtons]; else if (context == &SKGeneralPreferencesUpdaterObservationContext) [self synchronizeUpdateInterval]; else [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; } #pragma mark Hooks - (void)defaultsDidRevert { NSTimeInterval interval = [[[NSBundle mainBundle] objectForInfoDictionaryKey:SUScheduledCheckIntervalKey] doubleValue]; #if VERSION_DMG [[SUUpdater sharedUpdater] setUpdateCheckInterval:interval]; [[SUUpdater sharedUpdater] setAutomaticallyChecksForUpdates:interval > 0.0]; #endif } @end */ override var title: String? { set { super.title = newValue } get { return KMLocalizedString("General", "Preference pane label") } } override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) } } // MARK: - Private Methods extension SKGeneralPreferences { private func _synchronizeUpdateInterval() { // self.willChangeValue(forKey: UPDATEINTERVAL_KEY) #if VERSION_DMG // updateInterval = [[SUUpdater sharedUpdater] automaticallyChecksForUpdates] ? [[SUUpdater sharedUpdater] updateCheckInterval] : 0; #endif // self.didChangeValue(forKey: UPDATEINTERVAL_KEY) } private func _updateRevertButtons() { let initialValues = NSUserDefaultsController.shared.initialValues let sud = UserDefaults.standard // [[revertPDFSettingsButtons objectAtIndex:0] setEnabled:[[initialValues objectForKey:SKStringConstants.defaultPDFDisplaySettingsKey] isEqual:[sud dictionaryForKey:SKStringConstants.defaultPDFDisplaySettingsKey]] == NO]; // [[revertPDFSettingsButtons objectAtIndex:1] setEnabled:[[initialValues objectForKey:SKStringConstants.defaultFullScreenPDFDisplaySettingsKey] isEqual:[sud dictionaryForKey:SKStringConstants.defaultFullScreenPDFDisplaySettingsKey]] == NO]; } /* */ }