ソースを参照

【综合】KMSegmentedControl整理代码

tangchao 1 年間 前
コミット
d98ea3d69e

+ 6 - 0
PDF Office/PDF Master/Class/Common/Category/NSObject+KMExtension.swift

@@ -681,6 +681,12 @@ extension NSView: KMInterfaceThemeChangedProtocol {
     }
 }
 
+extension NSViewController: KMInterfaceThemeChangedProtocol {
+    func interfaceThemeDidChanged(_ appearance: NSAppearance.Name) {
+        self.view.appearance = .init(named: appearance)
+    }
+}
+
 // MARK: - NSOutlineView
 
 extension NSOutlineView {

+ 6 - 7
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Action.swift

@@ -224,14 +224,13 @@ extension KMLeftSideViewController {
         columnIndexSet.insert(0)
         self.snapshotTableView.reloadData(forRowIndexes: rowIndexSet, columnIndexes: columnIndexSet)
     }
-}
-
-// MARK: - KMInterfaceThemeChangedProtocol
-
-extension KMLeftSideViewController: KMInterfaceThemeChangedProtocol {
-    func interfaceThemeDidChanged(_ appearance: NSAppearance.Name) {
-        self.updateViewColor()
+    
+    // MARK: - KMInterfaceThemeChangedProtocol
+    
+    override func interfaceThemeDidChanged(_ appearance: NSAppearance.Name) {
+        super.interfaceThemeDidChanged(appearance)
         
+        self.updateViewColor()
         self.leftView.interfaceThemeDidChanged(appearance)
     }
 }

+ 82 - 72
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMSegmentedControl.swift

@@ -22,8 +22,8 @@ class KMSegmentedControl: NSControl {
             self._segmentCount = newValue
             self.setSegmentCount(self.segmentCount, with: 55)
         }
-  
     }
+    
     private var _selectedSegment: UInt8 = 0
     var selectedSegment: UInt8 {
         get {
@@ -34,78 +34,12 @@ class KMSegmentedControl: NSControl {
             if (self.block != nil) {
                 self.block!(self.selectedSegment)
             }
-
-            for i in 0 ..< self.segments.count {
-                let button = self.segments[i]
-                if (self.isBackgroundHighlighted) {
-                    if (i == self.selectedSegment) {
-                        button.wantsLayer = true
-                        button.layer?.cornerRadius = 6.0
-                        if (KMAppearance.isDarkMode()) {
-                            button.layer?.backgroundColor = NSColor(red: 0.133, green: 0.478, blue: 1, alpha: 0.3).cgColor
-                        } else {
-                            button.layer?.backgroundColor = NSColor(red: 0.286, green: 0.510, blue: 0.902, alpha: 0.2).cgColor
-                        }
-
-                        if (i == 0) {
-                            button.image = NSImage(named: KMImageNameUXIconBtnSidebarListPre)
-                        } else if (i == 1) {
-                            button.image = NSImage(named: KMImageNameUXIconBtnSidebarPagePre)
-                        }
-                    } else {
-                        button.wantsLayer = true;
-                        button.layer?.backgroundColor = .clear
-                        if (i == 0) {
-                            button.image = NSImage(named: KMImageNameUXIconBtnSidebarListNor)
-                        } else if (i == 1) {
-                            button.image = NSImage(named: KMImageNameUXIconBtnSidebarPageNor)
-                        }
-                    }
-                } else {
-                    if (i == self.selectedSegment) {
-                        if (i == 0) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarThumbnailSel)
-                        } else if (i == 1) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarOutlineSel)
-                        } else if (i == 2) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarAnnotationSel)
-                        } else if (i == 3) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarSnapshotSel)
-                        } else if (i == 4) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarSearchSel)
-                        }
-                        button.wantsLayer = true
-                        if (KMAppearance.isDarkMode()) {
-                            button.layer?.backgroundColor = NSColor(red: 0.133, green: 0.478, blue: 1.000, alpha: 1).cgColor
-                        } else {
-                            button.layer?.backgroundColor = NSColor(red: 0.286, green: 0.510, blue: 0.902, alpha: 1).cgColor
-                        }
-                    } else {
-                        if (i == 0) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarThumbnailNor)
-                        } else if (i == 1) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarOutlineNor)
-                        } else if (i == 2) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarAnnotationNor)
-                        } else if (i == 3) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarSnapshotNor)
-                        } else if (i == 4) {
-                            button.image = NSImage(named: KMImageNameUXIconSidetabbarSearchNor)
-                        }
-                        button.wantsLayer = true
-                        if (KMAppearance.isDarkMode()) {
-                            button.layer?.backgroundColor = NSColor(red: 0.224, green: 0.235, blue: 0.243, alpha: 1).cgColor
-                        } else {
-                            button.layer?.backgroundColor = NSColor(red: 0.922, green: 0.925, blue: 0.941, alpha: 1).cgColor
-                        }
-                    }
-                }
-            }
+            
+            self.reloadData()
         }
     }
     var isBackgroundHighlighted = false
     var block: ((_ segmentCount: UInt8) -> Void)?
-    var buttonActionHandle: ((_ segmentCount: UInt8) -> Void)?
     
     private var _segments: [NSButton] = []
     var segments: [NSButton] {
@@ -132,8 +66,9 @@ class KMSegmentedControl: NSControl {
         super.updateLayer()
         
         if #available(macOS 10.14, *) {
-            self.selectedSegment = self._selectedSegment
+//            self.selectedSegment = self._selectedSegment
         }
+        self.reloadData()
     }
     
     // MARK: - Public Methods
@@ -161,6 +96,7 @@ class KMSegmentedControl: NSControl {
             button.isBordered = false
             button.imageScaling = .scaleProportionallyDown
             button.imagePosition = .imageOnly
+//            button.layer?.cornerRadius = 6.0
             button.frame = NSMakeRect((Float(i)*width).cgFloat, 0, width.cgFloat, height)
             button.tag = Int(i)
             button.target = self
@@ -220,6 +156,19 @@ class KMSegmentedControl: NSControl {
             }
         }
     }
+    
+    func reloadData() {
+        let block = {
+            self._reloadData()
+        }
+        if Thread.isMainThread {
+            block()
+        } else {
+            Task { @MainActor in
+                block()
+            }
+        }
+    }
 }
 
 // MARK: - Private Methods
@@ -227,8 +176,69 @@ class KMSegmentedControl: NSControl {
 extension KMSegmentedControl {
     @objc private func _buttonAction(_ sender: NSButton) {
         self.selectedSegment = UInt8(sender.tag)
-        if (self.buttonActionHandle != nil) {
-            self.buttonActionHandle!(self.selectedSegment)
+    }
+    
+    private func _reloadData() {
+        for (i, button) in self.segments.enumerated() {
+            if (self.isBackgroundHighlighted) {
+                if (i == self.selectedSegment) {
+                    if (KMAppearance.isDarkMode()) {
+                        button.layer?.backgroundColor = NSColor(red: 0.133, green: 0.478, blue: 1, alpha: 0.3).cgColor
+                    } else {
+                        button.layer?.backgroundColor = NSColor(red: 0.286, green: 0.510, blue: 0.902, alpha: 0.2).cgColor
+                    }
+                    
+                    if (i == 0) {
+                        button.image = NSImage(named: KMImageNameUXIconBtnSidebarListPre)
+                    } else if (i == 1) {
+                        button.image = NSImage(named: KMImageNameUXIconBtnSidebarPagePre)
+                    }
+                } else {
+                    button.layer?.backgroundColor = .clear
+                    if (i == 0) {
+                        button.image = NSImage(named: KMImageNameUXIconBtnSidebarListNor)
+                    } else if (i == 1) {
+                        button.image = NSImage(named: KMImageNameUXIconBtnSidebarPageNor)
+                    }
+                }
+            } else {
+                if (i == self.selectedSegment) {
+                    if (i == 0) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarThumbnailSel)
+                    } else if (i == 1) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarOutlineSel)
+                    } else if (i == 2) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarAnnotationSel)
+                    } else if (i == 3) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarSnapshotSel)
+                    } else if (i == 4) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarSearchSel)
+                    }
+                    if (KMAppearance.isDarkMode()) {
+                        button.layer?.backgroundColor = NSColor(red: 0.133, green: 0.478, blue: 1.000, alpha: 1).cgColor
+                    } else {
+                        button.layer?.backgroundColor = NSColor(red: 0.286, green: 0.510, blue: 0.902, alpha: 1).cgColor
+                    }
+                } else {
+                    if (i == 0) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarThumbnailNor)
+                    } else if (i == 1) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarOutlineNor)
+                    } else if (i == 2) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarAnnotationNor)
+                    } else if (i == 3) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarSnapshotNor)
+                    } else if (i == 4) {
+                        button.image = NSImage(named: KMImageNameUXIconSidetabbarSearchNor)
+                    }
+                    button.wantsLayer = true
+                    if (KMAppearance.isDarkMode()) {
+                        button.layer?.backgroundColor = NSColor(red: 0.224, green: 0.235, blue: 0.243, alpha: 1).cgColor
+                    } else {
+                        button.layer?.backgroundColor = NSColor(red: 0.922, green: 0.925, blue: 0.941, alpha: 1).cgColor
+                    }
+                }
+            }
         }
     }
     

+ 8 - 7
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift

@@ -94,6 +94,14 @@ extension KMMainViewController {
             self.readContentView.addSubview(self.tipCurrentPageBox, positioned: .above, relativeTo: self.readContentView)
         }
     }
+    
+    // MARK: - KMInterfaceThemeChangedProtocol
+    
+    override func interfaceThemeDidChanged(_ appearance: NSAppearance.Name) {
+        super.interfaceThemeDidChanged(appearance)
+        
+        self.leftSideViewController.interfaceThemeDidChanged(appearance)
+    }
 }
 
 extension KMMainViewController: KMToolbarControllerDelegate {
@@ -706,10 +714,3 @@ extension KMMainViewController {
 //    }
 }
 
-// MARK: - KMInterfaceThemeChangedProtocol
-
-extension KMMainViewController: KMInterfaceThemeChangedProtocol {
-    func interfaceThemeDidChanged(_ appearance: NSAppearance.Name) {
-        self.leftSideViewController.interfaceThemeDidChanged(appearance)
-    }
-}

+ 8 - 8
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -30,8 +30,8 @@
             filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "293"
-            endingLineNumber = "293"
+            startingLineNumber = "301"
+            endingLineNumber = "301"
             landmarkName = "splitView(_:shouldCollapseSubview:forDoubleClickOnDividerAt:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -46,8 +46,8 @@
             filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "457"
-            endingLineNumber = "457"
+            startingLineNumber = "465"
+            endingLineNumber = "465"
             landmarkName = "splitViewWillResizeSubviews(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -62,8 +62,8 @@
             filePath = "PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "474"
-            endingLineNumber = "474"
+            startingLineNumber = "482"
+            endingLineNumber = "482"
             landmarkName = "splitViewDidResizeSubviews(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -526,8 +526,8 @@
             filePath = "PDF Master/Class/Common/Category/NSObject+KMExtension.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "814"
-            endingLineNumber = "814"
+            startingLineNumber = "820"
+            endingLineNumber = "820"
             landmarkName = "uniqueChewableItemsDirectoryURL()"
             landmarkType = "7">
          </BreakpointContent>