Warning, /network/kdeconnect-ios/KDE Connect/KDE Connect/Swift Backend/DeviceType+Extensions.swift is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2021 Lucas Wang <lucas.wang@tuta.io> 0003 * SPDX-FileCopyrightText: 2022 Claudio Cambra <claudio.cambra@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 // 0009 // DeviceType+Extensions.swift 0010 // KDE Connect 0011 // 0012 // Created by Claudio Cambra on 25/5/22. 0013 // 0014 0015 import Foundation 0016 0017 public extension DeviceType { 0018 var sfSymbolName: String { 0019 switch (self) { 0020 case .unknown: return "questionmark.square.dashed" 0021 case .desktop: return "desktopcomputer" 0022 case .laptop: return "laptopcomputer" 0023 case .phone: return "apps.iphone" 0024 case .tablet: return "apps.ipad.landscape" 0025 case .tv: return "tv" 0026 @unknown default: return "questionmark.square.dashed" 0027 } 0028 } 0029 0030 static var isMac: Bool { 0031 let processInfo = ProcessInfo.processInfo 0032 return processInfo.isMacCatalystApp || processInfo.isiOSAppOnMac 0033 } 0034 0035 static var current: DeviceType { 0036 var macDeviceType: DeviceType { 0037 let logger = Logger(category: "DeviceType") 0038 return "hw.model".withCString { hwModelCStr in 0039 var size = 0 0040 if sysctlbyname(hwModelCStr, nil, &size, nil, 0) != 0 { 0041 logger.fault("Failed to get size of hw.model \(errno, format: .darwinErrno)") 0042 return .unknown 0043 } 0044 precondition(size > 0) 0045 var resultCStr = [CChar](repeating: 0, count: size) 0046 if sysctlbyname(hwModelCStr, &resultCStr, &size, nil, 0) != 0 { 0047 logger.fault("Failed to get hw.model \(errno, format: .darwinErrno)") 0048 return .unknown 0049 } 0050 // https://everymac.com/systems/by_capability/mac-specs-by-machine-model-machine-id.html 0051 switch String(cString: resultCStr) { 0052 case let model where model.starts(with: "MacBook"): 0053 return .laptop 0054 case let model where model.contains("Mac"): 0055 return .desktop 0056 case let model: 0057 logger.fault("Unexpected hw.model (\(model, privacy: .public)") 0058 return .unknown 0059 } 0060 } 0061 } 0062 switch UIDevice.current.userInterfaceIdiom { 0063 case .unspecified: 0064 return .unknown 0065 case .phone: 0066 return .phone 0067 case .pad: 0068 if isMac { 0069 return macDeviceType 0070 } 0071 return .tablet 0072 case .tv: 0073 return .tv 0074 case .carPlay: 0075 return .unknown 0076 case .mac: 0077 return macDeviceType 0078 @unknown default: 0079 return .unknown 0080 } 0081 } 0082 }