Przeglądaj źródła

偏好设置-通用设置补充交互

tangchao 1 rok temu
rodzic
commit
d435903d16

BIN
PDF Office/PDF Office.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile.xcuserdatad/UserInterfaceState.xcuserstate


+ 1 - 0
PDF Office/PDF Office/AppDelegate.swift

@@ -60,6 +60,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
         reopenDocument(forPaths: [])
         
         KMPreferenceManager.shared.author = NSFullUserName()
+        KMPreferenceManager.shared.setDefaultPDFReader = KMTools.isDefaultPDFReader()
     }
     
     func application(_ application: NSApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

+ 25 - 0
PDF Office/PDF Office/Class/Common/Tools/KMTools.swift

@@ -113,6 +113,31 @@ import Cocoa
         let versionInfo = ProcessInfo.processInfo.operatingSystemVersion
         return (versionInfo.majorVersion, versionInfo.minorVersion, versionInfo.patchVersion)
     }
+    
+    class func isDefaultPDFReader() -> Bool {
+        let app = LSCopyDefaultRoleHandlerForContentType("pdf" as CFString, LSRolesMask.all)?.takeUnretainedValue()
+        if (app == nil) {
+            return false
+        }
+        
+        return (app! as String) == Bundle.main.bundleIdentifier!
+    }
+    
+    class func setDefaultPDFReader(_ isOrNo: Bool) -> Bool {
+        var bid = "com.apple.Preview"
+        if (isOrNo) {
+            bid = Bundle.main.bundleIdentifier!
+        }
+        let status: OSStatus = LSSetDefaultRoleHandlerForContentType(KMTools.UTIforFileExtension("pdf") as CFString, LSRolesMask.all, bid as CFString)
+        if (status == 0) {
+            return true
+        }
+        return false
+    }
+    
+    class func UTIforFileExtension(_ exn: String) -> String {
+        return (UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, exn as CFString, nil)?.takeUnretainedValue())! as String
+    }
 }
 
 // MARK: -

+ 4 - 1
PDF Office/PDF Office/Class/Preference/Tools/KMPreferenceManager.swift

@@ -510,7 +510,10 @@ extension KMPreferenceManager {
             return self.getData(forKey: KMSetDefaultPDFReaderKey) as! Bool
         }
         set {
-            let _ = self.setData(data: newValue, forKey: KMSetDefaultPDFReaderKey)
+            let result = KMTools.setDefaultPDFReader(newValue)
+            if (result) {
+                let _ = self.setData(data: newValue, forKey: KMSetDefaultPDFReaderKey)
+            }
         }
     }