123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- //
- // KMSideViewController.swift
- // PDF Reader Pro
- //
- // Created by lxy on 2022/11/17.
- //
- import Cocoa
- class KMSideViewController: NSViewController {
- var isAnimating = false
- var listView : CPDFListView!
- weak var mainViewController : KMMainViewController?
-
- // @IBOutlet weak var gradientView: SKGradientView!
- @IBOutlet weak var button: NSSegmentedControl!
- @IBOutlet weak var alternateButton: NSSegmentedControl!
- @IBOutlet weak var searchField: NSSearchField!
- @IBOutlet weak var currentView: NSView!
-
- private let DURATION = 0.7
-
- deinit {
- KMPrint("KMSideViewController deinit.")
-
- NotificationCenter.default.removeObserver(self)
- }
-
- override func loadView() {
- super.loadView()
-
- // [gradientView setAutoTransparent:YES];
- // [gradientView setMinSize:NSMakeSize(GRADIENT_MIN_WIDTH, NSHeight([gradientView frame]))];
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do view setup here.
- }
-
- func requiresAlternateButton(forView aview: NSView?) -> Bool {
- return false
- }
-
- func replaceSideView(_ newView: NSView, animate: Bool) {
- if (newView.window != nil) {
- return
- }
-
- var _animated = animate
- if (UserDefaults.standard.bool(forKey: SKDisableAnimationsKey)) {
- _animated = false
- }
-
- let oldView = self.currentView
- self.currentView = newView
-
- let wasAlternate = self.requiresAlternateButton(forView: oldView)
- let isAlternate = self.requiresAlternateButton(forView: newView)
- let changeButton = wasAlternate != isAlternate
- let oldButton = wasAlternate ? alternateButton : button
- let newButton = isAlternate ? alternateButton : button;
- let buttonView = oldButton?.superview
- let contentView = oldView?.superview
- var firstResponder = oldView?.window?.firstResponder
-
- if let data = (firstResponder as? NSView)?.isDescendant(of: oldView!), data {
- firstResponder = newView
- } else if (wasAlternate != isAlternate && oldButton!.isEqual(to: firstResponder)) {
- firstResponder = newButton
- } else {
- firstResponder = nil
- }
-
- // [[SKImageToolTipWindow sharedToolTipWindow] orderOut:self];
-
- if (changeButton != nil) {
- newButton?.frame = oldButton?.frame ?? .zero
- }
- newView.frame = oldView?.frame ?? .zero
-
- if (_animated == false) {
- contentView?.replaceSubview(oldView!, with: newView)
- if (changeButton != nil) {
- oldButton?.superview?.replaceSubview(oldButton!, with: newButton!)
- firstResponder?.km_window()?.makeFirstResponder(firstResponder)
- contentView?.window?.recalculateKeyViewLoop()
- }
- } else {
- isAnimating = true
- contentView?.wantsLayer = true
- contentView?.displayIfNeeded()
- if (changeButton != nil) {
- buttonView?.wantsLayer = true
- buttonView?.displayIfNeeded()
- }
- NSAnimationContext.runAnimationGroup { context in
- }
- NSAnimationContext.runAnimationGroup { context in
- context.duration = DURATION
- contentView?.animator().replaceSubview(oldView!, with: newView)
- if (changeButton != nil) {
- buttonView?.animator().replaceSubview(oldButton!, with: newButton!)
- }
- } completionHandler: {
- contentView?.wantsLayer = false
- if (changeButton) {
- buttonView?.wantsLayer = false
- }
- firstResponder?.km_window()?.makeFirstResponder(firstResponder)
- contentView?.window?.recalculateKeyViewLoop()
- self.isAnimating = false
- }
- }
- }
-
- /*
- #define GRADIENT_MIN_WIDTH 111.0
- */
- }
|